关于C#函数多返回值

¿?¿? 2019-08-21 11:59:19
早上刚刚发现的好玩的语法


public (int, string) Test()
{
return (1, "1");
}




Test().Item1 是int类型

Test().Item2 是string类型



微软牛批
...全文
1093 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
macoli 2019-08-23
  • 打赏
  • 举报
回复
是的,是越来越简单了。
xiaoxiangqing 2019-08-23
  • 打赏
  • 举报
回复
语法越来越简单了
叫我 Teacher 周 2019-08-23
  • 打赏
  • 举报
回复
引用 25 楼 glb21 的回复:
返回个Class类型就行了,更省事
前提是你得先定义class 里的各种属性,更复杂
叫我 Teacher 周 2019-08-23
  • 打赏
  • 举报
回复
引用 24 楼 胡启兴 的回复:
[quote=引用 23 楼 github_36000833 的回复:] [quote=引用 22 楼 胡启兴 的回复:] 为啥我用这个却报这个错误呢
要4.7或以上才支持。[/quote] 好吧,看来还是太超前了,项目用的最高才4.6.1[/quote] 那就直接升级呗
  • 打赏
  • 举报
回复
引用 16 楼 exception92 的回复:
item1,item2,,,,,,,itemN 得记住返回得类型,不然不知道用哪一个正确.
大哥 这么用啊 var t=test(); t.a t.b 就不适用索引了。 他有2种用法
  • 打赏
  • 举报
回复
引用 14 楼 ajianchina 的回复:
[quote=引用 11 楼 好奇都是要学的 的回复:] 有了元组 还传什么out了。 看起来更直接了
7.0之前如果仅是为了返回多个值,我不会考虑使用Tuple,首先因为他不够轻量,是引用类型,再者是就是可读性差。 7.0所提供的这种返回ValueTuple值元祖的方式解决了上述的两个问题,我会在7.0中将一部分原版会使用out关键字的地方使用值元祖方式返回。 对了,有人似乎认为out关键字out了,其实在7.0中对out的声明方式还进行了优化呢,有兴趣的可以看看。[/quote] 看了下。 有优化。 其实我还有一点不理解,为什么 在多返回的时候 经常看到用out 很少看到用ref那。 他们的区别在我看来就是初始化,和清空自己。
exception92 2019-08-22
  • 打赏
  • 举报
回复
item1,item2,,,,,,,itemN 得记住返回得类型,不然不知道用哪一个正确.
glb21 2019-08-22
  • 打赏
  • 举报
回复
返回个Class类型就行了,更省事
____空城 2019-08-22
  • 打赏
  • 举报
回复
引用 23 楼 github_36000833 的回复:
[quote=引用 22 楼 胡启兴 的回复:] 为啥我用这个却报这个错误呢
要4.7或以上才支持。[/quote] 好吧,看来还是太超前了,项目用的最高才4.6.1
github_36000833 2019-08-22
  • 打赏
  • 举报
回复
引用 22 楼 胡启兴 的回复:
为啥我用这个却报这个错误呢
要4.7或以上才支持。
____空城 2019-08-22
  • 打赏
  • 举报
回复
为啥我用这个却报这个错误呢
SinGooCMS 2019-08-22
  • 打赏
  • 举报
回复
呃,这就是元组。解决的是return多个变量的问题。因为这些变量可能不是同一个类型(同一个类型就可以用泛型了)。
github_36000833 2019-08-21
  • 打赏
  • 举报
回复

// 多返回,分离和丢弃例子
(int i, _) = Test();
Console.WriteLine($"i={i}");

  • 打赏
  • 举报
回复
都用的啥版本了,好高级
楠小南 2019-08-21
  • 打赏
  • 举报
回复
这玩意序列化不好使,类型是 Itme1,item2 这样的,所以这也算是个坑了
ajianchina 2019-08-21
  • 打赏
  • 举报
回复
引用 11 楼 好奇都是要学的 的回复:
有了元组 还传什么out了。 看起来更直接了


7.0之前如果仅是为了返回多个值,我不会考虑使用Tuple,首先因为他不够轻量,是引用类型,再者是就是可读性差。
7.0所提供的这种返回ValueTuple值元祖的方式解决了上述的两个问题,我会在7.0中将一部分原版会使用out关键字的地方使用值元祖方式返回。
对了,有人似乎认为out关键字out了,其实在7.0中对out的声明方式还进行了优化呢,有兴趣的可以看看。
冰川711 2019-08-21
  • 打赏
  • 举报
回复
引用 12 楼 ¿?¿? 的回复:
感觉这种黑科技语法好实用,有没有类似于这种的新语法
https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-7 可以看看这个
¿?¿? 2019-08-21
  • 打赏
  • 举报
回复
感觉这种黑科技语法好实用,有没有类似于这种的新语法
  • 打赏
  • 举报
回复
引用 10 楼 ajianchina 的回复:
一些使用out关键字的参数可以换用7.0的这种多返回值了
有了元组 还传什么out了。 看起来更直接了
ajianchina 2019-08-21
  • 打赏
  • 举报
回复
一些使用out关键字的参数可以换用7.0的这种多返回值了
加载更多回复(7)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧