In C# can you define an alias to a value tuple with names?

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?


Solution 1:

Updated. As of C# 10, you can define either a struct or class-based record to fulfill this requirement:

public record struct ResponseKey(Guid venueId, string contentId, string answer);
public record class ResponseKey(Guid venueId, string contentId, string answer);

Note that class is optional for the second definition.


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.