简介:ref和out是C#开发中经常使用的关键字,所以作为一个.NET开发,必须知道如何使用这两个关键字.1、相同点ref和out都是按地址传递,使用后都将改变原来参数的数值。2、ref关键字(1)、使用ref关键字的注意点i、方法定义和调用方法都必须显式使用 ref 关键字ii、传递到 ref 参数的参数必须初始化,否则程序会报错iii、通过ref的这个特性,一定程度上解决了C#中的函数只能有...点击进入阅读全文

运算符重载允许为运算指定用户定义的运算符实现,其中一个或两个操作数是用户定义的类或结构类型。用户定义的运算符实现的优先级总是高于预定义运算符实现:仅当没有适用的用户定义运算符实现时才会考虑预定义运算符实现。
运算符可重载性
+、-、!、~、++、--、true、fals可以重载这些一元运算符。true和false运算符必须成对重载。
+、-、*、/、%、&、|可以重载这些二元运算符。
==、!=、<、&...
点击进入阅读全文

explicit和implicit关键字分别表示显式的类型转换和隐式的类型转换。explicit 和 implicit 属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换。explicit 表示显式转换,如从 A -> B 必须进行强制类型转换(B = (B)Aimplicit 表示隐式转换,如从 B -> A 只需直接赋值(A = B隐式转换可以让我们的代码看上去更漂亮、更简洁易懂...点击进入阅读全文

装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。1. 装箱在值类型向引用类型转换时发生2. 拆箱在引用类型向值类型转换时发生光上述两句话不难理解,但是往深处了解,就需要一些篇幅来解释了。我们先看装箱时都会发生什么事情,下面是一行最简单的装箱代码
object obj = 1;
这行语句将整型常量1赋给object类型的变量obj; 众所周知常量1是值类型,值类型是要放在栈上的,而object是...点击进入阅读全文

c#中的值类型和引用类型

众所周知在c#中有两种基本类型,它们分别是值类型和引用类型;而每种类型都可以细分为如下类型

1、什么是值类型和引用类型

什么是值类型

进一步研究文档,你会发现所有的结构都是抽象类型System.ValueType的直接派生类,而System.ValueType本身又是直接从System.Object派生的。根据定义所知,所有的值类型都必须从System.ValueType派...点击进入阅读全文

1、为什么需要扩展方法


.NET3.5给我们提供了扩展方法的概念它的功能是在不修改要添加类型的原有结构时,允许你为类或结构添加新方法。思考:那么究竟为什么需要扩展方法呢,为什么不直接修改原有类型呢?首先,假设我们的项目中有一个类,后来过了一段时间,我们明确的知道需要为该类添加一个新功能,考虑这个需求有两个解决办法(1)直接修改当前类的定义这样做的缺点是,破坏向后的兼容性,可能以前使用的旧代码无法...点击进入阅读全文

数据成员数据成员可以分静态变量、实例变量两种.静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量(是一个共性的表现),他不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问.实例成员:实例成员变量是和对象相关联的,访问实例成员变量依赖于实例的存在.函数成员方法可以主要分为静态方法,实例方法静态方法:静态方法是不属于特定对象的方法,静态方法可以访问静态成员变量,静态方法...点击进入阅读全文

接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同"是什么" 部分,派生类定义了语法合同"怎么做" 部分。接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。接口使得实现接口的类或结构在形式上保持一致。抽象类在某种程度上与接口类似,但是,它们大多只是用在当只有少数方法由基类声明由派生类实现时。

定义接口: MyInterface.c...

点击进入阅读全文

并不是所有的类都可以被继承,不能继承的类称为密封类,用关键字sealed。适用场合如果要对库、类或自己编写的其他类进行操作,则重写某些功能会导致编译错误。因为商业原因把类或方法标记为sealed,以防第三方以违反注册协议的方式扩展该类。注意密封类中不能包含虚方法(Virtual)和抽象方法(abstract),因为在密封的类没有为派生类提供实现其虚方法和抽象方法的机会。在把类或方法标记为sea...点击进入阅读全文

在C#语言中有一种特殊的基类,那就是抽象类。有时候,基类并不与具体的事物联系,而是只是表达一种抽象的概念,用于为它的派生类提供一个公共的界面。为此,C#中引入了抽象类和抽象方法的概念。
为什么需要抽象类和抽象方法?我们知道,接口可以包含方法的申明和属性,但是方法中不包含代码,实现这个接口的方法必须包含接口中的所有方法和属性,但是现在出现这种情况,假设需要一个“接口”,要求类实现某些方法和属性,但是需...点击进入阅读全文