Добавить или AddRange в список в C# инициализировать объект - PullRequest
1 голос
/ 16 июня 2020

Как объяснено в https://docs.microsoft.com/de-de/visualstudio/code-quality/ca2227?view=vs-2019 У меня есть объект со списком только для чтения, например:

public class MyClass {
  public int id { get; set; }
  public List<string> stringList { get; } = new List<string>;
}

Но как я могу инициализировать MyClass, добавляя данные в stringList?

MyClass test = new MyClass(){
  id = 1,
  stringList = ???
}

Ответы [ 2 ]

3 голосов
/ 16 июня 2020

Вы можете использовать не очень очевидный синтаксис с инициализаторами коллекций :

var x = new MyClass
{
    id = 1,
    stringList = {"as", "ddsd"} // will ADD "as", "ddsd" to stringList 
};
Console.WriteLine(string.Join(", ", x.stringList)); // prints as, ddsd

Но обычный подход для обработки свойств только для чтения (пока C# 9 не будет выпущен только с init свойства и записи ) - передать значения инициализации в конструктор.

0 голосов
/ 16 июня 2020

Вы можете передать stringList в качестве параметра в конструкторе и назначить свойство параметру:

public class MyClass {
    public int id { get; set; }
    public List<string> stringList { get; } = new List<string>();

    public MyClass(List<string> stringList) {
        this.stringList = stringList;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...