【问题标题】:Is there C# shorthand to create a new instance of a containing type?是否有 C# 速记来创建包含类型的新实例?
【发布时间】:2020-05-01 05:56:51
【问题描述】:

假设我有一个名为 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】:

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

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

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

但请注意:

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

所以使用风险自负...

【讨论】:

  • “你的科学家们非常专注于他们是否可以,他们没有停下来思考是否应该做。”
  • @Dave 哈哈,是的,我在争论是否要提出建议。但告诫购买者...
猜你喜欢
  • 2014-08-08
  • 1970-01-01
  • 2015-05-22
  • 2013-03-29
  • 2022-01-23
  • 2014-05-24
  • 2011-11-05
  • 1970-01-01
相关资源
最近更新 更多