• 学懂C#编程:让函数返回 多个返回值 的几种常用技术


    1. 使用 out 或 ref 参数

      outref 参数允许方法修改传入变量的值,并通过它们“返回”多个值。ref 需要变量事先初始化,而 out 不要求。

    1. public void GetValues(out int val1, out string val2)
    2. {
    3. val1 = 10;
    4. val2 = "Hello";
    5. }
    6. // 使用示例
    7. int num;
    8. string text;
    9. GetValues(out num, out text);

    2. 使用 Tuple 或 ValueTuple

        元组允许你将多个值组合成一个复合值返回。

    1. public (int, string) GetValues()
    2. {
    3. return (10, "Hello");
    4. }
    5. // 使用示例
    6. var result = GetValues();
    7. int num = result.Item1;
    8. string text = result.Item2;
    9. // 使用 ValueTuple 可以命名元素
    10. public (int Number, string Text) GetValueTuple()
    11. {
    12. return (10, "Hello");
    13. }
    14. var valueResult = GetValueTuple();
    15. int number = valueResult.Number;
    16. string textValue = valueResult.Text;

    3. 定义一个类或结构体

    创建一个包含所需字段的类或结构体,并返回这个类型的实例。

    1. public class Result
    2. {
    3. public int Value1 { get; set; }
    4. public string Value2 { get; set; }
    5. }
    6. public Result GetValues()
    7. {
    8. return new Result { Value1 = 10, Value2 = "Hello" };
    9. }
    10. // 使用示例
    11. var resultClass = GetValues();
    12. int numClass = resultClass.Value1;
    13. string textClass = resultClass.Value2;

    4. 使用匿名类型

    在LINQ查询中常用,但也可以在其他地方创建匿名类型并返回。

    1. public object GetAnonymousValues()
    2. {
    3. return new { Value1 = 10, Value2 = "Hello" };
    4. }
    5. // 使用示例
    6. var anonymousResult = GetAnonymousValues();
    7. int numAnonymous = ((dynamic)anonymousResult).Value1;
    8. string textAnonymous = ((dynamic)anonymousResult).Value2;

    5. 使用动态类型

    虽然不推荐作为常规做法,但在某些情况下可以返回 dynamic 类型。

    1. public dynamic GetDynamicValues()
    2. {
    3. return new { Value1 = 10, Value2 = "Hello" };
    4. }
    5. // 使用示例类似于匿名类型
    6. dynamic dynamicResult = GetDynamicValues();
    7. // 动态类型在使用时不需要预先知道具体结构,但存在运行时错误风险
    8. int value1 = dynamicResult.Value1;
    9. string value2 = dynamicResult.Value2;
    10. Console.WriteLine($"Value1: {value1}, Value2: {value2}");

           选择哪种方法取决于具体需求,如代码的清晰度、性能考量以及是否需要强类型支持等因素。在C# 7及以后版本中,ValueTuple 成为了返回多个值的便捷且推荐的方式。

  • 相关阅读:
    Fe-safe/Isight/Tosca2022新功能
    LeetCode 面试题 08.09. 括号
    2022年全球市场有机硅结构密封胶总体规模、主要生产商、主要地区、产品和应用细分研究报告
    调用ABC自带标准脚本文件
    数据科学中常用的应用统计知识
    【Python】Pycharm使用anaconda中的PaddleOCR的虚拟环境 卡在loading package list(保姆级图文)
    qt 根据xml文件动态显示参数配置界面(进阶)
    每天一个注解之@RestController
    轮式装载机铲斗模拟仿真
    多大的串扰算大?
  • 原文地址:https://blog.csdn.net/martian665/article/details/139801194