public class Cat
    {
        public static const int age=1;
    }
    public enum Dog
    {
        age=1
    }    public class Test
    {
        static void T()
        {
            int c = Cat.age;
            int d = (int)Dog.age;
        }
    }
很简单的一段代码,一个是引用类型一个是值类型。
分别获取age字段时,值类型的Dog.age反而要强制转换,而引用类型则不用。请问朋友们说说,如果我要用一个对象存放一些不变的数据,是该在上面选择Dog呢还是Cat?说下原因吧

解决方案 »

  1.   

    1.你这问题跟引用类型值类型毫无关系...2.你那个Cat.age根本就不存在类型转换...结论,你的问题根本不成立...好好看书,打好基础...
      

  2.   


    谢谢你的建议
    ,不过我有个问题,Cat肯定是不存在类型转换的,因为这个同为int,但是dog呢?
    int d = (int)Dog.age;
      

  3.   

    cat里面的public static const int age=1,age定义为int类型
    至于枚举里面的age可调试一下看看是什么类型
      

  4.   

    cat里面的public static const int age=1,age定义为int类型
    cat.age相当于一个类对象调用自己的属性
    public enum Dog
        {
            age=1
        }
    对于上面的代码,Dog.age是Dog类型的,值为age,强制类型转化为int型的时候,值才是 1.
      

  5.   

    这个没理由http://msdn.microsoft.com/zh-cn/library/sbbt4032(v=VS.90).aspx不过这个 public static const int age=1;倒是有点奇怪
      

  6.   

    楼上可以试试使用readonly关键字
      

  7.   

    public static const int age=1
    这个是错误的,不好意思。要吧静态变量去掉其实我是想从堆栈上面理解的。
    不过我现在也有所了解了,谢谢上面各位
      

  8.   

    楼主的代码是错误的。const关键字修饰的常量,实际上被其修饰的变量已为静态,所以不允许再添加static访问修饰符。
      

  9.   

     如果标识某个变量的值在程序运行过程中不可变的话,建议使用readonly