In C# can you define an alias to a value tuple wit

2019-03-10 12:16发布

I know it's possible to define aliases in C# with the using keyword.

e.g.

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

However, is it possible to define one using the new syntax for value tuples?

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

This syntax does not appear to work. Should it?

标签: c# c#-7.0
3条回答
Evening l夕情丶
2楼-- · 2019-03-10 12:58

using is defined as: using identifier = namespace-or-type-name; (MSDN).

(Guid venueId, string contentId, string answer) is neither a namespace nor a (fully qualified) type name.

But I am mostly guessing. Was not even aware C# 7.0 existed until now.

查看更多
一夜七次
3楼-- · 2019-03-10 13:01

You could extend System.Tuple - something like the following:

    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;
    }
查看更多
我只想做你的唯一
4楼-- · 2019-03-10 13:03

This has been requested, and recorded in the Roslyn repo on Github. However it received a mixed reception there, and the proposed record types, would more than cover this requirement.

The issue was closed in the Roslyn repo but is now being tracked in the C# language repo.

查看更多
登录 后发表回答