gpt4 book ai didi

c# - 我可以在 C# 中声明命名的异步元组函数吗?

转载 作者:太空狗 更新时间:2023-10-29 22:35:42 26 4
gpt4 key购买 nike

C# 7 允许我们声明返回命名元组的函数,因此如下图所示的声明现在就可以了。

(int quotient, int remainder) = GetDivisionResults(17, 5);

我需要处理来自 HTTP 客户端请求的响应并从中提取两个值,我想以异步方式执行此操作。以下是允许的

public static async Task<<Tuple<string,string>> GetRequiredReturnValuesFromResponse(string response)

我的简单问题是,是否可以按照如下所示的同步运行函数的方式命名输出字符串?

public static async Task<Tuple< string OrderNumber,string OriginalId>> GetRequiredReturnValuesFromResponse(string response)

最佳答案

您不能命名 Tuple 元素 - 只能命名 ValueTuple 元素。 C# 7 元组支持基于 ValueTuple 类型。但即便如此,名称也不是 ValueTuple 本身的一部分……它们与返回类型(或参数类型)一起存储在属性中。

所以你绝对可以声明:

public static async Task<(string OrderNumber, string OriginalId)>
GetRequiredReturnValuesFromResponse(string response)

然后您可以使用:

var tuple = await GetRequiredReturnValuesFromResponse(response);
Console.WriteLine(tuple.OrderNumber);
Console.WriteLine(tuple.OriginalId);

甚至:

var (number, id) = await GetRequiredReturnValuesFromResponse(response);

但是当显式使用 ValueTuple(除非您显式指定命名属性,我相信编译器无论如何都会警告您)或使用 Tuple 时,您不能命名元素> 完全没有。

我个人建议不要将ValueTuple 类型放在公共(public) API 中;我通常将它们视为内部实现的权宜之计,我可能会决定稍后迁移到更完全封装的类型。但这只是个人意见,并不代表您可以做什么。

关于c# - 我可以在 C# 中声明命名的异步元组函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50522960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com