
C#学习笔记 1. C#是Visual Studio开发的一种编程语言 2. C#支持面向对象编程和结构化程序设计方法 3. C#语法与Java相似但有不同之处
5星
- 浏览量: 0
- 大小:None
- 文件类型:TXT
简介:
C#学习笔记(1)
51099在线学习网上线 文章来源:网络采集 发布日期:2006年5月25日 字体:[大 中 小51099网络课程平台,访问地址为http://www.51099.com。
结构与类在本质上存在显著差异。尽管它们都可包含数据成员和函数成员,但结构作为值类型无需进行堆分配,其变量直接存储数据而不需引用对象。相对于类而言,结构更适合表示轻量级对象如点、矩形及颜色等。虽然理论上可以将一个点视为类实例,但在某些方案中使用结构更为高效。
在构造函数方面,结构允许自定义参数化的版本,而无需为默认构造函数提供无参数初始化(这会导致字段未赋值状态)。与类不同的是,结构的实例化可通过$ new$关键字完成而不必依赖对应构造函数。如果不调用显式构造函数,则所有字段将保持未赋值状态且对象不可用。
值得注意的是,结构不具备继承能力。即使基类为$ Object$,它也不支持从其他结构或类继承的行为。此外,结构不能作为类的基类型使用。
在装箱与拆箱操作方面,取消装箱过程包括两个主要步骤:首先检查给定的对象实例是否为指定值类型的装箱对象;其次将复制的数据成员赋值回目标变量中。例如:
int i = 123;
object box = i; // 装箱
int j = (int)box; // 拆箱
这个过程确保了数据在不同类型之间的正确转换。
装箱转换与取消装箱是C#语言中重要的类型转换操作。boxed conversion和unboxing conversion分别用于实现不同类型之间的数据迁移。
在C#编程中,隐式转换是一种无需显式指示的自动转换方式。以下包括但不限于:object o=i;标识转换、隐式数值转换、隐式枚举转换、隐式引用转换等操作属于这一类别。装箱转换则属于显式的类型调整过程。
用户定义的隐式转换允许自定义数据类型的跨类型兼容性,而显式转换则提供了更灵活的方式以指定具体的类型映射关系。
delegate(委托)是一种强大的机制,在C#中实现对方法和实例的封装与调用。它通过将静态方法或实例方法绑定到目标对象上,实现了复杂的调用逻辑。
接口是C#编程中的另一个核心概念,用于定义共性服务并规范其实现方式。一个接口可以有多个基接口继承,并且只能被类或结构实现。显式基接口的使用确保了接口继承关系的透明性和可扩展性。
在C#中,委托类型通过名称等效原则实现了灵活性和安全性。两个看似相同但实则不同的委托类型会被视为独立实体。其参数表、签名及返回类型的一致性是判断兼容性的关键条件。
object 类作为所有其他类型的最终基类,提供了强大的继承机制。任何类型都可以通过显式或隐式的方式与 object 类产生关联。
string 类的实例基于Unicode编码体系,并支持丰富的字符串操作功能。其引用特性使得字符串比较运算符的应用更加直观和便捷。
访问不受限制
只有包含该类的成员的类可以访问
只有当前工程可以访问
只有包含该成员的类和继承的类可以访问
abstract指示某个类只能是其他类的基类。
const指定无法修改字段或局部变量的值。
event声明一个事件。
extern指示外部实现此方法。
override提供从基类继承的虚拟成员的新实现。
readonly声明一个字段,该字段只能赋值为该声明的一部分或者在同一类的构造函数中。
sealed指定类不能被继承。
static声明属于类型本身而不是属于特定对象的成员。
unsafe声明不安全的上下文。
virtual在派生类中声明其实现可由重写成员更改的方法或访问器。
volatile指示字段可由操作系统、硬件或并发执行的线程等在程序中进行修改。
语句是程序指令块。一般情况下,默认会按照代码顺序依次执行各条语句。C#语言定义了以下几类标准语句:
选择语句包括:if、else、switch、case等结构。
迭代/循环语句包含:do、for、foreach、in、while等类型。
跳转相关的语句有:break、continue、default、goto和return函数。
异常处理方面,提供了throw(抛出异常)、try-catch(捕捉异常)和try-finally(执行 finally代码块)机制。
语言特性中还定义了Checked和Unchecked两种状态标识符。此外,还有Fixed关键字用于固定值的引用,以及Lock语句用于控制并发访问。
(1) 遍历每个数组或对象集合中的元素时会执行嵌入语句组。foreach 语句用于循环访问集合以获取信息,但不会修改集合内容从而避免不可预见的副作用。其语法形式如下:
foreach (type identifier in expression) statement
若要遍历集合,则该集合必须满足特定条件:集合类型应为 interface、class 或 struct;且包含名为 GetEnumerator 的实例方法(例如 Enumerator)。此类(或结构)需具备以下属性:
· Current 属性,返回 ItemType 对象或可转换为此类型的其他对象;
· MoveNext 方法,递增项计数器并返回 true 表示集合中存在更多元素。
可用的集合创建方式包括:
1. 根据指导创建一个通用集合,并实现 IEnumerable 接口(适用于 C# 程序)。
2. 在集合类中使用预定义集合(可应用于其他语言如 Visual Basic)。
3. 使用指定模板或直接初始化集合实例。
(2) throw 语句用于在程序运行过程中触发异常。其语法形式为:
throw [expression];
其中,expression 表示异常对象。在 catch 子句中重复出现同一异常时,可省略该表达式。
(3) try-catch 语句由一个 try 块及其后续的多个 catch 子句构成(每个子句对应特定异常处理)。其形式包括:
try
catch (exception-declaration-1) { ... }
catch (exception-declaration-2) { ... }
...
或
try { ... } catch { ... }
(4) fixed 关键字用于防止变量被垃圾回收器重新定位。
(5) lock 关键字将特定语句块标记为临界区,确保在此期间只允许一个执行单元修改共享资源。
6. 方法参数说明:
- 对于未声明 ref 或 out 的参数,默认采用值传递方式;尽管可以在方法内更改该参数的值,但此改变后的值不会传播到调用该方法的程序中。
- params 关键字可指定具有变长参数的方法(例如 Func
全部评论 (0)


