日期:2014-05-20  浏览次数:20867 次

C# 中的常量概念的疑问
C#   里对于自定义类型,是不是没有常量实例的概念?

比如说,C++   里把一个类实例设成   const,那这个成员就只能调用   const   成员函数。C#   似乎没有这个说法。顶多是定义个   readonly   实例,这个实例不会被重新赋值。但是不会阻止它调用可以改变内部数据成员的函数。

小弟菜鸟,大家给解释一下啊。

谢谢!

------解决方案--------------------
只有static类实例,没有const类实例

const是静态常量,相当与c里面的#define MYVALUE 0X123,

const必须在声明时就初始化,是不可以在构造函数里面初始化的,也不可以从变量里面提取值来初始化
------解决方案--------------------
C++ 里把一个类实例设成 const,那这个成员就只能调用 const 成员函数。
-------------------------------------
const A a()?这样写??
常函数不是这个意思吧
反正我没有看到过这样写的
------解决方案--------------------
抄一段书上的话给你参考

同样,对Microsoft而言,让CLR能够验证常对象或参数是不可改变的,也非常困难.如果这样,CLR将不得不在每次赋值时来验证赋值操作是不是发生在常量对象上,这对性能影响极大.此外,支持常量增加了开发人员的难度.例如,如果类型是不可改变的,那么该类型的所有派生类型都不得不考虑这一点.另外,不可改变的类型可能必须包含一些同样不可改变类型的字段.
以上原因清楚地表明了CLR为什么不支持常量对象和参数
------解决方案--------------------
说得已经很清楚了
------解决方案--------------------
不同语言在功能和使用上会有不同,觉得不应该总想着把另一个语言能实现的功能在这个语言中实现.各有各自的用法嘛.
------解决方案--------------------
顶一下.
------解决方案--------------------
如果实在要做的话封装个类吧
class a
{
public a(object objparam)
{
_o=objparam;
}
private object _o;
public object o
{
get
{
return _o;
}
}
}
------解决方案--------------------
建议楼主把C++代码贴出来,我们可以转化成C#,这样一目了然你要问的问题