1

我将构建我的 MVC Web 应用程序并创建我的数据模型。
我在网上找到了很多编译数据模型代码的方法。这是最简单的一种,仅使用公共属性:

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

但我还发现了一个使用私有变量和公共属性的版本,如下所示:

public class Person
{
    private int id;
    private string firstName;
    private string lastName;

    public int Id { get { return id; } set { id = value; } }
    public string FirstName { get { return firstName; } set { firstName = value; } }
    public string LastName { get { return lastName; } set { lastName = value; } }
}

这两种数据模型有什么区别?什么时候使用第一个或第二个更可取?

4

3 回答 3

4

这就像问:自动属性和普通属性有什么区别。

自动属性:

  • 易于创建(少打字)
  • 内部字段由编译器自动生成
  • 无法调试(在属性内设置断点)

正常属性

  • 需要输入更多代码
  • 易于调试
  • 可以get在里面注入更多代码set
于 2013-07-15T10:34:57.707 回答
2

如果第一个示例编译器将为每个自动属性本身创建私有字段,但它们的行为完全相同。有关MSDN的更多信息

我会建议第二种方法,因为您可以更好地控制property工作方式,但使用第一种方法并没有错。

于 2013-07-15T10:33:24.220 回答
0

您拥有的第一个块是自动属性,并且在引擎盖下,c# 将类似于第二个块进行编译,因此在这种情况下没有区别。看看这些帖子:

C# 3.0 自动属性 ​​- 有用与否?

什么是 C# 中的自动属性,它们的用途是什么?

有什么理由使用自动实现的属性而不是手动实现的属性?

如果您正在实现INotifyPropertyChanged接口,那么您将需要使用传统方式,因为您将与 setter 中的属性进行交互,请参见示例...

http://msdn.microsoft.com/en-us/library/ms743695.aspx

于 2013-07-15T10:35:04.163 回答