【问题标题】:Renamed c# class and now I can't access the public const variables in that class重命名 c# 类,现在我无法访问该类中的公共 const 变量
【发布时间】:2013-06-22 09:31:40
【问题描述】:

我重命名了我的一个 c# 类,现在我无法访问该类中的“public const byte”变量。我在解决方案资源管理器中对其进行了重命名,当它询问我是否要在项目中对代码元素“className”的所有引用执行重命名时,我选择了“是”。

我收到的错误消息是:“无法使用实例引用访问成员 'Namespace1.Class1.CONSTANT_NUM';改为使用类型名称对其进行限定”。

类中的其他所有内容(即方法和非 const 字段)都有效,但我不知道为什么我不能再访问公共 const 字段了?有什么想法吗?

【问题讨论】:

  • "I'm not able to..." 是什么意思?显示什么信息?它发生在运行时还是编译时?
  • 您需要提供更多详细信息。你有错误吗?如果是谁,那是什么?您是否尝试过查看给您带来问题的文件并手动修复参考?
  • 你能提供一些代码吗?也许您重命名的课程以及您如何尝试访问public const byte 成员之一。我们更容易排除故障。
  • 我想到的可能原因是:您将整个课程设为非公开,或者您仍然指的是旧名称,或者您指的是来自不同程序集的新名称,并且有构建同步问题。
  • 补充彼得所说的,你可以尝试清洁和解决方案并重建。

标签: c# class constants rename public


【解决方案1】:

常量与特定类型相关联,而不是特定实例(视为静态)。

您的错误消息告诉您,您正在尝试从特定类实例而不是类型访问const

如果你的班级是:

public class Class1()
{
    public const int MY_INT = 5;
}

您可能会尝试在代码中的某处执行此操作:

Class1 thisInstance = new Class1();
Console.WriteLine(thisInstance.MY_INT); // Will cause an error.

你可能想要做的是:

Console.WriteLine(Class1.MY_INT);

编辑: 可能是在出错之前,您的实例名称与您的类型名称相同,编译器无法推断出您的意思。

【讨论】:

  • 超级!!非常感谢。你说对了!我的实例名称必须与我的类型名称相同。哎呀。再次感谢!
  • 破解,我认为这可能是最初的原因,因为这是我自己做过的事情,后来很困惑=D
猜你喜欢
  • 2023-03-27
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 2014-09-30
  • 2011-04-23
  • 1970-01-01
相关资源
最近更新 更多