• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#之结构

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

参考: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;
    }
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c#经典面试题—猫叫,主人醒,老鼠跑(事件的处理)发布时间:2022-07-13
下一篇:
浅谈C#中的多线程编程[2]发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap