是否有 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);
但请注意:
- 它会比直接引用类型慢(是否影响整体性能取决于它被调用的频率)
- 仅当该类型具有不带参数的构造函数时才有效
所以使用风险自负...
假设我有一个名为 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);
但请注意:
- 它会比直接引用类型慢(是否影响整体性能取决于它被调用的频率)
- 仅当该类型具有不带参数的构造函数时才有效
所以使用风险自负...