C#个人总结1——基础
2016-06-28 16:20
288 查看
C#是运行在.NET Framework 平台上的一种面向对象语言。.NET Framework 的核心是其运行库执行环境,称为公共语言运行库(CLR)或.NET 运行库。通常将在CLR 控制下运行的代码称为托管代码(managed code)。 在.NET中,编译分为两个阶段: (1)源代码编译为中间语言IL(Intermediate Language) (2)再把IL编译为机器语言 IL是低级语言,理论上是为了平台无关性,同时也为了支持语言的互操作。能够编译为IL语言的任何一种语言都可以可以进行互操作,包括:VB.NET、VC++.NET,COM、COM+组件不能编译为IL,但是也能和.NET互操作。 程序集(assembly)是包含编译好的、面向.NET Framework 的代码的逻辑单元,是完全自描述性的。程序集的一个重要特性是它们包含的元数据描述了对应代码中定义的类型和方法。程序集也包含描述程序集本身的元数据, 这种程序集元数据包含在一个称为"清单(manifest)" 的区域中。程序集分为私有和共享两种类型。
通过编程访问程序集元数据的技术称为“反射”。通过反射技术,也能够实现“动态绑定”(运行时调用类的方法,一般情况下都是编译时调用)。 名称空间是.NET避免类名冲突的一种方式,建议至少提供两个嵌套的名称空间名:第一个是公司名,第二个是技术名或软件包名。 对源文件进行编译的命令是:csc XXX.cs。使用这个命令需要设置环境变量。第一种方法是找到Visual Studio安装目录下的vsvars32.bat并运行(未测试);第二种方法是使用VS自带的命令提示符窗口。 C#中,变量在使用之前必须声明,最好也同时赋一个初始值。当然,类或结构中的变量会自动初始化为0或null值,方法中的局部变量则必须显式初始化,否则就无法使用。有时候声明变量时会使用“var”关键字,不过它和JS中的不一样。这个关键字代表声明变量时类型不能确定,需要等到变量初始化才能确定类型,一旦确定了类型,就遵守强类型约束,即无法再次改变变量类型。 C#的变量遵守块级作用域的约定,变量作用域限定在变量声明语句所在的最近一层块{}内。假设有一个变量i定义在类中,该类又有一个方法也声明了变量i,那么在该方法中局部变量i就隐藏了类属性i。 常量用const关键字修饰,且必须在声明时初始化,值不可更改。 数据类型分为值类型和引用类型。值类型的数据存储在内存栈中,引用类型数据存储在内存堆中。CLR跟踪引用变量判断哪些变量仍然是可以访问的,哪些已经不能访问,定期删除不能访问的对象,这是通过垃圾回收器实现的。 C#的基本类型是内置于.NET Framework中的,在概念上用.NET结构(值类型)表示,既没有性能损失,也可以支持方法,实际上仍存储为基本类型。 通用类型系统 (common type system):一种确定公共语言运行库如何定义、使用和管理类型的规范。CLR通过CTS(通用类型系统),实现严格的类型和代码验证,来增强代码鲁棒性(鲁棒是Robust的音译,也就是健壮和强壮的意思)。CTS 确保所有托管代码是自我描述的。各种Microsoft编译器和第三方语言编译器都可生成符合CTS的托管代码。这意味着,托管代码可在严格实施类型保真和类型安全的同时,使用其他托管类型和实例。
变量类型: 基本类型 (1)整型:sbyte、short、int、long、byte、ushort、uint、ulong (2)浮点类型:float、double、decimal (3)bool类型 (4)字符类型:char 预定义的引用类型:object、string 枚举是用户定义的整数类型。它的强大之处是在后台会实例化为派生于基类System.Enum的结构。 using指令用来引用其它命名空间,但是using语句在这些文件之间并没有建立物理链接。using还能给类和命名空间指定一个别名,避免类名冲突。名称空间别名的修饰符是“::”。 C#从方法Main()开始执行,它的返回类型必须是int、void,有一个可选的字符串数组(string[] args)参数。 C#预处理器指令: #defined 和 #undef : 告诉编译器存在给定名称的符号和删除符号,必须放在源文件的开头位置。 #if、#elif、#else、#endif :条件编译指令 #warning和#error:产生警告或错误 #region和#endregion:把一段代码标记为一块,可折叠 #line:改变编译器在警告和错误信息中显示的文件名和行号信息 #pragma:抑制或还原指定警告 C#编程规则: 标识符(用于给类型、变量等指定名称)区分大小写,可以包含数字,但是必须以字母或下划线开始。C#关键字不能用作标识符。 一般情况下,名称空间和类,以及基类中的成员都应该使用Pascal大小写形式,也就是单词的首字母大写。类中所有私有成员字段、传递给方法的所有参数名称一般都用camel大小写形式,即首字母小写,其它类似于Pascal形式。成员字段的前缀名常常用一条下划线开头。 C#区分大小写,所以类中常用属性封装字段(字段一般设为私有,用camel形式,供类本身使用;属性一般对外开放,用Pascal形式,供外部调用)。 字段一般来说应该设置为私有,根据需要,可以将常量和只读字段设为公有。
相关文章推荐
- C#4.0 新特性 动态类型Dynamic
- C#以管理员权限运行源码,C#软件获取管理员权限,c#获取管理员权限
- leetcode 122
- C#中的async与await
- [转]C# CancellationTokenSource 终止线程
- 【C#】 调用web api
- C#使用smtp发送邮件
- c# 获取excel所有工作表
- C#获取当前日期时间(转)
- C#关闭pinvokestackimbalance异常
- 16 继续讲C#中的条件执行。if...else if...else
- C#dC# 简单网页外挂实例
- C#实现简单的双色球抽取中奖号码代码
- c# 通过进程名关闭指定窗口(或进程)
- C# String.Format大全 去 decimal 后面的 0
- 15 C#中的条件执行,if else
- C# iis 发布“未收到数据”,ERR_EMPTY_RESPONSE,“服务器未发送任何数据,因此无法加载该网页。”
- C#调用短信接口(通过简单的工厂模式整合多个短信平台)
- C#用网易邮箱发送邮件(同步异步)
- C# XML和实体类之间相互转换(序列化和反序列化)