Понимание значения этого кода C#

Я пытаюсь понять следующий код:

  flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
  {
    DataStore = new FileDataStore("Tasks.ASP.NET.Sample.Store"),
    ClientSecretsStream = stream,
    Scopes = new[] { TasksService.Scope.TasksReadonly }
  });

Насколько я понимаю, код между первым и последним {...} является телом анонимной функции. Новый FileDataStore создает новый экземпляр FileDataStore. Я не понимаю, что означает запятая в конце. Две строки, следующие за ним, также имеют запятые в конце. Какую конструкцию это называется в C#? Я не знаком с этим.

3 ответа

Решение

Нет, это не тело анонимной функции. Это список инициализации.. и он служит для установки полей нового объекта типа GoogleAuthorizationCodeFlow.Initializer все в линию.

Это "встроенная" версия этого:

var initializer = new GoogleAuthorizationCodeFlow.Initializer();
initializer.DataStore = new FileDataStore("Tasks.ASP.NET.Sample.Store");
initializer.ClientSecretsStream = stream;
initializer.Scopes = new[] { TasksService.Scope.TasksReadonly };

flow = new GoogleAuthorizationCodeFlow(initializer);

Два функционально эквивалентны. Это просто более компактно.

Это инициализатор конструктора. Код создает новый GoogleAuthorizationCodeFlow.Initializer объект и настройка DataStore, ClientSecretsStream а также Scopes свойства на объекте.

Затем он передается GoogleAuthorizationCodeFlow конструктор в качестве аргумента.

У вас есть класс Sample.

public class Sample()
{
    public string id { get; set; }
    public int key { get; set; }
}

Это может быть инициализировано как

var sample = new Sample {id = 1, key = "one"};

Тогда передайте это sample в качестве аргумента.

В вашем примере они сделали то же самое с параметром. Это называется инициализатором класса.

Надеюсь, поможет.

Другие вопросы по тегам