随笔分类 - C#
摘要:一个类继承了它的基类提供的所有接口的实现。如果不显式地重新实现接口,派生类就无法改变从基类中继承来的接口映射。using System; interface IControl{ void Paint();} class Control:IControl{ public void Paint() { Console.WriteLine("Control invoke!"); }} cla...
阅读全文
摘要:在派生类中使用修饰符的属性,表示对基类中的同名属性进行重载。 在重载的声明中,属性的名称、类型、访问修饰适用地区都应该与基类中被继承的属性一致。 如果基类的属性只有一个属性访问器,重载后的属性也应只有一个。但如果基类的属性同时包含get和set属性访问器,重载后的属性可以只有一个,也可以同时有两个属性访问器。
阅读全文
摘要:using System;class Team{ string[] s_name = new string[8]; public string this[int nIndex] { get { return s_name[nIndex]; } set { s_name[nIndex] = val...
阅读全文
摘要:const型表达式的值在编译时形式,而static readonly表达式的值直到程序运行时才形式。
阅读全文
摘要:C#中,下列操作符可以重载:+ - ! ~ ++ 00 true false* / % & | ^ > == != > = <=下列操作符是不允许进行重载的:= && || ?: new typeof sizeof is// 操作符重载演示using System;class Player{ public int neili; public int tili; public in...
阅读全文
摘要:如果形参表中包含了数组型能数,那么它必须在参数表中位于最后。另外,参数只允许是矩阵型。数组型参数不能再有ref和out修饰符。// 数组参数演示using System;class Test{ static void F(params int[] args) { Console.WriteLine("Array contains {0} elements:", arg...
阅读全文
摘要:一个类的构造函数通常与类名相同。 构造函数不声明返回类型。 一般地,构造函数总是public类型的。如果是private类型的,表明类不能被外部类或对象实例化。常用于Sington模式。也常用于只含有静态成员的类,此情况下类一般还要加一个sealed修饰符。 在构造函数中不要做对类的实例进行初始化以外的事情,也不要尝试显式地调用构造函数。 感谢muddle的提点!
阅读全文
摘要:1、typeof操作符: 获得系统原型对象的类型。如:type(int)2、as操作符 as操作符用于通过引用转换或装箱转换将一个值显式地转换成指定的引用类型,不像显示式类型转换,as不会产生任何异常。如果转换不可以进行,那么结果值为null。如 string s = 'a' as string;3、is操作符 is操作符被用于动态地检查运行时对象类型是否和给定的类型兼容。如:1 is in...
阅读全文
摘要:C#中提供System.Array类是所有数组类型的基类。在C#中数组可以是一维的,也可以是多维的,同样也支持矩阵和参差不齐的数组。using System;delegate int MyDelegate(); //声明一个代表class Test{ static void Main() // 可动态生成数组的长度 { string[] a1; // 一维string数组...
阅读全文
摘要:C#语言中取消了指针这个概念。当然,也可以在C#中使用C#,但必须声明这段程序是“非安全(unsafe)”。在C#中,使用代表(delegate)来相当于C#中函数指针原型。代表在C#中是安全的。在声明代表时,只需要指定代表指向的原型的类型。public class MyClass{ public int InstanceMethod() { Console.WriteL...
阅读全文
摘要:在困惑了两天两夜,使用google搜索了所有能搜到的相关错误信息的网页,始终未果。把XP所有的补丁打了几遍,把XP重装两遍,俄版的,大上海版的。又装了windows server 2003,还是报如下错误:[03/19/04,13:42:05] Visual Studio .NET Enterprise Architect 2003 - CHS: [2] ERROR: 内部错误 2337。[03/...
阅读全文
摘要:循环变量由类型和标识符声明,且表达式与收集相对应。循环变量代表循环正在为之运行的收集元素。不能赋一个新值给循环变量,也不能把它当作ref 或out 参数。这样引用在内含语句中被执行的代码。 类支持foreach 语句,类必须支持具有GetEnumerator()名字的方法,而且由其所返回的结构、类或者接口必须具有public方法MoveNext() 和public 属性Current。
阅读全文
摘要:abstract——说明一个方法或存取标志不能含有一个实现。它们都是隐式虚拟,且在继承类中,必须提供override关键字。const——这个修饰符应用于域成员或局部变量。在编译时常量表达式被求值,所以,它不能包含变量的引用。event ——定义一个域成员或属性作为类型事件。用于捆绑客户代码到类的事件。extern——告诉编译器方法实际上由外部实现。override——用于改写任何基类中被定义为v...
阅读全文
摘要:new——仅允许在嵌套类声明时使用,表明类中隐藏了由基类中继承而来的,与基类中同名的成员。internal——只有对包.Net中的应用程序或库才能访问。abstract——关于抽象类的重要一点就是它不能被实例化。只有不是抽象的派生类才能被实例化。派生类必须实现抽象基类的所有抽象成员。不能给抽象类使用sealed 修饰符。sealed——密封类不能被继承。使用该修饰符防止意外的继承,在.NET框架中...
阅读全文
摘要:把客户代码关联到类通知的办法——使用事件 using System; // 向前声明public delegate void EventHandler(string strText); class EventSource{ public event EventHandler TextOut; public void TriggerEvent() { if (nul...
阅读全文
摘要:有两种途径揭示类的命名属性——通过域成员或者通过属性。前者是作为具有公共访问性的成员变量而被实现的;后者并不直接回应存储位置,只是通过存取标志(accessors)被访问。 当你想读出或写入属性的值时,存取标志限定了被实现的语句。用于读出属性的值的存取标志记为关键字get,而要修改属性的值的读写符标志记为set。 using System; public class House{ priva...
阅读全文
摘要:重定义方法的一个不同手段就是要屏蔽基类的方法。当从别人提供的类派生类时,这个功能特别有价值。 具有了修饰符new,你就可以告诉编译器,不必重写派生类或改变使用到派生类的代码,你的方法就能屏蔽新加入的基类方法。 class BaseClass{ public void TestMethod() { Console.WriteLine("BaseClass::TestMeth...
阅读全文
摘要:基类中,virtual 关键字设计方法:virtual void CanBOverridden()当从基类派生时,所有你要做的就是在新方法中加入override关键字:override void CanBOverridden() 调用基类实现 dArea = base.ComputeArea(a,b,c);
阅读全文
摘要:传递参数可以把它设作一个输出参数。正如该名字所暗示,一个输出参数仅用于从方法传递回一个结果。它和引用参数的另一个区别在于:调用者不必先初始化变量才调用方法。 using System; public class SquareSample{ public void CalcSquare(int nSideLength, out int nSquared) { nSquare...
阅读全文