معادلة "مع...تنتهي" في C# ؟ [مكررة]
-
21-08-2019 - |
سؤال
هذا السؤال سبق الجواب هنا:
- مع كتلة تعادل في C# ؟ 15 إجابات
وأنا أعلم أن C# لديها using
الكلمات الرئيسية ، ولكن using
يتصرف الكائن تلقائيا.
هل هناك معادلة With...End With
في Visual Basic 6.0?
المحلول
C# لا يملك ما يعادلها اللغة بناء على ذلك.
نصائح أخرى
ليس ما يعادلها ، ولكن بناء الجملة هذا العمل بالنسبة لك ؟
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
لا يوجد ما يعادلها ، ولكن أعتقد أن مناقشة جملة قد تكون مثيرة للاهتمام!
أنا تماما مثل ؛
NameSpace.MyObject.
{
active = true;
bgcol = Color.Red;
}
أي اقتراحات أخرى ؟
أنا غير قادر على تخيل أن إضافة اللغة هذه الميزة سيكون من الصعب ، في الأساس مجرد معالجة.
تحرير:
لقد سئمت من انتظار هذه الميزة, حتى هنا هو امتداد يحقق سلوك مماثل.
/// <summary>
/// C# implementation of Visual Basics With statement
/// </summary>
public static void With<T>(this T _object, Action<T> _action)
{
_action(_object);
}
الاستخدام ؛
LongInstanceOfPersonVariableName.With(x => {
x.AgeIntVar = 21;
x.NameStrVar = "John";
x.NameStrVar += " Smith";
//etc..
});
تحرير: ومن المثير للاهتمام أنه يبدو أن أحدا سبقني إلى الشراب مرة أخرى مع هذا "الحل".حسنا..
أعتقد ما يعادل التالية VB:
With SomeObjectExpression()
.SomeProperty = 5
.SomeOtherProperty = "Hello"
End With
سيكون هذا هو C#:
{
Var q=SomeOtherExpression();
q.SomeProperty = 5;
q.SomeOtherProperty = "Hello";
}
الفرق الحقيقي الوحيد هو أنه في vb, المعرف لا يكون اسم "q", ولكن هو مجرد الافتراضي المعرف استخدامه عند فترة واجه دون أي معرف آخر قبل ذلك.
لا يوجد تعادل مع ...تنتهي في C#.
هنا مقارنة الرسم البياني لك أن يوضح الاختلافات بين Visual Basic و C#.
ليس هناك ما يعادل هيكل في C#.هذا هو Visual Basic 6.0 / VB.NET الميزة.