C# 基础,做个笔记

1,  C#默认 boolean 是false

2, 有效数字。
当定义一个十进制变量并赋值给它时,使用m下标以表明它是一个十进制类型。如果省略了m下标,在变量被赋值之前,它将被编译器当作双精度数据类型来处理。下面是一个合法的赋值:
   decimal d_value=1.0
m;

3,注意:在C和C++中,字符型变量的值是该变量所代表的ASCⅡ码,字符型变量的值作为整数的一部分,可以对字符型变量使用整数进行赋值和运算。而这在C#中是被禁止的。 现在的版本? 这个有待商榷? 到底可不可以。。 15.03.03尝试了一下不成功



4,结构体  是把不同的数据类型结合成一个整体的类型。

Struct structName{

                                            string name;

                                            .......

                                       }

5,值类型 --->简单类型,结构 体类型,枚举类型。          值类型 直接存储 在堆栈上面

     引用类型-->数组,委托类,托管类,自定义类,接口。          引用类型存储的引用地址在 托管 堆上面

6,

     枚举 enum 实际上是为一组在逻辑上密不可分的整数值提供便于记忆的符号

    比如 我们声明一个代表星期的枚举类型的变量


7,托管 delegate   记录一个地址:

http://www.cnblogs.com/hyddd/archive/2009/07/26/1531538.html 

这个托管和delegate 写的很详细

8,我们也可以用显式的方法来进行装箱操作

  int i = 10;

  object obj = object(i);//显式装箱操作

  值类型的值装箱后,值类型的值仍在堆栈中,仅将这个值复制给这个object对象


9,引用变量 ref  和输出变量 out:

这个ref 可以理解为,当传入参数 使用ref关键字的时候,会改变原来参数的值。像以前的话 把某个值参数传入其他方法改变,改变的只是形式参数,原参数的一个副本,对原来的参数没有影响。  

这一句话 来自百度文库:



10,用户定义的类型(包括类、结构和数组)不能为 const只有c#内置类型才可以声明为constant.   类型修饰符有多个public //  protected //interval 【同一程序集】

程序集的意思:程序集就是你的代码编译以后在bin目录下生产的.exe或者.dll文件,至于internal这个关键字,你可以理解为:只能在同一个命名空间中可以调用,出来这个命名空间就必须引用这个程序集和该命名空间才能调用里面的类和方法


   private这个修饰常量,只能在同一个类的内部。

   还有new 这个修饰符号:在用作声明修饰符时,new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员时,该成员的派生版本将替换基类版本。虽然可以不使用new 修饰符来隐藏成员,但将收到编译器警告。如果使用new 来显式隐藏成员,将禁止此警告。【microsoft官方解释

http://msdn.microsoft.com/zh-cn/library/435f1dw2.aspx】


11,无论是隐式还是显式的,都不能把布尔类型转换成整数类型? 这个有待商榷?~~~~~~~~~~~是正确的


12,三目运算符,a>b?a:b如果a>b则整个表达式为a,否则整个表达式为b.

=========================================================================================================================

13,C#里面,类型的转换和判断有两个关键字 is 和as 。 is 永远不会抛出异常,转换或者判断失败,就会返回false。as 不一样,返回值可能是空值,null。

is 和as 这里的知识应该很简单,所以晚上回去 看下。  



11,之前的老师讲过,位移运算,和十进制的位移的,相当于十进制移动小数点。比如 111.58。 回去参考笔记本。

12,索引器,是用来快速访问对象用的。索引器定义,快速访问对象 然后 给属性赋值。


13,sealed关键字和Java中的final关键字类似,该类不能被继承,sealed也可以修饰方法,不能被重写。


14,C# 访问修饰符,,太多了http://www.cnblogs.com/Athrun/archive/2007/11/16/961137.html


15,C#中的静态域,只能通过类来访问,不能通过类对象,实例来访问。【java中的静态成员,对象也可以访问】

     const修饰的常量为静态常量,只能通过类来访问,不能通过实例来访问。

   
     static  readonly的作用和c++中#define、const的作用类似。区别是:const型表达式的值是在编译时形成的;而static readonly表达式的值直到程序运行时才形成。生存周期为main
开始之前到main结束。
    
       •file1.cs 和file2.cs,分开编译。在文件file1.cs内的域myField声明为staticreadonly时,如果我们由于某种需要改变了myField的值为20,我们只需重新编译文件file1.cs为file1.dll,在执行file2.exe时我们会得到20。但如果我们将staticreadonly改变为const后,再改变myField的初始化值时,我们必须重新编译所有引用到file1.dll的文件,否则我们引用的MyNamespace1.MyClass1.myField将不会如我们所愿而改变。这点用到了  static readonly 上面的特性。



16,只读字段和常量比起来灵活一点,常量const 本来就是static 静态的 不用显示声明,常量声明的时候必须赋值。

     readonly灵活的地方不必声明的时候赋值,可以再构造函数里面给其赋值, 赋值了就不能改变了,这样在构建对象的时候对于不可变的量 是很好的。



07/08 

          C# 中的abstract 和virtual 分别是关键字。
          C SHARP 中只有父类【基类】的方法申明为virtual,只有基类申明为virtual ,子类才可以重写。 而且 C SHARP  中 重写函数【或者】方法的时候,必须显示的声明为override 关键字,不然会报错。
            成员字段和和静态的函数不能申请为virtual,因为这个概念只对类中的实例函数成员有意义。

   








posted on 2014-07-08 13:20  狂奔的冬瓜  阅读(131)  评论(0编辑  收藏  举报