Start Debugging
2023-08-05 Обновлено 2023-11-05 csharp Edit on GitHub

Есть ли в C# аналог инструкции With...End With?

Инструкция With...End With в VB позволяет выполнять серию операторов, которые многократно обращаются к одному объекту, используя упрощённый синтаксис доступа к его членам. Есть ли аналог в C#? Нет. Ближайший аналог - инициализаторы объектов, но они работают только при создании новых экземпляров.

Инструкция With…End With в VB позволяет выполнить серию операторов, которые многократно обращаются к одному объекту. Благодаря этому операторы могут использовать упрощённый синтаксис для обращения к членам объекта. Например:

With car
    .Make = "Mazda"
    .Model = "MX5"
    .Year = 1989
End With

Есть ли синтаксический аналог в C#?

Нет. Аналога не существует. Ближе всего по смыслу инициализаторы объектов, но они применяются только при создании новых экземпляров и не могут использоваться для обновления уже существующих объектов, как это делает инструкция with.

Например, при создании нового экземпляра объекта можно использовать инициализатор объекта:

var car = new Car
{
    Make = "Mazda",
    Model = "MX5",
    Year = 1989
};

Но при обновлении объекта эквивалентного упрощённого синтаксиса нет. Придётся ссылаться на объект при каждом присваивании или вызове члена, вот так:

car.Make = "Aston Martin";
car.Model = "DBS";
car.Year = 1967;

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Назад