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

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