Я знаю, что С# имеет ключевое слово using
, но using
автоматически удаляет объект.
Существует ли эквивалентность With...End With
в Visual Basic 6.0?
Я знаю, что С# имеет ключевое слово using
, но using
автоматически удаляет объект.
Существует ли эквивалентность With...End With
в Visual Basic 6.0?
С# для этого не имеет эквивалентной языковой конструкции.
Это не эквивалентно, но будет ли этот синтаксис работать для вас?
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
Нет эквивалента, но я думаю, что обсуждение синтаксиса может быть интересно!
Мне очень нравится;
NameSpace.MyObject.
{
active = true;
bgcol = Color.Red;
}
Любые другие предложения?
Я не могу себе представить, что добавление этой языковой функции было бы затруднительным, по существу, просто препроцессором.
EDIT:
Мне было больно ждать этой функции, так что вот и расширение, которое достигает аналогичного поведения.
/// <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
Будет ли это С#:
{
Var q=SomeOtherExpression();
q.SomeProperty = 5;
q.SomeOtherProperty = "Hello";
}
Единственное реальное различие заключается в том, что в vb идентификатор не имеет имени "q", но является просто идентификатором по умолчанию, используемым, когда период встречается без какого-либо другого идентификатора перед ним.
Нет эквивалента With With... End With in С#.
Здесь сравнительная таблица для вас, которая иллюстрирует различия между Visual Basic и С#.
В С# нет эквивалентной структуры. Это функция Visual Basic 6.0/VB.NET.