C#一个方法返回2个值

我想用一个名为计算的方法 返回2个值,一个圆面积,一个圆周长。这样如何写啊?谢谢。

你要么返回数组,要么使用ref、out。

1、返回数组方式:
public int[] Fun(){...}
至于数组中哪个是面板哪个是周长只能自己约定
2、ref或out方式,你这种情况用out即可
public void Fun(out s,out l){
l=...//计算周长
s=...//计算面积
}
在你的方法中计算完成后将面积的结果赋值给s,周长赋值给l
调用时:
int s,l;
Fun(out s,out l);
然后s,l就是面积和周长。追问

大神,能不能简单写下。小白,不明白你这样说的。谢了。
如何输出
圆面积是{}
圆周长是{}

追答

上面少写了参数,再清楚一些完整的示例就是:


public void 计算面积(out int 面积,out int 周长,int 长,int 宽){
面积=长*宽;
周长=2*(长+宽);
}
//调用
int 面积,周长;
计算面积(out 面积,out 周长,10,5);
Console.WriteLine("面积="+面积);
Console.WriteLine("周长="+周长);



但你可能需要传递计算周长或面积的其它参数,比如长、宽,这个你自己加。我只说这里的out是什么意思。一个参数加了out后,在你的方法体内改变这个参数的值后,

追问

我这样写是不是也可以?

追答

既然如此,那你为什么不直接把面积、周长定义成Circle的一个属性。

class Circle{
public double 面积{get{return 3.14156*radius*radius;}}
public double 周长{get{return ...}}

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-25

有两种方式:

第一种:采用引用,示例如下:

void Fun(out double area,out double perimeter)
{
    //计算面积和周长并将面积赋值给area,周长赋值给perimeter
}

void Fun(ref double area,ref double perimeter)
{
    //计算面积和周长并将面积赋值给area,周长赋值给perimeter
}

第二种:

public class Info
{
     public double area;
     public double perimeter;
}

Info Fun()
{
    Info info=new Info();
   //计算面积和周长并将面积赋值给info.area,周长赋值给info.perimeter
    return info;   
}

个人推荐采用第二种,可扩展性好

第2个回答  2013-07-25
方法一.重新建一个新实体类,声明变量字段,可以放你所有的字段,周长,面积,半径, 等等你有用的字段,然后写个方法,传入你要计算测参数给你那个方法,在把你的计算值赋给这个实体类实例的添加方法返回一个对象,需要占内存,把这两个值放到数据库中;
方法二就是你写个方法用type区别计算两次,或写两个方法
方法三已字符串形式拼接返回前台用js截取赋值都行。
如果是后面一直要用这两个值的话,个人建议用第一种,这就看你前台的需求你了。
第3个回答  2015-07-03
第一种方法:返回类型改变

Public Dictionary<string,object> XXX()
{}

那么返回的这个字典就能包含多个了

第二种就是使用Out或Ref关键字传输出来
例如
Public void XXX(out p1,ref p2)
{
}

那么通过传参就能够拿到多个返回值了
第4个回答  2013-07-25
3种思路:
1:可以将你要返回的多个值当作是一个对象的多个属性,直接返回对象,达到最终结果
2:加ref
3:如果2个值是一个类型,可以考绿用数组,集合。。意思是一样