这是一个数学方法,需要3个双打作为输入(a,b,c)。从方法中返回2个值
接下来,这3个值可以在公式(abc公式为平方根)中计算。
该公式有2个值必须返回,但我该如何做到这一点?
我正在考虑一个数组/对象,但不知道如何为此目的初始化它们。在这种情况下,Out参数并不是真的有用吗?
问候。
这是一个数学方法,需要3个双打作为输入(a,b,c)。从方法中返回2个值
接下来,这3个值可以在公式(abc公式为平方根)中计算。
该公式有2个值必须返回,但我该如何做到这一点?
我正在考虑一个数组/对象,但不知道如何为此目的初始化它们。在这种情况下,Out参数并不是真的有用吗?
问候。
在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
是一个非常普遍的和非特异性的数据类型。你也可以实现一个复合返回类型(类似于我刚才所展示的,但更简单),它更适合于你的情况。
在C#4,你可以通过staks上述
但低于C#4中描述做一样的元组,可以返回的要返回值包含尽可能多的列表。
一个数组不是很有利,因为你只有一堆物品,而没有关于它们的更多信息。来电者必须“知道”什么元素不。 0,元素号。 1是。
在这种情况下,我会一直投票使用一个类 - 定义一个返回类型作为类,给个别字段有意义的名称。一类为您提供了可发现(通过字段名),混合的返回类型(返回一个int,两位小数,字符串)的能力,并很好地概括结果:
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;
}
好的,谢谢你从未见过的信息。但是,我如何将ResultType类中的这些属性与计算发生的方法链接起来?问候。 – Tonz 2010-11-27 09:28:46
我想创建一个类为宗旨,甚至一个简单的结构,而是一个元组(如stakx建议)是一样好,甚至列表或集合可以做的伎俩。
使用了:
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;
}
输出参数是完全为你在这里......一切是一个伟大的矫枉过正(元组和例如数组) – 2010-11-27 09:23:42
...但元组(甚至自定义对)是C#的路要走。 – SWeko 2010-11-27 09:24:54