理解这个c#代码的含义

时间:2014-01-08 10:46:09

标签: c# google-tasks-api

我正在尝试理解以下代码:

  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 个答案:

答案 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对象,并在对象上设置DataStoreClientSecretsStreamScopes属性。

然后将其作为参数传递给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作为参数传递。

在您的示例中,他们对参数做了同样的事情。这被称为类初始化器。

希望它有所帮助。