17

我正在学习 C#,并且正在学习如何将字段设为类私有,并使用 Getter 和 Setter 来公开方法而不是字段值。

方法 1方法 2get; set;中的是否等效?例如,一个是另一个的简写吗?

class Student
{
    // Instance fields
    private string name;
    private int mark;

    // Method 1
    public string Name { get; set; }

    // Method 2
    public int Mark
    {
        get { return mark; }
        set { mark = value; }
    }
}

最后,如果您想在获取或设置值之前执行计算,是否会使用方法 2 ?例如将值转换为百分比或执行验证?例如

class Student
{
    // Instance fields
    private string name;
    private double mark;
    private int maxMark = 50;

    // Method 1
    public string Name { get; set; }

    // Method 2
    public double Mark
    {
        get { return mark; }
        set { if ( mark <= maxMark ) mark = value / maxMark * 100; }
    }
}
4

2 回答 2

15

是的,Method2当你有一个自定义的 getter 和 setter 函数时,这是要走的路。默认情况下,当您使用 Method1 时,将在内部处理一个默认的私有属性。有关详细信息,请参阅此URL 。

样本:

string _name;

public string Name 
{
    get => _name;
    set => _name = value;
}
于 2013-05-25T18:23:09.377 回答
12

是的,方法 1 是方法 2 的快捷方式。我建议默认使用方法 1。当您需要更多功能时,请使用方法 2。您还可以为 get 和 set 指定不同的访问修饰符。

于 2013-05-25T18:20:56.573 回答