使用可变参数params关键字实现一个方法,可以参数是1,2或1,2,3或1,2,“a”。输出是参数转换为string拼接起来输出。
//Unity-可变参数params(数组参数)
//使用可变参数params关键字实现一个方法,可以参数是1,2或1,2,3或1,2,"a"。输出是参数转换为string拼接起来输出。
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
public class Demo : MonoBehaviour
{
int[] testData = { 0 };
int[] testData2 = { 1, 2 };
void Start()
{
//按数组变量形式来写的话,加params关键字效果是一样的,没有太大区别。
TestMethod(testData);
TestMethod(testData2);
TestMethod2(testData);
TestMethod2(testData2);
//把数组变为类似ArrayList这种形式的动态数组,用起来直接写数组的元素作为参数即可。使用起来比较方便。
TestMethod(3, 4);
//不加params关键字时,只能用这种形式先定义和分配数组的元素。
TestMethod2(new int[] { 3, 4 });
TestMethod3(5, "a", 7.5f);
TestMethod3(8, 9);
OutPutString(1, 2);
OutPutString(1, 2, 3);
OutPutString(1, 2, "a");
}
//增加params关键字可以让数组变为了类似ArrayList这样的动态数组。在使用时,可以直接用TestMethod(1,2);TestMethod(1,2,3);这种形式。
public void TestMethod(params int[] intData)
{
for (int i = 0; i < intData.Length; i++)
{
//Debug.Log("1 intData[i] = " + intData[i]);
}
}
public void TestMethod2(int[] intData)
{
for (int i = 0; i < intData.Length; i++)
{
//Debug.Log("2 intData[i] = " + intData[i]);
}
}
public void TestMethod3(params object[] intData)
{
for (int i = 0; i < intData.Length; i++)
{
//Debug.Log("3 intData[i] = " + intData[i]);
}
}
public string OutPutString(params object[] data)
{
try
{
StringBuilder stringBuilder = new StringBuilder();
foreach (var item in data)
{
string str = Convert.ToString(item);
stringBuilder.Append(str);
}
Debug.Log($"OutPutString = {stringBuilder.ToString()}");
return stringBuilder.ToString();
}
catch (Exception ex)
{
Debug.Log($"ex = {ex}");
return "";
}
}
}