C#基础
系统空间有以下:
System 定义为数据的使用类型及数据转换的基本类
System.Collectiong 定义队列、数组及字符串
System.Data 定义ADO.net数据库结构
System.Drawing 提供对基本图形的访问
System.IO 提供读写数据流文件
System.Net 提供对window网络访问
System.Net.Sockets 提供对sockets套接字的访问
System.runtime.remoting 提供对window分布式计算机平台的访问
System.Security 提供对clr(计算机公共运行时)的访问
System.Text 提供对ASCLL Unicode,utf-7 utf-8的编码访问
System.Threading 提供对多线程的访问
System.Times 在指定的时间内引发一个事件
System.Web WEB事件服务
System.window.forms 提供基于window的应用程序
System.XML 提供对XML的支持
变量、操作符和表达式
1:注释 //或\*…..*/
2:C#中保留关键字 但如果要用关键字作变量,可以在此关键字前加一个”@”符。以示区别
3:变量和常量
变量:定义一个变量叫声名,Sample: int x=10,y=20
常量:数据不变的量 const Sample: const a=10
常量格式如下:
常量修饰符 const 常量类型 常量名=常量表达式
常量修饰符有以下:
Public 表示类型或类的成员访问不受限制
Protected 表示只有当前项目或包含类的派生类型才能访问
Internal 表示只有当前项目才能访问该类
Private 表示只有该类型或成员包含类或派生类才能访问
数据类型分为:值类型和引用类型
.堆栈和堆的概念:
堆栈是不可变长度的内存地址,是先进先出的方式
堆是可变长度的内存地址.
值类型是相当于把数据直接放在堆栈中,而引用类型则是把虚拟值放堆栈中,而实际值放堆中.所以引用类型如果对它进行操作,可能会引响其它变量的引用类型.
隐式装箱与显式拆箱操作其实数据的转换就是一种装箱与拆箱操作的过程
S:
Int num=100
Object obj=num //隐式装箱操作,把值类型数据拷内一份,存于堆栈中
Int i=(int)obj //显示的抓箱操作
数据类型:基本的4种值类型数据类型有以下:整数类型、实数类型、字符类型、布尔类型
整数类型:
Byte 8位无符号整数 即:2^8次方 0-255
Sbyte 8位有符号整数 -127-128
Short 16位有符号整数 即2^16次方 -32768-32767
Ushort 16位无符号整数 0-65535
Int 32位有符号整数
Long 64位有符号整数
Ulong 64位无符号整数
浮点型 float 单精浮点型
Double 双精浮点型
Decimal 高精度浮点(货币)上用
字符型:string 字符串型
Char 单字符型
布尔型
Bool 可取true或false 不可取1或0
引用类型:(包含:引用类型,类类型,数组类型….)
如:int a=10
Object obj1;
Obj1=a;
Object obj2=’b’;。。。等这些都是引用类型
运算符和表达式
运算符分为一元运算符和二元运算符:
一元有:—取负 +取正 ++增量 –减量 + - * / %取余
字符串运算符:”+”表示字符串相加
逻符运算符:|| ! &&
关系运算符:>大于<小于 >= <= == !=返回bool值
条件运算符:唯一一个: S: a=(1>0)?5:3
复合运算符:+= -= *= /= &=
数据类型转换只有同数据类型才能运算,所以存在一个数据类型转换的问题
隐式转换:隐式转换:即从A可以在所有情况下转到B 语法为:x=b
显示转换:复杂转换,只有特定的A才能转到B 语法为:x=(short)b
第三章:方法
C#中方法语法如下:
返回类型 方法名(参数列表){
//。。。。。。。。。。。。。。
}
返回类型:一个类型名,指定方法返回的信息类型,如int 或string
如果要写一个不返回值的方法,那么必须用关键字void来取代返回类型
示例一:
Static int add (int x, int y)
{
Return x*y;
//添加功能代码,并有值返回
}
示例二:
Static Void add( int x)
{
没有值返回,就一定要用void
}
方法的调用:如: add(5)或上题: add(3,5)
默认情况下:在方法中的值为局部变量,而如果用ref关键字就成为了全局变量
示例:
Static void swap(ref int i){ …………注:这里为实参,并为ref
I++;
}
Static void main(string[] args){
Int j=10;
Swap(ref j); …………………..注:这里也要用实参,并加上ref
Console.writeline(j);
}
Out关键字为不用初始化,可以方法内付值,这是与ref的不同之处,
Static void swap(out int i){
I=10;
……………代码 //看,I在方法内部付值,这样也正确,但只有在用out关键字时才有效
}
提要:
Ref和out是函数形式参数的修饰符,它们的作用都是表示它们所修饰的形式参数是按照引用传递的,它们的区别在于当使用REF修饰符时要求在传递参数前对被传递的参数初始化,而OUT则不需要。可以直接在方法内部进行初始化
运用作用域:
变量的作用域是指能够使用该变量的区域,从它定义开始.
方法的重载:
如果有两个同名的方法,都接收同名的实参,系统就会认为方法的重载,但系统不会通过只是返回数据类型有区别的方法重载。
结构化程序设计
单赋值语句:n=10;
复合赋值语句:x/=10;
连续赋值语句:X=Y=Z=10;
控制台的输入输出方法:console.readline console.read console.write console.writeline
If(….){
…………
}
Else
{
……..
}
或
If(….){
………..
}else if(….){
………
}else{
…………
}
Switch(…){
Case ………..:
…………..
Break;
Case ………..:
…………..
Break;
Default:
…………..
Break;
}
For(int x=5;x<=10;x++){
….}
While(….){
….
}
Do{
………..
}while(….);注:这里必后接一个分号
Foreach (int I in arr){
……
}
循环中断语句:
Goto语句 break语句 continue 语句 return 语句
预处理指令
#define 符号
#if 符号
…..
#elif 符号
#else 符号
#endif 符号
#undef 符号(取消符号)
枚举与结构
C#支持两种值类型,枚举和结构,在C#中,结构类型可以声明构造函数,常数,字段,方法,属性,索引,操作符和嵌套类型,与类十分相似,结构和类的主要区别就是结构是一种值类型,而类是一个引用类型,值类型存入堆栈,而引用类型存入堆.
枚举:
枚举定义:enum ck:int(这个INT可以不写,默认为INT){sprint=1,summer=2;fall=3;win=4}
Enum ck{sp,su,fa,win}即0,1,2,3
Enum ck:short{sp,su,fa,win} //但只可以取整型变量short ushort int uint…..
调用方法:ck fir=ck.su 声明CK类型的FIR变量
注:枚举要定义在类以外,放类以内会报错
结构的定义
Struct 结构名称
{
<访问修饰符> 类型 名称;
如:public int ck1,ck2,ck3,ck4;
}
结构的调用:
数组的定义
Int [] arr;
数组的赋值:int[] arr={1,2,3,4,5}
Int[]arr=new int[6];
或int[]arr=new int[6]{1,3,4,5,2,2}//这样赋值必须与元素的个数相同,否则为错误
读数组: int x; x=arr[1] 改写数组:x=10;arr[1]=x;
二维数组的声明: int[,] x=new int[2,2]{{1,2},{2,2}}
多维数组的声明: int[,,]x=new int[3,3,3]{{1,2,3},{3,2,3},{2,5,3}}
集合arraylist类
集合与数组有差别,数组长度无法改变.集合比较灵活
注:集合用到system.collections
集合的声明: arraylist ck=new arraylist(10);创一个长度为10的集合对象
Arraylist.add(1) //在未尾插入一个数字
Arraylist.remove(4);//移除值为4的第一个元素
Arraylist.insert(5,6);//在索引为5的地方插入6
Arraylist.removeat(2) //移除索引为2的值
Arraylist属性
Capacity 获取或设置arraylist可包含的无素数
Count 获取arraylist中实际包含的元素数
Isfixedsize 获得一个值,指示是否有固定大小
Isreadonly 获取一个值,指示是否为只读
Issynchronized 获取一个值,指示是否同步访问
Item 获取或指定索引处的元素
Syncroot 获取可同步访问的对象
集合Queue类(这是一个先进先出的堆)
定义:queue ck=new queue();
Ck.enqueue(5)//向队列中添加5
Ck.dequeue() 从队列中移除 新进入的元素
Ck.peek()返回队列的第一个元素
类的定义
[属性] [访问修饰符] class 类名{
字段,属性,方法
}
类要先定义,再声明,再实例化
声明方法: 类名 对象名 S: rank ck 也可以: s=new 类名();
类的修饰符:
(修饰符=访问控制符) 有4个:
Public 表程序的 高访问权限(表在程序任何位置都可访问)
Private 表程序的 低级别访问,只能在类的内部访问
Protected 是介于public 跟private之间的访问级别(暂不重要)
Internal,只有在同一个程序集的文件中,内部类型或成员才能访问
定义类的属性
Public string id{
Get{ //读属性时要执行的操作
Return id;
}
Set { //写属性时要执行的操作
Id=value;
}
}
构造函数
Class ck{
Public int ck(int a,int b) //这个叫构造函数,是一种特殊的方法,函数名必须同于类名
}
Vs2005中的常用类和数据处理
Convert类(将一个值类型转为另一个值类型)
Console.writeline(“输出数据类型为:{0}”,convert.toint64(x));
String类
注:由于string类是unicode字符串,即每个英文字母占两个字节,所以每个汉字也占用两个字节.
字符串的表示格式:
{n[,m][:格式码]} n表示从0开始的整数,表示第几个参数 (string.format(“为:{0,10:f4}”,n)
M,可选整数,表示 小长度默认为0.
格式码:
C或c 货币 表示货币
D或d 十进制 只有整型才支持此格式
E 或e 科学计数法
F 或f 固定点。指小数点
G或g 自动转为 紧凑形式
String.compare(“ck1”,”ck2”) //对ck1跟ck2进行比较 -1为str1<str2
0 为str1=str2
1 为str1>str2
Indexof(“ck”)查找首次出现的位置
Lastindexof(“ck”)未次出现的位置
Insert(3,”ck”)插入指定的位置
Remove(3,”ck”)删除指定的位置
Replace(“old”,”new”) 替换新字符 toupper()转为大写 tolower()转为小写
Math.asb 绝对值
Math.asin
Math.acos
Math.atan
Math.cos
Math.exp
Math.floor 返回小于或=指定数字的 大整数
Math.log
Math.log10
Math.max
Math.min
Math.pow
Math.sign
Math.sin
Math.sqrt
Math..tan
Math.round
Datetime
Datetime ck=new datetime()
Ck.date 日期部份
Ck.day 该月中的第N天
Ck.hour 小时
Ck.millisecond 毫秒
Ck.minute 分钟
Ck.month 月份
Ck.now 计算机上本地时间
Ck.second 秒
Ck.today 当前日期
Ck.year 年部份
Ticks 日期刻度
Timespan类表示一个时间间隔
OOP对象的封装。继承、多态
封装是指将代码隐藏技术,如存取方法,属性封装
两种继承的方法:类继承和接口
类继承只有一个基类.
Class 派生类:基类
Sealed class ck 是指把ck类密封
多态性:
New方法介绍
当基类与派生类中的方法冲突时,可用new关键字来屏蔽基类中的同名方法。
当基类中的方法允许重写时可用virsual定义
定义后派生类中可用override覆盖基类中方法
抽象类:
Public abstract class ck{
Public ck(){ //构造函数
}
Public ck2(){ //新的方法
}
}
接口:面象对象的两上继承方法为类继承和接口
类继承要实例化,对象只能派生一个基类.不可以一个派生类既继承这个基类又继承那个基类
接口可以被派生类继承多个,也不要实例化.所以权限为public
Interface ck{
….接口成员,方法,属性,事件。。。。。
}
Class m:ck
{
}
接口不允许嵌套
总结:
类可以嵌套,默认类的权限是private,也就是说只有本类内的方法可以互样访问,不可跨类方法访问
首先是类,类以下是方法,属性,常量,变量,枚举。
所有对象都有一个权限修饰符。如果父对象允许全局访问,而子对象不允许,那这个子对象就不允许全局访问.
所以就可以用ref跟out来修饰子对象为一个全局对象
枚举,只有方法就可以用static,枚举不必要用static 就可以调用,只要权限正确
类中不可以嵌套结构,结构无需用static字段,因为是值对象。而不是引用对象.他是生明,而不是引用
结构里面也不可以嵌套类。结构跟类是同一级别
多允许调到方法,而不允许调方法里面的属性。
本文关键字:|C#开发 鼎誉网站开发规范 网站开发学问 如何学习网站开发| |