为什么微软不鼓励在C#7中公开/受保护地返回命名元组?

为什么微软不鼓励在C#7中公开/受保护地返回命名元组?,c#,C#,根据参考当地人和返回的官方信息: 这段代码有很多问题。首先,它是一个返回元组的公共方法。该语言支持这一点,但对于公共API,用户定义的类型(类或结构)是首选的 它们在同一文档上有一个示例,其中显示了一个私有方法返回命名元组 在C#7之前,我们只有元组结构,这显然不适合公众消费。就我个人而言,在方法的范围内使用它们没有问题,我强烈主张它们永远不会从方法返回,即使是私有方法。然而,即使是这种观点也遭到了社区中许多人的强烈反对,他们认为Tuple从一开始就不应该进入.NET框架 命名结构提供了元组当然

根据参考当地人和返回的官方信息:

这段代码有很多问题。首先,它是一个返回元组的公共方法。该语言支持这一点,但对于公共API,用户定义的类型(类或结构)是首选的

它们在同一文档上有一个示例,其中显示了一个私有方法返回命名元组

在C#7之前,我们只有元组结构,这显然不适合公众消费。就我个人而言,在方法的范围内使用它们没有问题,我强烈主张它们永远不会从方法返回,即使是私有方法。然而,即使是这种观点也遭到了社区中许多人的强烈反对,他们认为Tuple从一开始就不应该进入.NET框架

命名结构提供了元组当然缺乏的语义,并向调用方提供了返回值的描述,因此我发现自己认为有很多情况下我可以提倡在公共API中使用这些命名元组。如果API调用返回的数据在API中没有进一步的用途,则似乎不需要具体的类或结构


是否有我遗漏的性能、内存或其他考虑因素会导致Microsoft在其文档中做出这样的陈述?

我想这是因为您假设消费者也在使用C#7,而事实可能并非如此。这都是语法上的甜点,所以使用C#6的人,例如,只会看到一个公共的
元组
很棒的点,你应该把它作为一个答案,这样我就可以标记it@JasonLind,如果您的登录不一致,并且希望使用以前的帐户,请使用链接并合并帐户。这样,您就可以节省从两个不同帐户获得的销售代表。非常好的建议,谢谢