0

次のコードがあります:

public byte[] A(int i){//do something}

public byte[] B(string a) { //do something}

public void useAMethod()
{
  //Previous code
  byte[] array = A(0);
  //final code using array 
}

public void useBMethod()
{
  //Previous code
  byte[] array = B("test");
  //final code using array 
}

ご覧のとおり、戻り値は同じですが、パラメータが異なる2つのメソッドがあります。

public void useAnyMethod([method] methodToUse)
{
  //Previous code
  byte[] array = methodToUse;
  //final code using array 
}

次のように使用するには:

useAnyMethod(A(0));
useAnyMethod(B("test"));

それは可能ですか?

ありがとう

4

2 に答える 2

2

私はそれをbyte[] =ある種の内部割り当てだと思いますか?

もしそうなら

public void useAnyMethod(byte[] result) { 

   byte[] = result;  // This is not actually valid because you don't have a variable name after byte[]¬
}

useAnyMethod(a(0));
useAnyMethod(b("fish"));

useAnyMethodは実際にはメソッドを呼び出さず、ランタイムが結果を取得するために最初に呼び出すメソッドの戻り値を受け入れるだけです。

または、デリゲートを使用することにした場合

public void useAnyMethod(Func<byte[]> method) {
    byte[] = method();
}

useAnyMethod(()=>A(0));
useAnyMEthod(()=>B("test"));
于 2012-07-20T08:15:12.223 に答える
0

私には基本的なオーバーロード候補のようです。

public void DoSomething(int data) 
{
    var bytes = // convert int to bytes here
    DoSomething(bytes)
}

public void DoSomething(string data)
{
    var bytes = // convert string to bytes here
    DoSomething(bytes)
}

public void DoSomething(byte[] data) 
{
}
于 2012-07-20T08:19:20.477 に答える