Понимание значения этого кода 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
в качестве аргумента.
В вашем примере они сделали то же самое с параметром. Это называется инициализатором класса.
Надеюсь, поможет.