IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> C#基础-outrefparams -> 正文阅读

[游戏开发]C#基础-outrefparams

out

再说out参数之前先做个练习题
Q1:写一个方法 求一个数组中的最大值,最小值,总和,平均值?
(先用传统方法返回一个数组来装这四个值 然后再使用out参数做对比)

static void Main(string[] args)
{
      int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
      int[] res =  GetMaxMinSumAvg(nums);
      Console.WriteLine("最大值{0},最小值{1},总和{2},平均值{3}", res[0], res[1], res[2], res[3]);
      Console.ReadKey();
  }
  
public static int[] GetMaxMinSumAvg(int[] nums)
{
    int[] res = new int[4];
    res[0] = nums[0];//假设最大值 依次给数组赋值
    res[1] = nums[0];//假设最小值
    res[2] = nums[0];//假设总和
    for (int i = 0; i < nums.Length; i++)
    {
        if (nums[i] > res[0])
        {
            res[0] = nums[i];
        }
        if (nums[i] < res[1])
        {
            res[1] = nums[i];
        }
        res[2] += nums[i];
       
    }
    res[3] = res[2] / res.Length;
    return res;
}

但这种只能返回同一个类型多个数组的值,如果想返回多个不同类型的多个值时 此时数组是不成立的
因此我们这时就使用out参数,可以多余返回不同类型的参数

static void Main(string[] args)  
{
     //写一个方法,求一个数组中的最大值,最小值,总合,平均值
     int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
     int max;
     int min;
     int sum;
     int avg;
     GetMaxMinSumAvg(nums,out max,out min,out sum,out avg);
     Console.WriteLine("最大值{0},最小值{1},总和{2},平均值{3}",max, min,sum,avg);
     Console.ReadKey();
 }

public static void GetMaxMinSumAvg(int[] nums,out int max,out int min,out int sum,out int avg)
{
    max = nums[0];
    min = nums[0];
    sum = 0;
    avg = 0;
    for (int i = 0; i < nums.Length; i++)
    {
        if (nums[i]>max)
        {
            max = nums[i];
        }
        if (nums[i]<min)
        {
            min = nums[i];
        }
        sum += nums[i];
    }
    avg = sum / nums.Length;
}

结果都是
在这里插入图片描述


ref

ref就是将这两个值在方法内进行改变,改变后再将值带出去
Q1:用一个方法来交换方法内的两个变量的值?

 static void Main(string[] args)  
 {
     //用一个方法来交换方法内的两个变量的值
     int n1 = 10;
     int n2 = 20;
     Test(ref n1,ref n2);//ref就是将这两个值在方法内进行改变,改变后再将值带出去 ,然而必须在方法内进行赋值,因为你要有值可以改变
     Console.WriteLine("n1的值{0},n2的值{1}",n1,n2);
     Console.ReadKey();
 }

 public static void Test(ref int n1,ref int n2)
 {
      int temp = n1 ;
      n1 = n2;
      n2 = temp;
  }

结果是
在这里插入图片描述


params

params可变参数:将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理
params可变参数必须是形参列表中的最后一个元素
Q1:用一个方法求张三的总成绩?

 static void Main(string[] args)  
 {
     //用一个方法求张三的总成绩
     Test("张三", 99, 88, 77);
     Console.ReadKey();
 }
public static void Test(string name, params int[] score)
{
    int sum = 0;
    for (int i = 0; i < score.Length; i++)
    {
        sum += score[i];
    }
    Console.WriteLine("{0}这次考试的总成绩是{1}", name, sum);
}

结果是
在这里插入图片描述

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:27:58  更:2021-09-12 13:29:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 14:44:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码