C # struct частичная инициализация - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть структура параметров:

public struct MyParams
{
   public int    Param1;
   public int    Param2;
   public string Param3;
   public string Param4;
}

Это общая структура для использования в приложении.И есть некоторые ситуации, в которых мне нужно инициализировать только одного члена, все остальные не используются.Я могу инициализировать struct следующим образом:

MyParams testParams = default(MyParams);
testParams.Param2 = 3;
FunctionX(testParams);

Также я могу инициализировать struct direct в вызове функции, но в этом случае я должен указать значения для всех членов:

FunctionX(new MyParams{Param1=0,Param2=3,Param3=string.Empty,Param4=string.Empty});

Мой вопрос Могу ли я инициализировать структуру в строке вызова функции и указать только одного достаточного для меня члена, а другие члены примут значение по умолчанию

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 04 апреля 2011

С 11.3.4 Значения по умолчанию

Цитирую:

Однако, поскольку структуры являются типами значений не может быть нулевым, значение по умолчанию структуры является значением, произведенным установив все поля типа значения в их значение по умолчанию и все ссылочные типы поля к нулю.

2 голосов
/ 04 апреля 2011

При инициализации struct все члены будут инициализированы до значений по умолчанию:

MyParams p = new MyParams() { Param3 = "Test" };

Это оставит вас с:

Param1 == 0;
Param2 == 0;
Param3 == "Тест";
Param4 == ноль;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...