admin管理员组文章数量:1532440
2024年5月14日发(作者:)
C#基础(一)(温故而知新)
一、C#与.NET的关系
C#本身是一门语言,他是用于生成面向.NET环境的代码,但其并不是.NET的一部分。换言
之,C#编写 的代码总是运行在.NET Framework中。而且,在很多时候,C#的特定功能依赖
于.NET。比如,在C#中声 明一个int类型,实际上是.NET中32类的一个实例。
.NET的核心是CLR(公共语言运行时)。在CLR中运行的代码,我们成为“托管代码”。
我们写的代码在运行之前,会经过两个编译阶段。
1、把源代码编译为IL(Microsoft中间语言)
2、CLR把IL编译为平台专用的代码。
在这里,我们来简单说说“托管代码”。
IL和Java的字节代码的理念基本是一样的,都是一种低级语言,都用数字表示,可以非常
快速度的转 化为机器代码,这样执行效率会高很多,同时这也就是我们经常说的“平台无
关性”的实现很 重要的一个环节。 C# J# 的源码都可以被编译成相同的IL, 也就实现
了平台无关。换言之,只 要.NET Framework 可以运行在任何设备或系统上, C# J#
编写的代码都可以运行,而且都可以运 行在任何设备或者系统上。
C# J# 的源码都可以被编译成相同的IL,这样不同语言编写的不同类都可以很容易的
相互操作 ,也就是所说的,语言的互操作性。
似乎这个IL(Microsoft 中间语言)很好很强大,很神很奇特。我们接下来了解下这个IL。
首先,简要的说说它的主要特征:
A、面向对象和使用接口
B、值类型和引用类型之间的巨大差别
C、强数据类型
D、使用异常来处理错误。
E、使用属性(attribute)
接下来具体说说这些特征。
(一)、面向对象和使用接口
面向对象,在此不做多的阐述了。主要在这里说说接口。关于接口,有一个很重要的理念:
提供一个 契约,实现给定接口的类,必须提供该接口的所有方法和属性的实现。举个例子
说明吧,有个接口IUser ,其有age,sex,userName属性,有 setUname(),getAge()方法。有个
类,UserClass继承自IUser。这时, UserClass就必须实现IUser的所有方法setUname(),getAge()
和所有属性 age,sex,userName。
(二)、值类型和引用类型的巨大差异。
对于值类型,变量直接保存其数据,而对于引用类型,变量仅仅保存数据的地址。值类型一
般存储在 堆栈中,引用类型一般存储在托管堆中。
(三)、强数据类型
所谓强数据类型,是指所有的变量都明确的被标记为某个特定的数据类型。比如string 或者
int 等。 IL不允许对模糊数据类型执行操作。在javascript中的 var 变量就是模糊类型数据。
不过在现在的,.NET 3.5 中也加入了var ,也就是模糊数据类型。
(四)、使用异常来处理错误。
C#中以 try{} catch{}finally{}代码块来处理。这个具体在后面再谈。
(五)、属性的使用。
用户定义的Attribute和其对应的数据类型或方法的元数据放在一起,这对于文档说明很有
用,它们和 反射技术一起使用,执行特定的任务。
在这里提及到的元数据以及反射,在后面我们将会详细讲述到。
版权声明:本文标题:C#基础教程 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1715618803a461372.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论