1

我试图理解以下代码:

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

据我了解,第一个和最后一个 {...} 之间的代码是匿名函数的主体。新的 FileDataStore 创建 FileDataStore 的新实例。我不明白的是它末尾的逗号是什么意思。其后的两行末尾也有逗号。这在 C# 中调用了什么样的构造?我不熟悉它。

4

3 回答 3

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);

两者在功能上是等价的。它只是更紧凑。

于 2014-01-08T10:47:56.927 回答
3

它是一个构造函数初始化器。该代码正在创建一个新GoogleAuthorizationCodeFlow.Initializer对象,并在该对象上设置DataStoreClientSecretsStream属性Scopes

GoogleAuthorizationCodeFlow然后将其作为参数传递给构造函数。

于 2014-01-08T10:48:21.933 回答
0

你有一个类样本。

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

这可以初始化为

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

然后将其sample作为参数传递。

在您的示例中,他们对参数做了同样的事情。这称为类初始值设定项。

希望能帮助到你。

于 2014-01-08T10:55:22.900 回答