null第1讲 C#语言基础第1讲 C#语言基础秦 光 源
13881773173
qinguangy@163.com教学内容教学内容C#语言基础
C#语言的数据类型
C#语言的运算符
C#语言的控制语句
C#语言与其他语言的关系 C#简介 C#简介 C#语言自C/C++演变而来,是一种简洁、类型安全的面向对象的编程语言。它简化和现代化了C++在类、名字空间、方法重载和异常处理等领域。同时,C#也借鉴了Java语言的许多优点。
C#是Microsoft为.NET平台量身定做的新的程序语言,可以用来构建在.NET Framework上运行的各种安全、可靠的应用程序。
C#的新功能包括严格的类型安全、版本控制、垃圾收集等,所有这些功能都瞄准了开发面向组件的软件。数据类型数据类型C#的数据类型主要有两类:值类型(value type)和引用类型(reference type)。
值类型包括简单类型(整型、浮点型和布尔型等)、枚举类型和结构类型。引用类型包括对象类型、类类型、接口类型、代表类型、字符串类型和数组类型等。
值类型和引用类型的不同之处是值类型的变量值直接包含数据,而引用类型的变量不存储他们代表的实际数据,而是存储对实际数据的引用。值类型中的简单类型值类型中的简单类型简单类型
整型
浮点型
小数型
布尔型
特点
在C#中出现的简单类型共享一些特性。第一,它们都是.NET系统类型的别名,例如:int就是System.Int32的别名。第二,由简单类型组成的常量表达式仅在编译时而不是运行时受检测。最后,简单类型可以按字面被初始化,例如int a=5,则a即被初始化赋值为5。值类型中的简单类型值类型中的简单类型1、整型:根据计算机中表示整数的长度及整数是否具有符号位,C#中可以划分为9种整数类型,如表所示值类型中的简单类型值类型中的简单类型注意:
上表中char类型的可能值对应于统一字符编码标准(Unicode)的字符集。char类型与其他整数类型相比有以下两点不同之处:
(1) 没有其他类型到char类型的隐式转换,既使对于sbyte,byte和ushort这样能完全使用char类型代表其值的类型,sbyte、byte和ushort到char类型也不存在隐式转换。
(2) char类型的常量必须被写为字符形式,如果用整数形式,则必须带有类型转换前缀。如(char)10。值类型中的简单类型值类型中的简单类型2、 浮点型
两种浮点类型
float型 :1.5×10-45~3.4×1038 精确到小数点后面7位
double型 :5.0×10-324~1.7×10308 精确到小数点后面15、16位
浮点运算结果
正零和负零
正无穷和负无穷
非数字值 NaN
非零值的有限数集
与浮点数运算,其他类型要先转换成浮点类型值类型中的简单类型值类型中的简单类型3、小数类型
小数类型是一种高精度、128位的数据类型,适用于金融和货币运算。数值范围从1.0×10-28~7.9×1028,精确到小数点后面28位。
小数类型较浮点类型而言,具有更大的精确度,但是数值范围相对小了很多。
当定义一个变量并赋值给它时,使用 m 后缀以表明它是一个小数类型。例如:“decimal decMyValue = 1.0m;”。
这里如果省略了m,在变量被赋值之前,它将被编译器认作double类型。 值类型中的简单类型值类型中的简单类型4、布尔型
布尔数据类型(bool)有true和false两个布尔值
可以赋于true或false值给一个布尔变量,也可以赋于一个表达式
布尔类型的变量或表达式运算,结果还是布尔型引用类型引用类型和值类型相比,引用类型不存储它们所代表的实际数据,而是它们存储实际数据的引用。
C#中的引用类型,其实就是特殊的指针,它拥有的是基本的指针语义,但是又有C++中引用的某些特征。
C#中的引用类型有对象类型、类、接口、委托、字符串类型和数组。引用类型引用类型对象类型:是所有类型之母―它是其它类型最根本的基类
类类型:包含数据成员、函数成员和嵌套类型
接口:是一个只有抽象成员的引用类型
委托:封装了具有一些标志的一个方法
以上类型不做详细介绍,请参阅相关教材引用类型引用类型1、字符串类型
string类型 :常见用法
string str1="Hello"; //字符串赋值
string str2=str1+"World!"; //字符串连接
char c1=str1[0]; //通过下标访问单个字符
bool flag=(str1==str2); //比较两个字符串是否相等
相关用法:
(1) 取字串长度
(2) 截取字串的一部分
(3) 字串替换
(4) 字串中指定字符或字串首次(最后一次)出现位置 引用类型引用类型(5) 在字串中指定索引位插入指定字符
(6) 在字串左(或右)加空格或指定char字符,使字串达到指定长度
(7) 从指定位置开始删除指定个数的字符
(8) 清除字串前后空格
引用类型引用类型2、数组
数组是包含一串变量的数据结构。数组变量也称作数组元素,它们具有相同的类型,这种类型也称做数组类型。数组用下标确定每一个数组元素的索引号,索引号从0开始。只有一个下标的数组称为一维数组,多于一个下标的数组称为多维数组
(1) 声明数组时,方括号跟在类型后面。 Int[] a
(2) 数组的每个维数的长度不是数组类型的一部分
int[] a;
a=new int[10]; 其它数据类型其它数据类型DateTime日期时间类型 :DateTime 值类型表示值范围在公元0001年1月1日午夜12:00:00到公元9999年12月31日晚上11:59:59之间的日期和时间
DateTime currentTime;
currentTime=System.DateTime.Now; //取当前年月日时分秒
int year=currentTime.Year; //取当前年
int month=currentTime.Month; //取当前月
int day=currentTime.Day; //取当前日
int hour=currentTime.Hour; //取当前时
int minute=currentTime.Minute; //取当前分
int second=currentTime.Second; //取当前秒
string strCurrentTime=currentTime.ToString(); //取当前时间作为字符串返回 数据转换数据转换C#数据类型之间必须显式转换
1. 使用框架类转换数据类型
如:int iAge;
iAge=int.Parse(txtAge.Text);
iAge=Convert.ToInt32(txtAge.Text);
2. 通过造型转换数据类型
如:double MyDouble=1.23;
int MyInteger;
MyInteger=(int)MyDouble;
3. 显式转换
如:float num=1.23f;补充补充String和StringBuilder的区别
1.当要多次改变一个string的值的时候,使用StringBuilder效率更高
2. StringBuilder在System.Text命名空间中
3. StringBuilder字符串相加使用其Append()方法补充补充常量定义 const
如:const int a = 20;
枚举定义 enum
如:public enum TimeofDay
{
Morning = 0;
Afternoon =1;
Evening = 2;
}
补充补充类定义 class
1.注意访问修饰符:public、private、protected、static
2.属性和属性方法的区别
3.方法定义中的参数传递:普通值传递、引用传递ref、输出参数out
4.举例(定义和使用学生类:包含学号属性、姓名属性、年龄属性和增加年龄方法)
结构体定义 struct
可以把结构体看成是一个缩小的类,但它不支持继承,属性值类型,用于只是把数据组合起来的情况补充补充结构体定义 struct
如:public enum TimeofDay
{
Morning = 0;
Afternoon =1;
Evening = 2;
}
操作符操作符根据操作符作用的操作数的个数来分,C#包括多个一元操作符、多个二元操作符和一个三元操作符。表4-2列出了一些常用操作符。
当一个表达式包含多个操作符时,操作符的优先级决定了计算的顺序。
具体操作符参见下页表操作符操作符控制语句控制语句控制语句是在程序运行过程中,有条件地执行或重复执行某些语句,改变程序正规的顺序执行流向,C#中把常见的控制语句划分为选择语句、循环语句和跳转语句
选择语句选择语句1、if语句
if语句有三种结构:
单条件选择: if( ) {} 双条件选择 :if ( ) {}else{}
多条件选择: if ( ){}else if ( ){}else if ( ) {}else{}
其中()内为条件布尔表达式,{}内为各分支的语句块,如果分支语句块中仅一条语句,则{}可以省略不写。 选择语句选择语句2、switch语句
求一个表达式的值,并将这个值与许多case进行比较。 结果如下:Switch(表达式)
{
case 结果1:
case 结果2:
……
default:
}循环语句 循环语句 1、While语句
当一个表达式的值为true时,这个语句执行一个语句列表。 结构:
While(表达式)
{
循环体语句
}
循环语句循环语句2、 do语句
与while语句相似,但是循环体至少执行1次
do
{
循环体
}while(表达式)
循环语句循环语句3、 for语句
结构如下:
for(初始化器;条件表达式;迭代语句)
{
循环体
}循环语句循环语句4、 foreach语句
语句用来循环一个集合中的元素 foreach(类型 element in 数组)
{
循环体
}跳转语句跳转语句1.break语句:这个语句常与switch语句联合使用,也经常用于跳出一个循环语句块。
3.goto语句:这个语句将控制返回到控制循环语句的布尔表达式。(尽量不使用)
2.continue语句:这个语句把控制无条件交给一个标记语句。命名空间命名空间命名空间(Namespace)是将相关的类型进行分组的逻辑命名
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
。.NET Framework 使用分层命名方案,将类型分为相关功能的逻辑类别。
System是一个命名空间,Console是该命名空间中包含的类。如果使用 using关键字,则不必使用完整的名称,例如:using System;
Console.WriteLine("Hello");
Console.WriteLine("World!");异常处理异常处理异常处理就是C#为处理错误情况提供的一种机制。C#的异常处理所用到关键字包括:
try 用于检查发生的异常,并帮助发送任何可能的异常。
catch以控制权更大的方式处理错误,可以有多个catch子句。
finally无论是否引发了异常,finally的代码块都将被执行。
throw 用于引发异常,可引发预定义异常和自定义异常。C#与其他语言的关系C#与其他语言的关系C#作为Microsoft公司力推的服务器端脚本语言,从使用方法上来看是完全独立的,不需要其他脚本语言的支持,但从其产生的历史和作用来看,和他们又有着千丝万缕的联系,这里给出一些比较和分析
C#与C\C++语言的关系C#与C\C++语言的关系C语言是在70年代初问世的
C++是建立在C语言之上的
C#是微软开发的,专门编写.NET软件的语言
对比参见下表 C#与C\C++语言的关系C#与C\C++语言的关系C#与Java语言的关系C#与Java语言的关系此外,C#和java有着很多相似之处:
(1) 二者都编译成跨平台的、跨语言的代码,并且代码只能在一个受控制的环境中运行自动回收垃圾内存,并且消除了指针(在C#中可以使用指针,不过必须注明unsafe关键字);
(2) 二者都不需要头文件,所有的代码都被“包(package)”限制在某个范围内,并且因为没有头文件,所以消除了类定义的循环依赖;
(3) 所有的类都是从对象派生出来,并且必须使用New关键字分配内存;
(4) 都是用对象加锁的方式来支持多线程;
(5) 都具有接口(interface)的概念。C#与Java语言的关系C#与Java语言的关系C#与JavaScript的关系C#与JavaScript的关系JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言,它具有很多优点:
(1) 简单性
(2) 动态性
(3) 跨平台性
(4) 节省CGI的交互时间C#与JavaScript的关系C#与JavaScript的关系C#和JavaScirpt都可以嵌入到HTML页面中实现具体的功能,二者都是动态页面的脚本语言。但有很大的差别,体现在如下几个方面:
(1) 它们是两个公司开发的不同的两个产品
(2) JavaScript是基于对象的,而C#是面向对象的
(6) 代码编写位置不同
(4) 两种语言所采取的变量是不一样的
(5) 代码格式不一样
(3) 两种语言在其浏览器中所执行的方式不一样