2011-02-28 45 views
5

Tengo un archivo (bastante) complicado con la mezcla habitual de componentes.¿Es posible ocultar un campo (o simplemente manipular/ocultar desde autocompletar) dentro de su propia clase?

Tengo un campo (llamado keyloaded) y una propiedad vinculada (llamada Keyloaded).

Mientras trabajaba dentro de la clase, accidentalmente manipulé directamente el campo en lugar de la propiedad.

Lo más probable es porque todavía soy bastante nuevo en todo esto (¡compruebo por tercera vez ahora!), Sin embargo, esto ya es un campo privado y trabajar fuera de la clase funciona muy bien. ¿Hay algo simple que pueda hacer que lo elimine de Autocompletar?

Y si no, ¿cuáles son las mejores prácticas para una situación similar?

Mientras escribía esta pregunta, de repente recordé en mi libro, dijeron acerca de los guiones bajos ... ¿Es esta la mejor solución, dejarla de lado?

Respuesta

1

Creo que los estándares de sintaxis de código actuales de Microsoft dicen que los campos o las propiedades pueden ser Pascal Case. Sin embargo, siempre he mantenido la convención de que los campos deberían comenzar con un guión bajo. Cambiar cargada a _keyloaded. Creo que le resultará mucho más fácil identificar la diferencia entre los campos, las propiedades y los lugareños de esta manera.

+0

También vea aquí: http://stackoverflow.com/questions/450238/to-underscore-or-to-not-to-underscore-that-is-the-question – codemouse

+0

Suena bien ... – Wil

+0

También ayuda a eliminar la confusión entre los problemas relacionados con el caso de campo/Propiedades con el mismo nombre. También estoy de acuerdo con KBoek: puedes crear una propiedad implementada automáticamente. Si solo desea establecer una propiedad pública dentro de esa clase, cambie la sintaxis a: public bool Keyloaded {get; conjunto privado; } – codemouse

2

Utilizo subrayado como prefijo para campos privados, como "_keyloaded". Si la propiedad sólo se establece y se pone el campo, considerar la creación de un auto-propiedad como esta:

public bool Keyloaded { get; set; }
+0

Hace más que eso, por lo que las propiedades automáticas están fuera, pero gracias. para la convención de nombres. – Wil

6

Al igual que Brian y KBoek menciona sólo puede comenzar sus campos con un guión bajo. Pero si realmente desea ocultar un método/campo/propiedad, puede establecer el atributo como se muestra. Esto evitará que el método/campo/propiedad se muestre en intellesense. Sin embargo, el miembro seguirá siendo accesible.

<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)> _ 
Public Property HiddenProperty() 
    Get 
     return _hiddenProperty 
    End Get 
    Set (value as object) 
     _hiddenProperty = value 
    End Set 
End Sub 
+0

Muy interesante, +1 Sin embargo, es el campo, no la propiedad que quiero ocultar. ¿Esto cambia algo con la compilación/salida o esto es estrictamente solo dentro de VS/el editor? – Wil

+0

Debería poder agregar un atributo al campo también. No cambiará la compilación en absoluto, está estrictamente en el editor. – PeterM

Cuestiones relacionadas