От: | Qbit86 | https://twitter.com/qbit86 | |
Дата: | 30.04.19 15:37 | ||
Оценка: |
internal readonly struct Pair
{
public Pair(string name, string type)
{
Name = name;
Type = type;
}
internal string Name { get; }
internal string Type { get; }
public override string ToString() => $"{Name}: {Type}";
public static implicit operator Pair((string, int) t) => new Pair(t.Item1, "int");
public static implicit operator Pair((string, uint) t) => new Pair(t.Item1, "uint");
}
internal static class Program
{
private static void Render(Pair pair)
{
System.Console.WriteLine(pair);
}
private static void Main()
{
const uint u = 23;
Render(("u", u)); // u: uint
const int m = -1;
Render(("-", m)); // -: int
const int i = 42;
Render(("i", i)); // Error CS0457
var t = ("t", i);
Render(t); // t: int
}
}
Ambiguous user defined conversions 'Pair.implicit operator Pair((string, int))' and 'Pair.implicit operator Pair((string, uint))' when converting from '(string, int i)' to 'Pair'