任何原因你使用C#7元组返回值作为参数?我刚刚观看了一段展示C#7新特性的视频。除此之外,它介绍了返回元组类型的可能性(例如:(int,int),我认为这只是Tuple的语法糖)。所以如果我们有一个返回多个值的方法,在C#中有3种可能的方法:(intfirst,intsecond)ReturnTuple(){return(1,2);}intReturnOutParam(outintsecond){second=2;返回1;}CustomObjectReturnObject(){returnnewCustomObject{First=1,Second=2};我相信,没有更多的方法可以做到这一点-如果是的话请纠正我。这三种方法哪一种是正确的?在什么情况下我们可以使用剩下的两个?对于每一个新的C#版本,我都觉得在.NET世界中有一两个设计模式正在变得过时。有些函数非常有用(例如泛型、偏函数、LINQ、lambda、async/await或null传播器)。其他人非常情绪化(动态,名字)。还有一些对我来说没有意义的东西(属性自动初始化器、元组返回值或本地函数)。首先,像(int,int)这样的元组是ValueTuple的语法糖。Tuple和ValueTuple之间的区别是:一些特性随着每个新的语言版本而变得过时。例如,delegate{}语法被lambda代替。您可能会争辩说输出参数属于此类,但这是主观的。但是,为了向后兼容,所有功能都需要保留在那里。比如boolint.TryParse(stringinput,outintvalue)应该变成int?int.TryParse(字符串输入)int?int.TryParse(stringinput),包含语言的可为空值类型,但旧函数已存在于框架中,因此必须保留。我的经验法则是:对私有方法或实用函数使用值元组,但对于任何公共API更喜欢完整的结构,它只是感觉更干净。除了偶尔的私有方法外,我通常避免使用参数。我不明白为什么这些新功能对您没有意义:对我来说,这仍然取决于情况。例如,对于TryParse,它更具可读性:if(int.TryParse("123",outvari)){//i}比var(success,i)=int.TryParse("123");if(success){//i}并从一个方法返回多个值在大多数情况下是一种代码味道。你应该总是包装你返回的类来比First和Second更好地描述你的值。C#学习教程就是这些:使用C#7元组返回值作为参数的任何理由?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
