从(获取,设置)属性c#

时间:2016-07-06 19:28:24

标签: c#-4.0 delegates

我需要帮助才能使用下面的代码来调用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;吗?

1 个答案:

答案 0 :(得分:0)

您收到错误消息,因为当您尝试将方法分配给委托时,您使用的是以下代码行:

 test12.propertyvalue = method1(param1, param2);

首先调用method1,然后它返回它试图分配给委托的内容,并且出现错误消息,说你不能将一个字节数组分配给一个委托,就像@Jon在评论。它们是不同的类型,因此您不能将它们分配给另一个,至少没有转换或转换方法。

为了从委托中调用method1,请按照以下方式进行分配:

 test12.propertyvalue = method1;

你可以简单地调用委托,因为这将是你的方法:

 test12.propertyvalue(param1 , param2);