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 
}

如您所见,我有两种返回值相同但参数不同的方法,我想要类似的东西:

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 回答