是否有C#速记来创建包含类型的新实例?

问题描述 投票:0回答:1

假设我有一个名为Foo的类,并且Foo内部是一个名为GetInstance的静态方法,该方法返回类型Foo。 GetInstance是否有C#速记方法来创建Foo实例而不必键入“ new Foo()”?]

换句话说,如果调用的方法创建的方法与该方法所属的类型相同,是否有特殊的C#关键字创建包含类型的实例?

代码示例:

public class Foo
{
    public static Foo GetInstance()
    {
        return new Foo(); //is there something like new container() or maybe just constructor()
    }
}
c# keyword shorthand
1个回答
2
投票

不,C#中没有这样的关键字。

我能想到的最短的方法实际上并不涉及封闭类型,是使用反射:

return Activator.CreateInstance(MethodBase.GetCurrentMethod().DeclaringType);

但请注意:

  • 比直接引用类型要慢(它是否会影响性能总体取决于调用频率)
  • 仅在类型具有不带参数的构造函数时有效

所以使用后果自负...

© www.soinside.com 2019 - 2024. All rights reserved.