在C#中定义私有属性,如Typescript

时间:2017-10-13 11:59:43

标签: c# typescript asp.net-core

C#中是否有一种语法允许我定义一个私有属性,比如在Typescript中?

示例:Typescript:

constructor (private field1: string) { }

在C#中,我必须这样做:

private readonly string field1;
public MyClass(string field1)
{
    this.field1 = field1;
}

更新1:

我正在为AspNet核心依赖注入寻找语法糖。

3 个答案:

答案 0 :(得分:5)

在C#7中没有这个语法糖,你必须编写样板。

听起来像主要构造函数是你正在寻找的东西 - 它们在C#6测试版中但最终被删除了。

http://www.alteridem.net/2014/09/08/c-6-0-primary-constructors/

答案 1 :(得分:1)

Class myClass
{
  private string field1 {get; set;}

  public Class()
  {
  }
}

多数民众赞成,如果你初始化这个类,你现在有了一个属性。 如果您只想读取它,只需编写一个get方法。

答案 2 :(得分:1)

编辑(问题编辑后)

如果你想在Angular中使用构造函数中的依赖注入语法糖,遗憾的是还没有...还没有。

在类中声明private字段:

Class myClass
{
  private string field1;

  public Class()
  {
  }
}

如果您希望能够使用构造函数调用初始化此字段,则可以为构造函数提供参数,以便初始化它。

Class myClass
{
  private string field1;

  public Class(string field1)
  {
      this.field1 = field1;
  }
}

您也可以将其定义为属性而不是简单字段(属性具有getter和/或setter,并且在C#中使用以下语法由隐藏变量内部支持):

Class myClass
{
  private string Field1 { get; set; }

  public Class(string field1)
  {
      this.Field1 = field1;
  }
}