C#总结1
C#摘要
第一章:
数据类型:
在定义变量的时候,记下规则,开头不能是数字,变量名只能包括 字母 “_” 数字
|
整型类型 |
CTS类型 |
说明 |
范围 |
||||||||||||
|
sbyte |
System.SByte |
8位有符号的整数 |
-128到127(-27到27-1) |
||||||||||||
|
short |
System.Int16 |
16位有符号的整数 |
-32768到32767(-215到215-1) |
||||||||||||
|
int |
System.Int32 |
32位有符号的整数 |
-2147483648到2147483647(-231到231-1) |
||||||||||||
|
long |
System.Int64 |
64位有符号的整数 |
-9223372036854775808到9223372036854775807(-263到263-1) |
||||||||||||
|
byte |
System.Byte |
8位无符号的整数 |
0到255(0到28-1) |
||||||||||||
|
ushort |
System.Uint16 |
16位无符号的整数 |
0到65535(0到216-1) |
||||||||||||
|
uint |
System.Uint32 |
32位无符号的整数 |
0到4294967295(0到232-1) |
||||||||||||
|
ulong |
System.Uint64 |
64位无符号的整数 |
0到18446744073709551615(0到264-1) |
||||||||||||
|
浮点类型 |
CTS类型 |
说明 |
位数 |
范围 |
|||||||||||
|
float |
System.Single |
32位单精度浮点数 |
7 |
±1.5×10-45到±3.4×1038 |
|||||||||||
|
double |
System.Double |
64位双精度浮点数 |
15/16 |
±5.0×10-324到±1.7×10308 |
|||||||||||
|
decimal类型 |
CTS类型 |
说明 |
位数 |
范围 |
|||||||||||
|
decimal |
System.Decimal |
128位高精度十进制数表示法 |
28 |
±1.0×10-28到±7.9×1028 |
|||||||||||
|
bool类型 |
CTS类型 |
值 |
|||||||||||||
|
bool |
System.Boolean |
true或false |
|||||||||||||
|
char类型 |
CTS类型 |
值 |
|||||||||||||
|
char |
System.Char |
表示一个16位的(unicode)字符 |
|||||||||||||
C#里面也有结构类型:可以定义数据类型和方法:
struct Person
{
Public char[10] name;
Public int age;
Public output()
{
Console.WriteLine(“{0},{1}”,name,age);
}
}
枚举类型:
enum Weekday
{
Monday,Tuesday,Wednesday,Thursday,Friday
}
怎么使用:
Weekday wd1=Weekday.Monday;
Weekday wd2=Weekday.Tuesday;
输出wd1的值就是Monday;
Wd2的值就Tuesday
关于类就是可以理解为特殊的结构类型:类的操作后面再说
数组类型:
C#的数组定义和C++不一样:
一维数组定义:int[] shuzu=new int[10];数组空间大小在后面体现;
二维数组定义:int[,] shuzu=new int[2,2];2*2数组
对于数组的初始化:
Int [] shuzu=new int[]{1,2,3};
Int[,] shuzu=new int[2,2]{{1,2},{1,2}};
可以通过shuzu.lenght这个方法来输出数组的长度
对于类型间的转换:隐式和显示:
例:int a=100;
Long b=(long)a;//显式
Float c=a//隐式
对于操作符的认识:几种语言都是一样的:
+ 加-减 *乘 /除%求余 ==等于 =赋值
注意点:
B=--a//a先减再赋值
B=a--//a先赋值再减
++同上
对于“?:”这个三元操作符;
(a)?b:c//a取真就得b,取假就得c
控制语句:
If() .......else..
If().....else if().....else if().......
Switch语句:
Switch()
{
Case case1:
Break;
Case case2:
Break;
Case case3:
Break;
Default :
Break;
}
循环语句:
For while do...while
对于for语句都很熟悉
For(int i=0;i<10;i++)这里强调的是它判断了11次不是10次
对于while 和do...while的区别据是do....while要比while多执行一次
在C#里多了一个foreach语句;
用法:int []shuzu=new int[10]{1,2,3,4,5,6,7,8,9,10};
Foreach(int i in shuzu)
{
Console.WriteLine(“{0}”,i);
}//循环取出集合中的值
对于跳转语句:
Continue break goto return
break,continue
这两个玩意,太风骚了,都是跳出,但管的范围不一样;
break常用在switch中,就是直接跳出,哥们我不干了,爱咋咋地,说的就是他;
continue常用在for或while循环中,他没break有骨气,只是偶尔的罢工,然后还得回来继续干活,他只是跳出本次循环
break在switch中的应用就不解释了,在for里看看:
for(int=0;i<100;i++)
{
if(i==10){
printf("%d",i);//执行到i=10的时候,因为break这货要罢工,这个循环就停了,只循环了10下就完了
break;}
}
再来看看continue
{
for(int i=0;i<100;i++)
{
if(i==10)
{
continue; //在这当i=10 continue罢工了一次,后面的printf语句不执行了,但是for会从i=11继续循环
}
printf("%d",i);
}
}
对于goto就是无节操的乱跳,想跳哪跳哪
例:A:
Goto A;
至于return这个就是直接结束这个函数的执行
第二章:
这章主要是讲类的结构:
类的成员:成员的类型,可以是第一章讲个各种类型;
当然也可以是类;
对于成员的访问权限:四类: private,public,protected ,internal;
对于internal 在定义类的时候,如果没有标注权限,默认就是internal;
对于类,记住两句话:成员属性是对类特征的描述,成员方法是对类行为的描述;
对于类里面的静态成员和非静态成员:注意对他们的
例:class Student
{
Public static int a=1;
Public int b;
Public static void print()
{
}
Public void print1()
{
}
}
对于静态的调用就是
Student.print();
Student.a=2;//这个就是把类本身的a的值给换了
而对于非静态的调用就是先new对象
Student stu=new Student();
Stu.print1();
Stu.b=2;
记住这个字段,在考题里会问,怎么定义常量字段,在C#里有一个const,这个字段相当于C/C++里的 #define;
还有一个readonly顾名思义就是只读不能改;
对于方法有几点要注意:
方法参数:值传递和引用传递。重点记忆;
值传递都知道,下面看看C#里的引用传递:
例:
Void swap(ref int a,ref int b)
{
Int c=a;
A=b;
B=c;
}
在main函数调用:
Main()
{
Int a=2,b=3;
Swap(ref a,ref b);
}
上面的例子要好好看看,考试重点;
对于数组做参数:C#规定 方法里只能有一个数组做参数,必须写在最后一个参数上,还必须是一维的,不能同时作为引用参数或输出参数;
对于方法的重载:
1.不能根据返回值来使用重载//注意这个
2.根据参数类型使用重载
3.根据参数个数使用重载;
构造函数和析构函数:
构造函数是在创建对象时就被调用,不能有返回值;
析构函数是在创建对象后调用的,目的是打扫后事;
课本上还有个静态构造函数,这个没用过,但也讲讲,它一生就被用一次,也就是首次使用这个类的时候,第一个创建对象的时候被使用,再对类创建对象的时候就不被调用了;
Class Student
{
//构造函数
Public Student(){
Console.WriteLine(“开始”);
}
//静态构造函数
Public static Student(){
Console.WriteLine(“我的第一次”);
}
//析构函数
~Student(){
Console.WriteLine(“结束”);
}
}
Student stu1=new Student();
//输出:开始
我的第一次
结束
Student stu2=new Student();
//输出:开始
结束
对于类的属性:属性要被封装才可靠;
用get set来索引;
封装的好处就是,对技术细节进行隐藏//这点要记住
对于操作符的重载:
可以看看书P65的例子,可以看下;
对于this,就是代指本对象,没别的意思;
当在继承父类时,调用父类属性时用base;就是区别下;
随机推荐
- js基础第二天
函数:是由事件驱动的或者当它被调用时执行的可以重复使用的代码块. 函数声明: 1. 自定义函数(常用) var num=10; function fun() { alert("我是自定义函数 ...
- Log Explorer使用说明
一.介绍 Log Explorer主要用于对MSSQLServer的事物分析和数据恢复.你可以浏览日志.导出数据.恢复被修改或者删除的数据(包括执行过update,delete,drop和trunca ...
- 进程隐藏与进程保护(SSDT Hook 实现)(一)
读了这篇文章终于明白大致怎么回事了 文章目录: 1. 引子 – Hook 技术: 2. SSDT 简介: 3. 应用层调用 Win32 API 的完整执行流程: 4 ...
- DOS命令关闭进程
1.开始-运行,输入cmd后回车; 2.在DOS提示符下,先用命令 tasklist 回车来获取进程的 PID(例如获取了Explorer.EXE进程的PID为1988); 3.然后再输入命令:tas ...
- 教程-Supports判断接口(Instance)是否支持
function TCommandEnabledController.GetCommandVisible(const ACommandName: string): Boolean; var I: In ...
- AVR ATMEGA8 串口USART
avr串口配置很简单,配置就几个寄存器就可以进收发: 但有几点要搞明白的是: 1.串口一但被配置成功IO功能自动被占用,这点与LPC或STM8/32不同(需要寄存配置): 2.没有专门的串口开起或闭关 ...
- 只允许input框输入数字,输入其他的键的时候,直接不显示的方法
function numInteger(){ if((event.keyCode>=48 && event.keyCode<=57) || (event.keyCode& ...
- $().each 和 $.each() 两个方法的区别
在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...
- gulp 基础运用
全局安装gulp $npm install --global gulp 作为项目的开发依赖安装 //--save-dev 开发依赖,储存在package.json的devDependencies中,如 ...
- 如何创建一个有System用户权限的命令行
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何创建一个有System用户权限的命令行.