我想这是一个简单的问题,但是下面这两行代码有什么区别:
代码1
public int Temp { get; set; }
and
Code 2
private int temp;
public int Temp { get { return temp; } }
我理解的是,按照代码1的自动属性应该执行与代码2完全相同的功能?
我正在阅读《Head First C#》,我发现很难理解为什么要使用两种不同的方式来完成同样的事情?
我想这是一个简单的问题,但是下面这两行代码有什么区别:
代码1
public int Temp { get; set; }
and
Code 2
private int temp;
public int Temp { get { return temp; } }
我理解的是,按照代码1的自动属性应该执行与代码2完全相同的功能?
我正在阅读《Head First C#》,我发现很难理解为什么要使用两种不同的方式来完成同样的事情?
public int Temp { get; private set; }
private int temp;
public int Temp {
get { return temp; }
set { temp = value; }
}
(除了不能直接使用后备字段外),但只需要一行代码,而不是五行。
当编写具有5或6个简单属性的类时,自动属性可以使类更短。
您可以通过编写以下内容来创建只读自动属性
public int Temp { get; private set; }
public int Temp { get; set; }
is just a lot simpler to type than
public int Temp
{
get { return _temp; }
set { _temp = value; }
}
public int Temp { get; private set; }
如果你好奇的话,自动属性仍然会有一个支持私有字段。这一部分只是由编译器为您处理,以使生活更轻松。
关于为什么我会使用带有后备字段的属性,是因为当我想在获取或设置属性时执行其他操作时。例如,将验证例程嵌入到属性本身中,或进行缓存等操作...
否则,对于简单的获取和设置,我会使用自动属性格式。它更紧凑,涉及的编码较少,我认为这是一件好事。