![]() |
1
587
在C#7及以上,见 this answer 在以前的版本中,可以使用 .NET 4.0+'s Tuple : 例如:
|
![]() |
2
380
现在C#7已经发布,您可以使用新的包含元组语法
可以这样使用:
还可以为元素提供名称(因此它们不是“Item1”、“Item2”等)。可以通过在签名或返回方法中添加名称来完成此操作:
它们也可以被解构,这是一个相当不错的新功能:
this link 要查看有关可以做什么的更多示例:) |
![]() |
3
185
一。参考/输出参数 使用ref:
用完:
2。结构/类 使用结构:
三。元组 元组类
C#7元组
|
![]() |
4
74
使用自定义类(或结构)
|
![]() |
5
38
|
![]() |
6
33
上一张海报是对的。不能从C方法返回多个值。但是,您有两个选择:
这里的利弊往往很难弄清楚。如果返回结构,请确保它很小,因为结构是值类型并在堆栈上传递。如果您返回一个类的实例,这里有一些设计模式,您可能希望使用这些模式来避免引起问题-可以修改类的成员,因为C通过引用传递对象(您没有像在VB中那样使用ByVal)。 最后,您可以使用输出参数,但我将把它的使用限制在只有两个(比如3个或更少)参数的情况下,否则事情会变得难看和难以维护。此外,输出参数的使用可能会限制灵活性,因为每次需要向返回值中添加某些内容时,方法签名都必须更改,而返回结构或类实例时,可以添加成员而无需修改方法签名。
|
![]() |
7
19
你要么返回一个 类实例 或使用 外面的
这样称呼:
|
![]() |
8
14
C# 7.0 :
|
![]() |
9
11
有几种方法可以做到这一点。你可以用
另一个类似的方法是使用
最后一种方法(在大多数情况下是最好的方法)是创建一个同时封装两个值的类型,并允许函数返回:
最后一种方法更简单,更容易阅读和理解。 |
![]() |
10
11
不,您不能从C#(对于低于C#7的版本)中的函数返回多个值,至少在Python中不能这样做。
您可以返回一个object类型的数组,其中包含您想要的多个值。
|
![]() |
11
11
可以找到更多信息 here |
![]() |
12
10
在C#4中,您将能够使用对元组的内置支持来轻松处理这个问题。 同时,有两种选择。 首先,可以使用ref或out参数将值赋给参数,这些值将被传递回调用例程。
第二,您可以将返回值包装成一个结构或类,并将它们作为该结构的成员传回。KeyValuePair对于2很好——对于超过2的情况,您需要一个自定义类或结构。 |
![]() |
13
8
在C#7中有一个新的
您还可以使用新的解构语法:
但是,在序列化时要小心,所有这些都是语法上的甜点-在实际编译的代码中,这将是
但是,大多数情况下,您将在.NET自己的库中使用它,而不是在您自己的函数中使用它。 |
![]() |
14
7
你可以试试这个“KeyValuePair”
输出:
|
![]() |
15
5
类、结构、集合和数组可以包含多个值。输出和参考参数也可以在函数中设置。在动态语言和函数语言中,可以通过元组返回多个值,但在C#中不可以。 |
![]() |
16
4
主要有两种方法。 2。返回对象数组 |
![]() |
17
4
这是基本的
“out”的示例:
矩形面积为20 矩形周长为18
注:
*那个
2个)
使用返回多个数据类型值
输出
注:
.
|
![]() |
18
4
你可以接收如下代码
我希望能成功。 |
![]() |
19
3
接受委托的方法可以向调用方提供多个值。这借用了我的回答 here 使用了一点 Hadas's accepted answer
调用方提供lambda(或命名函数),intellisense通过从委托中复制变量名来提供帮助。
|
![]() |
20
2
以面向对象的方式使用这样的类:
函数成员返回大多数调用方主要感兴趣的商。另外,它将剩余部分存储为一个数据成员,调用方随后可以很容易地访问它。
我也在OP提到的C++问题中输入了这个解决方案。 |
![]() |
22
2
看看这个第9频道的演示 https://channel9.msdn.com/Events/Build/2016/B889 跳到13:00吃元组的东西。这将允许像:
|
![]() |
23
2
可以使用动态对象。我认为它比元组有更好的可读性。
|
![]() |
24
1
方法:
2) 元组-5.40纳秒:
3) 输出(1.64 ns)或参考 ns->纳秒 |
![]() |
25
0
你可以试试这个
|
![]() |
26
0
也可以使用OperationResult
|
![]() |
27
-8
一个特别针对数组类型的快速答案返回:
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 5 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 5 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 5 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 6 月前 |