我怀疑{C}规范简化了const
以简化通用语言。是否有一个特定的原因我们不能像C ++一样将变量引用或方法声明为const
? e.g:
const MyObject o = new MyObject(); // Want const cast referenece of MyObject
o.SomeMethod(); // Theoretically legal because SomeMethod is const
o.ChangeStuff(); // Theoretically illegal because ChangeStuff is not const
class MyObject
{
public int val = 0;
public void SomeMethod() const
{
// Do stuff, but can't mutate due to const declaration.
}
public void ChangeStuff()
{
// Code mutates this instance. Can't call with const reference.
val++;
}
}
答案 0 :(得分:1)
const在任何地方执行编译时替换值,因此没有任何运行时含义。一般来说,对于const对象的建议,编译器很难确定(如果方法是否会修改对象)。您使用const关键字作为访问修饰符的建议也会给编写者带来负担,您仍然会遇到验证某些内容是否修改该对象的问题。此外,您在对象上强加了一些在所有上下文中都没有意义的东西。如果方法是const但是你没有将它用作const对象,这意味着什么?您想要的功能通常是通过实现一个接口并只暴露该类的“只读”部分来实现的。
答案 1 :(得分:0)
我怀疑你问题的第一句话是否有答案。
答案 2 :(得分:0)
我相信你可以在C#中将变量声明为const
。 static
,如果你觉得有必要的话。{/ p>
http://msdn.microsoft.com/en-us/library/e6w8fe1b(VS.71).aspx