在.NET Standard 2.0项目中,我具有与String.Join(',', new List<ulong>())
等效的代码。我从这行中得到两个错误:
Argument 1: cannot convert from 'char' to 'string'
Argument 2: cannot convert from 'System.Collections.Generic.List<ulong>' to 'System.Collections.Generic.IEnumerable<string>'
这些是String的重载.Join ReSharper在导航到符号时显示:
我认为将选择倒数第二个重载public static string Join<T>(char separator, IEnumerable<T> values);
,但这不会发生。
当我将代码更改为String.Join<ulong>(',', new List<ulong>())
(明确指定通用类型)时,第二个错误消失了。我是在做错什么,还是VS中的错误?
答案 0 :(得分:6)
.NET Standard没有String.Join
作为第一个参数的char
重载,只有.NET Core拥有。
您必须使用String.Join(",", new List<ulong>())
。
https://docs.microsoft.com/en-us/dotnet/api/system.string?view=netstandard-2.0
从.NET Core代码导航到符号时,R#和Rider都显示错误信息,我可以确认这一点。
答案 1 :(得分:1)
.NET Standard 2.0的char类型的第一个参数没有重载。所有string.Join
重载都具有字符串类型的第一个参数?
似乎Resharper向您显示的是netstandard 2.0的实现而非合同。
public static System.String Join(System.String separator, System.Collections.Generic.IEnumerable<string> values) { throw null; }
public static System.String Join(System.String separator, params object[] values) { throw null; }
public static System.String Join(System.String separator, params string[] value) { throw null; }
public static System.String Join(System.String separator, string[] value, int startIndex, int count) { throw null; }
public static System.String Join<T>(System.String separator, System.Collections.Generic.IEnumerable<T> values) { throw null; }