2009-12-17 10 views
7

Nei progetti Windows Form, perché il progettista utilizza per impostazione predefinita gli attributi Friend WithEvents in VB.NET e private in C#?'Friend WithEvents' in Visual Basic vs. 'private' in C#

Ad esempio, in un file form.designer.:

cs

private Label Label1; 

vb

Friend WithEvents Label1 as Label; 

Per WithEvents, è più o meno chiaro (per l'utilizzo di Handles, a quanto pare) . Ma perché Friend in Visual Basic e privato in C#?

risposta

7

Friend WithEvents viene utilizzato per la compatibilità con codice Visual Basic precedente, dove normalmente è stato utilizzato un controllo esterno al modulo che lo conteneva.
Diversamente, in C# non c'è quella necessità.

private è una soluzione migliore, per il nuovo codice.

0

Forse Visual Basic sta cercando di essere più amichevole con i nuovi programmatori e consentire loro di vedere tutti i controlli Friend nel modulo da qualsiasi punto del loro progetto?

Amico essendo interno, l'unica cosa che mi viene in mente, un non so perché i valori predefiniti sarebbero diverse se non per assistere i nuovi programmatori ...

+2

Credo che i nuovi programmatori dovrebbero pensare a OOP e imparare il suo concetto di scatola nera. – serhio

+0

OOP è facile da predicare, ma anche con C# molti sviluppatori verdi imparano quanto basta per cavarsela e cadere in un approccio procedurale. La corretta progettazione OO richiede un'anticipazione aggiuntiva e una maggiore considerazione, quindi naturalmente è un'abilità che si sviluppa * dopo * l'apprendimento delle basi di un linguaggio OO. – STW

+1

Sono d'accordo, solo uno dei tanti motivi per cui raccomando C# ai nuovi programmatori ... –

2

Penso che sia per aiutare con la migrazione da precedenti le versioni di VB come codice nelle forme tendevano a essere modificate dall'esterno più frequentemente. Anche l'amico è il default.

Private è meglio da una prospettiva di progettazione del codice e viene utilizzato in C# in quanto non esiste una pratica di codifica storica simile, suppongo!

4

In genere VB.NET tende a esporre troppo (la privacy è per lo più opt-in) mentre C# è l'inverso, la privacy è in genere opt-out. Come altri hanno menzionato, la ragione è probabilmente dovuta all'eredità di VB.NET e alla "cordialità" di esporre tutto; rende facile iniziare, ma porta anche a una progettazione scadente e ad uno sforzo aggiuntivo per garantire un accoppiamento lento.

Problemi correlati