我正在尝试使用.NetStandard 2.0编写一个库,显然接收IEnumerable的string.Join
方法没有重载。此代码在.NetCore 2.0中运行良好,但不是标准的:
string.Join('/', parts.Skip(index))
答案 0 :(得分:5)
重载存在于string separator
而非char separator
:
string s = string.Join("/", parts.Skip(index));
所以......用那个?
答案 1 :(得分:3)
为Marc Gravell的答案添加一些上下文:.NET Standard和.NET Core有一组不同的API。
.NET Standard表示一组API,如果它支持.NET Standard版本,则需要由平台实现。
.NET Core是一个实现.NET Standard的平台。除了那些API,它还实现了一些。
.NET Standard for string.Join
上提供的API(来自https://github.com/dotnet/standard/blob/master/netstandard/ref/mscorlib.cs):
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; }
对于.NET Core,API集更大,因为API已添加到.NET Core平台但不是.NET Standard(来自https://github.com/dotnet/corefx/blob/master/src/System.Runtime/ref/System.Runtime.cs#L2307):
public static System.String Join(char separator, params object[] values) { throw null; }
public static System.String Join(char separator, params string[] value) { throw null; }
public static System.String Join(char separator, string[] value, int startIndex, int count) { throw null; }
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>(char separator, System.Collections.Generic.IEnumerable<T> values) { throw null; }
public static System.String Join<T>(System.String separator, System.Collections.Generic.IEnumerable<T> values) { throw null; }
如果您的目标是.NET Core,则可以使用占用char
的重载。
如果您的目标是.NET Standard,则可以使用带有string
。