我有下一个代码:
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"));
是可以的吗?
由于
答案 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)
{
}