gpt4 book ai didi

c# - 存储对实例方法的静态引用?

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:04 25 4
gpt4 key购买 nike

我想创建一个包含委托(delegate)的静态数组。我将使用这个数组来查找我需要的委托(delegate)。例如:

class HandlerID
{
public int ID { get; set; }
public Func<int, bool> Handler { get; set; }
}

protected const HandlerID[] HandlerIDs = {
new SectionRenderer() { ID = SectionTypes.Type1, Handler = MyType1Handler },
new SectionRenderer() { ID = SectionTypes.Type2, Handler = MyType2Handler },
// Etc.
}

protected bool MyType1Handler(int arg)
{
return false;
}

// Etc.

但是,分配给 HandlerID 数组中的 Handler 会出现以下错误:

An object reference is required for the non-static field, method, or property 'MyType1Handler(int)'

我希望数组是 const,这样它就不必为我的类的每个实例都初始化。有什么方法可以将实例方法存储在静态数组中吗?

最佳答案

这没有意义。
当您调用数组中的委托(delegate)时,它们需要您的类的一个实例来进行操作。

因此,您需要为每个类实例设置一组单独的委托(delegate)。

如果这些方法实际上不需要实例来操作,您可以将它们设为static,这将解决问题。

或者,您可以将实例作为委托(delegate)的参数,并使用调用该方法的 lambda 表达式:Handler = (instance, arg) => instance.MyType1Handler(arg)

关于c# - 存储对实例方法的静态引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7004022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com