【问题标题】:Using "this" in static methods used to construct an object在用于构造对象的静态方法中使用“this”
【发布时间】:2014-03-25 20:29:17
【问题描述】:

这就是我的意思。

我有一个类的构造函数如下:

Class() : base(GetConstructorArgument1(), GetConstructorArgument2())
{
}

因为在对 base 的调用中创建参数虽然可能,但会非常麻烦和粗暴。这两个 GetConstructorArgument 方法都必然是静态的。

GetConstructorArgument2() 创建一个 lambda 数组。在那些 lambdas 中,我想处理我正在构建的对象“this”。

有什么办法吗?

【问题讨论】:

  • 如果类是静态的,为什么需要使用this
  • thisstatic 函数中不可用,因为根据定义,static 函数是那些在调用时不接收 this 引用的函数。
  • @LucasAbilidebob 也许这个类不是静态的?为什么会这样?
  • 您要解决的实际问题是什么(不是机制)?你想要的东西是不可能的,但可能还有另一种选择。
  • 这种听起来像XY problem。你能给我们一张你正在尝试做什么的更全面的图片吗?

标签: c# constructor lambda static-methods


【解决方案1】:

根据定义,这些方法必须在构造 this 之前运行。这就是为什么它们必须是静态方法。因此,没有真正的方法可以在其中访问this

真的没有办法做到你所描述的。

【讨论】:

    【解决方案2】:

    这两个 GetConstructorArgument 方法必然是静态的。

    我想在“这个”上工作,我正在构建的对象。

    你不能同时做这两个 - 如果方法是静态的,就没有this 可以处理。静态方法属于类,不属于实例,因此没有实例可以使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      相关资源
      最近更新 更多