码迷,mamicode.com
首页 > Windows程序 > 详细

【C#高级编程】笔记之核心C#

时间:2017-09-27 16:20:08      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:内容   表达式   err   str   控制语句   ror   lib   结束   main方法   

Main()方法

每一个C#可执行文件(如控制台程序、Windows程序和Windows服务)都必须有一个入口点——Main()方法(注意M大写)。

这个方法必须是类或静态方法,并且返回类型必须是int 或 void。不过给这个方法定义什么访问级别并不重要,一般定义为public,不过你要是把它定义成了private,你会发现它还是能够运行的。

同一个程序中只能有一个Main()方法,如果你一定要定义好几个Main方法,你就得明确告诉编译器 哪个Main()方法才是程序的入口。

另外,Main()方法也是可以有参数的:public static int Main(string[] args) {} 

  • 变量

C#的变量必须初始化,这是C#强调安全性的一个重要例子。大多数编译器会把没有初始化做为一个警告处理,但是C#编译器会把它当做一个错误处理。这样,可以防止我们无意中从其他程序遗留下的内存中获取到垃圾值。

C#通过两种方法保证变量进行初始化:1.对于类或结构中的字段,如没有显式初始化,在创建他们的时候会赋给它们一个默认值;2.对于方法中的局部变量,则必须先进行初始化,然后才能在后面的语句中使用它们的值。

C#中实例化一个对象,必须使用new关键字。

  • 类型推断(匿名类型)

类型推断:var myAge = 19;//编译器可以根据变量的初始值“推断“变量的类型;与Javascript的变量的申明一致啊

使用类型推断需要遵守这几条规则:1.变量必须初始化,不初始化无法判断类型的;2.初始值不能为空;3.初始化器必放在表达式中;4.不能把初始化器设置为一个对象,除非在初始化器中申明一个新的对象。

  • 变量的作用域

1.只要类在某个作用域内,其字段(成员变量)也在该作用域内;2.在for、while等类似的语句中申明的局部变量存在于该循环中;3.局部变量在于申明该变量的块语句中,或方法结束的右大括号之前的作用域内

C#在变量之间有一个基本的划分,它把类型级别的申明看作字段,而把方法中申明的变量看局部变量

  • 常量

1.常量必须在申明的时候初始化;2.常量的值必须在编译时用于计算,所以从一个变量获取的值给常量 赋值是行不通的;3.常量总是静态的,所以不请允许用static修饰常量;4.使用常量可以程序更加易读、易修改、避免出现错误的机率。

  • 数据类型

  C#把数据类型分为两种:值类型和引用类型。值类型存储在堆栈中,而引用类型存储在托管堆上。

C#中有15个预定义类型,其中 13个是值类型,2个引用类型(string和object),大多数C#数据类型,包括我们定义的类,都是引用类型。

在C#中,所有的数据类型都以与平台无关的方式定义,如:int总是32位带符号的整型,short有16位长,long有64位长,这与C++有很大的差异。

decimal类型,128位的高精度,专为财务计算而设计,充分弥补的double类型的不足。

string虽然是引用类型,但是在操作上还是有 一些区别。例如:字符串是不可改变的,修改其中一个字符串,会创建一个全新的对象,而另一字符串不发生变化 

 

技术分享
技术分享
string s1 = "a string";                . string s2 = s1; Console.WriteLine("s1 is " + s1); Console.WriteLine("s2 is " + s2); s1 = "another string"; Console.WriteLine("s1 is now " + s1); ConsoletWriteLine("s2 is n°w " + s2);
输出结果: s1 is a string s2 is a string s1 is now another string s2 is now a string
技术分享
技术分享

 

  • 流控制
C#中的流控制语句与C++\JAVA基本相同,没什么大的变化。除了switch语句,在C#中,switch语句的一个有趣的地方是case子句的排放顺序是无关紧要的,甚至可以把dcfault子句放在最前面。所以,一个重要的条件就是任何两条case语句后的常量值都不能相同!

C#中的goto语句有两个限制:1.不能跳进循环中 ;2.不能退出finally块。和C++一致

  • 命名空间

命名空间提供了一种组织类和其他类型的方式。与文件和组件不同,它是一种逻辑组合,而不是物理组合。所以可以一同一个程序集中使用不同的命名空间,也可以在多个程序集中定义同一个命名空间的类型。

建议在一个项目开始之前,就定义命名空间的层次定义。一般比较接受的格式是这样子的:公司名.项目名.系统的各大部分。公司应当花一些时间开发一种命名空间模式,这样其开发人员就可以快速定位到他们所需要的功能上。

如果命名空间的名字很长,别忘了给它起个别名:using alis=namespaceName; 

  • 注释

  C#的注释方式使用传统的C语言风格的注释,单行用// ,多行用 /*  */  。需要注意的是,可以把多行注释用在代码之中,虽然并不推荐这么使用:

Console.WriteLine("this is a book"/*向控制输出一句话*/);

当然,C#还有一种更强大的注释 ///  。用这样的一条语句,C#的编译器就可以把这种注释从代码文档中抽取出来,存入一个XML文档之中:

csc /t:library /doc:MathLibrary.xml  MathLibrary.cs

让我解释一下:csc就是编译器了;/t:library  /doc:MathLibrary.xml  是一个参数,注意中间的空格,MathLibrary.xml 是要生成的XML文档的名字;MathLibrary.cs 是什么我不想再解释了

  • C#预处理器指令

  使用预处理器指令可以禁止编译器编译代码的某一部分。如果计划发布两个版本的代码,即基本版本和拥有更多功能的企业版本, 就可以使用这些预处理器指令。需要注意的是C#中的预处理器指令可不像C++那么丰富,它们的使用也并不频繁,常见的预处理器指令如下:

#define和#undefine  :定义一个符号(或者说变量也行啊,我习惯叫符号)。undefine就是删除定义过的符号

#if  #eif  #else  #endif   :功能和C#中的流程处理语句一样的,很少用到

#warning   #error    :编译器遇到它们会分别差生警告和错误

#region    #endregion    :把一段代码标记为给定名称的一个块,最有用的一组指令就是它啦,美化代码必用!

  • C#编程规则

  1.标识符规则:必须以字母或下划线开头;不能使用关键字做标识符,如果非要用,请在标识符前加@,例:int @abstract;标识符也可以使用Unicode字符,用语法\uXXXX表示,如: _Identifier 与  \u005fIdentifier 是一样的定义。最的上图一张:

技术分享

要认真理解这上面所有的关键字,理解了,C#语言这一块就算是基本过关了。

2.用法约定:定义变量时不使用任何前缀;定义名称、命名空间的风格应该保持一致,名称不应该与任何关键字发生冲突;字段应该总是私有的;

 

这一章介绍的内容都是一些C#基础的东西,不过细细总结,发现需要注意的东西还真不少,希望对看到这篇博文的人有所帮助.

【C#高级编程】笔记之核心C#

标签:内容   表达式   err   str   控制语句   ror   lib   结束   main方法   

原文地址:http://www.cnblogs.com/jia125go/p/7602043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!