I have code equivalent to String.Join(',', new List<ulong>())
in a .NET Standard 2.0 project. I get two error from this line:
Argument 1: cannot convert from 'char' to 'string'
Argument 2: cannot convert from 'System.Collections.Generic.List<ulong>' to 'System.Collections.Generic.IEnumerable<string>'
These are the overloads of String.Join ReSharper shows on navigating to symbol:
I would assume that the second-last overload public static string Join<T>(char separator, IEnumerable<T> values);
would be selected, but this doesn't happen.
When I changed my code to String.Join<ulong>(',', new List<ulong>())
(explicitly specifying the generic type), the second error disappeared. Am I doing something incorrectly or is this a bug in VS?
.NET Standard does not have String.Join
overloads with char
as a first parameter, only .NET Core has them.
You have to use String.Join(",", new List<ulong>())
.
https://learn.microsoft.com/en-us/dotnet/api/system.string?view=netstandard-2.0
Both R# and Rider show wrong info when navigating to symbol from .NET Core code, I can confirm this.
.NET Standard 2.0 doesn't have overload with first parameter of type char. All string.Join
overloads have first parameter of type string?
Seems like Resharper displays you implementation of netstandard 2.0 not a contract.
standard.System.cs:3279
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; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With