1.C#语言的特点:
a) 通用,支持跨平台
b) 简单,主要体现垃圾回收、指代等特性上
c) 面向对象设计
d) 与web应用紧密的结合
e) 安全性机制
f) 兼容性
g) 灵活的版本处理技术
h) C#提供了完善的错误和异常触发机制
2.简单的C#编程语法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Sample1_1//定义的项目的命名空间
{
class Program//定义了类
{
static void Main(string[] args)//定义的main函数
{
Console.WriteLine("请输入你的名字:");//向屏幕输出
String name = Console.ReadLine();//读取用户输入的数据
Console.WriteLine("{0}欢迎来到C#4.0世界",name);
}
}
}
3.C#语言的变量、常量和数据类型:
a) 变量:变量数据类型变量名(标示符)或者变量数据类型变
量名(标示符)=变量值
b) 常量:const 常量数据类型常量名(标识符)= 常量值
c) 数据类型:C#是一种强类型语言
i. 值类型:派生自System.Object的System.ValueType派生
的,声明一个变量分配在栈中
1. 简单类型:sbyte 字节型 short 短整型int 整型long 长
整型float 浮点型double 双精度浮点型char 字符型
bool 布尔型
2. 集合类型:用enum声明
3. 结构类型:用struct声明
ii. 引用类型:分配到堆中
1. 类类型:
2. 对象类型
3. 字符串类型:用String声明
4. 接口类型:用interface 声明
5. 委托类型:用delegate声明
6. 数组类型
iii. 装箱和拆箱:
1. 装箱:把值类型打包到Object是实例中,这个值类型
就可以存储在垃圾回收堆中
2. 拆箱:从对象中提取值类型
iv. 定义可以为null值得类型:
1. Nullable<;值类型> 变量名;
2. 数据类型?变量名;
d) 数据的类型转换:
i. 隐式转换:低类型向高类型转换
ii. 显式转换:
iii. 自定义数据转换:用户自定义的数据转换分为隐式和显式转换,格式为:static 访问修饰符implicit(隐式转
换)/explicit(显式转换)operator 转换类型(参数);
iv. 使用内置程序类的转换:内置的System.Convert类、数值类型的Parse方法以及Object对象的ToString方法可以对不
兼容的数据类型进行转换
v. is和as操作符:为了高效的处理类型转换过程中的安全问题
1. as操作符:Object a=new object();NewObject b= a
as NewObject;
expression is type ?(type)expression:(type)null
2. is 操作符:
vi. 泛型类型:泛型类型用<>符号来定义通用参数类型,通用类型为T,表明该类型可以使用于任何数
据类型vii. 隐式类型:var 关键字
1. 声明变量时必须对变量进行初始化
2. 必须使用表达式对变量进行初始化
3. 表达式不可以是空类型
viii. dynamic类型:实现动态编程
ix. dynamic 、object和var区别:
1. 关键字object表示System.Object类型,它是C#类层次结
构中的根类型。此关键字经常在编译时无法确定对象
类型的情况下使用,而这种情况经常在各种互操作性
情形中发生
2. 关键字var开始用于隐式类型化局部变量以及匿名类
型。此关键字经常与LINQ结合使用。当使用var关键
字声明变量时,将在编译时根据初始化字符串推断该
writeline方法属于类变量的类型。在运行时无法更改该变量的类型。如果
编译器不能推断类型,它会生成一个编译错误。
3. dynamic关键字可使某些传统上依赖于object关键字的
情形更容易编写和维护。实际上,动态类型在后台使
用System.Object类型。但与object不同的是,动态类型
不需要在编译时执行显示转换的操作,因为它仅在运
行时识别类型
4.C#运算符:
a) 算术运算符
b) 赋值运算符
c) 关系运算符
d) 逻辑运算符
e) 条件运算符
f) 位运算符
5.C#流程控制:
a) 条件语句:if…else if…else if…else switch case
b) 循环语句:do…while while for foreach
c) 跳转语句:break countnue goto return throw
6.C#方法
a) 方法的声明:修饰符返回值类型方法名称(参数1,参数
2…….){//方法主体}
i. 用于方法的修饰符可以是访问修饰符或static、virtual、
override、abstract、new、extern等
ii. 访问修饰符:public、private、protected和internal。
Internal表示只有在同一程序集的文件中,内部类型或成
员才可访问。
iii. Static 声明属于类型本身而不是属于特定对象的成员。
iv. Abstract:声明方法是某抽象类的成员,如果向其添加该方法的类不是抽象类,则该选项不可用
v. Virtual:可通过在派生类中的重写成员来改写方法的实现
vi. Extern:表明方法从外部实现
vii. Override:提供从基类继承的虚拟成员的新实现
viii. New:显示或者隐藏从基类继承的成员
b) 参数的传递:
i. 值类型参数的传递:参数传递的是变量一个副本,所以不
会改变传递的变量的原始数据
ii. 应用类型参数的传递:会改变传递的变量的原始数据
iii. 使用ref和out:在值传递中如果希望所调用的方法更改参数的值,必须使用ref或者out关键字通过引用传递该参
数,同样如果希望所调用的方法更改引用类型的参数的地
址,也可以通过ref或out关键字来实现,二者的区别在于
ref的参数必须最先初始化,而out不用。
c) Main方法:
i. Main方法的四种形式:static void Main(){};static int
Main(){};static void Main(string[] args){};static int
Main(string[] args){};
ii. Main方法返回int类型时,如果返回1,则从命令行调试不成功,否则成功。
iii. Main方法包含参数时,将把命令行传入的参数存放在string数组args中。使用Length属性来调试输入参数的个
数。
iv. Main方法使用需要遵循如下原则:
1. Main方法必须封装在类或结构里来提供可执行程序的
入口点。C#采用了完全面向对象的编程方式,但C#中
不可以有像C++那样的全局函数。
2. Main方法必须为静态方法,这允许C#不必创建实例对
象即可运行程序。
3. Main方法的保护级别没有特殊要求,public、
protected、private等都可以,但一般都指定其为
public。
4. Main方法名的第一个字母要大写,否则将不具有入口
点的语义
d) 可选参数和命名参数
i. 可选参数:C#4.0新特性,在方法定义时,可以为某些参
数指定默认值,从而把这些参数指定为可选参数注意:在所有必选参数后面定义可选参数
如果在调用时提供了某个可选参数的值,那么必须提供该可选参数之前的所有可选参数的值
ii. 命名参数:在方法调用时,可以指定参数名来为参数赋值7.C#异常和异常处理
a) 异常处理机制:try语句用来检查或检测可能发生的异常,并帮
助发送任何可能的异常;catch语句用来处理被try语句发现的异常,可以有多个catch子句;finally语句用来回收资源或执行其他操作,无论异常是否发生,该语句都会被执行,finally语句可以省略。
b) System.Exception是所有异常的基类
i. Date :获取一个提供用户定义的其他异常信息的键值对
的集合
ii. HelpLink :获取或设置指向此异常所关联帮助文档的连接。
iii. Hresult:获取或设置HRESULT,它是分配给特定异常的编码数值
iv. InnerException:获取导致当前异常的Exception实例
v. Message:获取描述当前异常的信息
vi. Source:获取或设置导致错误的应用程序或对象的名称
vii. StackTrace 获取调用堆栈上直接帧的字符串表示形式。
viii. TargetSite:获取引发当前异常的方法
c) SystemException和ApplicationException是Exception的派生类8.C#的类和对象
a) 定义类:访问修饰符class 类名称{//类的主体类的成员,可以
是属性、方法等}
b) 创建对象:使用new关键字
c) 字段:访问修饰符类型字段名在访问属性的时候要生成其访
问器来访问
d) 构造函数:如果没有为对象提供构造函数,默认情况下C#将会
创建一个构造函数,该构造函数实例化对象,如果没有
e) this关键字:用于指向这个堆以表示当前对象
f) 析构函数:当对象即将从内存中移除时由运行库执行引擎调用
的方法,名称与类名相同在函数名前加上一个“~”
g) 控制可访问性:
i. 类的可访问性:
1. 公共的,被public修饰,这样的类可由任何其他类型访
问
2. 内部的,被internal修饰,这样的类只能由同一程序集
中的类型访问,这种情况是默认的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论