C#复习(七)枚举 结构_该用户还没想到昵称_新浪博客



昨天没有复习C#,瞎忙了一天白鹭引擎项目,回到家已经是晚上九点了,好像九点也不算晚哈,想当年晚上10点还在工作室呆的不想回宿舍呢,但是昨天晚上我压根就不想打开电脑,因为!!!昨天某人惹我生气了!昨天没人给本小姐做饭!......其实根本原因还是因为毕业后真的太懒了,稍微努力一下就觉得自己太牛逼了。
刚刚忙完AR项目,赶紧复习复习我的C#......
一、枚举:enum,可在类内(默认private),也可在类外(默认public)
  • 枚举是具有一组命名常量的独特的值类型,枚举中每个元素的基础类型是 int。所以枚举类型是可以用数学运算符进行运算的。
  • 在类外定义枚举后,同一个命名空间的成员都可访问它;在类中定义后,如果在其它类要使用枚举,须将其声明为public或internal类型,并且通过“枚举所在类类名.枚举”形式使用。
  • 枚举的格式:
   enum 自定义枚举类型名称
    { 
       枚举项1,枚举项2,…枚举项n
    }
  • 枚举的优点:
    1.枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。
    2.枚举使代码更清晰,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。
    3.枚举使代码更易于输入。
  • 枚举中不能定义数字。
  • 做数学运算的时候,如果计算的范围超过了枚举范围,那么这个枚举类型变量将会变成一个数字。
   enum Season
    {
        Spring = 1, Summer, Automn, Winter             //默认从0开始
    }
    class MySeason
    {
        public void GetSeason(Season s)
        {
            switch (s)
            {
                case Season.Spring:
                    Console.WriteLine("美丽的春天");
                    break;
                case Season.Summer:
                    Console.WriteLine("炎热的夏天");
                    break;
                case Season.Automn:
                    Console.WriteLine("凉爽的秋天");
                    break;
                case Season.Winter:
                    Console.WriteLine("寒冷的冬天");
                    break;
            }
        }
    }
1.调用GetSeason()函数:
            Season s = Season.Automn;
            MySeason mySeason = new MySeason();
            mySeason.GetSeason(s);
结果为:凉爽的秋天
2.值类型向枚举转换:
            int i = 3;
            Console.WriteLine((Season)i);
结果为:Winter
3.枚举向值类型转换:
         for (s = Season.Spring; s <= Season.Winter; s++)
            {
                Console.WriteLine((int)s + ":" + s);
            }
结果为:
            1:Spring
            2:Summer
            3:Automn
            4:Winter
4.字符串向枚举转换:
            string w = "winter";
            Season W= (Season)Enum.Parse(typeof(Season), w, true);
5.枚举转字符串:
            Console.WriteLine("Method1:"+W.ToString());
            string name = Enum.GetName(typeof(Season), W);
            Console.WriteLine("Method2:" +name);
结果为:Method1:Winter
             Method2:Winter
6.注意'+'运算符:
           for (s = Season.Spring; s <= Season.Winter; s++)
            {
                Console.WriteLine((int)s + s);
            }
结果为:
             Summer
             Winter
             6
             8
二、结构:struct,可以在类内(默认private),也可以在类外(默认internal)
  • C#中结构类型和类类型在语法上非常相似,都可以包括数据成员和方法成员。
  • 在类外定义结构后,同一个命名空间的成员都可访问它;在类中定义后,如果在其它类要使用结构,须将其声明为public或internal类型,并且通过“结构所在类类名.结构”形式使用。
  • 结构的格式:
     struct 结构名 
     { 
       字段、属性、方法、事件
     }
  • 结构与类的区别
   1.结构是值类型(栈),而类是引用类型(堆)。 
   2.栈工作效率比堆高,所以结构处理作为基类的小型对象,而类处理某个商业逻辑。
   3.结构可以声明构造函数,但它们必须带参数,必须要给字段赋值。此时无参构造仍然存在。(结构不能
     包含显式型无参数构造函数),而类中声明含参构造函数后,无参就不会存在。
   4.一个结构不能从另一个结构或类继承,而且不能作为一个类的基类。结构不继承,不派生,但可实现接
     口;类可继承可派生,可实现接口。
   5.所有结构都直接继承自System.ValueType,类继承自System.Object。
   6.结构中的字段不可以初始化,类中的字段可初始化,也可不初始化。
   7.结构可以用new实例化,也可以不通过new实例化,只要给其字段赋值即可。类需要用new初始化。
     struct Dog
        {
            public string name;
            public Dog(string s)//带参构造函数,,此时无参构造也存在。
            {
                name = s;
            }
            public void Speak()
            {
                Console.WriteLine(name + "汪汪汪");
            }
        }
使用:
    Dog dog;
    dog.name = "妞妞";
    dog.Speak();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烫青菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值