控件操作
摘要:A、 在设计界面时,常常遇到这样的困惑:在一定大小的窗体上,控件布局良好,然而当用户将窗体的大小改变后,界面就变得不堪入目了。 · 停靠 停靠是指控件具有停靠在窗体某一边上的能力,无论窗体的大小怎么变化,控件总是会自动调整大小和位置以保持停靠不变。通过设置控件的Dock属性,就可以使得该控件具有停靠能力了,Dock属性的设置有些特别,是一种非常直观的方式。通过设置D...
阅读全文
posted @
2006-04-13 16:43
sopper
阅读(547)
推荐(0)
接口
摘要:接口类似于类,它可以包含方法、属性、事件和索引器,但是接口中只有成员的声明,接口本身不提供对它所声明的成员的实现。例如,在接口中只有方法的声明,而没有定义方法体,这一点与抽象类中的抽象方法类似。 一个接口定义一个协定,实现某接口的类或结构须遵守该接口定义的协定。例如,某个接口定义了两个方法,则要实现该接口的类必须定义这两个方法的实现,即编写它们的方法体。 例: using System;...
阅读全文
posted @
2006-04-13 16:41
sopper
阅读(481)
推荐(0)
结构
摘要:在C#中,结构可以看做是简化了的类。结构基本与类相同,也可以有属性、方法、构造函数等成员,但结构更适用于定义单纯的数据结构。例如,定义一个点的坐标。 结构声明使用关键字struct 在使用结构时需要注意: 1、 不能为结构定义无参数的构造函数。总是使用默认构造函数以将结构成员初始化为它们的默认值。 2、 不能在声明字段时为字段赋值,而是要在带参数的构造函数中初始化它们的值。 3、 结构不支持继承。...
阅读全文
posted @
2006-04-13 16:39
sopper
阅读(463)
推荐(0)
索引器
摘要:C#通过提供索引器(indexer),使得用户可以像处理数组一样对对象使用下标。索引器为我们提供了通过索引方式访问类的数据的方法。例: using System; namespace suoyinqi{ class Vector { private double x,y,z; public double this[int i]//定义索引器,使得可以使用数...
阅读全文
posted @
2006-04-13 16:38
sopper
阅读(543)
推荐(0)
运算符重载
摘要:C#中预定义的运算符的操作对象只能是基本数据类型。实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C#中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。 运算符重载实质上是函数重载。在表达式中,使用运算符表示法(即符号)来引用运算符,而在声明中,使用函数表示法来引用运算符。 运算符重载是通过创建运算符函数来实现的,运算符函数定义了...
阅读全文
posted @
2006-04-13 16:37
sopper
阅读(671)
推荐(0)
事件
摘要:事件是windows编程中很重要的一个概念。 在事件通信机制中,事件发送方不知道哪个对象或方法将接收到它引发的事件以及进行什么样的响应,它只是将“事件发生了”这个消息广播出去。 在C#中,事件机制是借助委托来实现的,我们可以通过实例来认识事件。 如同字段、属性、方法等一样,事件也是类的成员。 关键字event用来定义事件,并且在定义事件时,要使用到事先定义好的一个委...
阅读全文
posted @
2006-04-13 16:36
sopper
阅读(501)
推荐(0)
多点委托
摘要:多点委托 前面使用的委托只代表一个方法,下面来看看多点委托,就是一个委托代表多个方法,调用多点委托时,所代表的所有方法将按顺序依次调用。 MyDelegate d1 = new MyDelegate(MyClass.Square); MyDelegate d2 = new MyDelegate(MyClass.Cube); MyDelegate d3 = new MyDelegate(MyCl...
阅读全文
posted @
2006-04-13 16:33
sopper
阅读(327)
推荐(0)
委托与事件
摘要:委托与事件 1、委托 通过委托能够实现 把方法做为参数传递给另一个方法。如多线程 委托的使用方式和类的使用很相似。定义委托的位置和类一样,既可将其直接定义在名称空间之下,也可定义在某个类中。 委托的定义没有方法体,是用关键字delegate来表明它是一个委托,也可以在委托定义中使用访问修饰符public、private、protected等。 所有定义的委托都是...
阅读全文
posted @
2006-04-12 16:47
sopper
阅读(518)
推荐(0)
构造函数的执行序列
摘要:构造函数的执行序列 在实例化一个类时,会一直追溯到这个类继承层次中最上层的类,即System.Object类,首先执行Object类的构造函数,然后从上至下依次执行继承层次中各类的构造函数。 实例化子类时,先从最上一级的父类开始实例,最后实例这个子类。 例: using System; namespace gouzaohanshuzxxl { ...
阅读全文
posted @
2006-04-12 16:46
sopper
阅读(281)
推荐(0)
静态构造函数
摘要:静态构造函数 前几节所介绍的都是实例构造函数,其只有在使用new关键字创建类的实例时才调用,仅仅声明一个类而不实例化它,则不会调用。 也可为类提供静态构造函数,其在不需实例化类的情况下就能自动调用。需要静态构造函数的主要日目的是初始化静态变量的值。 注意,静态构造函数没有访问修饰符,其他C#代码从来不显式调用它,只是在加载类时,总是山由.net运行时调用它,所以像pub...
阅读全文
posted @
2006-04-12 16:45
sopper
阅读(352)
推荐(0)
构造函数
摘要:构造函数 构造函数是类的一种特殊方法,它的特殊性主要体现在如下几方面: l 构造函数的方法名和类名相同; l 构造函数没有返回类型; l 构造函数的主要作用是完成对类对象的初始化工作; l 在创建一个类的新对象时,系统会自动调用该的构造函数初始化新对象; C#的类有两种构造函数:实例构造函数和静态构造函数。 实例构造函数...
阅读全文
posted @
2006-04-12 16:44
sopper
阅读(2478)
推荐(0)
外部方法
摘要:外部方法 C#引入了extern修饰符来表示外部方法,外部方法是用C#以外的语言实现的方法,例如win32 API 函数。 API(Application Programming Interface)是Windows应用编程的接口例:using System; using System.Runtime.InteropServices; //在C#中调用API函数,首先必须导入一个N...
阅读全文
posted @
2006-04-12 16:43
sopper
阅读(451)
推荐(0)
调用方法的基类版本
摘要:调用方法的基类版本 在上面的方法隐藏和重写中,我们总是在派生类中重新定义了方法的功能,但有时我们希望派生类中的方法除了完成其基类版本可以完成的各种工作外,还要完成其他的工作。这时就有可能需要在派生类的方法重写中调用该方法的基类版本,使用关键字base就可以做到这一点。 例: using System;namespace diaoyongfangfajlbb{class Class1 { ...
阅读全文
posted @
2006-04-12 16:38
sopper
阅读(329)
推荐(0)
方法的重写
摘要:方法的重写 方法重写是实现多态机制的一种方式。 方法重写:例如,如果我们针对汽车、飞机、轮船等交通工具编程时,其有共同的地方,如都可以启动,我们就可以将这些共同的东西封装在一个基类中,然后在派生类中针对具体的情况重写各自的启动方法。 1 要使基类方法可以被派生类重写,需要在方法的声明中加上关键字 virtual.这种方法称为虚拟方法。同进,在派生类中,重...
阅读全文
posted @
2006-04-12 16:37
sopper
阅读(1010)
推荐(0)
方法隐藏
摘要:方法隐藏 在派生类中定义一个与基类方法同名的方法,并不会引发错误,而是派生类中的方法隐藏了基类中的同名方法。实际上,我们常常不希望隐藏方法,因为隐藏方法后,可能导致出现不期望的结果。如下面:语句MyClass c2 = new MySubClass()创建了一个MySubClass类的实例,但是使用c2.Hello()输出的却是“Hello,MyClass!”,而不是“He...
阅读全文
posted @
2006-04-12 16:36
sopper
阅读(438)
推荐(0)
静态方法
摘要:静态方法 C#的类中可以包含两种方法:静态方法和非静态方法。 使用了static 修饰符的方法为静态方法,反之则是非静态方法。 静态方法是一种 特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例,而是采用类名.静态方法的格式 。 下面是一个使用静态方法的例子 using System; namespace study1214 { ...
阅读全文
posted @
2006-04-12 16:34
sopper
阅读(319)
推荐(0)
方法的重载
摘要:方法的重载 方法重载的完整定义是:可以在一个类中定义多个同名方法,这些方法通过不同的参数类型或者参数个数来区分。注意,不能仅仅通过返回值类型的不同来定义多个方法。 下面是一个例子,有一个问题是:怎样通过参数来调用方法? using System; namespace ffcz121 { class Class1 { [STAThr...
阅读全文
posted @
2006-04-12 16:34
sopper
阅读(242)
推荐(0)
数组参数
摘要:数组参数 如果形参表中包含了数组型参数,那么它必须在参数表中位于最后,另外允许是一维数组。数组型参数不能用ref 和out 修饰符。 下面是一个例子,在这个例子中我遇到两个问题: 1. params关键字的功能 2. 怎么样把输入的数字 做为数组使用 using System; namespace study121 { /// /// Class...
阅读全文
posted @
2006-04-12 16:33
sopper
阅读(323)
推荐(0)
共同学习C#
摘要:和大家共同学习C#,拿自己的学习笔记和大家分享,还请大家多多指教。 概念性的东西: 执行一个程序,必然就产生一个进程,执行程序码是线程的工作,当一个进程建立起来,主线程也就产生,所以每一个windows程序一开始就有了一个线程,线程是CPU分配时间的单位,所谓工作切换其实就是对线程的context的切换。 进程:表示一个执行中的程序; 线程:是CPU调试单位; 强类型:每一个变量都将有一个精确...
阅读全文
posted @
2006-04-12 16:30
sopper
阅读(211)
推荐(0)