C#知识
程序设计的概述:
软件包括两个方面:程序、文档;编程语言就是一种用专门的语言来编写计算机程序,C#、C++、Java等;编程语言的发展:机器-汇编-高级。
什么是C#:
它是一门编程语言,C#语言从C/C++、java等语言演变过来,是一门现代、简单、完全面对对象的编程语言;功能强大能适用于绝大多数系统开发,并能提供超越其他编程语言的开发效率。
关于.Net的理解:
Microsoft.Net为我们提供了一种崭新的因特网和软件开发环境,软件成为一种服务,任何终端设备和平台都融为一体并具有相似的人机交互界面。建立在CLR和.NET类库基础上的.NET框架是.NET平台的核心组件之一。
C#程序的基本结构:
导入命名空间( using… )
定义命名空间(namespace…{ })
定义类(class…{ })
主方法(static void Main() { })
C#标识符规则:
以字母,下划线开头,其后可接字母,下划线,数字;关键字也可作标识符,但必须在关键字前加@符号;C#中严格区分大小写(age 和Age是两个不同的标识符)
C#程序基本结构(命名空间、类、方法,块等)及组成元素(语句、标识符、白空间、注释,标点符号等)
输出中的转义字符: \n:换行;\t :空格
计算机内存是一系列存放数值的容器。
C#能使用三种内存:堆栈 stack、托管堆 managed heap、非托管堆 unmanaged heap
C#中变量的数据类型:
C#语言的类型分为值类型和引用类型两类;
值类型变量存储在堆栈中,引用类型变量存储在托管堆中.
值类型里面的:简单类型、枚举类型(enum)、结构类型(structs)
引用类型里面的:类类型、数组类型、接口类型(interface)、委托类型(delegate)
C#语法基础:
常量:
符号常量也必须先定义再使用,语法:const 数据类型 常量名 = 常量值;
运算符类型:
算数运算符:单目+、- 双目:+、-、*、/、%。
自运算符:++、--(前缀是先自运算再使用,后缀是先使用再进行自运算)
关系运算符:>、<、>=、<=、==、!=
赋值运算符:=、+=、-=、*=、/=、%=。
逻辑运算符:单目(逻辑非!)双目(逻辑与&&、逻辑或||)
条件运算符:b?x:y,也称三元运算符,是唯一的一个三元运算符,它需要3个操作数,语法格式:<关系表达式1>?<表达式2>:<表达式3 >
*:C#中的一般运算符:逻辑运算符、条件运算符等
数据类型转换:
隐式转换:一般是低类型向高类型转化,(除几个特殊的到浮点型的转换可能会损失精度外,但能保证数据不会丢失)能够保证值不发生变化 ,比较安全.
显示转换:显示转换可能会出错,一般为溢出;保证转换成功的原则是:高类型数据的值必须在低类型数据值的最大范围内。否则会出现异常.
强制转换的几种方法:
使用Convert类下的函数
使用各类型下的Parse函数,将字符串转为任意类型
使用各类型下的ToString函数,将任意类型转为字符串
也可直接在变量前加小括号,指定目标类型进行转换,
语句是程序完成一次完整操作的基本单位。C#的语句:
空语句,只有一个分号、声明语句:声明变量或常量
表达式语句,由一个表达式构成
方法调用语句
标记语句
流程控制语句
特殊语句(using , lock等)
程序的三种结构:顺序结构、选择结构、循环结构。
顺序结构:按照书写顺序,自上而下,依次执行。
选择结构:根据判断的不同结论去执行不同的后续步骤。
If语句简单形式:if
If语句标准形式:if(){}else{}
If语句else if形式:if(){}else if(){}else{}
switch(表达式)
{
case 常量表达式1:------注意符号
要执行的语句1.
break;
case 常量表达式2:
要执行的语句2.
break;
default:
要执行的语句3.
break;
}
.( case后的值必须是常量表达式,不允许使用变量、任何两个case 的值不能相同.)
循环结构:所谓循环就是重复执行一些语句
C#中的四种循环语句:
while(条件) //这个条件也为布尔表达式
{
循环体语句;
}
先判断,再循环
do
{
循环体语句;
}while(测试条件); 先执行循环语句,再判断
do-while与while的区别: do-while它是先执行循环中的语句,然后再判断条件是否为真,如果为真则继续循环,如果为假则终止循环。因此对于do-while语句来说至少要执行一次循环语句。而while语句是先判断条件是否为真,为真则执行循环语句,若不为真,则终止循环。因此对于while语句来说可能一次也不会执行循环体语句。
For:
for(循环变量初值;循环终止条件;循环变量增值) {循环体语句}
foreach
一维数组初始化:
二维数组初始化:
类与对象:
面向对象程序设计的基本概念:
面向对象的程序设计(OOP)的主要思想是将数据及处理这些数据的操作都封装到一个称为类(class)的数据结构中。使用这个类时,只需要定义一个类的变量即可,这个变量叫做对象(Object)。通过调用对象的成员完成对类的使用。
在面向对象理论中,类(class)就是对具有相同特征的一类事物所做的抽象(或者说,归纳)。
对类和对象关系的理解:
类:一组具有相同数据结构和相同操作的对象的集合. 要使用对象,必须先定义类,然后再创建对象。
类的创建:
类是由方法成员,数据成员(变量、常量)等组成。
方法的责任是用来实现类的行为,字段存储类的状态,
面对对象编程有哪些技术:属性、方法、构造函数、继承、接口、重载、多态、委托·、事件。
类的成员访问修饰符:
1.public : 表示任何类都可以不受限制的访问此成员.
2.private:表示类或方法只对本类里面的方法可见。
3.protected:本类可以访问和继承自本类的子类可以访问.
4.internal: 类或方法在程序集内部可见,对于使用程序集合外部类不可见也就是在同一个.NET集合或库中所有类型匀可访问,在同一个命名空间中可以访问.
5.protected internal:同一个.NET集合或继承此类的子类可以访问.
作用:控制外部对类成员的访问,以达到数据隐藏的目的.
通过类名访问类的静态成员,静态成员属于类拥有,实例成员属于类的对象而不属于类。
类是有数据成员和函数成员组成,他们分别是类的属性和方法
字段和局部变量:
字段: 指声明为类一级的对象或值类型的变量。可以理解为常说的全局变量
局部变量: 指在方法、事件以及构造函数内声明的变量。
相对于简单数据类型,类就是用户自己定义的复杂的抽象数据类型:而相对于简单变量,对象就是复杂的既包括数据又包括方法代码的复杂数据单位。
面对对象编程三大主要特征:
封装——隐藏调用者不需要了解的信息。
继承——简化类的设计。
多态——为名称相同的方法提供不同实现方式的能力。
只有get是只读属性,只有set是只写属性。
函数的定义:
class 类名
{
//静态方法
[方法修饰符] static 返回值类型 方法名(参数列表) //方法头
{
……//方法体
}
//非静态(实例方法)
[方法修饰符] 返回值类型 方法名(参数列表) //方法头
{
……//方法体
}
}
对象的生命周期:
每个对象都有一个明确定义的生命周期,这个生命周期有三个阶段:
1、构造阶段:由构造函数完成,对对象最初进行实例化
2、正常使用
3析构阶段:C#中由析构函数完成:对象使用完后,进行一些清理工作,如释放内存
什么是构造函数:
构造函数是个特别的方法。用来初始化类的对象(包括对象存储的数据)。构造函数必须与类的名字相同,构造函数没有返回值,不能使用void关键字,构造函数由编译器调用,你的代码不能显式调用构造函数。
C#语言中:把对象的初始化工作放在构造函数中,把清除工作放在析构函数中。当对象被创建时,构造函数被自动执行。当对象消亡时,析构函数被自动执行。
实现继承-定义派生类:
[访问修饰符] class 派生类名称:基类名称
{
//程序代码
}
c#仅支持类单继承:一个类只能有一 个父类(基类)
字符串处理:
Char在C#中表示一个Unicode 字符,正是这些字符构成了字符串
转义字符:
\n 换行 \t 横向跳到下个制表位置,跳格
\v 竖向跳格 \b 退格
\r 回车 \f 换页
\\ 反斜杠 \’ 单引号
String和string的区别:
String类型表示一个Unicode字符的字符串。
string是.NET Framework中 System.String的别名。
实质:String是类名,string是别名
字符串处理:
(1)字符串的连接
要么使用“concat”方法,或者使用“+”号操作符。
(2)大小写转换
将字符串转换成大写: ToUpper()
将字符串转换成小写: ToLower()
(3)字符串的查找
字符串是不是以指定的字符串结尾:EndsWith()
字符串里面有没有我们指定的字符串:IndexOf()
如果找到就会返会字符串的索引号。
如果没找到就返回-1.
(4)比较字符串
Equals()
Compare()
CompareTo()
(5)复制字符串
Copy()
CopyTo()
(6)截取字符串Substring()
你也可以直接使用索引取出字符串中的某一个字符
Console.WriteLine(str1[3]);
//取出字符串中的第四个字符。
(7) 格式化字符串:Format()
原型:public static string Format(string format,object obj)
(8)分隔字符串: Split()
原型:public string[] Split(params char[] separator)
(9)插入和填充字符串
插入:Insert()
填充:PadLetf()/PadRight()
(10)删除字符串:Remove()
(11)替换字符串: Replace()
原型:
(12)删除字符串左右空格:Trim()
(13)字符串长度:Length属性
可变字符串——StringBuilder
StringBuilder类有6种不同的构造方法。
StringBuilder类存在于System.Text命名空间中,常用的操作字符串的方法。
Append()、Insert()、Remove()、Replace()
StringBuilder类与String类的区别:
String对象是不可变的,需要修改时会重新创建对象,分配空间,系统开销较大
StringBuilder则不一样,如只需对字符串做重复修改而不用创建新对象时, StringBuilder类可以提升性能