我需要帮助才能使用下面的代码来调用Method1
。没有编译问题但是在运行代码Method1
时没有调用。我搜索了很多网,但没有找到解决方案。
public static class Test12
{
public static Test12.ByteDelegate PropertyValue { get; set; }
public delegate byte[] ByteDelegate(byte p1, byte[] p2);
}
上述课程必须像这样使用:
class Abc
{
internal void Stat()
{
Test12.Propertyvalue = Method1;
}
private byte[] Method1(byte p1, byte[] p2)
{
byte[] abc = ...;
return abc;
}
}
如果我在stat方法中创建委托的实例并使用它,如:
Method1(param1,param2);
然后调用Method1
,但如果我这样使用它:
Test12.PropertyValue = Method1(param1,param2);
编译器抛出一个错误,说错过了类型转换。有人可以告诉我如何使用Method1
调用Test12.PropertyValue = Method1;
吗?
答案 0 :(得分:0)
您收到错误消息,因为当您尝试将方法分配给委托时,您使用的是以下代码行:
test12.propertyvalue = method1(param1, param2);
首先调用method1
,然后它返回它试图分配给委托的内容,并且出现错误消息,说你不能将一个字节数组分配给一个委托,就像@Jon在评论。它们是不同的类型,因此您不能将它们分配给另一个,至少没有转换或转换方法。
为了从委托中调用method1
,请按照以下方式进行分配:
test12.propertyvalue = method1;
你可以简单地调用委托,因为这将是你的方法:
test12.propertyvalue(param1 , param2);