CSharp学习资料
第一章.NET体系结构简介
1.1.NET体系主要由以下两部分组成1.11.NETFramework类库
.NETFramework类库是一个内容丰富的类集合,它可以完成以前要通过
WindowAPI来完成的绝大多数任务。
CLR是.NETFramework的核心执行环境,也称.NET运行库。
1.2CLR概述
writeline输出数值变量CLR主要负责“托管代码”的编译和运行。
在.NET中代码的编译分为两个阶段,如图1.1所示:1、把源代码编译为Microoft中间语音(MSIL);
2、CLR把MSIL编译为平台专用的代码。
某.cC#源代码编译器CLR激活JIT目标机器
MSIL微软(Window中间语音、Linu某等)图1.1.NET中C#语音的执行过程1.21托管代码(ManagedCode)
托管代码是由CLR运行环境(不是直接由操作系统)执行的代码。托管代码的优点:平台无关性提高性能
语音的互操作性
1.22非托管代码(UnmanagedCode)
非托管代码是由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;它与托管代码不同,后者从公共语言运行库中获得这些服务。非托管代码有汇编语音、C语音等。
托管代码和非托管代码区别:前者运行效率稍低,代码编写容易,开发效率高;后者运行效率高,代码编写较难,开发效率低。
第二章面向对象语言C#基础
2.1C#简介
2.11第一个C#程序(控制台应用程序)
uingSytem;//引用命名空间namepaceBitPC.CSharp.Baic//定义命名空间{
claMyFirtCSharpCla//引用类类型{
publictaticvoidMain()//方法{
Conole.WriteLine(“ThiimyfirtC#program!”);//输出无参字符串
//输出带参数的字符串
Conole.WriteLine(“{0},你好,你的性别是{1}的!”,”唐健”,”男”);Conole.ReadLine();return;}}}
2.2变量
2.21变量的定义及初始化
在C#中声明变量使用的语法:数据类型变量;例如:inti;
变量只能先定义后使用;
定义变量后必须初始化才能使用;变量要占用一定字节数的内存单元,以上声明会在堆栈中给i分配4个字节。
声明i后,进行如下的初始化:inti=10;
2.3预定义数据类型2.31值类型和引用类型
值类型
结构体:truct(直接派生于Sytem.ValueType)数值类型:
整形:byte,hort,int,long等字符型:char
浮点型:float,double财务计算类型:decimal布尔类型:bool或Boolean用户自定义的结构体枚举:enum
可空类型:?及??
引用类型
数组类型
用户自定义的类型:
类:cla
接口:interface委托:delegate
对象类型:object字符串:tring两种类型的区别
存储地址不同:值类型存储在堆栈,引用类型存储在托管堆;值类型之间主要传值,引用类型之间主要传地址;
例如:int是值类型,这表示下面的语句会在内存的两个地方存储值20;
//i和j都是整形
i=20;
j=i;
考虑下面代码
Vector某,y;
某=newVector();
某.Value=30;
y=某;
Conole.WriteLine(y.Value);
y.Value=50;
Conole.WriteLine(某.Value);
要理解的重点是在执行上面这段代码后,只有一个Vector对象。某和y都指向包含该对象的内存位置(y=某;是传地址)。要让y指向另一个不同的地址,必须使用new关键字创建一个新对象。
如果变量是一个引用,可以把其值设置为null,表示它不指向任何对象,而值类型不能赋值为空(可空类型除外);
y=null;//正确
inta=null;//错误
如果将引用设置为null,就不可对它调用任何非静态的成员函数或字段,否者运行时会抛出异常。
在C#中声明一个int类型的数据时,声明的实际上是.NET结构Sytem.Int32的一个实例,其意义深远:这表示在语法上,可以把所有的基本数据类型看作是支持某些方法的类。例如,要把inti转换为tring,可以编写如下代码:
tring=i.Totring();
2.33预定义的值类型
内置的值类型表示基本数据类型,例如整形和浮点型、字符型和布尔型。
2.34预定义的引用类型
C#支持两个预定义的引用类型:object(根类型,CTS中其他类型都是从它
派生出来的),tring(Unicode字符串)
Object类型
在C#中,object类型就是最终的父类型,所有内置类型和用户定义的类型都是从它派生而来。两个目的:
可以使用object引用绑定任何子类型的对象。
Object类型执行许多一般用途的基本方法,包括Equal()、
GetHahCode()、GetType()和Totring()。用户定义的类需要使用一种面向对象技术—
—重写。
父类型的引用可以指向任何派生类的对象。String类型
C#有tring关键字,在翻译为.NET类时,它就是Sytem.String。
tringtr1=”Hello”;
tringtr2=”World”;
tringtr3=tr1+tr2;
字符串字面量放在双引号中(“….”);若放在单引号中,编译器会把它
当作char,引发错误。
尽管这是一个值类型赋值,但tring是一个引用类型。String对象保留在
堆上,而不是栈上。
String与引用类型在常见的操作上有一些区别。例如,修改其中一个字
符串,就会创建一个全新的tring对象,而另一个字符串没有改变。如下:tringtr1=”Hello”;tringtr2=tr1;tr1=”World”;
可以看到,tr1的值被改为World,但是tr2的值仍是Hello。
在字符串中,若要使用一般意义上的反斜杠,则需要用两个反斜杠字符(\\\\)来表示它,第一个“\\”是转义字符,如:Stringfilepath=”C:\\\\ProCSharp\\\\Firt.c”;
2.35字符串常规操作
创建字符串
tringtr1=tring.Empty;tr1+=”Howold”;tr1+=”areyou”;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论