En C #, ¿qué significa este código con “obtener”?

Soy nuevo en C #.

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

¿Es este un tipo de getter / setter en C # como Java?

Esta parte es un campo:

 private string m; 

Esta parte es una propiedad de solo lectura que devuelve el valor del campo m :

 public string M { get { return m; } } 

Podrías hacer de esto una propiedad de lectura-escritura así:

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

O podrías tener una lógica más compleja allí:

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

Básicamente, los campos solo son buenos para sostener cosas, mientras que las propiedades son más bien métodos y pueden introducir lógica.

 private string m; 

Primero, creas una nueva variable de cadena con un modificador privado. Si esto está en clase, entonces no es visible fuera de esta clase.

 public string M { get { return m; } } 

Entonces creas una propiedad de esa variable de cadena. Esta propiedad es de solo lectura y luego puede acceder a esta variable fuera de la clase donde creó esta variable. No puede asignar valores a esta variable con este tipo de propiedad.

Es una propiedad pública de solo lectura, es decir: solo tiene un acceso público. Las propiedades implementadas automáticamente pueden lograr el mismo efecto con menos código:

 public string M { get; private set; } 

Esta propiedad tiene un público, pero un set privado . El CLR en realidad genera un campo similar a m para almacenar el valor … pero está oculto.

Es un captador. No hay un setter de acceso público, por lo que m debe establecerse en otra parte de la clase.

Esto es para definir propiedades Readonly en C #, aquí solo tienes un getter

Es un captador público para m, pero te permite llamarlo como si fuera una variable, por ejemplo.

 string s = M; 

lo que haría s == m

Esto es lo que se llama una propiedad en C #. Se accede como si fuera una variable miembro, pero en su lugar se llama al método get . Las propiedades también pueden tener un método de set , para que sean modificables.

La primera línea se llama un campo. Creará una variable miembro privada (es decir, accesible solo dentro de la clase) llamada m .

La segunda línea se llama una propiedad. Esta propiedad particular envuelve el campo m y es de solo lectura (es decir, tiene un get pero no un set ).

Se accede a las propiedades en C # como si fueran campos, así:

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

Sin embargo, las propiedades se pueden implementar con más complejidad que solo obtener y establecer un campo. El cuerpo de la propiedad es como un método. Puede contener código no trivial.