博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

随笔分类 -  天轰穿.Net4趣味编程系列视频教程

天轰穿.Net4趣味编程系列视频教程 Visual Studio 2010 轻松学习C#
摘要:大纲:sql概念,TSQL脚本调试,数据库编码规范 阅读全文

posted @ 2014-09-28 19:57 天轰穿 阅读(671) 评论(0) 推荐(0) 编辑

摘要:在C#集合内,foreach可以隐藏集合类型的内部实现方法,从而更加有效地处理集合类型元素。通过foreach循环语句,可以循环列举某集合内的元素,并对各元素执行一次相关的嵌入语句。foreach的具体使用格式如下:foreach(类型 迭代变量in被迭代的表达式或集合变量) {处理语句 }其中,通过类型和迭代变量来声明语句的迭代变量。C#中的迭代变量,相当于某范围内覆盖整个嵌入语句的只读局部变量。当在foreach语句执行时,迭代变量表示当前正在为其执行迭代的集合元素。在使用foreach语句时,必须注意如下3点。如果运行foreach处理语句试图修改迭代变量值,或将变量值作为ref参数或o 阅读全文

posted @ 2013-02-27 14:21 天轰穿 阅读(1354) 评论(2) 推荐(0) 编辑

摘要:小天:如果是申明和初始化的时候都没有给值,事后如何给?老田:你的意思是需要访问数组吧?数组在声明和初始化后,就可以使用索引器访问其中的元素了。不过需要注意数组只支持有整型参数的索引器。通过索引器传送元素号,就可以访问数组。索引器总是以0开头,表示第一个元素。可以传送给索引器的最大值是元素个数减1,因为索引从0开始。在下面的例子中,数组myInt3用7个整型值声明和初始化。用索引器0、1、2、3、4、5、6就可以访问该数组中的元素。int[] myInt3 = { 11, 12, 30, 53, 21, 38, 27 };//访问数组 inti1 = myInt3[0];//将数组myInt3中 阅读全文

posted @ 2013-02-26 16:08 天轰穿 阅读(553) 评论(0) 推荐(0) 编辑

摘要:小天:接口主要是给类做父类的吗?它还能不能继承其它的接口呢? 老田:当然是可以的,不过接口继承接口会有一个问题。通过前面的介绍也知道了,接口本身是不会去实现任何方法的。它只是规定了要实现那些方法,以及要什么样的材料(参数),能够生产什么样的产品(返回值)。于是,接口继承接口的结果就是越往后的接口所带的成员就越多了。例如,下面代码, interface I_2_A //声明第一个接口 { int A { get; set; } //声明一个属性 } interface I_2_B //声明第二个接口 { int Count(int i, int j); //声明一个方法 } interface 阅读全文

posted @ 2013-02-04 14:05 天轰穿 阅读(480) 评论(0) 推荐(0) 编辑

摘要:申明在接口中的方法,不可以包含方法的内容区块,简单来说就是不能有大括号存在。而属性,却有大括号,这里属性则和前面讲到的类中的属性定义差不多,但是它的大括号内也仅仅接受“get和set”,其他的代码还是免谈。而注释的方式却和在类中的注释一样的写法注意,在接口中必须为每个类成员写注释。接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法,所以接口的申明方式和类其实是有很大区别的。例如下面:首先向项目中添加一个接口文件【在解决方案资源管理器中指定的项目上点击鼠标右键à添加新项à选择“接口”à命名为“IBook.cs”】,然后接口中代码如下using Syste 阅读全文

posted @ 2013-01-30 14:13 天轰穿 阅读(413) 评论(0) 推荐(0) 编辑

摘要:在开始讲接口之前,我需要给你明确一个观点,当然,这可能也只代表我的一家之言“接口用来定义两个对象通信的契约;抽象类用来封装一组对象的公用行为规范。”之所以先跟你明确这点是因为相对于接口和抽象类的误解、误用、争论实在太多了,每个人看起来都有道理,但其实又都被人怀疑,当然这其中也包括我。之所以这样,其实也是因为这两个知识点相识之处非常多。如果你绝对是一个零基础的初学者,你暂时不用考虑将这两者混合起来使用,你只需要将每一种学懂就行。否则的话,你会觉得仅仅是这两个知识点就足以让你放弃学习了。抽象类必须为所有接口成员提供实现。实现接口的抽象类可以将接口方法映射到抽象方法上。例如: interface I 阅读全文

posted @ 2013-01-29 13:32 天轰穿 阅读(789) 评论(0) 推荐(1) 编辑

摘要:小天:除了使用分部类的方式,还有什么办法可以扩展已有的类没有?老田:还有许多方法扩展类。如果有类的源代码,使用继承(后面章节讨论)就是给对象添加功能的好方法。但如果没有源代码则可以使用扩展方法,扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。换句话说,它允许改变一个类,但不需要类的源代码。扩展方法是静态方法,是类的一部分,但实际上没有放在类的源代码中。还记得在本章开始的那个oopTool命名空间下的User类吧。现在我们再新的项目中去引用oopTool。但是接下来,我们需要 阅读全文

posted @ 2013-01-28 14:53 天轰穿 阅读(488) 评论(0) 推荐(0) 编辑

摘要:小天:分部类,是不是指同一个类的代码分布在多个类文件中呢?和继承是不是一回事? 老田:你说的这个不是一回事。继承那是多个类之间的玩法,这个和文件之间是没有关系的。还记得前面我们说到过,类名字和文件名字不必相同(但最好是相同的)。其实前面的实例中也多次看到,在一个文件中是可以放多个类的。 至于你说让多个文件共同完成一个类。我想你要表述的应该是一个类的代码分布在多个文件中吧? 这个需要使用partial关键字来完成。partial关键字允许把类、结构或接口放在多个文件中。一般情况下,一个类存储在单个文件中。但有时,多个开发人员需要访问同一个类,或者某种类型的代码生成器生成了一个类的某部分,所以把类 阅读全文

posted @ 2013-01-25 14:07 天轰穿 阅读(365) 评论(0) 推荐(0) 编辑

摘要:小天:有的时候,我们希望临时保存一组数据,而每组数据又都是有多个键值对组成的,这个时候,我们咋办呢?老田:可以用.NET3.0以后出来的一个新特性 – 匿名类型。第2章讨论了var关键字,用于表示隐式类型化的变量。var与new关键字一起使用时,可以创建匿名类型。匿名类型只是一个继承了Object的、没有名称的类。该类的定义从初始化器中推断,类似于隐式类型化的变量。如果需要一个对象包含某个人的姓名、年龄和性别等信息,则声明如下: var Worker = new { Name = "天轰穿", Age = 30, Sex = "男" };这会生成一个包含 阅读全文

posted @ 2013-01-24 13:29 天轰穿 阅读(394) 评论(0) 推荐(0) 编辑

摘要:包含类型是在另一个对象中做数据成员的对象类型; 嵌套类型是一个类完整的包含了在另一个类;前面我们说可以利用传递参数达到静态成员调用非静态成员的效果.那么今天我们说的包含类型则可以将一个类中的数据成员定义为从另一个类中派生出来的对象.例如, public class A //创建一个类,下面类中我们会创建一个他这个类型的私有变量 { private string val1; //创建一个私有变量 public A(string str) //定制一个构造函数 { val1 = str; //为它赋上传进来的值 } public string Val1 //定制一个属性 { get { retu. 阅读全文

posted @ 2013-01-23 13:23 天轰穿 阅读(398) 评论(0) 推荐(0) 编辑

摘要:前面提到,所有的.NET类都派生于System.Object。实际上,如果在定义类时没有指定基类,编译器就会自动假定这个类派生于Object。本章没有使用继承,所以前面介绍的每个类都派生于System.Object(如前所述,对于结构,这个派生是间接的:结构总是派生于System.ValueType,System.ValueType派生于System.Object)。其重要性在于,除了自己定义的方法和属性外,还可以访问为Object定义的许多公共或受保护的成员方法。这些方法可以用于自己定义的所有其他类中。如图4-21 图4-21 小天:对哦,这几个方法,我看所有的类,包括我们自己定义的类都自带 阅读全文

posted @ 2013-01-22 15:54 天轰穿 阅读(347) 评论(0) 推荐(0) 编辑

摘要:学习网址:http://www.ixueyun.com/community/active.php?mod=20130121IT项目能力提升计划(一):网络编程(WCF、Socket编程)纯项目组合进阶课程项目背景:本系统是从国家某三甲医院的“智慧医院”项目中抽出的核心子系统,项目价值1140万元。即时通信,则是采用了基于服务器和客户端通信(QQ、MSN类)的网络原理。学习成果:通过本课程的学习,将清楚了解多个系统如何通过WCF、Socket等网络通信技术联合工作的底层原理,掌握商业软件开发流程,以及第三方开源组建的配置和应用。IT项目能力提升计划(二):智能办公行业软件(OA、ERP、CRM、 阅读全文

posted @ 2013-01-21 16:37 天轰穿 阅读(474) 评论(0) 推荐(0) 编辑

摘要:抽象类:又叫抽象基类(之所以说是抽象基类,是因为它仅用于继承用途):它在定义的时候使用 abstract 关键字标记的一般类.他可包含一般类所包含的所有特性,例如,字段,属性,方法,另外他还包含一个很特殊的方法,叫抽象方法(这些方法基本上是没有执行代码的签名,而派生于该类的的类就必须提供执行的代码).同时,抽象类不能被实例化,他主要用在类的定义和部分实现这方面,所以它需要在扩充类中完整的扩充并实现功能. 抽象方法:当类中的方法在声明的时候加上 abstract 关键字的时候,他就被我们称为抽象方法(abstract method)。 小天:等等,按照你这种说法,我没觉得有学习这个东西的必要。反 阅读全文

posted @ 2013-01-18 15:10 天轰穿 阅读(433) 评论(0) 推荐(0) 编辑

摘要:小天:上面你说了个用new可以隐藏基类方法,这个怎么说?老田:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员时,该成员的派生版本将替换基类版本。虽然可以在不使用 new 修饰符的情况下隐藏成员,但会生成警告。如果使用 new 显式隐藏成员,则会取消此警告,并记录要替换为派生版本这一事实。小天:哦,明白了,也就是说用virtual修饰的成员还是存在的,只是成为了多态中的一种“态”。而使用new关键字则实实在在是将基类的方法给替换掉了,对吧?老田:是的,若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new 修饰符修饰该成员。例如: public cla 阅读全文

posted @ 2013-01-17 13:13 天轰穿 阅读(345) 评论(0) 推荐(0) 编辑

摘要:老田: 所谓虚成员就是指在基类中申明了方法、属性、索引器或事件,也做一个最简单的处理,但是无法预料在派生类中该方法是否需要被改写。那使用virtual关键字将成员申明为虚成员。这就使它们可以在派生类中被重写。例如,此方法可被任何继承它的类重写。 小天:可以来个比较实际,好用的实例不?你上面的那个汽车类(4.9.1的第二个示例),我想了很久才想到用一个汽车经销商卖车情况来做示例。 老田:好嘛,前面不是写了一个计算面积的类吗?不过那个类太简单了,下面我们做一个可以计算多种形状面积的类库。类关系图如图4-29 图4-29 根据上面的实例,尝试自己先写写,然后在对比下面的代码: //--------- 阅读全文

posted @ 2013-01-16 13:16 天轰穿 阅读(517) 评论(1) 推荐(0) 编辑

摘要:说到虚方法,这就不得不说到C#三大特性中的一个名字最为奇怪的,那就是多态(我也常常把这叫变态)。所谓多态性,就是程序中同一方法对不同类型的变量有不同语义解释的现象。在.NET中,类的多态性主要表现为方法的重写(Overriding)和方法的重载(Overloading)。 重载前面已经讲过了,这里就不再继续。我们先来看下多态的具体概念,接着讲到多态的另外一种实现方法,也就是虚方法以及重写虚方法。多态:面向对象程序设计中的另外一个重要概念是多态性。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。可以把一组对象放到一个数组中,然后调用它们的方法,在这种场合下,多态性作用就体现出来了,这 阅读全文

posted @ 2013-01-15 13:19 天轰穿 阅读(301) 评论(0) 推荐(0) 编辑

摘要:老田:接着来回答你的第三个问题。如何去修改父类中已经写死的方法呢?要回答这个问题之前,我们先来看看下面这几种申明和实例化的方式,判断下对不对 Truct tc = new Truct(); //实例化一个卡车类 Car c = new Truct(); //卡车 是 车 对不对? Truct tc2 = c; //车 是 卡车 对不对?小天:我试着写了下,第二行是对的,但是第三行错误,为什么呢?老田:是的,用任意子类都可以实例化对象去实例化成一个基类型的对象。因为基类型包含了这些子类型。相反,如下代码就有问题了。 Truct tc2 = c; //错误,怎么能说车就是卡车呢?那轿车算什么? / 阅读全文

posted @ 2013-01-14 13:31 天轰穿 阅读(460) 评论(0) 推荐(0) 编辑

摘要:2013蛇年的到来,预示着互联网软件行业又迎来了新的挑战,对于已经进入或者即将进入软件行业的同仁们来说也是一场新的挑战。不论你是学习java,.net,android软件测试 还是UI设计,你都需要在2012这个末日后的2013创造出自己的价值。 职位薪资示意图以上是近几年职位薪资示意图,2013是一个基准点,我们应该如何去挑战蛇年高薪岗位呢?下面我们就来一一推荐:推荐NO.1:【DOT.NET工程师系列】零基础到WinForm应用程序员初级班与传统培训的区别:学习方式灵活:可在线学习,也可下载课程到本地学习,真正做到随时随地学习!性价比最高:仅为传统培训10%... 阅读全文

posted @ 2013-01-11 11:15 天轰穿 阅读(416) 评论(0) 推荐(0) 编辑

摘要:老田:你说的第二个问题:有什么办法让类无法被继承?这个简单得吓死人,因为只需要将一个专用于密封的sealed关键字加在定义类的class关键字前面即可。当对一个类应用 sealed修饰符时,此修饰符会阻止其他类从该类继承。在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承。 class A { } sealed class B : A { }还可以在重写基类中的虚方法或虚属性的方法或属性上使用 sealed修饰符。这将使您能够允许类从您的类继承,并防止它们重写特定的虚方法或虚属性。在下面的示例中,C 从 B 继承,但 C 无法重写在 A 中声明并在 B 中密封的虚函数 F。 阅读全文

posted @ 2013-01-10 13:54 天轰穿 阅读(272) 评论(0) 推荐(0) 编辑

摘要:在上一个实例中,客车和卡车这两个类都用到了一个关键字“base”,用来调用基类的构造函数。 但是事实上base并不是专门用来调用基类构造函数的,base关键字的作用就是在派生类中去访问基类中所有非私有的类成员。 小天:切,骗我的吧,我做上面练习的时候,发现什么都不写也可以访问基类的成员。 老田:如果基类成员被派生类复写或者覆盖了呢?看下MSDN的解释吧:· 调用基类上已被其他方法重写(重写就是在子类中重新创建一个和基类方法的返回类型、方法名、参数完全一样的方法,下面接着讨论)的方法。· 指定创建派生类实例时应调用的基类构造函数。还要注意的是:l 基类访问只能在构造函数、实例 阅读全文

posted @ 2013-01-09 13:21 天轰穿 阅读(286) 评论(0) 推荐(0) 编辑