![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c#基础
xmhlmy
这个作者很懒,什么都没留下…
展开
-
out和ref
引用参数ref使用规则:使用引用参数时,必须在方法声明和调用中都是用ref修饰符。实参必须是变量,在用作实参前必须被赋值。如果是引用类型的变量,可以赋值为一个引用或null。 值参数和引用参数的区别:对于值参数,系统在栈上为形参分配内存,就像是复制了一份,所以对于值类型的参数不会改变值。引用参数相当于给变量重新起名字,但是他们指向的是相同的内存位置,是同一个值,所以值会原创 2012-10-09 23:31:37 · 237 阅读 · 0 评论 -
C#中A a=new B()的意义
A a=new B()的意义前提:A是B的父类。A a = new B();或A a;B b=new B();a=b;这一句的过程是这样的,1)创建一个类A的引用a2)创建一个类B的实例3)把类B的引用赋值给a因为A是B的父类,所以,赋值成功。过程:当消息发送到子类并要求以确定的参数调用其中一个方法时:消息的处理如下沿着类链自下而上逐级查转载 2013-03-20 16:26:23 · 641 阅读 · 0 评论 -
C#数组
数组概述C# 数组从零开始建立索引,即数组索引从零开始。C#中数组的工作方式与在大多数其他流行语言中的工作方式类似。但还有一些差异应引起注意。声明数组时,方括号 ([])必须跟在类型后面,而不是标识符后面。在 C#中,将方括号放在标识符后是不合法的语法。int[] table; // not int table[]; 另一细节是,数组的大小不是其类型的一部分,而在 C转载 2013-02-22 16:27:18 · 201 阅读 · 0 评论 -
C#中的interface和abstract class之间的区别
a. interface中不能有字段,abstract class则可以;b. interface可以被多重继承(即可以被多个具体类实现),abstract class则不可以;c. interface中不可能有任何成员方法被实现,abstract class则可以。事实上,一个类中只要有一个成员方法是 abstract的,那么这个类就一定是abstract class,abstr转载 2013-03-07 17:25:23 · 610 阅读 · 0 评论 -
C# 中的委托和事件
引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对转载 2013-01-07 13:58:54 · 189 阅读 · 0 评论 -
C#中的委托和事件(续)
引言如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地方没有涉及。本文将讨论委托和事件一些更为细节的问题,包括一些大家常问到的问题,以及事件访问器、异常处理、超时处理和异步方法调用等内容。为什么要使用事件而不是委托变量?在 C#中的委托和事件 中,我提出了两个为什么在类型中使用事件向外部提供方法注册,转载 2013-01-07 14:00:09 · 175 阅读 · 0 评论 -
C#学习之接口
什么是接口?其实,接口简单理解就是一种约定,使得实现接口的类或结构在形式上保持一致。个人觉得,使用接口可以使程序更加清晰和条理化,这就是接口的好处,但并不是所有的编程语言都支持接口,C#是支持接口的。注意,虽然在概念上,C#接口类似于COM接口,但他们的底层结构是不同的。那么,我们来看一下如何声明和使用接口。 声明接口 声明接口在语法上和声明抽象类完全相同,例如这里有一个银行账转载 2012-12-11 14:15:18 · 200 阅读 · 0 评论 -
虚方法(virtual)和抽象方法(abstract)的区别
虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢?1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。如://抽象方法public abstract class Animal{ public abstract void Sleep(); public abstract void转载 2012-12-11 14:13:09 · 215 阅读 · 0 评论 -
virtual、abstract和interface
virtual标记为virtual的方法,可以有自己的实现,可以在子类中用override重写。abstract标记为abstract的方法,不能有自己的实现,必须在子类中用override重写。类里有abstract,类也必须是abstract。抽象类中不必都是抽象成员。interface接口是没有任何方法的抽象类可以有属性,方法,索引器,不能有字段,不能有实现。原创 2012-10-10 09:23:49 · 170 阅读 · 0 评论 -
readonly和const
readonly作用类似于声明一个字段为const,一旦值被设定就不能改变。 1.const字段只能在字段的声明语句中初始化,不能在声明后给它赋值。而readonly字段可以在字段声明语句中赋值,也可以在类的任何构造函数中赋值(如果是static字段,必须在static构造函数中完成初始化)。 2.const没有自己的存储位置,而是在编译时被编译器替换(const成员表现很像一原创 2012-10-09 23:00:43 · 267 阅读 · 0 评论 -
委托和事件
委托和事件主要用于异步调用。事件调用委托,委托调用方法。委托和事件的区别:1.委托和事件没有可比性。因为委托是类型,事件是属性(对象)。2.标准的event方法实现事件。只能用“+=”注册自己,“-=”注销自己,外界不能有其他操作。但如果用Delegate就没办法控制,外界可以主动触发事件,也可以为null。3.事件是用来阉割委托实例的。委托的应用:1.委托实现事件原创 2012-10-10 09:34:14 · 270 阅读 · 0 评论 -
面向对象的5条基本设计原则
这几天重新看了一遍《大话设计模式》,发现果然有不同的感悟,而且自己也上网找了《敏捷软件开发—原则、模式与实践》一书来看,那本书的序言中有一段话我觉得很有道理:“美的东西比丑的东西创建起来更廉价,也更快捷。”设计一个软件不关要追求代码的优雅问题,更关乎生产成本等。技术大师们在对软件架构的研究中经历了很长时间的摸索,从面向过程到面向对象,从设计原则到设计模式,总结了许多设计上的经典法则,而我们就只是站转载 2013-04-10 15:19:29 · 398 阅读 · 0 评论