Любой визуальный базовый «с помощью аналогового в C #? [Дубликат
-
26-09-2019 - |
Вопрос
Возможный дубликат:
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);
Который приближается к тому, что вы хотите, за счет много работы в другом месте. И помните, что свободный интерфейс не всегда является лучшим выбором дизайна.