2012-07-06 16 views
10

No estoy seguro porque en Java getter/setter se ven un poco diferentes, pero ¿cuál es el "modo c" para codificar esto?¿Cómo debo usar Properties in C#?

Opción a.)

private string name; 

    public string Name 
    { 
     get { return name; } 
     set { name = value; } 
    } 

    private int time; 

    public int Time 
    { 
     get { return time; } 
     set { time = value; } 
    } 

b.)

private string _name; 
    private int _time; 

    public string name 
    { 
     get { return _name; } 
     set { _name = value; } 
    } 

    public int time 
    { 
     get { return _time; } 
     set { _time = value; } 
    } 

c.)

public string name {get; set;} 
    public int time {get; set;} 

Ok hay algunos ejemplos. ¿Qué se vería mejor? Debo escribir todas las declaraciones de variables privadas primero, luego las propiedades o si debo agrupar mi declaración de propiedades y variables una al lado de la otra.

Respuesta

26

¿Qué tal d, siguiendo las convenciones de nombres de .NET:

public string Name { get; set; } 
public int Time { get; set; } // Odd type for time, admittedly... 

No se moleste en escribir manualmente la propiedad usted mismo a menos que haga algo no trivial en ella.

Si do escribe la implementación de la propiedad manualmente, depende de usted cómo nombre la variable privada. Personalmente usaría:

private string name; 
public string Name 
{ 
    get { /* whatever */ } 
    set { /* whatever */ } 
} 

... pero si quiere usar guiones bajos, esa es su prerrogativa.

En cuanto al pedido de miembros, es incluso más su propia opción. Suponiendo que está trabajando con un equipo, hable con el equipo y vea cuál es la convención local.

3

En su caso específico (sin lógica en getter o setter), la mejor opción es C (con un pequeño cambio en los nombres de las propiedades de seguir las normas de C#)

public string Name {get; set;} 
public int Time {get; set;} 
11

Si no es necesario el acceso a la campos de respaldo subyacentes, las propiedades automáticas son la forma sugerida que es (C). Sin embargo, de acuerdo con la convención de nomenclatura .NET deberían ser PascalCase.

public string Name { get; set; } 
public int Time { get; set; } 
1
public string Name {get; set;} 
public int Time {get; set;} 
6

Los dos primeros son sólo convensions nomenclatura que se debe seleccionar en función del grupo de empresas/dev o su propia decisión.

El tercer caso es la forma abreviada de cambiar la misma propiedad, donde el tiempo de ejecución generará el field real.

Pros: es corto y fácil.

contras cortas: no puede poner algo en el interior geter/definidor, no se puede poner punto de interrupción en Visual Studio ...

Espero que esto ayude.

3

Depende del caso, cuando se definen los campos se usa un carácter de subrayado, y si solo se necesita un getter/setter simple, no hay necesidad de definir los campos usted mismo porque el compilador los definirá en el fondo .

2

Me gustaría ir por la opción, la mayoría de los otros ya publicados.

public string Name {get; set;} 
public int Time {get; set;} 

Tenga en cuenta que puede cambiar el nivel de protección en el colocador y el eliminador individualmente, p.

public string Name {get; protected set;} 
protected int Time {get; private set;} 

Solo puede usar una protección mayor que la que se aplica a la propiedad del orificio.