可能重复:
C# Automatic Properties
你好,
我最近从Java转向了.net(c#)平台。在这里,我还没有遇到太多问题......无论如何,我已经搞砸了
property{get, set}方法。实际上我根本无法弄清楚这些(属性)的确切含义。初始化变量或字段或对象状态的相同工作可以使用方法完成。我们可以将字段声明为私有,并可以使用相同类的公共方法访问它们。
一个简单的事情我不是程序员或员工,而是计算机科学的普通学生,旨在成为一名全职职业的程序员。
- 非常感谢你们所有人提前协助我。
财产{get,set}
答案 0 :(得分:6)
使用“属性”将删除方法调用,以设置值并获取私有成员的值。像:
private int number = 0;
public int Number { get{ return number;} set{number = value;}}
现在您所要做的就是创建一个对象,而不是调用函数/方法来访问该数字,您可以这样做:
ObjectCreated.Number = 100;
Console.WriteLine(ObjectCreated.Number);
隐式地,Number将设置number = 100,而下一行将获取100的数字。
答案 1 :(得分:4)
以下代码段 -
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
相当于Java中的getter和setter:
private String name;
public String getName() { return name; }
public void setName(String newName) { name = newName; }
在C#3.0之后,只使用以下行就可以产生相同的效果:
public string Name { get; set; }
这称为自动属性,其中编译器为此属性生成后备私有字段和getter / setter。希望这会有所帮助。
答案 2 :(得分:4)
对于封装目的,对象的字段必须是隐藏的,有时候对象想要传递一些数据,这些数据可以是字段数据的一些变化,或者可以是多个字段数据产生的,而对象可以做到这一点由财产。
答案 3 :(得分:4)
要添加其他答案,我认为问题更多是关于何时和为什么使用属性而不是方法。
属性向调用者传达一个值或多或少立即可用。当调用者必须执行myObject.CustomerList
时,他希望列表已经加载并由其类在字段中缓存。他希望在对其进行进一步操作时,他不需要将列表存储在局部变量中。
当他必须做myObject.GetCustomerList()
时,他预计将需要一段时间,因为列表将从某个地方检索,并且他每次拨打电话时可能会获得该列表的另一个实例,并且因此他应该将列表存储在局部变量中。
答案 4 :(得分:3)
属性的获取部分是您检索属性值的部分。
属性的设置部分是您可以为属性赋值的部分。
这是一个教程: http://www.csharp-station.com/Tutorials/Lesson10.aspx
答案 5 :(得分:2)
C#属性就像Java中的getter和setter函数一样
实际上 - 它们被编译为MSIL
方法。