速记访问器和变异器 [英] Shorthand Accessors and Mutators

查看:141
本文介绍了速记访问器和变异器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

code>获得;在方法1 方法2 中设置等价?例如是另一种简写形式吗?

  class Student 
{
//实例字段
私人字符串名称;
private int mark;

//方法1
public string Name {get;组; }

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

最后,方法2 <当你想要例如在获取或设置一个值之前执行计算时使用它?例如将价值转换为百分比还是执行验证?例如

  class Student 
{
//实例字段
私有字符串名称;
私人双标;
private int maxMark = 50;

//方法1
public string Name {get;组; }

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


解决方案

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


I am learning C#, and am learning about making fields private to the class, and using Getters and Setters to expose Methods instead of field values.

Are the get; set; in Method 1 and Method 2 equivalent? e.g. is one a shorthand of the other?

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; }
    }
}

Finally, would Method 2 be used when you want to for example perform a calculation before getting or setting a value? e.g. converting value to a percentage or perform validation? e.g.

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; }
    }
}

解决方案

Yes, Method 1 is a shortcut to Method 2. I suggest using Method 1 by default. When you need more functionality, use Method 2. You can also specify different access modifiers for get and set.

这篇关于速记访问器和变异器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆