A类和B类都是C类的子类,其中A类和B类从C类处继承了一个静态常量,但是A类的静态常量的值是A,B类的静态常量的值是B。这个想法能否实现?能子类和基类都怎么写?常量的初始化在哪?不能的话如果不是常量能不能实现?

解决方案 »

  1.   

    你可以分别在 A/B类中构造一个常量A/B,然后分别赋予继承的值,不过应该没有太多的意义,常量本来就是不可变的,不知道你究竟要区分什么
      

  2.   

    static const貌似不可以。。
    只static可以
      

  3.   

    常量会被表示成静态变量   常量在编译之后对于clr来说是一个符号  并不会占用任何内存  常量初始化默认是在类型构造函数里
      

  4.   

    虽然不知道lz这样设计的目的是什么,不过常量本来就和实例没关系,用类名.常量名来访问的。class C
    {
    public const string T = "C";
    }class A : C 
    {
    public const string T = "A";
    }class B : A
    {
    public const string T = "B";
    }Console.WriteLine(A.T); // A
    Console.WriteLine(B.T); // B
    Console.WriteLine(C.T); // C
      

  5.   


    class Age
    {
        readonly int _year;
        Age(int year)
        {
            _year = year;
        }
        void ChangeYear()
        {
            _year = 1967; // Will not compile.
        }
    }readonly定义常量字段,可以在声明或构造函数中初始化