您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 给排水/暖通与智能化 > C#学习笔记(个人)
一、C#基础知识(1)1、C#中foreach用法foreach循环用于列举出集合中所有的元素,foreach语句中的表达式由关键字in隔开的两个项组成。in右边的项是集合名,in左边的项是变量名,用来存放该集合中的每个元素。该循环的运行过程如下:每一次循环时,从集合中取出一个新的元素值。放到只读变量中去,如果括号中的整个表达式返回值为true,foreach块中的语句就能够执行。一旦集合中的元素都已经被访问到,整个表达式的值为false,控制流程就转入到foreach块后面的执行语句。foreach语句经常与数组一起使用,下面实例将通过foreach语句读取数组的值并进行显示。数组的属性:Array.Length数组的容量利用这个属性,我们可以取得数组对象允许存储的容量值,也就是数组的长度、元素个数,这个比较好理解,数组还有其他的属性,比如数组的维数等,属性的用法比较简单,学会一种,其他的格式基本一致,这里我们就不举例了。当数组的维数、容量较多时,C#提供了foreach语句,专门用来读取集合/数组中的所有元素,我们把这种功能叫做遍历。语法书写如下:遍历数组:foreach(typeobjNameincollection/Array)这段语句会逐一检查数组中的所存储的变量值,并且一一将其取出,其中的type是你所要读取的数组对象将要存储在objName变量的数据类型,而objName是定义了一个type类型的变量名,代表每一次从集合和数组(collection/Array)中取得的元素,collection/Array则是所要存取的数组对象。用这种方法只需写一个foreach就可以遍历出除交错数组以外的所有维数的数组。例子:用foreach循环一次性遍历a数组int[,,]a=newint[2,2,2]{{{1,2},{3,4}},{{5,6},{7,8}}};//定义一个2行2列2纵深的3维数组aforeach(intiina){Console.WriteLine(i);}这两种代码执行的结果是一样的都是每行一个元素,共8行,元素分别是12345678string[]数组里面是存放string型的值,Liststring是存放string类型的对象2、C#中的InitializeComponent()方法InitializeComponent()用于初始化窗体上控件。在每一个窗体生成的时候,都会针对于当前的窗体定义InitializeComponent()方法,该方法实际上是由系统生成的对于窗体界面的定义方法。//位于.cs文件之中的InitializeComponent()方法publicForm011(){InitializeComponent();}在每一个Form文件建立后,都会同时产生程序代码文件.CS文件,以及与之相匹配的.Designer.CS文件,业务逻辑以及事件方法等被编写在.CS文件之中,而界面设计规则被封装在.Designer.CS文件里,下面代码为.Designer.CS文件的系统自动生成的脚本代码。namespaceExample_FormTest{partialclassfrmStudent{///summary///必需的设计器变量。////summaryprivateSystem.ComponentModel.IContainercomponents=null;///summary///清理所有正在使用的资源。////summary///paramname=disposing如果应释放托管资源,为true;否则为false。/paramprotectedoverridevoidDispose(booldisposing){if(disposing&&(components!=null)){components.Dispose();}base.Dispose(disposing);}#regionWindows窗体设计器生成的代码///summary///设计器支持所需的方法-不要///使用代码编辑器修改此方法的内容。////summaryprivatevoidInitializeComponent(){this.SuspendLayout();////frmStudent//this.AutoScaleDimensions=newSystem.Drawing.SizeF(6F,12F);this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;this.ClientSize=newSystem.Drawing.Size(292,273);this.Name=frmStudent;this.Text=学生信息;this.MouseClick+=newSystem.Windows.Forms.MouseEventHandler(this.frmStudent_MouseClick);this.KeyPress+=newSystem.Windows.Forms.KeyPressEventHandler(this.frmStudent_KeyPress);this.ResumeLayout(false);}#endregion}}在代码之中,可以很容易发现InitializeComponent()方法和Dispose()方法,前者为界面设计的变现内容,后者为表单释放系统资源时候执行编码。InitializeComponent()方法反映了窗体设计器中窗体和控件的属性。通常不会在世界上个文件中修改代码。如果更改InitializeComponent()方法中的相关属性参数,在窗体设计器界面上也会显示出来。我们发现建一个c#窗体项目,在Form1.cs和Form1.Designer.cs里分别有一个InitializeComponent()函数Form1.Designer.cs里的是定义(函数名后面有大括号包含定义内容)Form1.cs里的是调用(函数名后面分号结尾)partial表示以下创建的是分布类代码也就是说一个类的定义代码可以写在两个不同的页面Form1.cs和Form1.Designer.cs注意:InitializeComponent()方法写在前面和后面是有区别的。InitializeComponent()方法是用来初始化窗体组件的,在InitializeComponent之前,窗体的各个控件还没有进行初始化,比如说窗体上有一个TextBoxUserName,在InitializeComponent之前它还只是一个TextBox类型的变量而已,如果在InitializeComponent之前调用这个TextBox的属性或方法,就会出错。再比如说你拖上取一个TextBox,它放在Form的位置,TextBox的一些属性。包括new这个TextBox都放在那个函数里面处理的。我们可以看一下Form.Designer.cs,在那里找到InitializeComponent方法,您会发现窗体对象的初始化都是在那里做的。3、C#里面的#region是什么意思?#region是c#预处理器指令。#region是一个分块预处理命令,它主要用于编辑代码的分段,在编译时会被自动删除。#region使你可以在使用VS代码编辑器的大纲显示功能时指定可展开或折叠的代码块。例如:#regionMyClassdefinitionpublicclassMyClass{staticvoidMain(){}}#endregion备注:#region块必须以#endregion指令终止。#region块不能与#if块重叠。但是,可以将#region块嵌套在#if块内,或将#if块嵌套在#region块内。使用#region就是将一些有关联的代码组织在一起,然后折叠起来。这样你就在一个函数中看不到很长的令人头痛的代码段。当然这段代码很简单。在实际项目中,你可能看到上百行甚至更多的代码在一个#region中。如果把它折叠起来。看起来就会很整洁。region不适合在大方法中使用,当你在一个方法中使用#region的时候,停下来想想你刚刚写了什么代码?大多数时候,你可以将这些代码段独立成一个函数。4、C#中this的作用在C#中,this关键字代表当前实例,我们可以用this.来调用当前实例的成员方法,变量,属性,字段等;也可以用this来做为参数状当前实例做为参数传入方法.还可以通过this[]来声明索引器。下面介绍C#中this的作用一、C#this指针的几种用法1、限定被相似的名称隐藏的成员C#代码复制publicclassThisName{publicstringname=张三;publicintnum=55;publicThisName(){}publicvoidGetThisName(stringname,intnum){name=this.name;//调取全局变量namenum=this.num;//调取全局变量numHttpContext.Current.Response.Write(参数name的值为:+name+;参数num的值为:+num);//输出结果为参数name的值为张三;参数num值为:55}}2、将对象作为参数传递到别的方法中C#代码复制publicclassThisFF{publicThisFF(){}publicstringshuju(){returnThis指针当做方法传递;}publicvoidf1(ThisFFff){HttpContext.Current.Response.Write(ff.shuju());}publicvoidf(){f1(this);//this在这里可以理解为ThisFFff=newsThisFF();当前类的实例}}ThisFFff=newsThisFF();//方法实例ff.f();//调用方法输出结果为:This指针当做方法传递3、声明索引器C#代码复制privateint_Sy;publicintthis[intsy]{get{return_Sy;}set{sy=_Sy;}}二、C#中this的总结1、this关键字引用被访问成员所在的当前实例。静态成员函数没有this指针。this关键字可以用来从构造函数,实例方法和实例化访问器中访问成员,不能在静态方法。静态属性访问器或者域声明的变量初始化程序中使用this关键字,这将会产生错误。2、在类的构造函数中出现的this作为一个值类型表示对正在构造的对象本身的引用。3、在类的方法中出现this作为一个值类型表示对调用该方法的对象的引用。4、在结构的构造函数中出现的this作为一个变量类型表示对正在构造的结构的引用。5、在结构的方法中出现的this作为一个变量类型表示对调用该方法的结构。5、[c#.net]SuspendLayout和ResumeLayout在Designer中会看到这两个方法,究竟是做什么用的呢?一般在加载所有控件之前SuspendLayout方法,挂起所有控件在界面的逻辑布局事件,等又有布局代码完后再调用ResumeLayout事件吧刚才挂起的逻辑布局一并执行。例如我们在设置初始化控件时候,都会用到Size、Location、Anchor或Dock属性,而每一个属性都会去改变控件在界面上的布局,使得控件,每执行一段代码就就要界面重绘一次,那么我们先挂起所有事件,之后一起执行,这样就可以提高带有许多控件的应用程序的性能。控件的布局逻辑被挂起,直到调用ResumeLayout方法为止。当调整控件的多个属性时,将先后使用SuspendLayout和ResumeLayout方法取消多个Layout事件。例如,通常先调用SuspendLayout方法,然后设置控件的Size、Location、Anchor或Dock属性,最后调用ResumeLayout方法以使更改生效。注意:为了防止
本文标题:C#学习笔记(个人)
链接地址:https://www.777doc.com/doc-4443210 .html