C# 函数返回多个值的方法详情

目录
  • 引言
  • 1.使用ref参数
  • 2.使用out参数修饰符
  • 3. 使用元组类
  • 4.使用C#7 ValueTuple
  • 5. 使用结构或类

引言

根据 C# 语言规范,不可能从一个方法返回多个值。使用 C# 提供的一些其他功能,我们可以将多个值返回给调用者方法。本文概述了一些可用的替代方法来实现这一点。

1.使用ref参数

我们可以使用 ref 关键字 通过引用将值返回给调用者。我们可以使用它从一个方法中返回多个值,

如下所示:

using System;
public class Example
{
    private static void fun(ref int x, ref int y)
    {
        x = 1;
        y = 2;
    }

    public static void Main()
    {
        int x = 0;
        int y = 0;

        fun(ref x, ref y);

        Console.WriteLine("x = {0}, y = {1}", x, y);
    }
}
/*
    输出: x = 1, y = 2
*/

请注意, ref 关键字不适用于 AsyncIterator 方法。

2.使用out参数修饰符

out关键字导致参数通过引用传递。它就像 ref 关键字,除了 ref 要求在传递变量之前对其进行初始化。

下面的例子演示了使用 out 参数从方法返回多个值。

using System;

public class Example
{
    private static void fun(out int x, out int y)
    {
        x = 1;
        y = 2;
    }

    public static void Main()
    {
        int x = 0;
        int y = 0;

        fun(out x, out y);

        Console.WriteLine("x = {0}, y = {1}", x, y);
    }
}

/*
    输出: x = 1, y = 2
*/

请注意, out 参数不适用于 Async 和 Iterator 方法。

3. 使用元组类

一个 tuple 是一种数据结构,可让您轻松地将多个值打包到单个对象中。元组通常用于从方法返回多个值。

下面的示例创建一个 2 元组并从 fun() 方法:

using System;

public class Example
{
    private static Tuple<int, int> fun() {
        return Tuple.Create(1, 2);
    }

    public static void Main()
    {
        Tuple<int, int> tuple = fun();

        Console.WriteLine("x = {0}, y = {1}", tuple.Item1, tuple.Item2);
    }
}

/*
    输出: x = 1, y = 2
*/

tuple是一个元组,最多支持7个元素,再多需要嵌套等方法实现。

使用元组定义函数的方法如下:

public static Tuple<string,string> TupleFun()
        {
            string[] T = {'hello','world'};
            Tuple<string, string> tup = new Tuple<string, string>(T[0], T[1]);
            return tup;
        }

元组还支持多种类型的值。

public static Tuple<string,int> TupleFun()
        {
            string T = ‘hello';
            int q = 6;
            Tuple<string, int> tup = new Tuple<string, int>(T, q);
            return tup;
        }

在调用函数时,使用Item*来调用元组内的元素。

var tuple = TupleFun();
print(tuple.Item1);
print(int.Parse(tuple.Item2));

4.使用C#7 ValueTuple

值元组,在 .NET Framework 4.7 中引入,是元组类型,用于在 C# 中提供元组的运行时实现。像元组类一样,我们可以使用它以更有效的方式从方法中返回多个值。

下面的示例使用类型推断来解构该方法返回的 2 元组。

using System;

public class Example
{
    private static (int, int) fun() {
        return (1, 2);
    }

    public static void Main()
    {
        (int x, int y) = fun();

        Console.WriteLine("x = {0}, y = {1}", x, y);
    }
}

/*
    输出: x = 1, y = 2
*/

5. 使用结构或类

在这里,想法是返回一个包含我们想要返回的所有字段的类的实例。以下代码示例从使用 struct 的方法返回多个值。

using System;

public class Example
{
    private struct Pair
    {
        public int x;
        public int y;
    }

    private static Pair fun() {
        return new Pair { x = 1, y = 2 };
    }

    public static void Main()
    {
        Pair pair = fun();

        Console.WriteLine("x = {0}, y = {1}", pair.x, pair.y);
    }
}

/*
    输出: x = 1, y = 2
*/

这就是从 C# 中的方法返回多个值的全部内容。

到此这篇关于C# 函数返回多个值的方法详情的文章就介绍到这了,更多相关C# 函数返回值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#中ExecuteNonQuery()返回值注意点分析

    本文实例讲述了C#中ExecuteNonQuery()返回值注意点.对于C#数据库程序设计有一定的借鉴价值.分享给大家供大家参考之用.具体分析如下: 首先,在查询某个表中是否有数据的时候,我们通常用ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否.结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解,回头查了下资料,如下显示: SqlCommand.ExecuteNonQuery 方法对连接执行 Transact-SQL 语句并返回受影

  • webBrowser执行js的方法,并返回值,c#后台取值的实现

    实例如下: private void Form1_Load(object sender, EventArgs e) { webBrowser1.Navigate(Application.StartupPath + @"\i.html"); txtInfo.Text = webBrowser1.DocumentText; } private void button2_Click(object sender, EventArgs e) { webBrowser1.Document.Invo

  • C#一个方法返回多个值示例

    复制代码 代码如下: static void Main(string[] args)        {            //声明            int value;            string strOutValue; //调用函数            //函数的参数有两个返回的值            ReturnMulValue(out strOutValue,out value); Console.WriteLine("Call ReturnMulValue(out

  • C# 7.0 新特性1之基于Tuple的“多”返回值方法

    原文链接:http://www.cnblogs.com/ylvict/p/5573094.html 回顾  首先,提出一个问题,C#中,如何使一个方法可返回"多个"返回值?  我们先来回顾一下C#6.0 及更早版本的做法.   在C#中,通常我们有以下4种方式使一个方法返回多条数据. •使用 KeyValue 组合 • static void Main(string[] args) { int int1 = 15; int int2 = 25; var result = Add_Mul

  • C#调用存储过程详解(带返回值、参数输入输出等)

    本文实例讲述了C#调用存储过程的方法.分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=studentname FROM student WHERE studentid=@studentid if @@Error<>0 RETURN -1 else RETURN 0 E

  • C# ODP.NET 调用Oracle函数返回值时报错的一个解决方案

    有人在社区问到:C#调用Oracle中自定义函数的返回值时,无法正常调用.但在PL/SQL中正常调用返回. 于是动手一试: 1.准备函数(Oralce 11g.2.0.0.4) CREATE OR REPLACE FUNCTION F_Update_Grade(v_UserID in Number) return nvarchar2 is V_Grade nVARCHAR2(20); begin V_Grade := '1205'; update TESTDB3 set Grade = V_Gr

  • C#获取存储过程返回值和输出参数值的方法

    1.获取Return返回值 复制代码 代码如下: //存储过程//Create PROCEDURE MYSQL//     @a int,//     @b int//AS//     return @a + @b//GOSqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());conn.Open();SqlCommand MyC

  • C# WebApi 接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇C#进阶系列--WebApi接口传参不再困惑:传参详解,这篇博文内容本身很基础,没想到引起很多园友关注,感谢大家的支持.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了下WebApi的传参机制,今天再来看看WebApi里面另一个重要而又基础的知识点:返回值.还是那句话:本篇针对初初使用WebApi的同学们,比较基础,有兴趣的且看看.

  • C# 函数返回多个值的方法详情

    目录 引言 1.使用ref参数 2.使用out参数修饰符 3. 使用元组类 4.使用C#7 ValueTuple 5. 使用结构或类 引言 根据 C# 语言规范,不可能从一个方法返回多个值.使用 C# 提供的一些其他功能,我们可以将多个值返回给调用者方法.本文概述了一些可用的替代方法来实现这一点. 1.使用ref参数 我们可以使用 ref 关键字 通过引用将值返回给调用者.我们可以使用它从一个方法中返回多个值, 如下所示: using System; public class Example {

  • JavaScript实现函数返回多个值的方法

    本文实例讲述了JavaScript实现函数返回多个值的方法.分享给大家供大家参考.具体分析如下: 这里用字典类型返回多个值 //One var mValues= function(){ var a ="a"; var b = "b"; return [a, b]; }; var values= mValues(); var valOne= values[0]; var valTwo = values[1]; //Two var mValues= function()

  • 浅谈vue的iview列表table render函数设置DOM属性值的方法

    如下所示: { title: '负责人社保照片', key: 'leaderIdNumber', render: (h, params) => { return h('img',{domProps:{ src:params.row.leaderIdNumber }}) } }, 找了好多,终于找到了原因,如果想要让列表返回的是一个img标签,并且设置img的src,这里不能用props,而是要用domProps就ok了. 以上这篇浅谈vue的iview列表table render函数设置DOM属

  • 在JS方法中返回多个值的方法汇总

    在使用JS编程中,有时需要在一个方法返回两个个或两个以上的数据,用下面的几种方法都可以实现: 1 使用数组的方式,如下: <html> <head> <title>JS函数返回多个值</title> </head> <body> <input type="button" onclick="getNames()" value="test" /> <script

  • mysql存储过程之返回多个值的方法示例

    本文实例讲述了mysql存储过程之返回多个值的方法.分享给大家供大家参考,具体如下: mysql存储函数只返回一个值.要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程.咱们先来看一个orders表它的结构: mysql> desc orders; +----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-

  • 使PHP自定义函数返回多个值

    PHP自定义函数只允许用return语句返回一个值,当return执行以后,整个函数的运行就会终止.有时候我们要求函数返回多个值时,用return是不可以把值一个接一个地输出的.但不可忽视的一点是,return语句可以返回任何类型的变量,这就是使自定义函数返回多个值的关键.请看代码: <?php function results($string) {     $result = array();     $result[] = $string;//原字符串     $result[] = str

  • python函数返回多个值的示例方法

    python可以返回多个值,确实挺方便函数里的return只能返回一个值,但是返回类型是没是限制的因此,我们可以"返回一个 tuple类型,来间接达到返回多个值".例子是我在robot framework source code 时的例子: 复制代码 代码如下: def __init__(self, cells):        self.cells, self.comments = self._parse(cells) def _parse(self, row):        da

  • Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解

    注意:文章标题中5.2+表示该文章内容可向上兼容,适用于Laravel版本5.2及更高(目前最新为5.6),但不可向下兼容,即不适用于5.2版本以下.推荐大家花一点点时间,将自己的Laravel更新至5.6版本. 在后台开发时,我们经常需要获取用户之前操作页面的地址并生成一个返回之前页面的链接. 而Laravel从版本5.2+开始,便提供了一系列全局帮助函数(Helper Functions)来简化我们的工作: https://laravel.com/docs/5.2/helpers#metho

  • Python函数返回值实例分析

    本文实例讲述了Python的函数返回值用法.分享给大家供大家参考.具体分析如下: 最近学一些Python的基本用法,看到定义函数,发现似乎只能返回一个返回值,想想matlab里返回多个返回值多方便啊,网上查了查,看到有返回多个值的方法.   python 函数返回值有两种形式: 1 返回一个值. 2 返回多个值.   现看看返回一个值的吧. def firstvalue(a,b): c = a + b return c print firstvalue(1,2) #结果:3 再看看返回多个值的:

  • php中实现可以返回多个值的函数实例

    本文实例讲述了php中实现可以返回多个值的函数用法.分享给大家供大家参考.具体分析如下: 在python和golang中都有一个函数同时返回多个值的方法,其实php也可以,但相比python和golang要稍微麻烦一点,下面是一个简单的演示范例,这里用到了list函数 <?php function retrieve_user_profile() { $user[] = "Jason"; $user[] = "jb51.net"; $user[] = "

随机推荐