zoukankan      html  css  js  c++  java
  • (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)))                                     //循环 ② var
    14         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();
    View Code

    枚举内容的输出在于 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         }

    这才是他想教给我们的。

    编程的魅力在于:你不真的跳下去,永远不知道这个坑有多深!

    实践出真知!

  • 相关阅读:
    For-Each循环
    test
    网络学习一
    Struts2的interceptor
    Struts2的action解读
    js 读取<select>标签选项 索引
    java项目打jar包
    图解sendRedirect和forward的区别
    导入外部项目无法识别为Web项目无法部署到tomcat
    项目乱码的分析与解决
  • 原文地址:https://www.cnblogs.com/Ex-Oj/p/3834864.html
Copyright © 2011-2022 走看看