首页 > 代码库 > (20140708作业)编程的魅力在于:你不真的跳下去,永远不知道这个坑有多深!
(20140708作业)编程的魅力在于:你不真的跳下去,永远不知道这个坑有多深!
作业要求: 输出TypeCode枚举类内所有的值
1 //获取枚举类型的值 2 //var V = Enum.GetValues(typeof(TypeCode)); 3 4 //1、名称 5 Console.ForegroundColor = ConsoleColor.Yellow; //设置颜色 6 Console.WriteLine("输出名称:"); //提示 7 foreach (var name in Enum.GetNames(typeof(TypeCode))) //循环 8 Console.WriteLine(name); //输出 9 Console.WriteLine("--------分割线---------"); //分割10 //2、编号11 Console.ForegroundColor = ConsoleColor.Green; //设置颜色12 Console.WriteLine("输出编号:"); //提示13 foreach (int num in Enum.GetValues(typeof(TypeCode))) //循环 ② var14 Console.WriteLine(num); //输出15 Console.WriteLine("--------分割线---------"); //分割16 //倒序名称17 Console.ForegroundColor = ConsoleColor.Red; //设置颜色18 var k = Enum.GetValues(typeof(TypeCode)).Length; //提示19 for (int i = k; i >= 0; i--) //循环20 {21 Console.WriteLine(Enum.GetName(typeof(TypeCode), i)); //倒序输出22 }23 Console.Read();
枚举内容的输出在于 1 Enum.GetValues(typeof(TypeCode)); 这句话
前两个是用foreach遍历出来的
第一个直接getNames得到所有名称然后输出;
第二个用的是getValues这个比较有意,它得到是枚举, 但取决于遍历时候所声明的类型,也就是说 在注释②的位置 那里如果num的类型声明为var的话 那么num输出就是默认的枚举名称。如果是int 那么他输出的就是枚举的值,这点在第三个示例里可以看出;
第三个同样是getValues 当我直接赋值给var的时候,得到的就是整个枚举的Array集合。这里我取了个Length获取长度给k。接下来 坑爹的来了!
看上图 我是倒序循环输出的枚举值,有没有发现这里有个“坑”? 断开了! !!
我擦,吓尿,调试了几遍都是到这里会跳过去?! F12了一下TypeCode这个类,真相了!!!
看下面倒数第二行! KAO! 丫就没有17!!!想了好久也不知道为什么会这样?!
有知道的大神,帮个忙,本人学历不高,幼本毕业,求个通俗易懂的解释!拜谢!
作业都交完,老大点评这次非常不满意,因为我们的作业并没有真正理解到枚举类型的含义。
他要告诉我们的是,枚举类型 是int的另一种表现形式。而非让我们输出一串结果。
1 /// <summary>2014-07-08</summary>2 public static void function质数()3 {4 for (int i = 0; i < 30; i++)5 {6 Console.WriteLine((TypeCode)i);7 }8 9 }
这才是他想教给我们的。
编程的魅力在于:你不真的跳下去,永远不知道这个坑有多深!
实践出真知!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。