C#基础点记录
1、自定义代码段
工具-》代码段管理器
3、Random:伪随机数
4、ref:模拟将值类型作为引用类型去传递,将变量在栈中的地址作为参数传递过去
out:也是将变量在栈中的地址作为参数传递,不同于ref的是:只输出,不需要输入
普通:直接将值类型的一个复本传递过去,并不会影响原来值
ref与out的区别:
-》ref需要有初始值,再进入函数进行运算
-》out不需要有初始值,只要声明即可
5、params可变参数,简化了使用时构造数组的操作
注意:在传递时,可以不传递任何参数,所以在使用时需要对数组进行判断
编译时,由系统完成将多个参数构造成一个数组的过程
6.数字处理:在无界面的情况下,只能只用强转,出错后报异常
关于值类型的引用传递:一共有三种传递方式:值传递,ref,out
switch(表达式):类型必须是 bool、char、string、整型、枚举或相应的可以为 null 的类型
params:可变参数,编译器帮助我们将多个参数封装到一个数组中
定义方法时,定义为一个数组,方法体中也对数组进行操作
调用时,直接写值,不用进行数组的构造
要求:只能将多个参数的最后一个定义为可变参数
7、索引器:类似于属性,完成类中数组的封装,包括set与get两部分
属性用于完成类中字段的封装
定义:使用this[参数]
{
get
{
...
}
set
{
...
}
}
8、方法重载
在一个类中,方法的名称相同,参数不同(参数的个数或类型不同)
方法的签名:访问修饰符 返回类型 方法名称(参数列表)
对于方法重载:只考虑方法名称、参数列表部分,与返回类型、访问修饰符无关
9、字符串可以当作字符数组看待(不能修改)
10、this:表示当前类的某个实例
变量的作用域:按块划分,以大括号为界线
自动属性:如果不对字段中的数据进行特别操作,只是直接进行设置或返回,可以写成自动属性,比较省事
编译器会为自动属性生成一个后台使用的字段
程序集是类文件物理上的反映,命名空间是类文件逻辑上的划分
一个程序集可以包含多个命名空间
一个命名空间可以包含在多个程序集中
11.索引器和数组字段有什么区别
同:属性与字段,字段用于存储数据,属性封装字段,完成字段的读写操作,封装的目标,是出于安全性的考虑
数组字段:用于存储一组相同类型的数据;索引器是对类中的数组成员进行封装的就去
如何得到类中数组的无数的个数:定义一个只读属性Length
详细讲下this的用法:表示当前类的某个实例,调用当前类中的成员;调用类中的其它构造方法
如果在一个范围内,引起了冲突,就必须加this以表示这个成员是类级别的成员;如果不会引起歧义,可以不加this关键字
构造方法:直接快速完成类中某些字段值的初始化
类前面默认的访问修饰符是:internal
计算器中char key = e.KeyChar; 的使用还是不太理解
方法重载:方法名相同,参数不同(参数个数或类型不同)
12、构造方法
构造方法也可以重载:参数不同(参数个数或类型不同)
如果没有定义构造方法,编译器会为我们生成一个无参的构造方法
当我们在类中自定义了构造方法后,编译器将不再为我们生成无参的构造方法
一个构造方法中,只能调用其它的任意一个构造方法,在构造方法后面使用:this(参数列表)
静态构造方法:只会在类加载时执行一次,完成类中静态字段的初始化
13、在一个类中,方法和构造方法的区别
方法:用于表示对象的行为、动作
构造方法:为了快速完成类中成员字段的初始化而写的一个方法
这两个东西没有什么需要比较的
14、索引器中的this【】有神么作用
就是定义索引器的语法格式
15、Combobox中直接存储对象
对于存储的数据和显示的数据,可以不一样:通过类的封装实现
将combox改成只选,不允许用户输入:DropDownStyle-DropDownList
->难理解1:存储的数据是一个学生对象,显示的数据是对象的一个属性
->难理解2:在combobox中显示的对象的内容,是调用对象的tostring()方法返回的字符串
步骤:
->新建学生类,重写ToString()方法
->实例化对象,添加到Combobox中Items.Add
->点击时,获取对象SlectedItem,进行类型转换得到学生对象
16、对象初始化器
类中必须要有一个无参的构造方法
使用时,不需要给构造方法中传递参数,直接使用{属性1=值1,。。。}
构造方法的小括号可以省略不写
17、继承:
继承关系,是描述类与类之间的关系,而不是对象与对象之间的关系
判断两个类中是否有继承关系,可以使用"A 是不是B"来判断,如果是则A继承B,如果不是则不继承
单根继承性:一个类只能直接继承于一个其它类
传递性:祖宗类的成员可以通过间接继承被后代类所拥有
继承的时候,构造函数是不被继承的
继承中的构造方法的执行过程:
当调用某个类的构造方法时,判断有没有base或this,
如果有,则跳到相应的方法处去执行;
如果没有,去执行父类无参的构造方法;
到object类的无参构造方法为止
18、访问修饰符
类中属性或字段的访问级别不能比所对应的类型访问级别高
在程序集A中,写如下代码
internal class Car{
...
}
public class Person
{
public Car car{
get;
set;
}
}
在程序集B中写如下代码
Person p=new Person();
p.car=new Car();//这句代码会出错,因为Car是internal的访问修饰符,出了程序集将不会再被访问到
方法的访问级别不能比方法的参数和返回值的访问级别高
在程序集A中,写如下代码
internal class Car{...}
public class Person
{
public Car Drive(string brand)
{
return new Car(brand);
}
}
在程序集B中,写如下代码
Person p=new Person();
Car c=p.Drive("audi");//这句代码会出错,无法正常执行,在调用new Car(brand);时将报错