C#基本语法学习笔记
名词解释:
1、CLR---------Common Language Runtime ------------公共语言运行环境,管理着代码的执行。
2、JIT---------Just In Time -----------------------即时编译器。 作用:执行时将中间语言编译成本地代码
3、MSIL--------MicroSoft Intermediate Language-----微软中间语言。编译时编译器将代码转化为中间语言和元数据。
4、名字空间----相当与java中的包(package)
1)起源:
微软internet平台战略,2000-6-22发布.net框架
2)特点:
1、完全支持xml,与web紧密连接
2、对象自动回收
3、跨语言 (来自于他的虚拟对象系统)
3).NET的结构
1、虚拟对象系统 (VOS) :跨语言集成,程序员可以选择自己喜欢的开发语言,只要他支持.net
2、元数据---------------:对VOS中类型描叙代码的一种称呼,编译时自动生成,与源代码共同包好在二进制代码文件中
3、公共语言规范(CLS)
4、虚拟执行系统(VES):运行的环境
4)HelloWorld
using System;
class HelloWorld {
static void Main () {
Consol.Write("Hello World!");
}
}
说明:源代码后缀为.cs
5)数据类型(值类型 简单类型,结构类型,枚举类型):
1、整型----------sbyte(带s都是有符号的),byte(0到255),short,ushort,int,uint,long,ulong
2、布尔型--------bool (true,false)
3、实数----------float,double C#中专门添加decimal类型,方便在金融和货贝方面的运算
4、字符----------char 其中有转义字符:\',\''等。
5、结构类型------struct Student {
public string Name;
public float score;
}
6、枚举类型------enum WeekDay {Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday};
6)数据类型(引用类型):----所谓引用类型是:该类型变量不直接存储所包含的值,而是指向该值,也就是存储该引用值的地址。
1、类:--------------object类是所有类的基类。
2、String类----------sting s="hello";
3、代表(delegate)----a)说明:C#取消了指针的概念,当然也可以用指针,但必须申明为unsafe不安全的。
b)定义:delegate int Mydelegate(); ----代表相当于函数指针原型。
c)使用:Mydelegate d=new Mydelegate(类.方法)
d(); //然后就相当于直接掉函数。
4、数组--------------a)定义: int[] arr=new int[5]; // int[] arr=new int[5] {1,2,3,4,5} //
int[] iArr; ---一唯
int[,] iArr;----二唯
int[,,] iArr;----三唯
7)装箱和拆箱(boxing--unboxing):用于值类型,引用类型,object对象类型之间的转换。
1、装箱-------------将一个值类型隐式的转化为一个object类型
例子:int i=10;
object obj=i; //隐式
object obj=object(i) //显式
2、拆箱-------------将一个对象类型转化为一个值类型
例子:int i=10;
object obj=i;
int j=(int)obj;
8)表达式
1、运算符----- a:一元运算符 ++,-- // b、二元运算符 +,-,*,/,%(取余) // c、三元运算符 y=(x>10?1:0)
2、关系符----- == (等于) != (不等于)
3、as操作符--- 将一个值转化为指定的引用类型,如果不能转换则返回null值。
4、逻辑符号--- &&(并且) || (或者) !(非)
9)流程控制
1、if判断结构--------if (条件) {} else {};
2、swith开关结构-----swith (表达式) {
case 值1:do something;break;
case 值2:do something;break;
default: .....
}
说明:其中可以不使用break;而使用goto case 值1转向//或者goto default;
3、For循环结构-------for (int i=0;i<=10;i++) {...}
while循环 -------while (条件) {...};
do ...while循环---do {...} while (条件)
10)异常处理
1、结构1-------- try {...} catch (Exception e) {...} //e.message
2、结构2-------- try {...} finally {...}
3、结构3---------try {...} catch (Exception e) {...} finally {..}
4、抛出一个异常:
a.--- throw new Exception("错误信息");
b.----e=new Exception ("错误信息");
throw;
11)类:
1、类的修饰符
e.abstract-----抽象类,不允许建立实例
f.sealed-------密封类,不允许被继承。 //seal /si:l/密封。。海豹
2、类的成员
使用访问修饰符 public、protected、internal 或 private 可以为成员指定以下声明的可访问性之一。
声明的可访问性 |
含义 |
---|---|
public |
访问不受限制。 |
protected |
访问仅限于包含类或从包含类派生的类型。 |
internal |
访问仅限于当前程序集。 |
protected internal |
访问仅限于从包含类派生的当前程序集或类型。 |
private |
访问仅限于包含类型。 |
一个成员或类型只能有一个访问修饰符,但使用 protected internal 组合时除外。
命名空间上不允许使用访问修饰符。命名空间没有访问限制。
3、this保留字
仅限于在构造函数,类的成员和类的实例中使用。
4、成员常量
public const int i=10;
5、构造函数:
a、构造函数通常与类名相同。
b、构造函数不声明返回类型。
c、构造函数总是public的,如果为private则表示该类不能被实例话。
例子: class A
{
public A(int i) {...}; //构造函数
}
6、析构函数
a、析构函数的名字与类名相同,只是前面有一个波浪~符号。
11)方法:
1、修饰符:new、public、protected、internal、private、static、virtual、sealed、override、abstract、extern
说明:对于abstract、extern方法的执行体只有一个分号;也就是只有声明没有实现。
2、参数
a、值参数 -------不含任何修饰符号 :传递的是值的拷贝,任何修改不影响原来的参数
b、引用参数------以 ref为修饰符 :传递的是值的地址,
c、输出参数------以out为修饰符 :输出参数与ref参数的区别是:调用函数前不需要对该参数初始话
d、数组参数------以params为修饰 :
说明1:数组参数必须位于参数表的最后
说明2:参数只允许是一唯数组
说明3:数组参数不再有ref,out修饰符
3、方法的重载-------类中有同名的方法,但是参数必须不同。
4、操作符的重载-----
12)域和属性
1、域:就是成员变量。 修饰:public、protected、internal、private 。。。static静态域.
只读域:public static readonly double pi=3.1415926
2、属性:声明---attributes 修饰符 类型 名称
属性的读:get 写 set
13)事件和索引指示器