2009-12-17 37 views
7

En proyectos de Windows Forms, ¿por qué el diseñador utiliza de manera predeterminada los atributos Friend WithEvents en VB.NET y private en C#?'Friend WithEvents' en Visual Basic vs. 'privado' en C#

Por ejemplo, en un archivo form.designer.:

.cs

private Label Label1; 

.vb

Friend WithEvents Label1 as Label; 

Para WithEvents, es más o menos clara (por usar Handles, al parecer) . Pero ¿por qué Friend en Visual Basic y private en C#?

Respuesta

7

Friend WithEvents se utiliza para la compatibilidad con el código anterior de Visual Basic, donde normalmente se utilizaba un control fuera del formulario que lo contenía.
De manera diferente, en C# no existe esa necesidad.

private es una solución mejor, para el nuevo código.

0

¿Quizás Visual Basic está tratando de ser más amigable con los nuevos programadores y les permite ver todos los controles de amigos en el formulario desde cualquier lugar de su proyecto?

amigo siendo interna, la única cosa que se pueda imaginar, un no estoy seguro de por qué los valores por defecto sería diferente que no sea para ayudar a los nuevos programadores ...

+2

Creo que los nuevos programadores deberían pensar OOP, y aprender su concepto (Black) Box. – serhio

+0

OOP es fácil de predicar, pero incluso con C# muchos desarrolladores verdes aprenden lo suficiente como para salir adelante y adoptar un enfoque de procedimiento. El diseño correcto de OO requiere una mayor previsión y mayor consideración, por lo que, naturalmente, es una habilidad que se desarrolla * después * de aprender los conceptos básicos de un idioma de OO. – STW

+1

Estoy de acuerdo, solo una de las muchas razones por las que recomiendo C# a los nuevos programadores ... –

2

Creo que es para ayudar a la migración de las anteriores las versiones de VB como código en los formularios tendían a modificarse desde el exterior con mayor frecuencia. Friend también es el predeterminado.

Privado es mejor desde una perspectiva de diseño de código y se utiliza en C# ya que no hay una práctica de codificación histórica similar, supongo.

4

Por lo general, VB.NET se inclina a exponer demasiado (la privacidad es en su mayoría opt-in), mientras que C# es lo contrario, la privacidad suele ser optativa. Como otros han mencionado, la razón probablemente se deba al legado de VB.NET y la "amabilidad" de exponer todo; hace que sea fácil comenzar, pero también conduce a un diseño deficiente y esfuerzo adicional para asegurar un acoplamiento flojo.