سؤال

هذا السؤال سبق الجواب هنا:

وأنا أعلم أن 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 الميزة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top