当编译器对此提示时,我感到有点惊讶:
public class UsefulClass
{
public const String RatingName = @"Ratings\rating";
}
public class OtherClass
{
public void SomeFunc()
{
UsefulClass useful = new UsefulClass();
String rating = useful.RatingName;
}
}
编译器说,“无法使用实例引用访问静态成员;而是用类型名称限定它”
这不是问题,String rating = UsefulClass.RatingName;
工作正常。我只是好奇这背后的想法是什么?我有一个带有公共(public)常量的公共(public)类实例,为什么我不能通过这种方式获取数据?
最佳答案
因为常量不是实例成员;它们静态绑定(bind)到各自的类型。就像您不能使用实例调用静态方法一样,您也不能使用实例访问类常量。
如果您需要在不知道第一手类型的情况下从实例中获取常量,我想您可以根据其类型通过反射来完成。
如果您尝试添加无法修改但属于实例的成员,您可能需要只读字段或属性。
关于c# - 无法读取类实例中的常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6867429/