You can add an implicit conversion to your record type:
public record ExampleRecord(int a, int b)
{
public static implicit operator ValueTuple<int, int> (ExampleRecord record)
{
return (record.a, record.b);
}
}
Use like this:
var t = new ExampleRecord(a: 1, b: 2);
ExampleMethod(t);
You can make extension methods. For example:
public static class ExampleRecordExtensions
{
public static (int, int) ToTuple(this ExampleRecord record)
{
return (record.a, record.b);
}
}
Use like this:
var t = new ExampleRecord(a: 1, b: 2);
ExampleMethod(t.ToTuple());
Alternatively you can use deconstruction. Use like this:
var t = new ExampleRecord(a: 1, b: 2);
ExampleMethod((_, _) = t);
I remind you that record types are classes. These tuples are value types (ValueTuple
). Which also means that the tuple you create form the record type will always be a copy of the data.