当我使用方法替换字符串中的一个值时,这是有效的,但是当我设置一个函数来执行它时它不会。该方法与下面的函数几乎完全相同 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
}
答案 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();
}