2012-04-30 7 views
1

ようなコードを渡すことは、私はいくつかの例の擬似コードは、私は、パラメータ</p> <p>として関数への参照を渡すためにしようとしているパラメータC#

(calling function) 

function(hello()); 

function(pass) 
{ 
    if this = 0 then pass 
    else 
} 

hello() 
{ 
    do something here 
} 

申し訳ありませんが書きます

を説明するのは難しいですそれはあまり意味がない場合

しかし、私は使用されたコードを減らそうとしており、これは良い考えだと思った。

どのようにC#でこれを行うことができますか?

+2

ので、どこに問題がある... –

+0

私はこれを達成することができませんC#の –

答えて

6

あなたは、delegatesを使用してメソッドにコードを渡すことができます例えば、Action delegate

void MyFunction(Action action) 
{ 
    if (something == 0) 
    { 
     action(); 
    } 
} 

void Hello() 
{ 
    // do something here 
} 

使用法:私はへの参照を渡すためにしようとしている

MyFunction(Hello); 
+0

であるあなたはDTBありがとう!それは私が探していたものをexacally! –

+0

Works完璧にあなたの助けに感謝します! –

4

パラメータとしての機能

説明が難しい

説明するのは難しいかもしれませんが、実装するのは非常に簡単です。以下のコードでは、パラメータ化されたコードをパラメータとして渡しています:MyFunction

static void MyFunction(Action<string> doSomething) { 
    doSomething("world"); 
} 

static void Main(string[] args) { 
    MyFunction((name) => { 
     Console.WriteLine("Hello, {0}!", name); 
    }); 
} 

あなたはシステム(ActionFunc)またはwrite your ownが提供するデリゲート型を使用することができます。ここで

0

は一例です。

using System; 

public class Example 
{ 

    public void Method1(Action hello) 
    { 
     // Call passed action. 
     hello(); 
    } 

    public void Method2() 
    { 
     // Do something here 
    } 

    public void Method3() 
    { 
     Method1(Method2); 
    } 
} 
関連する問題