c# - 无法读取类实例中的常量?

标签 c# constants

当编译器对此提示时,我感到有点惊讶:

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/

相关文章:

c# - 将 XAML 更改为 C# 代码

c - 结构和常量结构

c++ - STL 容器中的 Const 函数

c++ - 使用常量设置变量类型

c# - 从 Sql Server 迁移到 MySQL 后,EntityFramework 执行查询时出现问题

c# - 为什么 Task<HttpResponseMessage> 在我的项目中不可等待?

c++ - 遵循函数/方法签名的 const 是什么意思?

php - 访问类常量槽属性不起作用

c# - MVC-4 在服务器端更改 ViewBag.Message?

c# - 数组与通用列表 - 存储值类型 - 它是如何存储的以及访问期间内存中会发生什么?