Gleichwertigkeit von „With ... End With“ in C #? [Duplikat]
-
21-08-2019 - |
Frage
Diese Frage bereits eine Antwort hier:
- Bei Block äquivalent in C #? 15 Antworten
Ich weiß, dass C # das using
Schlüsselwort, aber using
verfügt über das Objekt automatisch.
Gibt es die Äquivalenz von With...End With
in Visual Basic 6.0 ?
Lösung
C # nicht über eine äquivalente Sprache für das Konstrukt.
Andere Tipps
Es ist nicht gleichwertig, sondern würde diese Syntax Arbeit für Sie?
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
Es gibt kein Äquivalent, aber ich denke, eine Syntax Diskussion interessant sein könnte!
Ich mag;
NameSpace.MyObject.
{
active = true;
bgcol = Color.Red;
}
Alle anderen Vorschläge?
Ich kann mir vorstellen, dass diese Sprache-Funktion hinzugefügt schwierig sein würde, im Wesentlichen nur ein vorverarbeitet.
EDIT:
Ich war krank für diese Funktion des Wartens, so ist hier und Erweiterung, die ein ähnliches Verhalten erreicht.
/// <summary>
/// C# implementation of Visual Basics With statement
/// </summary>
public static void With<T>(this T _object, Action<T> _action)
{
_action(_object);
}
Nutzung;
LongInstanceOfPersonVariableName.With(x => {
x.AgeIntVar = 21;
x.NameStrVar = "John";
x.NameStrVar += " Smith";
//etc..
});
EDIT: Interessanterweise scheint es mich jemand auf den Stempel schlagen, wieder, mit dieser "Lösung". Oh well ..
Ich denke, das Äquivalent der folgenden VB :
With SomeObjectExpression()
.SomeProperty = 5
.SomeOtherProperty = "Hello"
End With
Wäre dies C # :
{
Var q=SomeOtherExpression();
q.SomeProperty = 5;
q.SomeOtherProperty = "Hello";
}
Der einzige wirkliche Unterschied ist, dass in vb, die Kennung keinen Namen „q“ hat, sondern ist einfach eine Standard-Kennung verwendet, wenn eine Periode ohne andere Kennung, bevor es auftritt.
Es gibt kein Äquivalent zu With ... End With in C # .
Hier ist eine Vergleichstabelle für Sie die Unterschiede zwischen Visual Basic und C # veranschaulicht.
Es gibt keine äquivalente Struktur in C #. Dies ist eine Visual Basic 6.0 / VB.NET Funktion.