我需要一个方法(方法将具有相同的返回值,但不同的params)像一个参数。我能做什么?

时间:2012-07-20 08:09:05

标签: c# .net delegates parameter-passing func

我有下一个代码:

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"));

是可以的吗?

由于

2 个答案:

答案 0 :(得分: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"));

答案 1 :(得分: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) 
{
}