Heim >Backend-Entwicklung >C++ >Warum hat VB.NET eine Standardforminstanz, während C# dies nicht tut?
Was ist der grundlegende Unterschied zwischen der Instanz von VB.NET und dem C# -Fenster?
vb.net, jedes Fenster hat eine Standardinstanz, während C#dies nicht tut. Dieser Unterschied stammte aus verschiedenen Designkonzepten verschiedener Sprachen. VB.NETs Attribut identifiziert direkt die Instanz der Fensterklasse, während C#nicht über das Konzept dieser Standardinstanz verfügt.
Die Standardinstanz von vb.net: (Name)
Attribute ermöglichen es ihnen, direkt auf die Standardinstanz des Fensters zuzugreifen. Es gibt kein Standardbeispiel in C#:
(Name)
c#betont das von Objektorientierten Prinzip und verlangt von Programmierern, explizit Instanzen zu erstellen. Im Gegensatz zu VB.NET erlaubt C#keine Attribute und Methoden, um den globalen Namensraum zu benennen. Daher liefert C#keinen Mechanismus zur Definition der Definitionstyp -Standardinstanz.
Code Beispiel:
In C#sind die Instanz und Anzeige des Fensters explizit:
In vb.net kann es implizit instanziiert oder explizit instanziiert werden:
generierten IL -Code:
<code class="language-csharp">// 唯一方法 Form1 frm = new Form1(); frm.Show();</code>Der vom beiden Code generierte IL -Code ist unterschiedlich. Verwenden Sie in der Standardinstanzmethode von VB.NET die
-Bemerkung, um die
-Klasses zu instanziieren und die<code class="language-vb.net">' 常用方法一 Form1.Show() ' 常用方法二 Dim frm As New Form1() frm.Show()</code>-Methode auf der neu erstellten Instanz aufzurufen. In C#müssen keine Anweisungen
und direkt die -Methode auf der erstellten -Instanz aufrufen.
c#kann die Standardinstanz simulieren? newobj
Form1
Sie können die Standardinstanz simulieren, indem Sie statische Attribute in der Fensterklasse C#verwenden, um die Standardinstanz zu simulieren. Diese Methode ist jedoch nicht elegant genug und erfordert zusätzlichen Modellcode. Show()
newobj
Die Gründe für Entwurfsunterschiede: Form1
Show()
Das obige ist der detaillierte Inhalt vonWarum hat VB.NET eine Standardforminstanz, während C# dies nicht tut?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!