2
Mit dem folgenden Code,neues Tupel zu altem Casting gibt Kompilierungsfehler
class Program
{
static void Main(string[] args)
{
Tuple<int, int> test = TupleTest();
}
static (int, int) TupleTest()
{
return (1, 2);
}
Ich bin nach dem Kompilierung Fehler.
CS0029 Fehler kann nicht implizit Typ konvertieren '(int, int)' to 'System.Tuple < int, int>'
Bedeutet es, die neue Version von Tuple ist nicht kompatibel mit der alte Version implizit? Oder mache ich hier etwas falsch?
Die "neue Tupel" ist eine andere Art genannt [ 'System.ValueTuple'] (https://msdn.microsoft.com/en-us/library/system.valuetuple (v = vs.110) .aspx) (siehe [diese Frage] (http://stackoverflow.com/questions/41084411/whats-the-difference-between-system-valuetuple-and-system-tuple) für eine Diskussion der Unterschiede) und AFAIK gibt es keine Pläne, es implizit in "System.Tuple" umwandelbar zu machen. – UnholySheep
Wie Matej unten beantwortet, sollten Sie die Erweiterungsmethoden ('ToTuple') verwenden. Der Grund, warum diese nicht als benutzerdefinierte Konvertierungen implementiert werden können, ist, dass sie über arity 7 hinausgehen müssen. –