Вопрос

На этот вопрос уже есть ответ здесь:

Я знаю, что 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", а является просто идентификатором по умолчанию, используемым, когда встречается точка без какого-либо другого идентификатора перед ней.

Нет эквивалента слову With ...Заканчиваются на in C#.

Вот сравнительная таблица для вас это иллюстрирует различия между Visual Basic и C #.

В C # нет эквивалентной структуры.Это Visual Basic 6.0 / VB.NET особенность.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top