⼀、方法的组成:
1.方法的修饰符,pubilic, static
2.方法的返回值,void没有返回值,有返回值的需要配合return
3.方法名称,命名规则同变量,一般大驼峰
4.形参列表,形参就是形式参数,将来使用方法时,会用实参来传递给形参
5.方法体,方法核心业务逻辑
封装成方法,调用方法,使用方法,根本目的,复用
通过类本身来调用的函数称为静态函数,通过类的实例来调用的方法称为实例方法,c#中方法必须要在类中定义,方法默认是私有的,只能在类中使用..
没有用static来修饰的方法称作实例 方法,实例方法必须通过类的个体来访问.
值传递特点:方法中修改了形参,不会影响外部的实参.引用传递:方法中修改了实参,影响外部的实参.实参的类型是引用类型中的string类型,传递特点与值传递一致,这是由于string类型在c#中特殊,重新修改了string后会生成新的字符,重新分配内存.方法传递类的实例时,是引用传递.修改实例的属性并没有给实例分配新的内存.
⼆、关于⽅法(函数)的⼀些补充
1. 为什么叫⽅法和函数呢?
指某个对象的⾏为。
2. 有什么⽤?
减少重复的代码,提⾼代码的复⽤性。
3. 两者的区别是什么?
类⾥叫⽅法,类外叫函数。不过现在区分已经不⼤了。
函数是这类事情是怎么⼲的,⽅法是某种⼈(某个对象)是如何⼲这类事情的。
⽅法和对象相关,函数和对象⽆关。
简单的理解下,⽅法就是绑定了实例的函数。
4. 过程、⽅法、函数的区别?
过程(Process): ⽆返回值。
函数(function):有返回值。
⽅法:不管有⽆返回值(过程+函数)。
5. 函数返回值的关键字?
return
6. 代码⽰例
⽅法:
public void Print()// void:表⽰不返回任何数据{ MessageBo.Show("打印所有的数据");}
函数:
public int GetCount(){ return 100;}
5. 什么是函数的参数?
参数其实相当于⼀个值的副本。
传递副本的好处就是可以避免因误操作⽽影响了原值。缺陷就是会因复制⽽产⽣性能损耗。
6. 参数的关键字是什么?
ref、out、params
1.ref
- 用于不写return同步改值
- 能够将一个变量带入方法中改变,改变完成后,在把改变完成后的值,带出方法,不需要写return
2.out:
- 用于多个不同的返回类型
- 如果一个方法中,返回多个相同类型的值,可以只返回一个数组
- 如果返回多个不同类型的值的时候,就不行了,可以考虑使用out参数
- out 方法必须在方法的内部赋值
3.params可变参数
- 把参数类型一样的参数,当做方法params 定义的数组的元素;
- params必须是形参最后一位且只有一个;
C# 空类型(Null)
1.Null
特点:
1.表示不引用任何对象的空引用,没有创建内存空间,存放的是空引用指针;
2.Null类型是System.Nullable<T>这个struct的类型
3.对于值类型 赋值不能直接为null 引用类型可以
4.null引用类型变量的默认值
使用场景:
当我们想要对于一个值类型变量进行 判断 是否 存在时,为了节约内存 可以赋值为null
null和字符串空值和字符串空格的区别
1.null是没有创建内存空间,
2.字符串空值 为"" 或者string.Empty 实际上都会分配空间;
3.字符串空格 " " 会分配空间 空格也是ACSII 对应的符号
双问号 ??(合并运算符)
作用:
用于判断一个变量在为 null 的时候返回一个指定的值
使用场景
Null 合并运算符为类型转换定义了一个预设值,以防可空类型的值为 Null
声明数组:
datatype[] arrayName;
datatype 用于指定被存储在数组中的元素的类型。
指定数组的秩(维度)。秩指定数组的大小。
arrayName 指定数组的名称。
初始化数组中的元素的方式
数据类型[] 数组名 = new 数据类型[长度];
数据类型[] 数组名 = {值 1, 值 2, …}
数据类型[] 数组名 = new 数据类型[长度]{值 1,值 2,…}
数据类型[] 数组名 = new 数据类型[长度可忽略]{值 1,值 2,…}
多维数组
含义:数组嵌套数组形式 一般常用二维数组
二位数组格式:string [,] strArray =new string[数组个数,数组元素个数]