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

C#C# 7.0

C# Problem Overview


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# Solutions


Solution 1 - C#

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNick RandellView Question on Stackoverflow
Solution 1 - C#David ArnoView Answer on Stackoverflow