.length//获取长度
.length//获取长度
变长参数params,可以直接在调用时输入变量用,隔开
只能声明在最后
参数默认值,默认参数的后面不可有无默认值的参数
特殊的引用类型string,string堆内容不能被修改,当进行=操作的时候,string会在堆里重新开辟一块空间存储数据
值类型直接存数值。
引用类型存引用(地址)
交错数组,声明时只能写行,列数每一行自己定义
int[][] arr = new int[行数][];
二维数组的声明方式
int[,] 自定义名称 ={{},{}};
int[,] 自定义名称 =new int[行数,列数];
int[,] 自定义名称 = new int{{},{}}
声明枚举和声明枚举变量是两个概念
枚举申明的语法
enum 自定义名称
{
}
不接收返回值,修改变量(返回不同类型的变量)
断点调试,监视窗口,内存地址变化
枚举
概念
枚举是一个被命名的整型常量的集合,用来表示状态或类型。
如果不用枚举,通过自定义的数字规则来表示状态或类型,会使代码不好阅读。
申明枚举
在命名空间申明(也可在class、struct语句块中申明,但不常用),枚举名规范:E_自定义枚举名
格式:
也可以在括号内给枚举项赋值,赋值后的项依然会不断自动累加
使用枚举
先申明枚举变量,再使用。
申明格式:
枚举常和switch语句配合使用(因为枚举是常量),写完swtich(枚举名)按回车会自动补全
枚举的类型转换(用得较少,了解)
函数重载:
函数名相同,传入的参数类型、数量、顺序不同的函数。
理解:一个机器可以给椅子自动刷漆,那想用它给桌子刷漆他就不能工作了,所以在制作机器的时候要考虑到当放入的是桌子的是后,要怎样工作,所以,当我们设置好,放入机器中一样东西,他会根据你放入东西的种类来自动执行相应的操作。
函数重载的优点:再使用函数的时候,功能相同或类似的函数可以用一个函数实现,减少定义新的函数名,方便使用。
ref和out
修饰函数参数的修饰符
值类型在传入时加上ref,最终函数对值类型的变量的操作会改变传入变量本身。
引用类型在传入时加上out,最终函数不会对引用类型的值造成影响。
实质:函数在传入变量的时候,其实是重新开一个房间,并把传入变量赋值给新房间,函数内部操作的对象都是新房间,但赋值时因值类型和引用类型的区别。
ref:值加ref可以改,new引用加ref可以改。
out:
引用类型:string、数组、class
值类型:其他都是值类型。
引用类型和值类型的决定性区别
引用表示变量所存储的是变量的地址
值类型直接存储变量
引用类型在赋值时传递的是地址,所以两个变量所存储的都是同一个地址,所以在修改的时候,我变他也变。
而值类型就是把自身的值复制给他人,两者没有任何联系。
注意:引用类型赋值是改变自身存储的地址,修改是改变地址指向的值。
但是当引用类型new的时候,就是重新在内存中申明新的空间,地址会变成新的地址。对旧地址没有影响。
二维数组:使用两个下标来索引来确定元素数组。
两个下标可以理解位行标和列标。
知识点:申明、遍历、增删查改。
1. struct是复杂数据类型的结构体
2. 函数一定要写在class和struct语句块中
1、&str1取出字符串变量str1在栈中的存储地址,*&str1取出在该栈中的地址里面的值,这个值实际上是堆中的地址,该地址里面的值就是字符串“123”在字符串池中的地址
2、
值类型存储在栈空间,系统分配,自动回收,小而快
引用类型存储在堆空间,手动申请和释放,大而慢
int[] arr =new int[] {4,1,8,5,7,2,0,3};
for(int i = 0,i<arr.length)
ref 和out 的区别
1、ref 传入的变量必须初始化,out 不用
2、out 传入的变量必须在内部赋值,ref不用