这是一个数学方法,输入3个双打(a,b,c)。
接下来,这3个值在公式(平方根的abc公式)中计算。
该公式有两个必须返回的值,但具体如何?
我在想一个数组/对象,但不知道如何为此目的初始化它们。在这种情况下,out参数是不是真的有用呢?
问候。
答案 0 :(得分:3)
在C#4中(在Visual Studio 2010中可用):
Tuple<double, double> Foo(double a, double b, double c)
{
...
return Tuple.Create(firstReturnValue, secondReturnValue);
}
如果您使用的是早期语言版本的C#,您可以按如下方式定义自己的二元组(对)实现:
public struct Tuple<A, B>
{
public readonly A Item1;
public readonly B Item2;
public Tuple(A a, B b) { Item1 = a; Item2 = b; }
}
public static class Tuple
{
public static Tuple<A,B> Create<A,B>(A a, B b) { return new Tuple<A,B>(a,b); }
}
当然,Tuple
是一种非常通用且非特定的数据类型。你也可以实现一个复合返回类型(类似于我刚才展示的,但更简单),它更适合你的情况。
答案 1 :(得分:2)
用完:
double t;
int y = Foo(5,3,out t);
DEF:
public int Foo(int one,int two,out double three) {
three = one / two;
return one + two;
}
答案 2 :(得分:1)
在C#4中,你可以像上面的staks所描述的那样做元组
但在c#4下面,您可以返回一个列表,其中包含您想要返回的值。
答案 3 :(得分:0)
数组并不是非常有利,因为你只有一堆项目,而且没有任何关于它们的进一步信息。调用者必须以某种方式“知道”什么元素没有。 0,元素号1是。
在这种情况下,我总是会投票使用一个类 - 将一个返回类型定义为一个类,给各个字段赋予有意义的名称。一个类为您提供可发现性(通过字段名称),混合返回类型的能力(返回INT,两个DECIMAL,一个STRING),并且它很好地封装了您的结果:
public class ResultType
{
decimal Value { get; set; }
decimal AnotherValue { get; set; }
int StatusCode { get; set; }
string Message { get; set; }
}
然后将您的方法定义为:
ResultType YourMethodName(double a, double b, double c)
{
ResultType result = new ResultType();
// do your calculations here......
result.Value = .........
result.AnotherValue = ............
result.StatusCode = 0;
result.Message = "everything OK";
return result;
}
答案 4 :(得分:0)
我为此目的创建了一个类,即使是一个简单的结构,但是一个元组(如stakx建议的)也同样好,甚至列表或集合也可以做到这一点。