我正在尝试理解以下代码:
flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
DataStore = new FileDataStore("Tasks.ASP.NET.Sample.Store"),
ClientSecretsStream = stream,
Scopes = new[] { TasksService.Scope.TasksReadonly }
});
根据我的理解,第一个和最后一个{...}之间的代码是匿名函数的主体。新的FileDataStore创建FileDataStore的新实例。我不明白的是它最后的逗号是什么意思。它后面的两行也有逗号。在C#中称为什么样的构造?我不熟悉它。
答案 0 :(得分:9)
不,它不是匿名函数的主体。它是一个初始化列表 ..它用于设置所有类型为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);
这两者在功能上是等价的。它更紧凑。
答案 1 :(得分:3)
它是构造函数初始值设定项。
代码正在创建新的GoogleAuthorizationCodeFlow.Initializer
对象,并在对象上设置DataStore
,ClientSecretsStream
和Scopes
属性。
然后将其作为参数传递给GoogleAuthorizationCodeFlow
构造函数。
答案 2 :(得分:0)
你有一个样本。
public class Sample()
{
public string id { get; set; }
public int key { get; set; }
}
这可以初始化为
var sample = new Sample {id = 1, key = "one"};
然后将此sample
作为参数传递。
在您的示例中,他们对参数做了同样的事情。这被称为类初始化器。
希望它有所帮助。