具有空集的属性的目的

时间:2016-12-11 21:42:39

标签: c# .net vb.net oop properties

有人可以告诉我,对于私有类成员使用公共属性但未在集合中实现任何内容并获取部分的目的是什么?我知道这可能仅仅是为了举例,后来你可以实现一些东西,但我不知道是否有任何意义使用它

3 个答案:

答案 0 :(得分:2)

我将假设您知道C#编译器生成的私有字段作为备份此属性的字段。它是语法糖。我也假设你知道这是一个自动实现的属性。那么,如果属性在getset中公开而没有逻辑,那么它的重点是什么。换句话说,任何类都可以访问它并设置其值。那么为什么要在公共领域选择这个房产呢?

目的是:

  1. 今天getset是空的,但将来可能需要代码。为避免将来违反合同,请使用空的getset
  2. 大多数.NET数据绑定可以针对属性而不是字段来完成。因此,虽然它是空的,但仍然有更大的目的。
  3. getset可以有访问修饰符。例如,您可以说set是私有的,但get是公开的。
  4. 字段不能在接口中使用,但属性可以。

答案 1 :(得分:1)

当你看到

public int Count { get; set; }

作为一个类的成员,什么都没有。您只是推迟了自动属性的默认实现。粗略地说,

private int _count; 

public int get__Count() 
{
    return _count;
}

public void set__Count(int value) 
{
    _count = value;
}

你只需要在C#中使用这些语法来使用这些方法就像一个字段,即

instanceOfObject.Count = 42; // Not a field access, but behind the scenes a method call.

答案 2 :(得分:1)

这是一个"自动实施" C#中的财产。实际上,该财产作为一个完整的财产,即:

此:

public int Number { get; set; }

相当于:

private int _number;

public int Number
{
    get
    {
        return this._number;
    }
    set
    {
        this._number = value;
    }
}

这可以防止您输入完整的属性声明。当你在getter和/或setter中没有任何额外的逻辑时,这很有用。

如果您正在创建简单的数据映射和传输类,则自动实现属性可以使类定义更加简洁。