注意:这是在我开始使用C#时发布的.凭借2014年的知识,我可以真正地说,自动属性是C#语言中发生过的最好的事情.
我习惯使用私有和公共字段在C#中创建我的属性:
private string title;
public string Title
{
get { return title; }
set { title = value; }
}
Run Code Online (Sandbox Code Playgroud)
现在,使用.NET 3.0,我们获得了自动属性:
public string Title { get; set; }
Run Code Online (Sandbox Code Playgroud)
我知道这更像是一个哲学/主观问题,但除了为每个字段保存五行代码之外,是否有任何理由使用这些自动属性?我个人的抱怨是那些属性隐藏了我的东西,我不是黑魔法的忠实粉丝.
事实上,隐藏的私有字段甚至没有显示在调试器中,这是好的,因为get/set函数什么都不做.但是当我想实际实现一些getter/setter逻辑时,我必须使用私有/公共对.
我看到了我节省大量代码(一对六行)而不会失去以后更改getter/setter逻辑的能力的好处,但是我再次通过简单地声明一个公共字段"Public string Title"就可以做到这一点需要{get; 组; 阻止,因此甚至可以节省更多代码.
那么,我在这里错过了什么?为什么有人真的想要使用自动属性?
我意识到它似乎是C#中字段和属性之间有什么区别的重复?但我的问题略有不同(从我的观点来看):
一旦我知道了
是否有任何区别(风格/未来发展除外),如设置属性时的某种控制类型?
是否有任何额外的区别:
public string MyString { get; set; }
Run Code Online (Sandbox Code Playgroud)
和
public string myString;
Run Code Online (Sandbox Code Playgroud)
(我知道,第一个版本需要C#3.0或更高版本,并且编译器会创建私有字段.)
似乎每个C#静态分析器在看到公共字段时都想抱怨.但为什么?当然,有些情况下公共(或内部)领域就足够了,拥有它get_和set_方法的财产是没有意义的吗?如果我确定我不会重新定义该字段或添加它(副作用是坏的,对吧?) - 不应该是一个简单的字段就足够了怎么办?
我无法理解为什么C#3.0中存在自动实现的属性语言功能.
你说的时候有什么不同
public string FirstName;
Run Code Online (Sandbox Code Playgroud)
比
public string FirstName { get; set; }
Run Code Online (Sandbox Code Playgroud) 封装像这样的私有成员之间有什么区别(性能,内存等)
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
Run Code Online (Sandbox Code Playgroud)
并定义这样的属性
public int Age
{
get ;
set ;
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
C#自动属性
您好,
我最近从Java迁移到.net(c#)平台.在这里,我还没有遇到太多问题......无论如何我搞砸了
property{get, set}方法.实际上我根本无法弄清楚这些(属性)的确切含义.初始化变量或字段或对象状态的相同工作可以使用方法完成.我们可以将字段声明为私有,并可以使用相同类的公共方法访问它们. 一个简单的事情我不是程序员或员工,而是计算机科学的普通学生,旨在成为一名全职职业的程序员.
- 非常感谢你们所有人提前协助我.
财产{get,set}我是一名有抱负的学生,未来的目标是追求计算机科学的职业.我已经阅读了相当多的文档,我理解OOP的基本原理,但我想知道如何{Get ; Set;}在c#中使用这些方法.提前致谢.
例如
public class Car
{
public Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)