C# 定义类的属性

C# 定义类的属性,c#,properties,C#,Properties,有人能告诉我两者的区别吗 public class Vendor { public string VendorName { get; set; } } 及 使用私有变量有什么好处吗?这样做只是浪费时间和线路?类中没有对属性进行任何操作 谢谢没有。我发现auto属性可以很好地清理代码;尤其是在具有较大属性的类中 编辑 需要记住的一点是,如果使用值指定NULL(即,在持久化到DB时;如果DateTime等于DateTime.MinValue,则将NULL保存到数据库),则需要在构造函数中声

有人能告诉我两者的区别吗

public class Vendor
{
    public string VendorName { get; set; }
}

使用私有变量有什么好处吗?这样做只是浪费时间和线路?类中没有对属性进行任何操作


谢谢

没有。我发现auto属性可以很好地清理代码;尤其是在具有较大属性的类中

编辑

需要记住的一点是,如果使用值指定NULL(即,在持久化到DB时;如果DateTime等于DateTime.MinValue,则将NULL保存到数据库),则需要在构造函数中声明

示例

而不是

public class Vendor
{
    private DateTime deletedDate = DateTime.MinValue; 

    public DateTime DeletedDate
    {
        get { return deletedDate ; }
        set { deletedDate = value; }
    }
}
你需要这样的东西:

public class Vendor
{
    public DateTime DeletedDate { get; set; }

    public Vendor()
    {
        DeletedDate = DateTime.MinValue;
    }
}

没有。我发现auto属性可以很好地清理代码;尤其是在具有较大属性的类中

编辑

需要记住的一点是,如果使用值指定NULL(即,在持久化到DB时;如果DateTime等于DateTime.MinValue,则将NULL保存到数据库),则需要在构造函数中声明

示例

而不是

public class Vendor
{
    private DateTime deletedDate = DateTime.MinValue; 

    public DateTime DeletedDate
    {
        get { return deletedDate ; }
        set { deletedDate = value; }
    }
}
你需要这样的东西:

public class Vendor
{
    public DateTime DeletedDate { get; set; }

    public Vendor()
    {
        DeletedDate = DateTime.MinValue;
    }
}

如果这就是你所做的一切,那就没有什么好处了

这些代码块之间的显著区别在于,第一个默认为null,第二个默认为string.Empty


除此之外,我每次都会选择自动属性(选项1)。这是在C#3.0中添加的东西。

如果这就是你所做的一切,那就没有好处了,依我看

这些代码块之间的显著区别在于,第一个默认为null,第二个默认为string.Empty


除此之外,我每次都会选择自动属性(选项1)。这是在C#3.0中添加的东西。

给定您的示例,这两个变量在语义上是相同的(除了第一个变量的起始值为
null
,第二个变量的起始值为
string.Empty
,以及支持变量在auto属性版本中对您的类不可见的事实)。因此,不,使用完全声明的属性没有什么特别的好处,除了能够在声明中设置初始值(就像您在示例中所做的那样)


如果可能的话,我总是更喜欢自动属性,因为它减少了冗余代码(这就是它们存在的原因)。如果需要,可以很容易地在构造函数中设置默认值。

给定您的示例,这两个值在语义上是相同的(除了第一个值的起始值为
null
,第二个值的起始值为
string.Empty
,并且在auto属性版本中,支持变量对您的类不可见)。因此,不,使用完全声明的属性没有什么特别的好处,除了能够在声明中设置初始值(就像您在示例中所做的那样)

如果可能的话,我总是更喜欢自动属性,因为它减少了冗余代码(这就是它们存在的原因)。如果需要的话,在构造函数中设置默认值非常容易。

C#3引入了自动实现的属性,这使得第一个代码片段成为可能。编译器将为您创建备份字段,这将使编译后的代码与第二个代码段的编译后的代码等效。如果您在C#3中工作,则引入了自动实现的属性,这使您的第一个代码片段成为可能。编译器将为您创建备份字段,这将使编译后的代码与第二个代码段的编译后的代码等效。如果你在一家公司工作