2009-12-17 6 views
7

Warum verwendet der Designer in Windows Forms-Projekten standardmäßig die Friend WithEvents-Attribute in VB.NET und private in C#?'Friend WithEvents' in Visual Basic vs. 'private' in C#

Zum Beispiel in einer form.designer. Datei:

CS-

private Label Label1; 

.vb

Friend WithEvents Label1 as Label; 

Für WithEvents ist es mehr oder weniger klar (für Handles verwenden, scheinbar) . Aber warum Freund in Visual Basic und privat in C#?

Antwort

7

Friend WithEvents wird für Kompatibilität mit älterem Visual Basic-Code verwendet, wo normalerweise ein Steuerelement außerhalb des Formulars verwendet wurde, das es enthielt.
Anders, in C# gibt es diese Notwendigkeit nicht.

private ist eine bessere Lösung, für neuen Code.

0

Vielleicht versucht Visual Basic, neuen Programmierern freundlicher zu sein und ihnen zu ermöglichen, alle Friend-Steuerelemente in dem Formular von überall in ihrem Projekt zu sehen?

Freund ist intern, das einzige, was ich denken kann, ein Ich bin nicht sicher, warum die Standardwerte anders sein würden als andere neue Programmierer zu helfen ...

+2

Ich glaube, die neuen Programmierer sollten OOP denken, und lernen Sie sein (Black) Box-Konzept. – serhio

+0

OOP ist einfach zu predigen, aber selbst mit C# lernen viele grüne Entwickler gerade genug, um zu einem prozeduralen Ansatz zu gelangen. Ein korrektes OO-Design erfordert zusätzliche Voraussicht und größere Rücksichtnahme, also ist es natürlich eine Fähigkeit, die * nach dem Erlernen der Grundlagen einer OO-Sprache entwickelt wird. – STW

+1

Ich stimme zu, nur einer von vielen Gründen, ich empfehle C# zu neuen Programmierern ... –

2

Ich denke, es mit der Migration von früher zu helfen Versionen von VB als Code in den Formularen tendierten dazu, häufiger von außen modifiziert zu werden. Freund ist auch der Standard.

Privat ist besser aus einer Code-Design-Perspektive und wird in C# verwendet, da es keine ähnliche historische Kodierungspraxis gibt, denke ich!

4

In der Regel neigt VB.NET dazu, zu viel zu exponieren (Privatsphäre ist meist Opt-In), während C# die Umkehrung ist, Privatsphäre ist in der Regel Opt-Out. Wie andere bereits erwähnt haben, liegt der Grund wahrscheinlich an dem Vermächtnis von VB.NET und der "Freundlichkeit", alles aufzudecken; Es erleichtert den Einstieg, führt aber auch zu einem schlechten Design und zusätzlichen Anstrengungen, um eine lockere Verbindung zu gewährleisten.