gpt4 book ai didi

C# 将类作为参数传递

转载 作者:行者123 更新时间:2023-11-30 20:03:59 24 4
gpt4 key购买 nike

我有一个接口(interface),它有一些方法

interface IFunction
{
public double y(double x);

public double yDerivative(double x);
}

我有正在实现它的静态类。

static class TemplateFunction:IFunction
{
public static double y(double x)
{
return 0;
}

public static double yDerivative(double x)
{
return 0;
}
}

我想将这个类作为参数传递给另一个函数。

 AnotherClass.callSomeFunction(TemplateFunction);

和其他一些捕获请求的类

class AnotherClass
{
IFunction function;
public void callSomeFunction(IFunction function)
{
this.fuction = function;
}
}

好吧,这行不通...我已经尝试使用 Type 表达式,但这似乎打破了使用接口(interface)的想法。有谁知道如何更正代码?

最佳答案

静态类无法实现接口(interface),但您可以通过使您的类成为非静态类和通用方法来轻松克服此问题:

class AnotherClass
{
IFunction function;

public void callSomeFunction<T>()
where T: IFunction, new()
{
this.fuction = new T();
}
}

这与您想要的语法非常接近:

AnotherClass.callSomeFunction<TemplateFunction>();

但我实际上认为这种方式太复杂并且可能使人感到困惑,您应该遵循更简单的 Servy 方法:

AnotherClass.callSomeFunction(TemplateFunction.Instance);

关于C# 将类作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13939806/

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