我正在尝试将委托作为参数传递给这样的类的 ctor
class Foo
{
protected delegate void CreateResource(object parameter);
protected Foo(CreateResource res)
{
}
public Foo(string resourceName)
: this(CreateStreamRes) // Compiler error
{
}
protected void CreateStreamRes(object o)
{
}
}
但我在注释行中收到以下编译器错误:“非静态字段、方法或属性‘CreateStreamRes(object)’需要对象引用”。
但是,如果我像这样在构造函数中添加一个变量
public Foo(string resourceName)
: this(CreateStreamRes) // Compiler error
{
CreateResource cr = CreateStreamRes; // OK
}
它成功地编译了该行。
似乎 C# 将构造函数视为静态方法。因为如果我将static关键字添加到 CreateStreamRes(object o) 方法,它编译得很好。
有人可以解释一下为什么会这样吗?