C#之定义有多个返回值的函数并调用该函数的方法

最近博主在研究GPS单点定位的C#实现,在编写一个搜索最佳历元的函数时,遇到了一个问题,就是一个函数如何返回多个值:下面来看一下解决方案吧!

我们都知道,让函数返回一个值是非常简单的:
如下代码就定义了一个返回整型数值的函数

/*该函数实现两个整数相加*/
public int add(int a,int b)
{
	int c = a+b;
	return c
}

调用上面的函数时,定义一个整型变量即可接受函数返回值:

void mian()
{
	int m = add(1,2)
	MessageBox.Show(m)
}

上面主函数的运行结果就是
3(1+2=3)
若想返回一个double类型的数值,定义的时候改一下函数的类型即可:

/*该函数实现两个双精度浮点型相加*/
public double add(double a,double b)
{
	double c = a+b;
	return c
}

那么返回一个值的函数定义我们知道了,如何返回两个值甚至是多个值呢?
博主通过查阅资料,找到了一个方法,先上代码:

 /****************************************************************************/
        /*函数:搜索最佳历元                                                        */
        /*功能:找到与N文件的钟面时刻最接近的O文件观测时刻                          */
        /*输入值:N文件,O文件                                                      */
        /*返回值:O文件在数组中的位置(Ozuijia)                                    */
        /****************************************************************************/
public Tuple<ArrayList, ArrayList> SearchBest(ArrayList nData, ArrayList oData, ArrayList zuijia ,ArrayList zuijiaadress, int i)
{
      GPSTime Ngpstime = new GPSTime();
      GPSTime Ogpstime = new GPSTime();
      double D = 7200;
      for (int m = 0; m < nData.Count; m++)
      {
             if (((IList)((observation)oData[i]).PRN).Contains(((ncanshu)nData[m]).PRN))
             {

                    Ngpstime = CommonTimeToGPSTime(((ncanshu)nData[m]).TOC);//TOC卫星钟的参考时刻,年月日时分秒
                    Ogpstime = CommonTimeToGPSTime(((observation)oData[i]).otime);
                    if (System.Math.Abs(Ngpstime.GPSSecond - Ogpstime.GPSSecond) <= D)
                    {
                        D = System.Math.Abs(Ngpstime.GPSSecond - Ogpstime.GPSSecond);
                        zuijia.Add(((ncanshu)nData[m]).PRN);
                        zuijiaadress.Add(m);
                    }
                    Ogpstime = new GPSTime();

              }
              else
              {
                    continue;
                
              }


        }
        return new Tuple< ArrayList, ArrayList >(zuijia, zuijiaadress);
}

大家可以看到,我在定义函数的时候,用到了这样的形式:

public Tuple<ArrayList, ArrayList> SearchBest(ArrayList nData, ArrayList oData, ArrayList zuijia ,ArrayList zuijiaadress, int i)

即:public Tuple<第一个返回值类型,第二个返回值类型>函数名

那么当调用这个函数的时候,如何接受这两个返回值呢?请看下面的代码:

var tuple = CalculateFunction.SearchBest(nData, oData,zuijia, zuijiaadress, i); 

从上面我们可以看到:需要先定义一个名字叫tuple的变量名来接受函数返回的元组,该变量用var关键字来声明,该关键字不同于intdoublestring等变量类型的声明,用var类型预先不用知道变量的类型;根据你给变量赋值来判定变量属于什么类型,该关键字有以下几点注意事项:

1:必须在定义时初始化,即不能先定义后初始化,如:var a;a = 1;这样是不允许的
2:一旦初始化完成,不能再给变量赋与初始化不同的变量
3:var类型的变量必须是局部变量

声明一个变量来接受元组之后,就可以取元组中的值来赋给你需要的变量中了,具体操作如下:

zuijia1 = tuple.Item1;
zuijiaadress1 = tuple.Item2;

通过上面可以看到,利用.Item便可以取出来元组中对应的数值。

以上就完成了返回多个值得函数的定义及调用的全部代码!

一起学习,一起进步,若您发现文中有疏漏之出,请多加指正!

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
引用\[2\]中给出了一个C#的类A的定义,其中包含了无参构造函数、int构造函数和String构造函数。在C#中,定义函数的语法如下: ``` <访问修饰符> <返回类型> <函数名>(<参数列表>) { // 函数体 } ``` 其中,访问修饰符可以是public、private等,表示函数的可访问性;返回类型指定函数返回的数据类型;函数名是函数的标识符;参数列表是函数接收的参数。 例如,我们可以定义一个函数add,实现两个整数相加,并返回相加的结果: ``` public int add(int a, int b) { int c = a + b; return c; } ``` 在这个例子中,函数名是add,返回类型是int,参数列表包含两个整型参数a和b。函数体中,我们将a和b相加,并将结果赋给变量c,然后使用return语句返回c的。 要调用函数,可以在代码中使用函数名加上参数列表的方式来调用。例如,我们可以在Main函数调用add函数: ``` static void Main(string\[\] args) { int result = add(3, 5); Console.WriteLine(result); } ``` 在这个例子中,我们调用add函数,并将参数3和5传递给函数函数返回相加的结果,我们将结果赋给变量result,并使用Console.WriteLine函数将结果输出到控制台。 希望这个例子能帮助你理解如何定义函数调用函数。如果还有其他问题,请随时提问。 #### 引用[.reference_title] - *1* *2* [让C#的构造函数调用其他的构造函数](https://blog.csdn.net/weixin_43831206/article/details/103369322)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C#定义有多个返回函数调用函数方法](https://blog.csdn.net/absll/article/details/116530606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十八与她

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值