C#编程基础笔记

API 应用程序接口 类库

C++直接运行在操作系统上(OS相关)

 

Microsoft提供了CLR的几个版本:

桌面/服务器版本:在Microsoft Windows32位(x86)和64位(x64/IA64  )版本上运行。 Silverlight版本:它是用和.NET Framework CLR 的桌面/服务器版一样的源代码库来生成的。

.NET Framework 有一个“简化”版本(称为.NET Compact Framework):它适合 Windows

手机和运行Windows CE 操作系统的其他设备。

 

本地代码编译器:生成面向特定CPU架构的(X86X64/IA64)代码

CLR的执行模型

1、源代码编译成托管模块

CLR编译器:生成IL(中间语言)代码,IL代码也称托管代码

 

元数据总是嵌入和代码相同的exe/dll文件中,这使两者密不可分

 

2、托管模块合并成程序集:

CLR其实不是和模块一块工作的,它是和程序集一块工作的。程序集是一个或多个模块/资源文件的逻辑分组,并且程序集是重用、安全性以及版本控制的最小单元。即托管模块或资源文件等通过C#编译器(CSC.exe)、程序集连接器(AL.exe)执行后生成程序集

 

检查.NET Framework是否安装,查看C:\Windows\System32下的mscoree.dll文件

检查.NET Framework安装的所有版本:进入注册表编辑器(运行regedit)  KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

 

3、加载公共语言运行时

设置生成运行程序的平台:右键解决方案资源管理器中的解决方案→生成→目标平台

Any cpuVS2010dll文件默认) 所有window平台都可运行,X86VS2010exe文件默认) windows 32位系统,x64 64位应用程序运行(x64 windows 64),Itanium 64位应用程序运行(IA64 Windows)

Windows 检查exe文件头,决定创建进程的版本(3264),然后,进程的主线程调用MSCorEE.dll中定义的一个方法(初始化CLR,加载EXE程序集),然后调用入口(Main)方法,随即,托管的应用程序将启动并运行。

 

4、执行程序集的代码

 

 

 

 

CLR的核心功能:内存管理、程序集加载、安全性、异常处理、线程同步,可由面向CLR的所有语言使用

C#.NET的区别

C#是一种编程语言,可以开发基于.NET Platform的应用程序,.NETDot Net)是指.NET Frame Work框架,是微软开发的一种多语言开发的集成Platform,是一种技术。

 

C#的由来

一种说法,Sharp有一种锋利的意思,可以直透别人的心脏。微软希望他可以直透其他语言的心脏。另一种说法,在C#之前最好的编程语言是C++C#即是C++++的意思。

Java即是一种技术又是一门语言。

 

.NET能开发的程序包括:

桌面程序:WinFrom应用程序

Internet应用程序(网站): ASP.NET/WebService

手机开发:wp7

 

三层框架:

界面

业务逻辑层

数据访问层

 

两种模式(两种架构)

C/S:客户机(Client/服务器模式(Server)

B/S:浏览器(Browser/服务器模式(Server)

 

IDEIntegrated Development):

Visual Studio

 

 

MSDN 的全称是 Microsoft Developer Network。这是微软公司面向软件开发者的一种信息服务。MSDN 实际上是一个以 Visual Studio 和 Windows 平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室微软产品下载(几乎全部的操作系统、服务器程序、应用程序和开发程序的正式版和测试版,还包括各种驱动程序开发包和软件开发包)、Blog、BBS、MSDN WebCast、与 CMP 合作的 MSDN 杂志等等一系列服务。

 

Visual Studio 中的项目与解决方案资源管理器

解决方案资源管理器可以包含多个项目,适用于管理项目的,项目可以包含多个文件,文件中是我们写的程序;在文件中包含命名空间,命名空间中包含类,类中包含方法.

 

重置开发环境:工具—导入导出—重置所有设置—不保存—选择语言—确定

窗口关闭,从视图中找

 

Main方法是我们程序的入口方法,当我们执行程序时,首先找到main方法,从Main的第一句程序开始执行,当main方法执行完成后(即执行到main方法的反大括号),程序就结束了。

 

.csproj项目文件

.sln 解决方案的文件,里面记录着所有项目的信息

 

C#中的注释

单行注释:以//开始,之后的都为注释

多行注释:以/*开始,以*/结束,都为注释

文档注释:用于对类和方法吃的注释,在类或方法的前面加上///,进行注释

 

计算机中的快捷键

Home:定位到行首      End:定位当行末

PgUp:定位到上一页    PgDn:定位到页末

Ctrl+Home:定位到页首   Ctrl+End:定位到页末

Shift:按住shift键时,光标经过的地方都会被选中

对话框的复制:使对画框处于当前窗体,Ctrl+C,即可复制

 

#region#endregion 折叠一段代码

 

聪明的程序员都会delphi

安德斯•海尔斯伯格(Anders HejlsbergDelphi.NET之父

 

变量

变量代表着一块内存空间,我们可以通过变量名向内存存取数据,有变量就不需要我们记忆复杂的内存地址

Int number; 申请空间

Number=123; 赋值

 

C#中的数据类型:声明变量

 

值类型:不可空数据类型(定义后不管他的内容是否有有效的含义,内存都已经分配了,因此不可空。) string str1 = null;

引用类型:可控数据类型  int?  i1 = null;

注意:在C#编译环境中带小说点的数字编译为double类型,decimal类型的要加上m/M

值类型变量作为类的全局变量会有默认值,作为局部变量,必须手动赋值

 

变量声明的三种方法:

1、 先声明,再赋值

2、 声明时直接赋值

3、 逗号分隔声明多个同类型的变量

变量的使用:

1、 先声明

2、 再赋值

3、 再使用(取值或者调用变量)

 

变量的命名规定:(C#是支持多国语言的:字母可以是任何一种语言)

1、 必须以“字母” _@开头

2、 后面可跟字母数字下划线

注意:不能和关键字相同,C#中大小写敏感,C#中不能定义重复的变量

 

定长buffer

主要用在托管代码和非托管代码互操作上

 

C#编码规则——Camel命名法(骆驼命名法):

首个单词的首字母小写,其余单词的首字母大写

Pascal 命名规范:每一个单词第一个字母都大写,如果使用英文单词的缩写,全部用大写!

 

占位符:在输出语句中,第一个变量 可以使用占位符,占位符由大括号组成,数字由0开始编号{0}  {1}

 

数据类型的使用(电话号码要用string类型,电话号码不会参与数值运算,只可能参与字符的匹配)

 

转义字符\

\n 换行 \b 退格  \t 用于(对齐)空格 \\  \

 

数据类型的自动转换(隐式转换)

1、数据类型兼容

2、小范围的数据类型,转换为大范围的数据类型 如 int  double

 

强制类型转换

Int PI=int3.14;   数据类型必须兼容

ToInt32 转换为int类型

ToInt64 转换为long类型(长整形)

Convert.ToInt32(3.14);  Convert不仅仅是内存级别的转换,而是加工意义的转换,数据类型可以不兼容

3.14.ToString();

 

C#中一元运算优于二元运算

 

符合运算符:

+= -=*=/=%=

关系运算符(运算结果为booltrue or false)

><=>=<=!===

逻辑运算符

&& ||!

逻辑与 逻辑或的短路

当逻辑与左边的为假的时候,右边的不执行;当逻辑或左边的为真时,右边的不执行。

 

 

 

 

 

 

 

 

 

 

程序中的结构

分支结构

if(true)

{}

else if()

{}

 

开关Switch(表达式\变量) { case: break;default:break;}

 

Switch case 只能用于判断确定的值;  if else 用于判断范围的数据

 

循环Whiletrue{}

do{}  while(true);

注:大扩号在语句的结束可以不加分号,小括号在语句的结束必须加括号

Ctrl+K+F 自动排版

 

 

调试 选中变量→右键→快速监视

选中变量 Ctrl+Alt+Q

 

for循环:用于已知循环次数的循环

for(变量; 变量 逻辑运算符 已知值; 自增或自减)

{循环体;}

执行过程:1、计算表达式1;计算表达式2(循环条件),如果表达式为true,执行循环体,执行表达式3;否则循环结束;

 

break:跳出当前所在的循环

continue:退出本次循环

 

三目运算符

Booltruefalse

第一个表达式为真,执行第二个表达式,否则执行第三个表达式(表达式二和表达式三的类型一定要相同或兼容)

 

goto语句

Label

goto label

 

枚举

enum Gender {,,未定义}

枚举的定义一般和类定义在同一级别

枚举实质是一个继承自System.Enumsealed类,枚举中的枚举项是一个valuetype类型的常量可通过IL看到(Literal类型)。

如果第一个枚举项(变量)赋了值,则后面一次递增加1

枚举的作用:1、限制用户不能随意赋值,只能用定义枚举时定义的值;2、 不需要死记每一个值,只需要选择相应的值

枚举中的枚举项可以转换为int(int)sex

字符串转换为枚举

sex = (Gender)(Enum.Parse(typeof(Gender), input)); //类似于反射语法

Enum.IsDefined(typeof(BuyType),2);//判断枚举项在枚举中是否存在

Enum.IsDefined(typeof(BuyType),”男”);//判断枚举项在枚举中是否存在

 

结构:

用于定义多个人(物)的多个信息(变量)时

[访问修饰符] struct  structName{变量,方法}

 

计算机中的用的最多的255,即28次方减一,十六进制是FF

 

数组

可以帮我们声明多个同类型的变量,这些变量在内存中是连续存储的

声明数组:  数组类型[] 数组名=new 数组类型[数组长度] {数组的值,数组的值…};

数组下标赋值: 数组名[访问的数组的索引]

数组的长度:数组名.Length

堆栈:左边声在栈里声明一个空间,右边在堆里声明了“数组名.Length”个空间,并把堆里声明的第一个空间赋值给左边(栈里声明的空间)。

多维数组与交错数组 

 

方法

用来进行代码重用,封装的实现

[访问修饰符] [static] 返回值类型 方法名([参数])

{

方法体;

}

注:1、方法必须放在类中

2、方法名后必须加“()”,即使没有参数

方法的调用

静态方法:类名.方法名();

非静态方法:类实例.方法名();

Return为方法返回值,同时可以退出当前方法

变量的作用域

在方法中定义的变量从定义开始,到定义所在的大括号结束,不能在被调用的方法使用

常量在非静态方法和静态方法中都可以访问。

参数

方法名后面的括号内定义的变量

调用和被调用的参数的类型必须相同

返回值

方法的 返回值类型不能为void

有返回值的方法必须用变量来接收

返回值的类型必须相同

方法可以返回多个返回值,如:返回一个数组。

方法的重载

参数类型、参数个数、参数位置不同、可构成重载;返回值不同构不成重载。

传入参数传出参数(out ref

Out参数:在方法中必须赋值,在方法外不赋值;在方法的参数中用out修饰,在调用时也要用out修饰;out参数在方法中使用时,必须在使用前赋值。

Ref:引用传递参数,侧重于在方法中修改参数,在传入方法前必须赋值。

不同点:

Out用于传出参数,通常在方法要返回多个值时使用,

ref用于修改传入参数的值,然后传出参数

可变参数

Params 规定可变参数在一个方法的参数中只能有一个,而且只能是最后一个参数。

当有多个方法的参数列表中,先出现参数的类型和后面可变参数类型一样的时候,用户调用该方法,会调用参数最多的一个。方法调用时,参数可以用多个类型和方法体相同的数据。

 

 

 

 

 

 

 

 

 

 

 

三层结构

DatasSet实现三层

三层:表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)

三层结构中各层的依赖顺序,表示层依赖业务逻辑层,业务逻辑层依赖数据访问层。

OOP实现三层

三层:表示层、业务逻辑层、数据访问层、实体类(Models)

三层结构中各层的依赖顺序,表示层依赖业务逻辑层,业务逻辑层依赖数据访问层,表示层与业务逻辑层与数据访问层都依赖实体类

注:在我们编写好的实体类前面一定要加上序列化属性[Serializable],目的是为了提高数据传输中的性能与安全性。

 

 

VSTS

Visual Studio Team Architect(设计)

Visual Studio Team Develop(开发)

Visual Studio Team Test(测试)

 

 

 

Wincewindows的单片机操作系统

 

 

 

 

录屏软件 Camtasia Recorder

posted on 2013-06-25 21:06  为学日损  阅读(426)  评论(0编辑  收藏  举报

导航