无法将类型委托隐式转换为字符串

时间:2014-02-01 01:19:41

标签: c# string delegates implicit-conversion

我正在尝试创建一个在运行时可以指向各种数据输入的类。要做到这一点,我试图使用代表。我有一个返回字符串的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时。

3 个答案:

答案 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();
}