欢迎大家指正
目录
前言
本文就介绍了C#数据类型和参数的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、类型分类
1.引用类型
存储数据的引用(内存地址)类:string Array 委托.
array=newArray; 替换引用 方法外不会受到影响
array[0]=newArray[0];通过引用修改堆中数组对象
即:数组名字为栈中引用
数组名+索引为堆
引用类型:声明在栈中,数据存储在堆中,栈中存储数据的地址
因为引用类型存储数据的引用,所以数据在堆中,栈中存储数据的内存地址
2.值类型
值分类:存储数据本身 结构: 数值类型 bool char
值类型:声明在栈中,数据储存在栈中
因为方法执行在栈中
所以在方法声明的变量都在栈中
变量名就是内存地址的别名
因为值类型直接存储数据,所以数据存储在栈中
//a在栈中 1在堆中
int a = 1;
//arr在栈中存储数组对象的引用(内存地址) 1在堆中
int[] arr = new int[] { 1 };
int[] arr2 = arr;
//arr[0]=2;//修改的是堆中的数据
arr = new int[] { 2 };//修改的是栈中存储的引用
//是栈是堆看左面
string s1 = "男";
string s2 = s1;
s1 = "女";//修改的是栈中引用
//s1[0]='女'//堆中的文字 不能修改
//o1在栈中 数据1 在栈中
object o1 = 1;
object o2 = o1;//o2得到的是 数据1的地址
o1 = 2;//修改的是栈中o1存储的引用
Console.WriteLine(o2);//?1
int num01 = 1, num02 = 1;
bool r1 = num01 == num02;//?true 因为值类型存储的是数据,所以比较的是数据
int[] arr01 = new int[] { 1 }, arr02 = new int[] { 1 };
bool r2 = arr01 == arr02;//?false 因为引用类型存储的是数据的引用,所以比较的是存储的引用
二、参数介绍
1.值参数
值参数:按值传递--传递实参变量存储的内容
作用:传递信息
例子:
//值参数:按值传递--传递实参变量存储的内容
//作用:传递信息
private static void Fun1(int a, int[] arr)
{
a = 2;
}
2.引用参数
引用参数:按引用传递--传递实参变量自身的内存地址
作用:改变数据
Fun2(ref a2);//这样传参
//引用参数:按引用传递--传递实参变量自身的内存地址
//作用:改变数据
private static void Fun2(ref int a)
{//方法内部修改引用参数 实质上就是修改实参变量
a = 2;
}
3.输出参数
//输出参数:按引用传递--传递实参变量自身的内存地址
//作用:返回多个结果
Fun3(out a3);//这样传参
//输出参数:按引用传递--传递实参变量自身的内存地址
//作用:返回多个结果
private static void Fun3(out int a)
{
//区别1:方法内部必须为输出参数赋值
//区别2:输出参数传递之前可以不赋值
a = 2;
}
}
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了数据类型和参数的具体事项