Любой визуальный базовый «с помощью аналогового в C #? [Дубликат

StackOverflow https://stackoverflow.com/questions/4219290

Вопрос

Возможный дубликат:
C # Эквивалент для визуального основного ключевого слова: «с« ... ».

Vb.net.

With Alpha.Beta.Gama.Eta.Zeta
    a = .ZetaPropertyA
    b = .ZetaPropertyB
    c = .ZetaPropertyC
End With

C #?

a = Alpha.Beta.Gama.Eta.Zeta.ZetaPropertyA
b = Alpha.Beta.Gama.Eta.Zeta.ZetaPropertyB  
c = Alpha.Beta.Gama.Eta.Zeta.ZetaPropertyC
Это было полезно?

Решение

Нет, не существует.

Хотя ты мог немного сократить:

var z = Alpha.Beta.Gama.Eta.Zeta;

z.ZetaPropertyA = a;
z.ZetaPropertyB = b; 
z.ZetaPropertyC = c;

Для вашего другого случая:

var z = Alpha.Beta.Gama.Eta.Zeta;

a = z.ZetaPropertyA;
b = z.ZetaPropertyB;
c = z.ZetaPropertyC;

Это должно было быть очевидно, хотя;)

Другие советы

Для новых экземпляров вы можете использовать инициализатор объекта:

Alpa.Beta.Gama.Eta = new Zeta
{
    ZetaPropertyA = a, 
    ZetaPropertyB = b,
    ZetaPropertyC = c
}

Нет, нет ничего подобного with построить в C #.

Неа. Отказ Обходной путь - это (короткое) локальное название переменной вместо with. Отказ Добавляет несколько символов в строку, но вы все еще в конечном итоге с полностью квалифицированными ссылками.

Извините, C # не имеет этого. Инициализатор объекта @jakub предполагает, что может предоставить альтернативу или:

Если вы проектируете Zeta сами, вы могли бы использовать Свободный интерфейс Шаблон дизайна. Это позволило бы вам сделать:

Alpha.Beta.Gama.Eta.Zeta
    .SetPropertyA(A)
    .SetPropertyB(B)
    .SetPropertyC(C);

Который приближается к тому, что вы хотите, за счет много работы в другом месте. И помните, что свободный интерфейс не всегда является лучшим выбором дизайна.

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