day5.1(以前半途而废的C#记录笔记)
1. 隐式类型转换
低类型向高类型转换
转换的类型必须兼容
2. 显式类型转换
将高精度数值转换为低精度数值
A.利用parse方法转换 int num = int.Parse(str)
B.实用Covert类提供的方法进行强制转换 To转换的类型:ToString; ToDouble,没有ToFloat--à可以通过这个方法实现 float price = (float)Convert.ToDouble(strPrice)
String str =52.1
double dou = Convert.ToDouble(str)
3.面向对象设计的特点
a.封装
b.继承
c.多态
4.类的定义
类的声明包括:修饰符,类的名称,类的成员
类有两种 访问修饰符---public(它所在的程序及任何引用该程序的程序都可访问) 和 internal (只有定义它的程序内部可以访问) 在没有定义访问修饰符是默认是 internal
类 的成员 数据和方法
数据成员----包含类的数据,字段和常量
字段—--类中的变量
常量 在声明常量时前加一个const 如: public const double X=1.0;
方法成员 提供操作类中数据的某些功能。
声明方法 -------语法
修饰符 返回值类型 方法名称(参数列表)
{
}
修饰符: public 、 private 、 protected 、internal
返回值类型:如果无返回值返回值类型指定为void。
名称
方法参数列表:至少有一对空括号组成。如果有参数,它们被列在圆括号中间
方法体:由一对大括号组成,大括号内为代码
5.成员访问修饰符
1.公有成员
允许类的使用者从外部访问-----------public
2.私有成员
仅限于类中的成员访问 -----private
3.内部成员
对于同一个程序是可以访问的。 ------internal
4.保护成员 -------protected
方便派生类的访问,对外界是隐藏的。 专用于继承中
6.C#中创建一个已经声明的类的实例,需要使用 new 关键字。
MyClass myclass = new MyClass();
7.方法的参数
1.)值参数-------------------当利用值方式传递参数时,编译程序给实参做一个副本,并将此副本传递给该方法的形参。被调用的方法不会改变内存中实参的值,所以在使用值参数时,可以保证值是安全的。
2.)引用参数----------------它不开辟新的内存空间,而是向方法传递实参在内存中地址。在C#中,调用戴引用参数的方法可以在该方法内部改变调用方法的参数值。
声明 public void Method(ref int x,ref int y)
{
}
在另一类中调用
t.Method(ref a,ref b);//调用方法时,也要表明ref
3.)输出参数---------------------仅用于从方法传递回一个结果。完成这种数据传递方式的输出型参数,用关键字 out 表示
Public void Cal(int x, out int y)
{
}
调用该方法时,同样也要标明
t.Cal(35,out outNum);
4.)数组型参数----------------形参中包含数组型参数,它必须位于参数表中的最后。参数只允许是一维数组。 当参数前带有params 关键字时,就是一个带数组型参数的方法。
Public void Method(params int[] args)
{
}
这个调用的时候,就不用再在前加 params 了 。
8.变量作用域
成员变量和局部变量
9.static关键字
类的成员:实例成员和静态成员
实例成员通过类的实例访问的成员;静态成员不能通过类的实例访问而是通过类的名直接访问。
静态方法 :实例方法处理类的某个实例,静态方法提供了所有实例共有的功能,不需要实例化一个类就可以直接用类访问,如Console.WriteLine() .
静态类: 静态类中所有成员都是静态的。用于封装不受实例数据影响的数据和方法。
本身必须用static修饰;类的所有成员必须是静态的;不能继承静态类。
10.构造函数
特殊函数,特殊成员函数,与类同名,在创建对象时由系统自动调用,一般用来给数据成员分配资源并初始化
默认构造函数:在类的声明中没有显式定义的话,编译器就会提供一个隐式的默认的不带任何参数的构造函数。
带参数的构造函数:一个类中可以定义数个构造函数。
静态构造函数:声明为static。
11.析构函数
与构造函数相反,用来释放被占用的系统资源。
每个类只能有一个;
不能带参数;
不能带访问修饰符;
方法与类有相同名称,以”~”字符作前缀。只能对类的实例起作用,没有静态的析构方法;
不能在代码中显示地调用析构方法,在垃圾收集过程中调用,垃圾收集器分析代码,并确定在代码中没有任何途径引用该对象。
注意:如果不需要,就不要执行析构方法,它们会带来性能上的开销;它只应释放对象自己的外部资源,不应访问其他对象,因为无法假定这些对象还没有被收集。
12.readonly关键字
是可以在字段上使用的修饰符。字段声明用readonly修饰符时,该字段的赋值只能在声明时赋值或者在构造函数中赋值。
Readonly可在声明或构造函数中初始化。
Readonly可能具有不同的值。
Const为编译时常量,readonly字段可用于运行时常量。
Const字段总是静态的,readonly字段可以是静态,也可以是非静态的。
13.this关键字
每个成员方法(包括构造函数)都有个this引用,它总是引用此方法的对象(实例)。
只能用在下述代码块中;
实例化的构造函数
实例方法
属性和索引的实例访问
用于区分类的成员和贝蒂变量或参数
作为调用方法的实参
This尽在构造函数、类的方法和类的实例中使用,有以下含义:
出现在类的构造函数中的this,表示正在构造的对象本身的引用
出现在类的方法中的this,表示对调用该方法的对象的引用
14.值类型和引用类型-------C#中数据类型的分类
15.数组
声明数组:如int[] name string[] name; int[] score string[] name double[] height
分配空间: 数组名= new 数据类型[数组长度] score = new int[30]
数据类型 数组名 = new 数据类型[数组长度] int[] score = new int[30]
赋值: 数组名[下标]=值
如:score[0]= 89
Score[1]=91
数据类型[] 数组名 ={值1,值2,值3,….,值n}
如:int[] score = {60,70,98,90,76}
或 数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,….,值n}
如:int[] score = new int[]{60.70.63,76}
不能:如: int[] score;
Score={60,70,78,76};
编程序时,数组和循环往往结合在一起使用,可以大大简化代码,提高效率。
16.属性
声明方法:
指定字段的访问级别,后面是属性的类型,然后是属性的名称,再然后是声明get访问器和set访问器的代码模块
访问修饰符 数据类型 属性名
{
get{}
set{}
}
如 public string Name
{
get{ return _name;} //get 访问器
set{_name=vale;} //set 访问器
}
17.枚举
由System.Enum继承而来,并为基础元素类型的值提供代名词。
由名称、基础类型和一组字段组成;
基础类型必须是一个内置的符号整数类型
字段是静态文本字段,其中的每一个字段都表示常数。