кортеж c # 7.0 используется как пользовательский тип - PullRequest
0 голосов
/ 17 января 2019

У меня есть объявление кортежа C # 7.0, например:

(int ID, имя строки, строка secondName, int age) foo = (19, «Гарри», «Поттер», 8);

Каждый раз, когда объявляется новая переменная или если я использую ее в функции / методе, мне нужно переписать всю декларацию целиком. Например:

private (int ID, строковое имя, строка secondName, int age) DoSomething ((int ID, строковое имя, строка secondName, int age) sentElement) {...

Я бы хотел использовать его как пользовательский тип и написать что-то вроде этого:

private MyType DoSomething ( MyType пройденный элемент) {...

С обычными кортежами я всегда использую:

с использованием MyType = System.Tuple ;

Работает нормально, но если я попытаюсь использовать:

с использованием MyType = (int ID, имя строки, строка secondName, int age);

intellisense выдает ошибку «ожидаемый идентификатор», подчеркивающую часть справа от знака равенства.

Как правильно объявить это, если оно есть?

Заранее спасибо.

1 Ответ

0 голосов
/ 17 января 2019

Кортежи не являются типами. Не в обычном смысле.

Кортежи в C # были созданы, чтобы действовать как пакет индивидуальных значений.

Указанные имена элементов кортежа не являются частью типа, а представляют собой аннотации к экземплярам, ​​созданным из этого определения. Для среды выполнения (и для компилятора, по большей части), (int ID, string name, string secondName, int age) это то же самое, что (int i1, string s1, string s2, int i2) или (int, string, string, int).

...