繁体   English   中英

在C#中,这个带“get”的代码是什么意思?

[英]In C# what does this code with “get” mean?

我是C#的新手。

private string m;
public string M { get { return m; } }

这样的C#中的getter / setter就像Java一样吗?

这部分是一个领域:

private string m;

这部分是一个只读属性,它返回m字段的值:

public string M { get { return m; } }

您可以将其设为读写属性,如下所示:

public string M {
    get { return m; }
    set { m = value; }
}

或者你可以在那里有更复杂的逻辑:

public string M {
    get {
        if (string.IsNullOrEmpty(m))
            return "m is null or empty";
        return m;
    }
}

基本上,字段只擅长保存,而属性更像是方法,可以引入逻辑。

private string m;

首先,使用private修饰符创建一个新的字符串变量。 如果在课堂上这样,那么它在本课程之外是不可见的。

public string M { get { return m; } }

然后,您创建该字符串变量的属性。 此属性是只读的,然后您可以在创建此变量的类之外访问此变量。 您无法使用此类属性为此变量赋值。

这是一个公共的readonly 属性 ,即:它只有一个公共get访问器。 自动实现的属性可以用更少的代码实现相同的效果:

public string M { get; private set; }

此属性格式有一个公共的get ,但私人 set CLR实际上生成了一个类似m字段来存储值......但它是隐藏的。

这是一个吸气剂。 没有公共可访问的setter,所以必须在类的其他地方设置m。

这是为了在C#中定义Readonly属性,这里只有一个getter

它是m的公共getter,但它可以让你称它为例如变量

string s = M;

这会使s == m

这就是C#中所谓的属性。 它被访问就好像它是一个成员变量,但是调用了get方法。 属性也可以有一个set方法,使它们可以修改。

第一行称为字段。 它将创建一个名为m的私有(即只能在类中访问)成员变量。

第二行称为属性。 此特定属性包装字段m并且是只读的(即它具有get但没有set )。

访问C#中的属性就像它们是字段一样,如下所示:

obj.SomeProp = "Some value";
string val = obj.SomeProp;

但是,与获取和设置字段相比,可以实现更复杂的属性。 财产的主体就像一种方法。 它可以包含非平凡的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM