无法将类型字符串转换为System.Func <string,int,string,string>

时间:2016-04-04 01:03:59

标签: c# string implicit-conversion

当我使用方法替换字符串中的一个值时,这是有效的,但是当我设置一个函数来执行它时它不会。该方法与下面的函数几乎完全相同 Func给出错误

  

不能将string隐含到System.Func<string,int,string,string>

我知道。我知道。如果它工作,请使用该方法并忘记Func。只是想知道为什么Func不起作用。我花了一些时间尝试不同类型的组合而没有成功。我是新手,只是为了好玩而学习C#(?)。

static Func<string,int,string,string> ReplaceNumber(string p, int location, string newValue)
{
    StringBuilder sb = new StringBuilder();
    sb.Append(p);
    sb.Remove(location, 1);
    sb.Insert(location, newValue);
    string temp = sb.ToString();
    return temp;   // why doesn't "return sb.ToString()" work
}

static string ReplaceNumber(string p, int location, string newValue)
{
    StringBuilder sb = new StringBuilder();
    sb.Append(p);
    sb.Remove(location, 1);
    sb.Insert(location, newValue);
    string temp = sb.ToString();
    return temp;   // why doesn't "return sb.ToString()" work
}

1 个答案:

答案 0 :(得分:1)

像这样更改Func

static Func<string, int, string, string> ReplaceNumber = delegate(string p, int location, string newValue)
{
    StringBuilder sb = new StringBuilder();
    sb.Append(p);
    sb.Remove(location, 1);
    sb.Insert(location, newValue);
    return sb.ToString();       
};

并将其称为:

string output = ReplaceNumber("Sample", 1, "sample op3"); // op will be "Ssample op3mple"

注意:return sb.ToString();的工作条件是location具有整数值,该值是字符串中的有效位置。 您的静态方法也将为您执行相同的任务:

static string ReplaceNumber(string p, int location, string newValue)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append(p);
        sb.Remove(location, 1);
        sb.Insert(location, newValue);
        return  sb.ToString();         
    }