C# 使用字典函数替换字符串时出现语法错误

C# 使用字典函数替换字符串时出现语法错误,c#,C#,C#.NET 4.5.1 语法错误“string.Join(string,string[])的最佳重载方法匹配项包含一些无效参数 public string DictionaryReplace(string str, Dictionary<string, string> map) { var regex = new Regex(str.Join("|", map.Keys)); var newStr = regex.Replace(str, m => map[m

C#.NET 4.5.1

语法错误“string.Join(string,string[])的最佳重载方法匹配项包含一些无效参数

public string DictionaryReplace(string str, Dictionary<string, string> map)
{
    var regex = new Regex(str.Join("|", map.Keys));
    var newStr = regex.Replace(str, m => map[m.Value]);
    return newStr;
}
公共字符串字典替换(字符串str,字典映射)
{
var regex=newregex(str.Join(“|”),map.Keys);
var newStr=regex.Replace(str,m=>map[m.Value]);
返回新闻TR;
}
这是因为我的.NET版本吗


我在Join中是否正确使用了分隔符?

令人困惑的是,
string
既有静态方法,也有实例
Join
方法(后者是继承
IEnumerable
时附带的扩展方法,与所有扩展方法一样,它们本身被定义为静态方法,但在实例级别操作)

您正在使用的参数要求第二个参数的类型为
string[]
。要使用该参数,您需要
ToArray

str.Join("|", map.Keys).ToArray()
但是,您可以使用静态方法,而不是转换为数组:

string.Join("|", map.Keys)

已解决。目标框架设置为3.5。我将其设置为4.5,成功了。非常抱歉。感谢大家的帮助。我过去只使用注册表来确定我使用的版本。我很幸运地认为我使用的是4.5

string.Join是静态的。
map.Keys.ToArray()
我建议你仔细阅读这篇文章,你确定你不是在使用.Net的4.0之前版本编译吗?我遵循了一个在线教程,我的代码是378758,“实例”连接方法实际上是一个扩展方法,它的签名是完全正确的。我猜OP有一个输入错误,并且使用的是静态方法。