C# for Unity 编程语言快速入门教程(连载9)_C#OOP编程之值类型与引用类型
创新互联成立与2013年,是专业互联网技术服务公司,拥有项目网站制作、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元大安做网站,已为上家服务,为大安各地企业和个人服务,联系电话:18982081108C#编程语言中有“值类型”与“引用类型”之分。讲这个概念之前,先说明一下什么是“形式参数”(简称:“形参”),什么是“实际参数”(简称“实参”)。
“形参”("形式参数"): C#方法中的参数列表,即可以称为“形式参数",因为在程序运行之前,我们是不能知道具体的参数到底是什么。
"实参"("实际参数"): 给C#定义的带参方法,进行实际赋值的代码数值,称为“实参”。因为我们可以知道或者估计实际运行过程中参数的数值类型与数值多少。
知道以上概念后,我们再来说明“值传递”与“引用传递”
所谓值传递是指: “实参”传递给“形参”为本身的一个拷贝副本。
所谓引用传递指: “实参”传递给“形参”为本身的“地址”作为数值给形参。
软件编程中正确理解值传递与引用传递,对设计优秀软件有重要作用。
关于本节知识点,我们总结如下规则:
规则1: 基本数据类型(int,float ,double,char),都是值传递。
规则2: 类的实例化对象与数组都是“引用”传递。
规则3: ref (输入输出)关键字可以把基本数据类型的值传递,改为“引用传递”。
规则4: 字符串不是基本数据类型,但是它默认也是“值传递”,当然可以通过ref 变为引用传递。
一般我们学习本节,还会增加一个常用关键字:out 。 这个关键字定义方法的参数为“输出参数”,使得一个方法,具备多个输出参数。(否则只能用方法的返回类型,做唯一的返回类型)。
为了更好的理解C#的“形参”与“实参”,笔者提供如下习题,供C#初学者进行研究学习,不明之处,欢迎留言讨论!
//习题: 学习面向对象编程: 值类型与引用类型
class Program
{
//值类型
public void AddNumber(int num1) //num1 称为 “形参”
{
num1 = num1 + 100;
}
//引用类型
public void AddNumberWithRef(ref int num1)
{
num1 = num1 + 100;
}
//引用类型(传递)
public void AddNumberByArray(int[] intArray)
{
intArray[0] = intArray[0] + 100;
}
//引用传递(对象类型)
public void AddNumberByPerson(Person per)
{
per.IntHeight = 200;
per.strName = "李四";
}
//字符串传递
public void AddNumberByString(ref string str)
{
str = str + "大家好!";
}
//演示out 关键字的作用
public void ComputNumber(int intNum1,int intNum2,out int intAddResult,out int intSubResult)
{
intAddResult = intNum1 + intNum2;
intSubResult = intNum1 - intNum2;
}
static void Main1(string[] args)
{
//Person perObj = new Person();
Program obj = new Program();
//int intTestNum = 10;
//int[] intArray = new int[1];
//intArray[0] = 20;
//string strTest = "同学们";
//"值传递" 测试,传递的是“复制品”
//obj.AddNumber(intTestNum); //intTestNum 称为“实参” ,结果是:10
//"引用数据传递"测试。
//obj.AddNumberWithRef(ref intTestNum);//结果为: 110.
//obj.AddNumberByArray(intArray); //结果为: 120;
//“对象”数据传递
//obj.AddNumberByPerson(perObj);
//字符串的传递测试
//obj.AddNumberByString(ref strTest);
//演示out 关键字作用
int intAddResult = 0;
int intSubResult = 0;
obj.ComputNumber(10, 20, out intAddResult, out intSubResult);
//显示结果
Console.WriteLine("10+20={0},10-20={1}",intAddResult,intSubResult);
}
}
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。