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

Is there C# shorthand to create a new instance of a containing type?

假设我有一个名为 Foo 的 class,Foo 内部是一个名为 GetInstance 的静态方法,returns 类型为 Foo。是否有 C# shorthand 方法让 GetInstance 创建 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#中没有这样的关键字。

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

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

但请注意:

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

所以使用风险自负...