В C# вы можете определить псевдоним для кортежа значений с именами?
Я знаю, что можно определить псевдонимы в C# с помощью используя ключевое слово.
например
using ResponseKey = System.ValueTuple<System.Guid, string, string>;
однако можно ли определить его с помощью нового синтаксиса для кортежей значений?
using ResponseKey = (Guid venueId, string contentId, string answer);
этот синтаксис не работает. А должно?
3 ответов
Это было запрошено и записано в репо Roslyn на Github. Однако:
- он получил там смешанный прием,
- предлагаемые типы записей для, в настоящее время, C# 8, будет более чем удовлетворяет этому требованию,
- Он не был воссоздан на репо 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;
}