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;就是区别下;

随机推荐

  1. cocos2d-x在NDK r9下的编译问题

    :69: error: format not a string literal andno format arguments [-Werror=format-security]cc1plus.exe: ...

  2. leetcode@ [199] Binary Tree Right Side View (DFS/BFS)

    https://leetcode.com/problems/binary-tree-right-side-view/ Given a binary tree, imagine yourself sta ...

  3. 基于Qt的P2P局域网聊天及文件传送软件设计

    基于Qt的P2P局域网聊天及文件传送软件设计 zouxy09@qq.com http://blog.csdn.net/zouxy09         这是我的<通信网络>的课程设计作业,之 ...

  4. hdoj 2084 数塔

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  5. [Objective-c 基础 - 3.1] 内存管理

    A.内存存放.retain.release 1.栈内存:存放局部变量,运行超过变量作用域自后编译器自动回收 2.堆内存:存放对象(地址,对象实体) 3.对象的基本结构 (1)引用计数器(4字节):当计 ...

  6. class-dump 复制到/usr/bin目录不可写,Operation not permitted 解决办法

    许多升级了OSX 10.11的朋友在配置class-dump的时候,会发现书上推荐的class-dump存放目录/usr/bin不再可写,如下所示: Operation not permitted 把 ...

  7. 转载有个小孩跟我说LINQ(重点讲述Linq中GroupBy的原理及用法)

    转载原出处: http://www.cnblogs.com/AaronYang/archive/2013/04/02/2994635.html 小孩LINQ系列导航:(一)(二)(三)(四)(五)(六 ...

  8. Codeforces 390Div2-754D. Fedor and coupons(贪心+优先队列)

    D. Fedor and coupons time limit per test 4 seconds memory limit per test 256 megabytes input standar ...

  9. 【WIN32进阶之路】:内存映射文件

    第一章:源起  遇到一个问题,如果一个客户数据文件有2g大,客户要通过界面查询文件中的数据并用列表控件显示数据,要怎么处理这个文件才能让应用程序不会长时间无响应,客户感觉不到程序的卡顿? 第二章:解决 ...

  10. error: variable '__this_module' has initializer but incomplete type错误解决

    版权所有,转载必须说明转自 http://my.csdn.net/weiqing1981127 原创作者:南京邮电大学  通信与信息系统专业 研二 魏清 问题描述:使用SAM9X25  内核版本是2. ...