C#基础知识总结(不定时添加新内容)

来源:互联网 发布:钢琴的软件 编辑:程序博客网 时间:2024/06/01 20:52

1  局部变量不自动初始化,而属性的每个字段有个默认初始值,是C#在没有指定初始值时提供。

 

2  char/byte/sbyte/short/ushort/int/uint/long/ulong/float/doubledecimal类型实例变量的默认值都是0.bool类型实例变量的默认值为假。同样,引用类型实例变量的默认值为null

 

3  C#不允许静态方法直接调用非静态成员

 

4  一个类中可以声明同名方法,只要其参数集不同(参数个数、类型和顺序),称为方法重载(与返回类型无关

 

5  参数声明中使用关键字ref可以按引用将变量传递给方法------被调用方法可以修改调用者的变量(ref关键字用于调用方法中已经初始化的变量。

在参数前面加上关键字out可以建立输出参数,告诉编译器这个变元按引用传入被调方法,被调方法对调用者的原变量赋值

 

6  数组索引值应为intuintlongulong类型或可以隐式升级为这些类型的值

 

7  一维数组

int[] b = new int[10];

b = {十个数};

or

int[] b = {十个数};

 

多维数组

    (1)矩形数组

         int[ , ] b;

        b = new int[ 2, 2 ];

or

int[ , ] b = { { 1, 2 }, { 3, 4 } };

 

(2)齿轮数组

int[][] c= { new int[] { 1, 2 }, new int[]{ 3 }, new int[]{ 4, 5, 6 } };

or

int[][] c;

c = new int[ 3 ][ ];

c[ 0 ] = new int [ 2 ];

c[ 1 ] = new int [ 1 ];

c[ 2 ] = new int [ 3 ];

注:齿状数组不能用一个数组生成表达式完全创建。例如下面的语法错误:

int[][] c = new [ 2 ][ 3 ]; //error

 

8  矩形数组,每个for语句的循环继续条件用矩形数组的GetLength方法取得每一维的长度。维号从0开始。因此方法调用GetLength0)返回数组第一维的长度(行数),GetLength1)返回数组第二维的长度(列数)。

 

齿轮数组:for语句的循环继续条件用属性array.Length确定数组行数。内for语句的循环继续条件用属性arrayrow.Length确定数组列数。(这里的array是数组名,row为行数

 

9  如果类成员没有用访问修辞符声明,则其默认为private。我们总是显式声明private成员

 

10              getset方法前面没有访问修辞符时,访问方法继承属性名前面的访问修饰符

 

11、声明与使用可复用类的步骤:

       1)、声明一个公用类。如果不是公用类,则只能让同一个汇编中的其他类来使用。

       2)、选择名字空间名并在源代码文件中增加一个名字空间声明,表示可复用类声明

       3)、将类编译进类库(创建的工程是Class Library

       4)、在程序中增加类库的引用

       5)、用using指令指定可利用类名字空间和使用这个类

 

12Class View Object BrowserVS2005 IDE的使用

       Class View显示工程中所有类的字段与方法。

       Object Browser列出C#库中所有的类。

 

13、现有类是基类,新类是派生类。每个派生类又可以作为其他派生类的基类。

       C#C++不同,不支持多重继承(而接口则可以,从而避免相关问题

       派生类的对象也可以作为基类的对象。

       关键字virtualabstract表示派生类中可以覆盖基类方法。

override修饰符声明派生类方法覆盖virtualabstract基类方法。这个修饰符还隐式声明派生类方法为virtual(也就是说被override过的派生类方法隐式为virtual)

 

14、派生类对象可以看成是基类对象,而基类对象不是派生类对象。(“是”关系适用于从派生类到直接或间接基类,但反过来不行)。

       构造函数和静态方法不能声明为abstract

15if(a)其实就是a为真时成立,其详写为if( a == true );if(!a)也就是a的值为假时成立,其详写为if( a != true )(之前老把这个搞混了,所以也加上,就当是自己又复习一遍)

 

16、整除得到整数商,但要注意整除放弃小数部分(截尾),而不是四舍五入。比如:20/36;而当20.0/3或者是20/3.0时,得到的数则是一个浮点数来的,最后一位浮点数则是四舍五入得来。当对一个浮点数的结果进行整数的强制类型转换时,所得到的值就是结果的小数部分被截尾。比如:(int(20.0/3)=6

 

17、变元提升与类型转换:

类型

转换类型

bool

不能隐式转换成其它简单类型

byte

ushortshortuintintulonglongdecimalfloatdouble

char

ushortintuintulongdecimalfloatdouble

decimal

不能隐式转换成其它简单类型

double

不能隐式转换成其它简单类型

float

double

int

longdecimalfloatdouble

long

decimalfloatdouble

sbyte

shortintlongdecimalfloatdouble

short

intlongdecimalfloatdouble

uint

ulonglongdecimalfloatdouble

ulong

decimalfloatdouble

ushort

uintintulonglongdecimalfloatdouble

 默认情况下,如果目标类型不能表示原类型,则C#不允许在它们之间进行隐式转换(例如,int2 000 000不能表示为short值,任何有小数的浮点数不能用longintshort之类整数表示),否则会产生编译错误。但是如果我们知道这个转换可能丢失信息,但这里可以这么做的话,则可以用强制类型转换来实现。

原创粉丝点击