Veo esto a menudo en la documentación de C#. Pero, ¿qué hace?¿Qué significa esto? Nombre público {obtener; establecer;}
public class Car
{
public Name { get; set; }
}
Veo esto a menudo en la documentación de C#. Pero, ¿qué hace?¿Qué significa esto? Nombre público {obtener; establecer;}
public class Car
{
public Name { get; set; }
}
Es la abreviatura de:
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
El compilador genera la variable miembro. Esto se llama automatic property.
... aunque el nombre del campo es en realidad un nombre "indescriptible" (por ejemplo, '<> __ nombre') que no es válido como identificador de C#. Esto le impide acceder directamente al campo desde su código. El término de la especificación es "propiedad implementada automáticamente", pero la mayoría de las personas lo llaman propiedad automática :) –
@phoog: ¿Seguramente quiso decir 'pedantismo' (o como lo ha señalado Mark - 'pedantería')? : D – stuxnetting
@stuxnetting "pedantryism" era una broma. Sólo digo'. Para el registro y todo. – phoog
Es una propiedad de lectura-escritura automática. Es una adición de C# 3.0. Algo como:
public class Car {
private string name;
public string Name { get { return name; } set { name = value; } }
}
excepto que no se puede acceder directamente al campo de respaldo.
Es el equivilent de hacer:
private string _Text;
public string Text
{
get { return _Text; }
set { _Text = value; }
}
excepto que no tienen acceso a la variable privada, mientras que dentro de la clase.
Entonces, si desea mantener la variable privada, debe usar el formato "anterior" (como en su ejemplo). – Rado
Se llama una propiedad autoejecutada y es new to C# 3.0. Es una sintaxis más limpia cuando su acceso a la propiedad no necesita ningún comportamiento especial o validación. Es similar en función a:
public class Car
{
private string _name;
public string Name
{
get { return _name; }
set {_name = value; }
}
}
Así se ahorra una buena cantidad de código, pero deja la opción más tarde para modificar la lógica de acceso si el comportamiento o las reglas tienen que cambiar.
Resumen: En C# 3.0 y más tarde, las propiedades de auto-aplicado crea propiedad-declaración más concisa cuando se requiere ninguna lógica adicional en los de acceso de propiedad.
En términos simples se les conoce como elementos de acceso a la propiedad. Su aplicación se puede explicar de la siguiente manera
1.get {nombre} retorno El bloque de código en el acceso get se ejecuta cuando la propiedad es Leer.
2.set {name = value} El bloque de código en el descriptor de acceso set se ejecuta cuando la propiedad es Asignada a un nuevo valor.
Por ejemplo.(Suponiendo que está usando C#)
class Person
{
private string name; // the name field
public string Name // the Name property
{
get
{
return name;
}
set
{
name = value;
}
}
}
Ahora cuando se hace referencia a esta propiedad como a continuación
persona p = new Persona(); // Crear instancias de la clase o la creación de objetos ' p' de la clase 'Persona'
System.Console.Write(p.Name); //The get accessor is invoked here
El acceso de obtención se invoca a Lea el valor de la propiedad, es decir, el compilador intenta leer el valor de la cadena 'nombre'.
2.Cuando Asignar un valor (usando un argumento) a la propiedad 'Nombre' de la siguiente manera
Person p = new Person();
p.Name = "Stack" // the set accessor is invoked here
Console.Writeline(p.Name) //invokes the get accessor
Console.ReadKey(); //Holds the output until a key is pressed
El descriptor de acceso set Asigna el valor 'Pila" a la 'propiedad es decir, nombre 'Pila' se almacena en la cadena 'nombre'
salida de la señal:.
Pila
¿Cuál es la razón para tener un get y un set en primer lugar? ¿Por qué no usar un solo accessor tanto para establecer como para obtener? Esta es la pregunta que nadie parece capaz de responder en términos simples. – JsonStatham
¿Puedo preguntar por qué se ha marcado como duplicado? Esto se solicitó en 2009 y el "original" se solicitó en 2011. – Nathangrad