C#中“get”和“set”属性的目的是什么?

我看到一些get set方法来设置值。 有谁能告诉我这个的目的?

public string HTTP_USER_NAME { get { return UserName; } set { UserName = value; } } public string HTTP_USER_PASSWORD { get { return UserPwd; } set { UserPwd = value; } } 

其实为什么要用这些东西。 对于全球访问,还是有其他原因导致此类事情?

它们只是访问者和变异者。 这就是在C#中实现属性的方式

在C#3中,您可以使用如下自动实现的属性:

 public int MyProperty { get; set; } 

这段代码由编译器自动翻译成类似于你发布的代码,这段代码更容易声明属性,如果你不想在setget方法中实现自定义逻辑,它们是理想的,你甚至可以使用set方法的不同访问器使属性不可变

 public int MyProperty { get; private set; } 

在前面的示例中, MyProperty将仅在声明它的类之外读取,唯一的变异方法是通过公开方法来完成它或仅通过类的构造函数。 当您想要控制并明确实体的状态更改时,这非常有用

当你想为属性添加一些逻辑时,你需要手动编写属性来实现getset方法,就像你发布的那样:

实现自定义逻辑的示例

 private int myProperty; public int MyProperty { get { return this.myProperty; } set { if(this.myProperty <=5) throw new ArgumentOutOfRangeException("bad user"); this.myProperty = value; } } 

看起来好像你理解了getter和setter的function,而其他人回答了这个问题。 “普通”类变量(没有getter和setter)称为“fields”,“properties”(具有getter和setter)封装字段。

属性的目的是控制对字段的外部访问。 如果您希望变量对外部逻辑是只读的,则可以省略setter,如下所示:

 private int dataID; public int DataID { get { return dataID; } } 

您还可以将setter设置为private并实现相同的只读function。

如果一个对象有可能为null(无论出于何种原因),您可以保证实例始终存在,如下所示:

 private Object instance; public Object Instance { get { if (instance == null) instance = new Object(); return instance; } } 

属性的另一个用途是定义索引器。

 //in class named DataSet private List members; public int this[int index] { get { return members[index]; } } 

通过定义该索引器,您可以像这样访问DataSet的实例:

 int member = dataSet[3]; 

检查这些链接,..他们给出了明确的解释。

http://www.dotnetperls.com/property

http://code.anjanesh.net/2008/02/property-getters-setters.html

如果UserName和UserPwd是类变量,最好像这样使用

 _userName _userPwd 

在C#中实现属性的标准方法。 UserNameUserPwd是定义了这两个方法的类的私有成员变量( string类型)。

HTTP_USER_NAMEHTTP_USER_PASSWORD是您class级的公共属性。 UserNameUserPwd可以是您的私人字段。 而且您允许其他人通过这些公共属性设置或获取值。 没有直接访问私人的权利。 你也可以在属性的get方法中做一些逻辑dateOfBirth :你将有一个名为Age的公共属性,在get方法中,你可以读取你的私有字段的值“ dateOfBirth ”并做一些计算( CurrentYear-dateOfBirth)并将其作为Age返回。

属性只是字段上的访问者。 它们允许执行某些操作(如果需要),并提供对字段的受控访问。

如果您想知道何时使用属性,何时使用仅字段,请检查链接属性与字段 – 为什么重要? (Jonathan Aneja)

来自属性(C#编程指南)

属性是一种成员,它提供了一种灵活的机制来读取,写入或计算私有字段的值。 属性可以像它们是公共数据成员一样使用,但它们实际上是称为访问器的特殊方法。 这样可以轻松访问数据,并且仍然有助于提高方法的安全性和灵活性。

在此示例中, TimePeriod类存储时间段。 在内部,类以秒为单位存储时间,但名为Hours的属性使客户端能够以Hours为单位指定时间。 Hours属性的访问器执行小时和秒之间的转换。

 class TimePeriod { private double seconds; public double Hours { get { return seconds / 3600; } set { seconds = value * 3600; } } } class Program { static void Main() { TimePeriod t = new TimePeriod(); // Assigning the Hours property causes the 'set' accessor to be called. t.Hours = 24; // Evaluating the Hours property causes the 'get' accessor to be called. System.Console.WriteLine("Time in hours: " + t.Hours); } } // Output: Time in hours: 24 

属性概述

  • 属性使类能够公开获取和设置值的公共方式,同时隐藏实现或validation代码。

  • get属性访问器用于返回属性值, set访问器用于分配新值。 这些访问者可以具有不同的访问级别。 有关更多信息,请参阅限制访问者辅助function(C#编程指南) 。

  • value关键字用于定义set访问器分配的值。

  • 未实现set访问器的属性是只读的。

  • 对于不需要自定义访问者代码的简单属性,请考虑使用自动实现属性的选项。 有关更多信息,请参见自动实现的属性(C#编程指南) 。