首页 > 解决方案 > 用于分配对象属性的语法糖

问题描述

我最近在C#. 我不知道它的名字,但不知何故它会让我们免于打字new ClassName()。这意味着以下代码段:

var myObject = new MyObjectClass 
{
   MyProperty = new MyPropertyClass
   {
     StrValue = "Foo"
   }
}

可以改为:

var myObject = new MyObjectClass 
{
   MyProperty = 
   {
     StrValue = "Foo"
   }
}

没有new MyPropertyClass了对吗?
顺便说一句:我正在使用C# 8.0.
问题:此功能的名称是什么?虽然可以通过谷歌搜索知道该功能的名称的详细信息,但如果有人有一个简短的概述,那就太好了。

标签: c#syntaxinitialization

解决方案


看起来你的意思是Target-typed new expressions。当类型已知或可以从使用中推断出来时,此功能允许省略构造函数的类型规范。

该功能将在 C# 9.0 中,它是.NET 5 开发平台的一部分。预定发布时间为2020年11月。

新语法将如下所示:

        public class Person
        {
            public Vehicle Vehicle { get; set; }
        }
    
        public class Vehicle
        {
            public string Name { get; set; }
        }

        var person = new Person()
        {
            Vehicle = new ()
            {
               Name = "Car"
            }
        };

推荐阅读