zoukankan      html  css  js  c++  java
  • 结构

    参考:http://www.cnblogs.com/kissdodog/archive/2013/05/11/3072832.html

    namespace 结构
    {
        //结构是值类型,在栈中分配空间;栈中保存的只是引用。直接包含它自己的数据,每个结构都保存自己的一份数据,修改每一个结构的数据都不会对其他结构的数据造成影响。
        //类是引用类型,在堆中分配空间;两个对象指向的是同一个地址(堆空间),修改的值会影响原来的值。
        //栈:由编译器自动分配,释放。在函数体定义的变量通常在栈中
        //堆:一般由程序员分配释放,用New,Melloc分配得到的就是在堆上
        public struct Person
        {
            public string _name; //字段 一定要注意细节就是前面的下划线,用于与变量的区别
            public int _age;
            public Gender _Gender;
        }
        public enum Gender
        {
            男, 女
        }
        class Program
        {
            static void Main(string[] args)
            {
                //由于结构不是引用类型,因此结构类型的变量不能被赋予null值。
                Person Person;
                Person._name = "张三";
                Person._age = 18;
                Person._Gender = Gender.男;
                Person P;
                P._name = "大黄";
                P._age = 12;
                P._Gender = Gender.女;
                Console.WriteLine("我叫{0}, 我今年 {1}岁了,我是{2}孩子", Person._name, Person._age, Person._Gender);
                Console.WriteLine("我叫{0}, 我今年 {1}岁了,我是{2}孩子", P._name, P._age, P._Gender);
                Console.ReadKey();#
                region 例子
                //PersonStruct p1, p2; //与类一样,但可以不new
                //p1.Name = "张飞";
                //p1.MobilePhone = "13553663108";
                //p1.Birthday = DateTime.Now.AddYears(-10);
                //p2 = p1; //将p1的值赋给p2 //由于是值类型,因此赋值等于将全部值全部复制到p2的栈空间
                //p2.Name = "关羽"; //然后修改p2的值看是否会影响p1
                //Console.WriteLine(p1.Name); //输出 张飞 没影响
                //PersonClass p3 = new PersonClass();
                //p3.Name = "张飞";
                //p3.MobilePhone = "13553663108";
                //p3.Birthday = DateTime.Now.AddYears(-10);
                //PersonClass p4 = new PersonClass();
                //p4 = p3; //将p3的值赋给p4 赋值后,由于是引用类型,因此两个对象指向的是同一个地址(堆空间)
                //p4.Name = "关羽"; //然后修改p4的值看是否会影响p3
                //Console.WriteLine(p3.Name); //输出 关羽 有影响
                //Console.ReadKey(); 
                # endregion
            }
        }
    }

    结构的构造函数要传参

    namespace 结构Test
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person p;
                p.Age = 12;
                p.Name = "李四";
                Console.WriteLine("姓名{0} 年龄:{1}", p.Name, p.Age);
                Console.ReadKey();
            }
        }
        public struct Person
        {
            public Person(string name)
            {
                //每个 struct 均已有一个将对象初始化为零的默认构造函数。因此,可以为结构创建的构造函数必须带有一个或多个参数。
                Name = "11";
                Age = 12;
            }
            public int Age;
            public string Name;
        }
    }
  • 相关阅读:
    NGUI_Depth
    NGUI_Font
    NGUI_Atlas
    NGUI_概述
    02、Mecanim之IK动画
    JAVA8学习——深入Comparator&Collector(学习过程)
    JAVA8学习——从源码角度深入Stream流(学习过程)
    JAVA8学习——从使用角度深入Stream流(学习过程)
    JAVA8学习——深入浅出方法引用(学习过程)
    回顾2019,总结,反思,展望,行动。
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/7596936.html
Copyright © 2011-2022 走看看