Pregunta

Si Tengo una configuración de clase simple como esto:

class MyClass
{
    private string _myName = string.Empty;

    public string MyName
    {
        get
        {
            return _myName;
        }
    }

    public void DoSomething()
    {
        // Get the name...
        string name = string.Empty;

        name = _myName;

        // OR

        name = MyName;

        // ...and do something with it...
    }
}

¿Qué debo usar, la propiedad pública, o el miembro de datos?

Obviamente, en este ejemplo no hace una diferencia, ya que ambos sólo hacen referencia a la misma variable. Pero ¿qué pasa con el mundo real utiliza de propiedades públicas?

En general, no Propiedades públicas realizan muy poco, en cuyo caso está bien llamarlos? ¿O es que la gente pone una gran cantidad de funcionalidad en sus propiedades públicas que no debe ser llamado por las referencias internas de clase?

vi algo en otro post acerca de no poner mucha funcionalidad en Propiedades, ya examinarlas en el depurador puede realizar resultados inesperados. ¿Es eso cierto?

¿Fue útil?

Solución

Utilice la propiedad - cualquier lógica que puede ser encapsulado dentro de las incubadoras y captadores debe aplicar, incluso dentro de la propia clase. Si no hay una lógica dentro de los captadores y definidores todavía no es seguro de usar los campos de sí mismos, porque si en algún momento desea añadir lógica de todo el acceso a esos campos que tendrá que refactorizar mucho más.

Otros consejos

Creo que se debe hacer referencia a la propiedad como una práctica general. Aunque en este ejemplo particular que realmente no hace mucha diferencia, los descriptores de acceso get / set ofrecen la posibilidad de hacer un poco más trabajo cuando se agarra una propiedad. Por ejemplo, muchos de nuestra propiedad "GET" descriptores de acceso realizan algunas operaciones de búsqueda dentro de una estructura de datos más complejos o establecer valores por defecto si no se ha definido. De modo que el resto de la clase puede tomar ventaja de esta lógica, hacemos un hábito de utilizar las propiedades. Sólo para que no tengamos que pensar demasiado en ello, tratamos de generalizar la práctica.

Puede haber casos en los que queremos acceder directamente al miembro de datos subyacente, pero entonces eso es una decisión consciente con una razón específica y tiende a ser la excepción.

Yo prefiero propiedades porque manejan fácilmente de sólo lectura situaciones y es fácil de envolverlos con cualquier validación básica puede que tenga que hacer.

Si sólo estoy devolviendo el valor de la variable interna, hago la variable pública - no hay daño a hacerlo. Siempre he usado Propiedades públicas cuando quiero hacer algo en respuesta a cualquiera de una cita o un cambio de valor - es decir, escribirlo en una base de datos, establece también algo más (como en la segunda parte de su ejemplo) <. / p>

La pregunta que hay que hacerse es si usted quiere lo que sucede dentro de su clase para desencadenar estos eventos. Si lo hace, de la misma manera una llamada externa sería, a continuación, acceder a los valores a través de la propiedad. Si lo que desea es leer el valor, utilice la variable interna.

Para responder a su pregunta, no hay daño a hacerlo de cualquier manera -. Sólo la consideración de los posibles efectos secundarios

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top