В C# вы можете определить псевдоним для кортежа значений с именами?

Я знаю, что можно определить псевдонимы в C# с помощью используя ключевое слово.

например

using ResponseKey = System.ValueTuple<System.Guid, string, string>;

однако можно ли определить его с помощью нового синтаксиса для кортежей значений?

using ResponseKey = (Guid venueId, string contentId, string answer);

этот синтаксис не работает. А должно?

3 ответов


Это было запрошено и записано в репо Roslyn на Github. Однако:

  1. он получил там смешанный прием,
  2. предлагаемые типы записей для, в настоящее время, C# 8, будет более чем удовлетворяет этому требованию,
  3. Он не был воссоздан на репо csharplang (где теперь живут запросы на функции языка C#),

поэтому я бы предположил, что это вряд ли произойдет.


using определяется как: using identifier = namespace-or-type-name; (MSDN).

(Guid venueId, string contentId, string answer) не является ни пространством имен, ни (полным) именем типа.

но я, в основном, догадки. До сих пор даже не знал о существовании C# 7.0.


вы можете расширить систему.Кортеж - что-то вроде следующего:

    public sealed class ResponseKey : System.Tuple<System.Guid, string, string>
    {
        public ResponseKey(System.Guid item1, string item2, string item3) : base(item1, item2, item3)
        {
        }

        public System.Guid VenueId => Item1;
        public string ContentId => Item2;
        public string Answer => Item3;
    }