在C#中,这个带“get”的代码是什么意思?
我是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; } }
然后,您创建该字符串变量的属性。 此属性是只读的,然后您可以在创建此变量的类之外访问此变量。 您无法使用此类属性为此变量赋值。
它是一个公共只读属性 ,即:它只有一个公共get
访问器。 自动实现的属性可以用更少的代码实现相同的效果:
public string M { get; private 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;
但是,与获取和设置字段相比,可以实现更复杂的属性。 财产的主体就像一种方法。 它可以包含非平凡的代码。