zoukankan      html  css  js  c++  java
  • 【C#高级编程】笔记之核心C#

     

     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#基础的东西,不过细细总结,发现需要注意的东西还真不少,希望对看到这篇博文的人有所帮助. 

  • 相关阅读:
    source insight 使用介绍
    android 自定义progressBar
    appium环境安装
    js定义类的三种方法
    对象,函数,构造函数this,原型
    mindjet使用技巧
    在wamp下安装bugfree
    QTP
    powerdesigner使用
    随笔
  • 原文地址:https://www.cnblogs.com/android-blogs/p/6428513.html
Copyright © 2011-2022 走看看