C#学习笔记(个人).docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C#学习笔记(个人).docx》由会员分享,可在线阅读,更多相关《C#学习笔记(个人).docx(145页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、、C#基础知识1 C#中 foreach 用法foreach循环用于列举出集合中所有的元素,foreach语句中的表达式由关键字 in隔开的两个项组成。in右边的项是集合名,in左边的项是变量名,用来存放 该集合中的每个元素。该循环的运行过程如下:每一次循环时,从集合中取出一个新的元素值。放到只 读变量中去,如果括号中的整个表达式返回值为true, foreach块中的语句就能 够执行。一旦集合中的元素都已经被访问到,整个表达式的值为false,控制流 程就转入到foreach块后面 的执行语句。foreach语句经常与数组一起使用,下面实例将通过foreach语句读取数组的值 并进行显示。数
2、组的属性:Array. Length数组的容量利用这个属性,我们可以取得数组对象允许存储的容量值,也就是数组的长度、 元素个数,这个比拟好理解,数组还有其他的属性,比方数组的维数等,属性的 用法比拟简单,学会一种,其他的格式基本一致,这里我们就不举例了。当数组的维数、容量较多时,C#提供了 foreach语句,专门用来读取集合/数组 中的所有元素,我们把这种功能叫做遍历。语法书写如下:遍历数组:foreach (type objName in collection/Array)这段语句会逐一检查数组中的所存储的变量值,并且一一将其取出,其中的type 是你所要读取的数组对象将要存储在objNa
3、me变量的数据类型,而objName是定 义了一个type类型的变量名,代表每一次从集合和数组(collection/Array) 中取得的元素,coHection/Array那么是所要存取的数组对象。用这种方法只需 写一个foreach就可以遍历出除交错数组以外的所有维数的数组。例子:用foreach循环一次性遍历a数组int, a = new int2, 2, 2 1, 2 , 3, 4, 5,6, 7,8 ;/定义一个2行2列2纵深的3维数组aforeach(int i in a)Console . WriteLine文温度(K)。那么不必动系统中成百上千个Temperature属性,只
4、需在get和set函数中 稍微修改一下代码即可:class Thermometer(private double temperature;public Thermometer (double temperature)/构造函数(this, temperature = temperature;public double Temperature(* 修改后*get return temperature-273.15; set temperature = value+273.15; *修改后* t f f f f f f f建一个控制台应用程序来测试一下,主函数为:class Test(static
5、 void Main(string args)(Thermometer a = new Thermometer (40);Console. WriteLine(a. Temperature);Console. WriteLine (首领 A0手举杯,hand); / / public void Fall()(Console. WriteLine (首领 A 摔杯);)/ / B/ public class B/ /攻击/ public void Attack()Console. WriteLine (部下 B 发起攻击);)/ /部下c/ public class C / / public v
6、oid Attack()Console. WriteLine (部下 C 发起攻击);)电至此,三个独立的类,构造完毕。那么,怎么让部下B和C,根据首领的暗语才去相应的行动 呢?我们需要在首领A类中,采用一种方法,把其意图传递出去。在首领A类之前,分别定义一个 带形参的举杯委托RaiseEventHandler和一个不带形参的摔杯委托FallEventHandlero命名 规那么是在准备传递的方法名后加上EventHandle,不要问我为什么,介绍为什么的文章多得是, 大家大可以去查阅。本文的宗旨是,教会大家如何快速的使用委托和事件。当然,你也可以不遵 循此命名规那么,对程序的运行没有任何影响
7、,只是会增加自己或他人日后阅读代码的难度。delegate void RaiseEventHandler(string hand);delegate void FallEventHandler();然后,在首领A类中,定义两个事件。这个类似于大家在WinForm中拖放一个Button后,双 击该Button,即可编辑其事件。/ summary/首领A举杯事件 / /summarypublic event RaiseEventHandler RaiseEvent;/ /首领A摔杯事件 / /summarypublic event FailEventHandler FallEvent;好了,做完上
8、面两个步骤后,就可以在首领A的举杯和摔杯方法中,调用上述两个事件了。这 样,如果B和C中订阅该事件,便可自动执行了。/ summary/举杯 / /summary/ 手: 左、右 public void Raise(string hand)(Console. WriteLine (首领 A 0手举杯,hand);/调用举杯事件,传入左或右手作为参数if (RaiseEvent!=null)RaiseEvent(hand);/ /摔杯 / public void Fall()Console. WriteLine (首领 A 摔杯); /调用摔杯事件(FallEvent!=null)FallEve
9、nt ();同样,不要问为什么这样写。按照上述操作即可。一旦用熟这种方法,体会其中含义,自然就明 白为何这么写了。在部下B和C心中,必须存在首领A,才能执行A的暗示吧。所以,在B类和C类中,需要声 明一个A,该声明可以通过B和C的构造函数进行实例化。实例化之后,便可在类B和类C中 订阅类A的事件了。完整代码如下:1 class Program2 3 static void Main(string args)45 A a = new A() ; / 定义首领 A67 B b 二 new B(a) ; / 定义部下 B89 C c = new C(a) ; / 定义部下 C1011 /首领A左手举
10、杯12 a. Raise (左);1314 /首领A右手举杯15 /a. Raise(右);1617 /首领A摔杯18 /a. Fall ();1920 Console. ReadLine();21 /由于B和C订阅了 A的事件,所以无需任何代码,B和C均会按照约定进行动作。22 23 )2425 / summary26 /首领A举杯委托27 /summary28 /param name二hand手:左、右29 public delegate voidRaiseEventHandler(string hand);30 / summary31 /首领A摔杯委托32 / 33 public del
11、egate voidFallEventHandler();/ /首领A/ public class A/ /首领A举杯事件/ public event RaiseEventHandler RaiseEvent;/ /首领A摔杯事件/ public event FallEventHandler FallEvent;/ /举杯/ / 手: 左、右/param public void Raise(string hand)Console. WriteLine(首领 A0手举杯,hand); /调用举杯事件,传入左或右手作为参数 if (RaiseEvent!=null)( RaiseEvent(han
12、d);)/ /摔杯/ public void Fall() Console. WriteLine (首领 A 摔杯);/调用摔杯事件 if (FallEvent!=null) (FallEvent ();)/ /部下B3435363738394041424344454647484950515253545556575859606162636465666768697071727374757677/ /summary public class B78798081828384订阅举杯事件 85阅摔杯事件A a;public B(A a)this, a = a;a. RaiseEvent += new
13、RaiseEventHandler (a_RaiseEvent) ; /a. FallEvent += new FailEventHandler (a_FallEvent); 订8687888990919293949596979899100101102103104105106107108109110111112 );113114115116117118/ / / /首领举杯时的动作假设首领A左手举杯,那么B攻击void a_RaiseEvent(string hand)if (hand. Equals (左)Attack ();/首领摔杯时的动作void a FallEvent()Attack
14、 ();/攻击public void Attack()Console. WriteLine (部下B发起攻击,大喊:猛人张飞来也!/部下C/summarypublic class C119120121122123124订阅举杯事件125阅摔杯事件126127128129130131132133134135136137138139140141142143144145146147148149150151虎生威);152153A a;public C(A a)/ / / /22 NULL,this, a = a;a. RaiseEvent += new RaiseEventHandler (a Ra
15、iseEvent) ; /a. FallEvent += new FailEventHandler (a_FallEvent) ; /订首领举杯时的动作假设首领A右手举杯,那么攻击/paramvoid a_RaiseEvent(string hand)if (hand. Equals (右)Attack (); )/首领摔杯时的动作void a FallEvent()Attack ();/summary 攻击public void Attack()Console. WriteLine (部下C发起攻击,一套落英神掌打得虎String.Empty三者在C#中的区别(l)NULLnull关键字是表
16、示不引用任何对象|的空引用的文字值。null是引用类型变量的默认值。那么也 只有引用型的变量可以为NULL,如果mt i = null,的话,是不可以的,因为Int是值类型的。(2)”和 String.Empty这两个都是表示空字符串。只不过”“理论上重新开辟内存空间,而String.Empty指向一处。 不过优化器会优化的!string.Empty不分配存储空间,”“分配一个长度为空的存储空间,所以一般用string.Empty, 为了以后跨平台,还是用string.empty。在C#中,大多数情况下nn和string.Empty可以互换使用。比方:string s =string s2 =
17、 string.Empty;if (s = string.Empty) / if 语句成立(3)判定为空字符串的几种写法,按照性能从高到低的顺序是:s.Length = 0 优于 s = string.Empty 优于 s = n注意:1.string strl = 和 string str2=null 的区别。strl是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中 是有准确的指向的,string str2=null,这样定义后,只是定义了一个string类的引用,str2并没有指向任何地方, 在使用前如果不实例化的话,都将报错。23C#中params关键字应用
18、c#params 应用params是C#开发语言中关键字,params主要的用处是在给函数传参数的时候用,就是当函数的参数 不固定的时候。在方法声明中的params关键字之后不允许任何其他参数,并且在方法声明中只允许一 个params关键字。关于参数数组,需掌握以下几点。(1)假设形参表中含一个参数数组,那么该参数数组必须位于形参列表的最后;(2)参数数组必须是一维数组;(3)不允许将params修饰符与ref和out修饰符组合起来使用;(4)与参数数组对应的实参可以是同一类型的数组名,也可以是任意多个与该数组的元素属于同一类型的 变量;(5)假设实参是数组那么按引用传递,假设实参是变量或表达
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 学习 笔记 个人
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内