繁体   English   中英

我可以将方法作为参数传递吗?

[英]Can I pass a method as a parameter?

我正在开发几个生成字符串的插件方法,并将其传递回我的主要方法。 从这里,我可以想出一个序列号。 但是,我想避免将插件集成到我的主程序中 - 基本上任何迫使我以任何方式更改主程序以识别此插件的内容都是禁止的。

所以 - 在我的主程序中,我生成一个字符串,然后将它与其他匹配的字符串进行匹配以找出序列号。 问题是我需要知道这个字符串的格式,所以我知道在哪里输入这个数字。

我正在考虑可能传入一个知道此字符串的匹配函数的方法,但我不确定如何将方法从一个程序传递到另一个程序。

我发现了这个问题,但这似乎只在同一个程序中。

在 C# 中,您可以将一个方法作为另一个方法的参数传递,前提是它返回接收方方法期望的内容。 因此,鉴于此:

public int Foo(){ ... }


public void Bar(int i) { ... }

你可以这样做: ...Bar(this.Foo());

但是,我认为您所追求的实际上是delegates ,它们本质上是函数指针。 这将允许您从其他方法调用委托指向的方法。

作为旁注,您可以考虑查看Strategy Design Pattern 此模式允许您从本质上确定在运行时调用哪种行为(逻辑)。

首先,对于您的情况,您不需要传递该方法。 您可以将方法设为 public 并在同一命名空间中的另一个程序中访问,例如:- ClassObject.Method();... 这里的对象应该是定义您的方法的类

您可以在调用时包含函数的返回值作为参数,如果这就是您正在尝试的(例如:- testapp(Square(x)) 如果参数的类型与方法的返回类型相同.. 在另一种情况下,委托可能是有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM