黑马程序员技术交流社区

标题: 基础知识 [打印本页]

作者: 赵大宝    时间: 2012-10-26 16:22
标题: 基础知识
C#基础知识之.NetFramework简介
    .netframework运行于操作系统之上,提供良好的跨语言特性。
    .netframework包含两个内容:公共语言运行时(CLR)和类库集(FCL)
    MSIL微软中间语言。当编译.net支持的语言编写的代码的时候,输出的代码为MSIL
    CLR又包含:通用语言规范(CLS:保证语言互操作性的一组规则)和公共类型系统(CTS:包含了.net支持的各语言间兼容的数据类型和功能)

C#中的变量和常量
    C#中的基本数据类型:
    值类型和引用类型
    值类型:简单类型、结构类型和枚举类型。
    简单类型:整数类型、浮点类型、小数类型(decimal)和布尔类型等
    sbyte是有符号的,相当java的byte型,范围-128~127
    C#中byte是无符号的,范围0~255

C#基础知识之变量命名方法:
    帕斯卡命名法和骆驼命名法
   帕斯卡命名法:如果有多个单词组成,每个单词首字母大写
    骆驼命名法:如果有多个单词组成,第一个单词全部小写,后面的单词大写

C#中的常量:const与readonly两种
    const声明的常量:叫静态常量,必须声明时就初始化,且只能用常数值初始化
    readonly声明的常量:叫动态常量,可以在声明时不初始化,只能在构造函数中初始化,但必须每个构造函数中都要初始化;而且可以使用变量值初始化

classTest  
{  
constfloatPI=3.1416f;//常量命名:全部大写  
readonlyfloatG;  
publicTest()  
{  
G=9.80F;  
}  
publicTest(floatg)//每个构造函数中都要初始化;而且可以使用变量值初始化  
{  
G=g;  
}  
}
C#中的装箱和拆箱
    装箱:值类型转换成有引用类型
    拆箱:引用类型转换成值类型
    值类型:存在栈中
    引用类型:在堆中存放对象的地址(即引用),对象本身存放在栈中
    拆装箱允许值类型和引用类型相互处理

C#语法

    Switch()括号中可以是int ,char和string ,switch语句中的case语句冒号后什么都不写,可以不写break,其他情况一定要写break,否则报错

数组:五种声明方式

int[]array;  
array=newint[2];  

//第二种声明方式  
int[]array1=newint[2];  

//第三种声明方式  
int[]array2={1,2,3};  

//第四种声明方式  
int[]array3=newint[]{1,2,3};  

//第五种声明方式  
int[]array4=newint[3]{1,2,3};  

//数组大小也可以是变量  
intcount=3;  
int[]arr=newint[count];
C#基础知识之枚举:用有意义的字符去访问数据

publicenumContry:long//指定枚举类型,必须是整型,不写为int型  
{  
Pacific,//第一个未付值,默认为零  
China=1860,  
Japan,  
US=1901,  
Canada  

}
C#中的面向对象
    析构函数:函数名与构造函数名一样,~函数名(),不接受参数,由垃圾回收器自动调用(GC.Collect()调用垃圾回收器)

    virtual关键字:C#中,子类要重写父类的方法,必须把父类的方法标识为virtual(虚拟的),同时重写方法用override修饰
    new 关键字:new关键字:在子类中定义的一个和父类方法签名一样,但是个全新的方法。并非重写父类的方法。
    base关键字:用base关键字调用父类的方法

    访问修饰符:
    public 公有的,
    internal 在一个项目中的,
    protected有父子关系的类,
    private仅所属类的成员

    注意:如果有一个类既继承类又实现接口,类名要写在接口名前面。

属性,索引器,委托,事件

    属性:访问修饰一般为public,首字母大写。属性内有get和set访问器,get内必须要有return,set内有value关键字,代表从外部接受的值。
    索引器:索引器的作用:像处理数组一样去处理类的对象。

publicclassStudent  
{  
privatestring[]obj=newstring[10];  

//this关键字在这里代表每一个类的对象,[]中整数是指通过下标访问  
publicstringthis[intindex]//此是可以通过索引号去访问每一个类的成员  
{  
get  
{  
returnobj[index];  
}  
set  
{  
if(value!=null)  
obj[index]=value;  
}  
}  
staticvoidMain(string[]args)  
{  
Studentstucollection=newStudent();  
stucollection[0]="柯南";  
stucollection[1]="小五郎";  
stucollection[5]="怪盗基德";  
}  
}
    C#基础知识之委托:相当于函数指针,可使程序在运行是再指定具体要运行的方法。
    (1) 定义委托:Public delegate int Call()
    (2) 实例化委托:objcall=new Call(方法名)
    (3) 调用委托:objcall();


    以上是C#基础知识的一些介绍,希望对你学习和了解C#有所帮助。
作者: 许庭洲    时间: 2012-10-26 22:28
值得学习ing!!
作者: 邓艳秋    时间: 2012-10-27 09:09
想纠正一点二点。
关于枚举enum---------------------------------------------------------------------------------------------枚举是不建议用数字的,因为没有任何意义
在枚举中,强制元素序列从 1 而不是 0 开始。 但是,强烈建议枚举包含一个值为 0 的常量。
每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型。 枚举元素的默认基础类型为 int。 若要声明另一整型枚举,例如 byte,请在标识符之后紧跟类型,然后再使用冒号:enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};
准许使用的枚举类型有 byte、 sbyte、 short、 ushort、 int、 uint、 long 或 ulong。
可以给 Days 类型的变量赋以基础类型范围内的任何值,所赋的值不限于已命名的常数。



作者: 邓艳秋    时间: 2012-10-27 09:14
virtual关键字:C#中,子类要重写父类的方法,必须把父类的方法标识为virtual(虚拟的),同时重写方法用override修饰
还有你既然提到virtual关键字,那么对应的就有一个abstract关键字,这样二者可以进行对比。abstract是抽象方法。
声明为virtal虚方法的,不一定要用override,但若是声明为abstract方法,则一定要被子类进行override.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2