首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >何时在c#中使用get;set;

何时在c#中使用get;set;
EN

Stack Overflow用户
提问于 2011-03-20 09:44:50
回答 6查看 57.5K关注 0票数 30

我不明白初始化一个变量,像这样获取它的值有什么不同:

 //define a local variable.
   int i;

   i= 0;
   Console.WriteLine(i);

和get;set;用法:

public int i
{
   get;
   set;
}

i = 0;
Console.WriteLine(i);

我读了一些文章,但不知道什么时候会用到它。

EN

回答 6

Stack Overflow用户

发布于 2011-03-20 09:46:57

如果您认为以后可能需要更复杂的getter或setter,自动属性语法使您无需重新编译所有调用方即可进行升级。然而,从字段(成员变量)移动到属性是一个突破性的变化。

Eric Lippert addresses the topic. Twice.

票数 17
EN

Stack Overflow用户

发布于 2011-03-20 10:01:54

让我们暂时忘掉属性...您真正要问的问题(您甚至可能不知道)是,为什么首先需要属性(或者其他语言中的getter和setter)?

这是为了推广encapsulation

属性只是为getter和setter提供了更好的语法,也就是访问器(实际上,属性只是在幕后包装了set()和get()方法)。

在c# 3中,c#团队提出了自动属性,因为大量的属性不会对变量做任何事情(没有额外的逻辑),所以自动属性对于该场景来说是速记。

票数 11
EN

Stack Overflow用户

发布于 2013-06-09 17:04:43

基本上,它增加了开销,以换取附加事件的能力。除此之外,它还增加了复杂性和冗长,这使得代码更难阅读。如果您需要添加验证处理程序,这是一种很好的方法。在某些情况下。在大多数情况下,您知道(并且希望知道)变量(成员)正在被修改的确切位置。如果不这样做,那么您就会遇到代码管理问题,而不是语言问题。

认为一切“面向对象”都更好的想法是错误的。大多数开发人员正在逐渐理解这一点。我从事这项工作已经30年了,我可以告诉你,100次中有98次--简单是更好的。把你的编程精力花在不会增加不必要的复杂性的高效算法上,你会走得更远,并在趋势中生存下来。

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

https://stackoverflow.com/questions/5366232

复制
相关文章

相似问题

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