我需要帮助才能使用以下代码来调用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);
编译器抛出错误,指出缺少类型转换。任何人都可以告诉我如何使用Test12.PropertyValue = Method1;
调用Method1
吗?
您会收到一条错误消息,因为当您尝试将该方法分配给委托时,您正在使用以下代码行:
test12.propertyvalue = method1(param1, param2);
它首先调用method1
,然后它返回的内容试图分配给委托,并且出现错误消息,指出您无法将字节数组分配给委托,如@Jon注释中所述。它们是不同的类型,因此您无法将一个分配给另一个,至少在没有转换或转换方法的情况下不能。
为了从委托调用method1
,在执行以下操作分配之后:
test12.propertyvalue = method1;
您可以简单地调用委托,因为它将是您的方法:
test12.propertyvalue(param1 , param2);