首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有get;set;和没有get;set;的属性之间的差异;

带有get;set;和没有get;set;的属性之间的差异;
EN

Stack Overflow用户
提问于 2013-04-13 00:05:27
回答 5查看 7.4K关注 0票数 1

我不明白静态属性之间的区别:

代码语言:javascript
运行
复制
public static int intId;

和get;set;properties:

代码语言:javascript
运行
复制
public int intId
{
  get
  {
    return intId;
  }
  set
  {
    intId = value;
  }
}

这两者之间的区别是什么?它们的工作方式是相同的还是不同的?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-13 00:06:15

您的第一个示例是一个字段,而不是一个属性。

一个不错的做法是始终将字段设置为私有,并将其包装在属性中。

这样,您就可以在子代中的set或override属性上添加验证(如果它被标记为virtual)。此外,您可以在get和set中添加一些棘手的代码,这些代码将对使用您的类的人隐藏。

票数 5
EN

Stack Overflow用户

发布于 2013-04-13 00:06:51

第一个不是属性。它是一个字段。它也是静态的。

即使它不是静态的,而是一个实例变量,这两者是不同的,并且编译成不同的IL。

至于为什么在公共字段上使用简单的属性--属性允许你封装后面的实现。它们允许您在不更改接口的情况下更改类型内部结构。

票数 1
EN

Stack Overflow用户

发布于 2013-04-13 00:06:53

第一个是静态字段;它甚至不是一个属性。

静态字段对于应用程序只有一个值。

第二个是实例属性,对于类的每个实例都是不同的。

在本例中,如果它是一个属性或字段,则没有太大的区别。但从长远来看,如果您在接口中使用属性,您可能会在以后更改它,使其具有实际的getter和setter,例如,执行验证或使对象以某种方式对新值做出反应。字段只是一个字段,您无法控制设置它的时间和方式以及对它的反应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15976031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档