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#的更多相关文章

  1. Android高级编程笔记(四)深入探讨Activity(转)

    在应用程序中至少包含一个用来处理应用程序的主UI功能的主界面屏幕.这个主界面一般由多个Fragment组成,并由一组次要Activity支持.要在屏幕之间切换,就必须要启动一个新的Activity.一 ...

  2. C#高级编程笔记之第二章:核心C#

    变量的初始化和作用域 C#的预定义数据类型 流控制 枚举 名称空间 预处理命令 C#编程的推荐规则和约定 变量的初始化和作用域 初始化 C#有两个方法可以一确保变量在使用前进行了初始化: 变量是字段, ...

  3. UNIX环境高级编程笔记之文件I/O

    一.总结 在写之前,先唠几句,<UNIX环境高级编程>,简称APUE,这本书简直是本神书,像我这种小白,基本上每看完一章都是“哇”这种很吃惊的表情.其实大概三年前,那会大三,我就买了这本书 ...

  4. javascript高级编程笔记01(基本概念)

    1.在html中使用JavaScript 1.  <script> 元素 <script>定义了下列6个属性: async:可选,异步下载外部脚本文件. charset:可选, ...

  5. C#高级编程笔记之第三章:对象和类型

    类和结构的区别 类成员 匿名类型 结构 弱引用 部分类 Object类,其他类都从该类派生而来 扩展方法 3.2 类和结构 类与结构的区别是它们在内存中的存储方式.访问方式(类似存储在堆上的引用类型, ...

  6. C#高级编程笔记 (6至10章节)运算符/委托/字符/正则/集合

    数学的复习,4^-2即是1/4/4的意思, 4^2是1*2*2的意思,而10^-2为0.01! 7.2运算符 符号 说明 例   ++ 操作数加1 int i=3; j=i++; 运算后i的值为4,j ...

  7. 【读书笔记】C#高级编程 第二章 核心C#

    (一)第一个C#程序 创建一个控制台应用程序,然后输入代码,输入完毕后点击F5 Console.WriteLine();这条语句的意思:把括号内的内容输出到界面上: Console.ReadKey() ...

  8. C#高级编程9-第2章 核心C#

    C#基础 使用C#命名编译器csc.exe,编译C#程序 变量 变量一般初始化后才能使用 类型判断弱类型var,根据初始值判断类型, 变量作用域,可以访问该代码的区域 类中定义的成员变量和属性,作用在 ...

  9. UNIX环境高级编程笔记 目录

    每一章的重点会使用加粗字体 第一章:UNIX基础知识:UNIX体系结构:文件和目录:输入和输出:程序和进程:出错处理:信号:时间值:系统调用和库函数 第三章:文件I/O:文件描述符:文件操作函数:文件 ...

  10. python2.7高级编程 笔记二(Python中的描述符)

    Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...

随机推荐

  1. kafka基本版与kafka acl版性能对比(单机版)

    一.场景 线上已经有kafka集群,服务运行稳定.但是因为产品升级,需要对kakfa做安全测试,也就是权限验证. 但是增加权限验证,会不会对性能有影响呢?影响大吗?不知道呀! 因此,本文就此来做一下对 ...

  2. MySQL学习笔记:少用Null

    在实际编程中,Null容易引起很多问题,例如在Java里NullPointerException猝不及防的空指针异常,因此需要过多的if判断,甚是麻烦. 在MySQL数据库中也要少用Null,尽量保持 ...

  3. USACO 5.4 Canada Tour

    Canada Tour You have won a contest sponsored by an airline. The prize is a ticket to travel around C ...

  4. LoadRunner参数化取值与连接数据库

    LoadRunner参数化取值与连接数据库   LoadRunner在使用参数化的时候,通常都是需要准备大数据量的,也因此LoadRunner提供两种参数化取值方式,一种是手动编辑,另一种就是通过连接 ...

  5. Android studio代码实现打电话+点击事件四种方式

    Android系统架构(重点) 第一层:应用层Application 第二层:应用框架层Application Framework 第三层:Android底层类库层 Libraries.Dalvik虚 ...

  6. Jenkins的Pipeline脚本在美团餐饮SaaS中的实践

    一.背景 在日常开发中,我们经常会有发布需求,而且还会遇到各种环境,比如:线上环境(Online),模拟环境(Staging),开发环境(Dev)等.最简单的就是手动构建.上传服务器,但这种方式太过于 ...

  7. bs和cs

    CS(Client/Server):客户端----服务器结构.C/S结构在技术上很成熟,它的主要特点是交互性强.具有安全的存取模式.网络通信量低.响应速度快.利于处理大量数据.因为客户端要负责绝大多数 ...

  8. [leetcode sort]179. Largest Number

    Given a list of non negative integers, arrange them such that they form the largest number. For exam ...

  9. 1015 Reversible Primes (20)(20 point(s))

    problem A reversible prime in any number system is a prime whose "reverse" in that number ...

  10. git 相关资料应当查看廖雪峰所写的网站

    廖雪峰关于git的网站 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013 ...