我不明白静态属性之间的区别:
public static int intId;
和get;set;properties:
public int intId
{
get
{
return intId;
}
set
{
intId = value;
}
}
这两者之间的区别是什么?它们的工作方式是相同的还是不同的?
发布于 2013-04-13 00:06:15
您的第一个示例是一个字段,而不是一个属性。
一个不错的做法是始终将字段设置为私有,并将其包装在属性中。
这样,您就可以在子代中的set或override属性上添加验证(如果它被标记为virtual)。此外,您可以在get和set中添加一些棘手的代码,这些代码将对使用您的类的人隐藏。
发布于 2013-04-13 00:06:51
第一个不是属性。它是一个字段。它也是静态的。
即使它不是静态的,而是一个实例变量,这两者是不同的,并且编译成不同的IL。
至于为什么在公共字段上使用简单的属性--属性允许你封装后面的实现。它们允许您在不更改接口的情况下更改类型内部结构。
发布于 2013-04-13 00:06:53
第一个是静态字段;它甚至不是一个属性。
静态字段对于应用程序只有一个值。
第二个是实例属性,对于类的每个实例都是不同的。
在本例中,如果它是一个属性或字段,则没有太大的区别。但从长远来看,如果您在接口中使用属性,您可能会在以后更改它,使其具有实际的getter和setter,例如,执行验证或使对象以某种方式对新值做出反应。字段只是一个字段,您无法控制设置它的时间和方式以及对它的反应。
https://stackoverflow.com/questions/15976031
复制相似问题