我正在尝试创建一个在运行时可以指向各种数据输入的类。要做到这一点,我试图使用代表。我有一个返回字符串的worker方法(在实际实现中,还有其他人可供选择)。然后从暴露给代码其余部分的方法返回委托的返回值。
private delegate string delMethod();
private static delMethod pntr_Method = new delMethod(OneDelegateMethod);
public static string ExposedMethod()
{
return pntr_Method;
}
public static string OneDelegateMethod()
{
return "This is a string";
}
我收到此错误
无法将类型'OB.DataBase.delMethod'隐式转换为'string'
我很困惑,为什么我得到这个,当这个方法适用于bools和IDataReaders
时。
答案 0 :(得分:4)
如果要调用委托并返回值,则必须使用“()”:
public static string ExposedMethod()
{
return pntr_Method();
}
答案 1 :(得分:1)
您需要调用委托才能返回字符串值。委托实际上只是指向方法的指针,需要使用括号来调用它们以执行它们指向的方法。 以下是您的代码的固定版本:
private delegate string delMethod();
private static delMethod pntr_Method = new delMethod(OneDelegateMethod);
public static string ExposedMethod()
{
return pntr_Method();
}
public static string OneDelegateMethod()
{
return "This is a string";
}
答案 2 :(得分:0)
您必须调用目标方法:
public static string ExposedMethod()
{
return pntr_Method();
}