簡體   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