53.C#函数如何返回多个值

  1. 53.CSharp函数如何返回多个值
    1. 53.1 题目
    2. 53.2 深入解析
    3. 53.3 答题示例
    4. 53.4 关键词联想

53.CSharp函数如何返回多个值


53.1 题目

C#中如何在函数中返回多个返回值?(至少说出3种方法)


53.2 深入解析

在C#中,尽管一个函数只能有一个直接返回类型,但有多种方式可以实现在函数中返回多个值。以下是至少三种常用的方法:

  1. 使用数组或集合等容器:可以通过返回一个数组、列表或其他集合类型来携带多个值。例如,使用 List<T>Tuple<T1, T2>

    public List<int> ReturnMultipleValues()
    {
        List<int> result = new List<int>();
        result.Add(1);
        result.Add(2);
        result.Add(3);
        return result;
    }
    
  2. 定义结构体或类作为自定义数据结构:创建一个结构体或类来封装你需要返回的所有值,然后函数返回这个结构体或类的实例。

    public struct MultipleResults
    {
        public int Value1;
        public string Value2;
        public double Value3;
    }
    
    public MultipleResults GetResults()
    {
        return new MultipleResults { Value1 = 1, Value2 = "Text", Value3 = 3.14 };
    }
    
  3. 使用 out 参数out 参数允许方法将多个值输出到调用者提供的变量中,这些变量必须在调用前被声明。

    public void Divide(int numerator, int denominator, out int quotient, out int remainder)
    {
        quotient = numerator / denominator;
        remainder = numerator % denominator;
    }
    
    // 调用示例
    int quotient, remainder;
    Divide(10, 3, out quotient, out remainder);
    
  4. 使用元组(Tuples):C# 7 及以后版本引入了元组,这是一种轻量级的数据结构,可以直接从方法返回多个不同类型值而无需定义新的类或结构体。

    public (int, string, double) GetData()
    {
        return (1, "Example", 3.14);
    }
    

以上方法为C#中实现函数返回多个值的常见策略,每种方法都有其适用场景,根据具体需求选择最合适的方式。


53.3 答题示例

“C# 中函数返回多个值的常用方法有三种:
其一,使用元组(C#7+)——直接返回(类型1, 类型2)形式的元组,如(int sum, int product) Calculate(int a, int b),调用时可通过变量名访问,简洁灵活;
其二,借助out参数——在函数参数中声明out变量,如bool TryParse(string s, out int result),通过输出参数传递结果,适合需要返回状态+数据的场景;
其三,自定义结构体/类——将多个返回值封装到结构体或类中,如public class Result { public int Id; public string Name; },适合返回值有明确业务含义、需要复用的情况。
此外,数组或集合也可作为容器返回,但缺乏类型明确性,不如前三种常用。”


53.4 关键词联想

  • 元组(Tuple / ValueTuple)
  • out参数(输出参数)
  • 自定义结构体(Struct)/ 类(Class)
  • 数组/集合(Array / List
  • 解构(Deconstruction)
  • var推断(元组类型推断)
  • C#7+ 特性
  • (int x, string y) 语法
  • 命名元组(Named Tuples)
  • 输出参数必须赋值


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏