2015-12-04 2 views
1

Является ли способ установить свойства объекта в блоке с помощью C#, аналогично тому, как вы пишете инициализатор объекта?C#: настройка свойств объекта в одном блоке

Например:

Button x = new Button(){ 
    Text = "Button", 
    BackColor = Color.White 
}; 

Есть ли синтаксис похож на это, что может быть свойства после того, как объект был создан?

Например:

Button x = new Button(); 
x{ 
    Text = "Button", 
    BackColor = Color.White 
}; 
+0

Возможная Дубликат [С блоком эквивалент в C#?] (Http://stackoverflow.com/questions/481725/with-block-equivalent-in-c) – sstan

+0

Это называется [объект инициализатор] (https://msdn.microsoft.com/en-us/library/bb384062.aspx) и может использоваться только при «новом» объекте. Ваша вторая часть кода просто недействительна C#. –

+0

Спасибо - Питер Витвоет. Ты дал мне ответ, я хочу –

ответ

0

Эта форма

Button x = new Button(){ 
    Text = "Button", 
    BackColor = Color.White 
}; 

Является частью синтаксиса только конструкторами и конструкторами. Вы не можете использовать тот же синтаксис на следующей строке. Однако вы можете оставить () и использовать var для типа переменной, чтобы дать вам более компактный;

var x = new Button{ 
    Text = "Button", 
    BackColor = Color.White 
}; 

После строительства единственный способ его обновления - посредством обычных операций назначения;

x.Text = "Button"; 
+0

Спасибо. Вы дали мне ответ, который я хочу: «Является частью ..» –

+0

нажмите на этот серый тик для меня? :) –

0

Может быть, вы хотите?

Button x = new Button(); 
x.Text = "Button"; 
x.BackColor = Color.White; 
+0

Нет, я не хочу этого. Я знаю, что это я. Я хочу, как этот второй пример. –

0

Вы можете сделать это с помощью инициализаторов свойств.

Button x = new Button { Text = "Button", BackColor = Color.White }; 
+1

Это идентично первому листингу в вопросе. OP запрашивает возможность сделать это в самом экземпляре после его создания. –

1

Вы можете сделать это следующим образом; скажем, у вас есть класс под названием Platypus.

путь деда:

Platypus p = new Platypus(); 
p.CWeek = "1"; 
p.CompanyName = "Pies from Pablo"; 
p.PADescription = "Pennsylvania is the Keystone state (think cops)"; 

новомодный способ:

Platypus p = new Platypus 
{ 
    CWeek = "1", 
    CompanyName = "Pies from Pablo", 
    PADescription = "Pennsylvania is the Keystone state (think cops)" 
}; 
+1

Это должен быть самый случайный пример кода, который я видел. Способ быть творческим – bit2know

+0

Это вообще не отвечает на вопрос. Он просит специальный синтаксис для задания свойств *** после ***, объект уже создан. – sstan

+0

Тот, кто лучше всего понимает, что я хочу сказать -Сстан, спасибо. Я получил свой ответ. Нет никаких указаний по тому, как я хочу. –

Смежные вопросы