Эквивалентность “With…End With” в 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", а является просто идентификатором по умолчанию, используемым, когда встречается точка без какого-либо другого идентификатора перед ней.
Нет эквивалента слову With ...Заканчиваются на in C#.
Вот сравнительная таблица для вас это иллюстрирует различия между Visual Basic и C #.
В C # нет эквивалентной структуры.Это Visual Basic 6.0 / VB.NET особенность.