`
yizhyi
  • 浏览: 61697 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

c#学习笔记(1)

    博客分类:
  • .net
阅读更多

1, 结构(struct) 与 类(class)
[attributes] [modifiers] struct identifier [:interfaces] body [;]
结构与类很相似,都表示可以包含数据成员和函数成员的数据结构。与类不同的是,结构是值类型并且不需要堆分配。结构类型的变量直接包含结构的数据,而类类型的变量包含对数据的引用(该变量称为对象)。 struct 类型适合表示如点、矩形和颜色这样的轻量对象。尽管可能将一个点表示为类,但结构在某些方案中更有效。在一些情况下,结构的成本较低。例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。结构可以声明构造函数,但它们必须带参数。声明结构的默认(无参数)构造函数是错误的。总是提供默认构造函数以将结构成员初始化为它们的默认值。在结构中初始化实例字段是错误的。在类中,必须初始化实例对象. 使用 new 运算符创建结构对象时,将创建该结构对象,并且调用适当的构造函数。与类不同的是,结构的实例化可以不使用 new 运算符。如果不使用 new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。对于结构,不像类那样存在继承。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。但是,结构从基类 Object 继承。结构可实现接口,其方式同类完全一样。
[c++]
C++ 不同,无法使用 struct 关键字声明类。在 C# 中,类与结构在语义上是不同的。结构是值类型,而类是引用类型。
2,
装箱和拆箱(取消装箱)
装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对象实例并将该值复制到新的对象中。关键字 object. 取消装箱是从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。取消装箱操作包括:检查对象实例,确保它是给定值类型的一个装箱值。将该值从实例复制到值类型变量中。
:
int i = 123; // A value type
object box = i; // Boxing
int j = (int)box; // Unboxing

装箱转换
取消装箱
3 ,
隐式和显式
下列转换属于隐式转换:例:object o=i;
标识转换。
隐式数值转换。
隐式枚举转换。
隐式引用转换。
装箱转换。
隐式常数表达式转换。
用户定义的隐式转换。
下列转换属于显式转换: object 0=(object)i;
所有隐式转换。
显式数值转换。
显式枚举转换。
显式引用转换。
显式接口转换。
取消装箱转换。
用户定义的显式转换
4, delegate(
委托)
delegate void D(int x);
class C{
public static void M1(int i) { /* ... */ }
public static void M2(int i) { /* ... */ }}
class{
…….D cd1 = new D(C.M1);………….}
委托是一个数据结构,该数据结构引用一个静态方法,或引用一个对象实例和该对象的实例方法。在 C C++ 中与委托最接近的是函数指针,但函数指针只能引用静态函数,而委托可以同时引用静态方法和实例方法。在后一种情况中,委托不仅存储对方法入口点的引用,还存储对调用其方法的对象的引用。与 C++ 函数指针不同,委托是完全面对对象的;与指向成员函数的 C++ 指针不同,委托同时封装对象实例和方法。委托声明定义从类 System.Delegate 派生的类。委托实例封装一个或多个方法,每个方法都被称为可调用实体。对于实例方法,可调用实体由一个实例和该实例上的方法组成。对于静态方法,可调用实体仅由一个方法组成。给定委托实例和适当的参数集,便可以用该参数集调用此委托实例的所有方法。委托实例的一个有趣和有用的属性是它不了解或不关心它所封装的方法的类;真正重要的只是方法要与委托的类型兼容, 这使委托非常适合“匿名”调用。可选的形参表指定委托的参数,而返回类型则指示委托的返回类型。如果下面两个条件都为真,则方法和委托类型是兼容的:(兼容的概念就是可以用此声明的委托对方法进行委托).
1
它们具有相同的参数数目,并且类型相同,顺序相同,参数修饰符也相同。
2
它们的返回类型相同。
C#
中的委托类型是名称等效的,而不是结构等效的。(但是请注意:两个不同但结构上等效的委托类型的实例可能会比较为相等),准确地说,两个具有相同参数列表、签名和返回类型的不同的委托类型被认为是不同的委托类型。委托实例所封装的方法集合称为调用列表。
5, interface(
接口)
[attributes] [modifiers] interface identifier [:base-list] {interface-body}[;]
一个接口定义一个协定。实现接口的类或结构必须遵守其协定。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或接口必须提供的成员。接口可以是命名空间或类的成员,并且可以包含下列成员的签名:方法属性索引器.
一个接口可从一个或多个基接口继承。接口可由类实现。实现的接口的标识符出现在类的基列表中。被继承的接口称为该接口的显式基接口。当接口具有一个或多个显式基接口时,在该接口声明中,接口标识符后跟一个冒号以及由逗号分隔的基接口标识符列表。接口的基接口是显式基接口及其基接口。换言之,基接口集是显式基接口、它们的显式基接口(依此类推)的完全可传递的闭包。接口继承其基接口的所有成员。接口成员是通过 I.M I[A] 形式的成员访问和索引访问表达式访问的,其中 I 是接口类型的实例,M 是该接口类型的方法、属性或事件,A 是索引器参数列表。接口可以由类和结构实现。为了指示类或结构实现接口,在该类或结构的基类列表中包含了接口标识符。在实现类或结构中定位接口成员的实现的过程称为接口映射。
6,object
object
类类型是所有其他类型的最终基类。C# 中的每种类型都是直接或间接从 object 类类型派生的。可以把任何类型的数值给object类型.
7,string
类型
string
类的实例表示 Unicode 字符串。尽管 string 是引用类型,但相等运算符(== !=)被定义为比较 string 对象(而不是引用)的“值”(7.9.7 字符串相等运算符)。这使得对字符串相等性的测试更为直观。字符串为 string 类型并可写成两种形式,即用引号引起来和用 @ 引起来。用引号引起来的字符串括在双引号 (") , 并且可以包含包括换码序列在内的任何字符用 @ 引起来的字符串以 @ 开头,并用双引号引起来。用 @ 引起来的字符串以 @ 开头,并用双引号引起来。若要在一个用 @ 引起来的字符串中包括一个双引号,请使用两对双引号:@ 符号的另一种用法是使用碰巧成为 C# 关键字的被引用的 (/reference) 标识符。
8,
修饰符
修饰符作用
访问修饰符
public
private
internal
protected
指定声明的类型和类型成员的可访问性。

访问不受限制
只有包含该类的成员的类可以访问
只有当前工程可以访问
只有包含该成员的类和继承的类可以访问
abstract
指示某个类只能是其他类的基类。
const
指定无法修改字段或局部变量的值。
event
声明一个事件。
extern
指示外部实现此方法。
override
提供从基类继承的虚拟成员的新实现。
readonly
声明一个字段,该字段只能赋值为该声明的一部分或者在同一类的构造函数中。
sealed
指定类不能被继承。
static
声明属于类型本身而不是属于特定对象的成员。
unsafe
声明不安全的上下文。
virtual
在派生类中声明其实现可由重写成员更改的方法或访问器。
volatile
指示字段可由操作系统、硬件或并发执行的线程等在程序中进行修改。

9,语句
语句是程序指令。除非特别说明,语句都按顺序执行。C# 具有下列类别的语句。
类别C# 关键字
选择语句if, else, switch, case
迭代语句do, for, foreach, in, while
跳转语句break, continue, default, goto, return
异常处理语句throw, try-catch, try-finally
Checked
Uncheckedchecked, unchecked
fixed
语句Fixed
lock
语句Lock

(1) foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。此语句的形式如下:
foreach (type identifier in expression) statement
若要循环访问集合,集合必须满足特定的要求。集合类型:
必须是 interfaceclass struct
必须包括返回类型的名为 GetEnumerator 的实例方法,例如 Enumerator(详见下文)。
Enumerator
类型(类或结构)必须包含:
一个名为 Current 的属性,它返回 ItemType 或者可以转换为此类型的类型。属性访问器返回集合的当前元素。
· 一个名为 MoveNext bool 方法,它递增项计数器并在集合中存在更多项时返回 true
有三种使用集合的方法:
使用上述指导创建一个集合。此集合只能用于 C# 程序。
1.
使用上述指导创建一个一般集合,另外实现 IEnumerable 接口。此集合可用于其他语言(如 Visual Basic)。
2.
在集合类中使用一个预定义的集合。
(2) throw
语句用于发出在程序执行期间出现反常情况(异常)的信号。throw 语句的形式为:
throw [expression];
expression :
异常对象。当在 catch 子句中再次引发当前异常对象时,它被省略。
(3)try
catch语句
try-catch
语句由一个 try 块和其后所跟的一个或多个 catch 子句(为不同的异常指定处理程序)构成。try-catch 语句采用下列形式之一:
try try-block
catch (exception-declaration-1) catch-block-1
catch (exception-declaration-2) catch-block-2
...
try try-block catch catch-block
(4) fixed
防止变量被垃圾回收器重定位。
(5) lock
lock
关键字将某个语句块标记为临界区。
6.
方法参数
如果为没有 ref out 的方法声明一个参数,则此参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值。通过使用方法参数关键字,可以更改这种行为。如果没有ref,out则默认为值传递,虽然可以在方法中修改这个参数的值,但是修改后的值不会还会到调用该方法的程序中.
params :params
关键字可以指定在参数数目可变处采用参数的方法参数
ref :
引用传递
out :
7, namespace(
名字空间)

 

分享到:
评论

相关推荐

    C#学习笔记1-6

    C#学习笔记1-6 C#学习笔记1-6主要涵盖了C#语言的基本概念和语法,包括注释符、变量、数据类型、变量的使用规则、命名规则、赋值运算符、占位符、异常、转义符、算数运算符、类型转换等。 1. 注释符 C#语言提供了...

    Learning hard C# 学习笔记

    Learning hard C# 学习笔记

    LearningHard C#学习笔记

    LearningHard C#学习笔记,学习C#的经典入门教材。 非常适合初学者,希望大家一起努力。

    Visual C#学习笔记光盘

    Visual C#学习笔记光盘 简介:本书由浅入深地讲解Visual C# 2005编程知识,全书内容分为6篇,共27章,第一篇介绍Visual Studio 2005开发环境和C#基础,其中包括Visual C# 2005简介,C#语言基础,面向对象编程...

    C#学习笔记(非常经典)

    C#学习笔记因其经典性和实用性而受到许多程序员的推崇,是初学者入门和进阶的重要参考资料。 在C#的学习过程中,首先需要理解其基本语法结构,包括变量定义、数据类型(如int、string、bool等)、控制流(如if语句...

    《c#6.0学习笔记》随书光盘及源代码及pdf

    《c#6.0学习笔记》随书光盘及pdf和源代码,这三部分内容都在这一个资源里面,视频教程很难找,在网上找了很久很久,和大家分享一下。

    经典、简单C#学习笔记

    综上所述,"经典、简单C#学习笔记"涵盖了C#语言从基础到进阶的全面内容,适合初学者入门,也对有一定经验的开发者有参考价值。通过深入理解和实践这些知识点,你将能够熟练掌握C#,并在各种应用场景中游刃有余。

    Visual c#学习笔记

    《Visual C#学习笔记》是一本深入探讨C#编程语言及其在ASP.NET框架下应用的专业教程。这本书旨在为想要掌握C#和ASP.NET技术的读者提供详尽的指导,无论你是初学者还是有一定开发经验的程序员,都能从中受益匪浅。 ...

    C#学习笔记

    以下是对C#学习笔记的详细解读: 1. **基础语法**:C#的基础包括变量、数据类型(如整型、浮点型、布尔型、字符串等)、运算符(算术、比较、逻辑、赋值等)和控制结构(如条件语句、循环语句、switch语句)。初学...

    C#学习笔记_20100614.pdf

    根据提供的信息,我们可以总结出以下相关的C#知识点: ### C#中关键字的小提示 C#是一种严格的关键字敏感的语言,这意味着不能将关键字用作变量名或其他标识符的名称。但是,如果你确实需要这样做,比如当你从另一...

    C#6.0学习笔记 从第一行C#代码到第一个项目设计周家安著

    《C# 6.0学习笔记:从第一行C#代码到第一个项目设计》是由周家安编著的一本深入浅出的C#编程教程。这本书主要针对C#初学者和有一定基础的开发者,旨在帮助读者全面理解C# 6.0版本的新特性和编程技巧,并通过实际项目...

    C#学习笔记.docx

    - **标题**:“C#学习笔记.docx” - 该文档主要记录了作者在学习C#过程中所做的笔记。 #### 描述解析 - **描述**:“学习时自己做的笔记,方便自己学习也分享给大家,做好笔记对于学习是有很大的帮助,在研究的...

    C#学习笔记-函数方法集

    ### C#学习笔记—函数方法集 在C#编程中,掌握各种内置函数和方法对于提高编程效率至关重要。本文档汇总了C#中常用的函数和方法,并通过具体示例进行说明,帮助读者更好地理解和运用这些功能。 #### 一、DateTime...

    C#学习笔记(超有价值的)

    本压缩包包含的"C#学习笔记"是一份宝贵的资源,适合初学者和有一定基础的开发者,帮助他们深入理解C#语言的核心概念和实践技巧。 笔记首先可能会介绍C#的基础语法,这是任何编程语言学习的起点。这包括变量定义、...

    C#学习笔记(基础篇)

    以上只是C#学习笔记的基础部分,实际学习过程中还会涉及更多高级特性,如匿名方法、Lambda表达式、异步编程(async/await)、匿名类型、动态类型等。通过不断实践和学习,你可以逐步掌握C#,并运用到实际项目开发中...

    C#学习笔记powerpoint版

    **C#学习笔记PowerPoint版概述** 这是一份基于PowerPoint制作的C#学习笔记,适合初学者系统地了解和掌握C#编程语言的基础知识。虽然没有具体的描述,但我们可以推测这份笔记是作者在学习过程中整理的心得体会,旨在...

Global site tag (gtag.js) - Google Analytics