Jir*_*ffe 3 c# tuples record c#-9.0
假设有这样一条记录
public record ExampleRecord(int a, int b);
Run Code Online (Sandbox Code Playgroud)
和一个方法
public int ExampleMethod((int a, int b) t)
{
return t.a + t.b;
}
Run Code Online (Sandbox Code Playgroud)
是否可以执行类似的操作来将记录用作元组参数?
var t = new ExampleRecord(a: 1, b: 2);
ExampleMethod(t);
Run Code Online (Sandbox Code Playgroud)
您可以向记录类型添加隐式转换:
public record ExampleRecord(int a, int b)
{
public static implicit operator ValueTuple<int, int> (ExampleRecord record)
{
return (record.a, record.b);
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用:
var t = new ExampleRecord(a: 1, b: 2);
ExampleMethod(t);
Run Code Online (Sandbox Code Playgroud)
您可以创建扩展方法。例如:
public static class ExampleRecordExtensions
{
public static (int, int) ToTuple(this ExampleRecord record)
{
return (record.a, record.b);
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用:
var t = new ExampleRecord(a: 1, b: 2);
ExampleMethod(t.ToTuple());
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用解构主义。像这样使用:
var t = new ExampleRecord(a: 1, b: 2);
ExampleMethod((_, _) = t);
Run Code Online (Sandbox Code Playgroud)
我提醒您记录类型是类。这些元组是值类型 ( ValueTuple)。这也意味着您从记录类型创建的元组将始终是数据的副本。
| 归档时间: |
|
| 查看次数: |
2207 次 |
| 最近记录: |