- 浏览: 276193 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
weituotian:
这篇文章真的很好阿
C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值 -
clshuai:
博主,你好,看了你的这篇文章,让我很敬佩。可谓内容之全,涵盖范 ...
C#操作Excel -
devilhand:
DataGridView刷新数据的问题 -
devilhand:
DataGridView刷新数据的问题 -
devilhand:
DataGridView刷新数据的问题
(1)不带参数的构造函数称为“默认构造函数”。无论何时,只要使用 new 运算符实例化对象,并且不为 new 提供任何参数,就会调用默认构造函数。
(2)派生类可以显示调用基类的构造函数。用户不能显示调用构造函数
(3)先执行基类的构造函数,再执行派生类的构造函数。
(4)在派生类中,如果不使用 base 关键字来显式调用基类构造函数,则将隐式调用默认构造函数(如果有的话)。
(5)如果在基类中有自己写的构造函数,系统就不会调用基类默认的构造函数,若在派生类中没有显式的指定基类的构造函数,此时就会出错,需要在基类中,添加基类默认的构造函数。
可以得到的结论是 先调用父类的构造函数进行初始化,再调用继承类的构造函数,如果没有在继承类中指明父类的构造函数,则默认调用父类中没有参数的构造函数,然后调用继承类的构造函数
(6)构造函数可以使用 this 关键字调用同一对象中的另一构造函数
/*********************************************************************** * 调用默认的构造函数 ************************************************************************/ using System; class A { public A() { }//可省略,系统会自动添加 } class C { static void Main(string[] args) { //此时,系统自动调用A(),初始化A的变量 A a = new A(); } }
(2)派生类可以显示调用基类的构造函数。用户不能显示调用构造函数
/*********************************************************************** * 派生类可以显示调用基类的构造函数。用户不能显示调用构造函数 ************************************************************************/ using System; class A { public A() { } } class B:A { public B():base (){}//显示调用基类的构造函数 } class C { static void Main(string[] args) { A a = new A(); //错误,用户不能显示调用构造函数。构造函数是由系统根据实例化时的参数自动调用的。 a.A(); } }
(3)先执行基类的构造函数,再执行派生类的构造函数。
/*********************************************************************** * 实例化时先执行基类A的构造函数,再行B类的构造函数 ************************************************************************/ using System; class A { public A() { Console.WriteLine("这是A的构造函数"); } } class B:A { public B() { Console.WriteLine("这是B的构造函数"); } } class C { static void Main(string[] args) { B b = new B (); } }
(4)在派生类中,如果不使用 base 关键字来显式调用基类构造函数,则将隐式调用默认构造函数(如果有的话)。
/*********************************************************************** * 在派生类中,如果不使用 base 关键字来显式调用基类构造函数,则将隐式调用默认构造函数。 ************************************************************************/ using System; class A { public A() { Console.WriteLine("这是A的构造函数"); } public A(int i) { Console.WriteLine("这是A的有参构造函数"); } } class B:A { public B() { Console.WriteLine("这是B的构造函数"); } } class C { static void Main(string[] args) { //派生类B中,没有指定基类A的构造函数。此时先调用A的默认构造函数,再调用B的构造函数 B b = new B (); } }
(5)如果在基类中有自己写的构造函数,系统就不会调用基类默认的构造函数,若在派生类中没有显式的指定基类的构造函数,此时就会出错,需要在基类中,添加基类默认的构造函数。
/*********************************************************************** * 基类A中有自己写的有参构造函数(系统不再提供默认的构造函数), * 派生类B中没有指定A的构造函数,此时系统会寻找基类A的默认构造函数,因此会 * 出错。(提示:A中不包含0个参数的构造函数) * ************************************************************************/ using System; class A { public A(int i) { Console.WriteLine("这是A的有参构造函数"); } } class B:A { public B() { Console.WriteLine("这是B的构造函数"); } } class C { static void Main(string[] args) { //出错,A中不包含0个参数的构造函数 B b = new B (); } }
/*********************************************************************** * 派生类B中指定了基类A的构造函数,不会出错 ************************************************************************/ using System; class A { public A(int i) { Console.WriteLine("这是A的有参构造函数"); } } class B:A { public B() :base(1) { Console.WriteLine("这是B的构造函数"); } } class C { static void Main(string[] args) { //派生类B中指定了基类A的构造函数,不会出错 B b = new B (); } }
/*********************************************************************** * 派生类中不指定基类的构造函数而为基类添加默认的构造函数,不会出错 ************************************************************************/ using System; class A { public A() { Console.WriteLine("这是A的构造函数"); } public A(int i) { Console.WriteLine("这是A的有参构造函数"); } } class B:A { public B() { Console.WriteLine("这是B的构造函数"); } } class C { static void Main(string[] args) { //派生类B中指定了基类A的构造函数,但为基类添加默认的构造函数,不会出错 B b = new B (); } }
可以得到的结论是 先调用父类的构造函数进行初始化,再调用继承类的构造函数,如果没有在继承类中指明父类的构造函数,则默认调用父类中没有参数的构造函数,然后调用继承类的构造函数
(6)构造函数可以使用 this 关键字调用同一对象中的另一构造函数
/*********************************************************************** * 使用this可以调用同一类中另一个构造函数 ************************************************************************/ using System; class A { public A():this("abc") { Console.WriteLine("这是A无参数的构造函数"); } public A(string s) { Console.WriteLine("这是A有一个参数的构造函数"); } } class B:A { public B() { Console.WriteLine("这是B的构造函数"); } } class C { static void Main(string[] args) { //先执行A中有一个参数的构造函数,再执行A中无参数的构造函数,最后执行B的构造函数 B b = new B (); } }
发表评论
-
C#获取本地IP
2012-06-06 14:39 888/// <summary> ... -
只能启动单个程序
2012-05-04 12:51 783bool ret; System. ... -
.Net控件命名规范
2012-04-25 14:45 772<!--------------A----------- ... -
DataGridView绑定数据时,时间格式显示不全的问题
2012-04-25 13:54 991DataGridView绑定数据时,时间格式显示问题 今天做 ... -
把Dgv的颜色改回默认颜色
2012-04-25 13:35 924dgv.Rows[i].DefaultCellStyle.Ba ... -
Winform 去掉 最大化 最小化 关闭按钮 保留左侧图片
2012-04-23 17:02 1144using System; using System.Col ... -
禁用窗体的关闭按钮
2012-04-23 16:58 838[DllImport("USER32 ... -
c#中用声音提示报警
2012-03-14 09:51 1700using System; using System.Ru ... -
WinForm 查看控制台输出
2012-02-15 10:39 1271/// <summary> ... -
C# 启动外部程序的几种方法
2011-10-17 19:15 7211. 启动外部程序,不等待其退出。2. 启动外部程序,等待其退 ... -
解决VS2005不能调试线程问题
2011-08-12 12:33 2370昨天突然VS2005不能调试线程,网上找了很多方法都不行,后来 ... -
通过域名获取IP的两种方法
2011-07-16 15:09 1814//每次都去Dns服务器上 ... -
执行命名行命令
2011-07-16 14:41 682/// <summary> / ... -
获取指定目录下所有文件
2011-07-01 20:48 1454命名空间 using System.Collections; ... -
C#控制Excel的打印格式
2011-06-22 20:54 3696Excel.Application appExcel=n ... -
C#操作Excel
2011-06-22 14:28 1583using System; using System. ... -
C# 操作Excel的类
2011-06-22 14:20 1332using System; using Micro ... -
DataGridView刷新数据的问题
2011-06-21 11:39 41961、操作:UI线程修改数据后重新绑定dgv,一个后台线程定时刷 ... -
VS2005水晶报表注册码
2011-06-18 13:40 7036707437608 -
按Enter键时,焦点移到下一个控件
2011-06-18 10:06 1209#region 按Enter键时,焦点移 ...
相关推荐
描述继承中子类与父类构造函数,静态块的执行顺序
本文实例讲述了C#静态构造函数用法。分享给大家供大家参考。具体如下: 当我们想初始化一些静态变量的时候,就需要用到静态构造函数了。这个静态构造函数属于类,而不属于实例,就是说这个构造函数只会被执行一次,...
详细介绍了构造函数、复制构造函数、拷贝构造函数之间的区别
每个类都具有构造函数和析构函数。其中,构造函数在定义对象时被调用,析构函数在对象释放时被调用。如果用户没有提供构造函数和析构函数,系统将提供默认的构造函数和析构函数。 1.构造函数 构造函数是一个与类同名...
当我们想初始化一些静态变量的时候,需要用到静态构造函数了。这个静态构造函数属于类,而不属于实例,是说这个构造函数只会被执行一次,即:在创建第一个实例或引用任何静态成员之前,由.NET自动调用。 现在碰到...
构建一个类Point,它提供两个公有的构造函数,一个没有参数的Point构造函数和一个有两个double参数的构造函数。另外在该类中提供一个静态方法计算两个点的直线距离,传入参数为两个Point类实例。然后设计一个测试类...
子类如果有多个构造函数的时候,父类要么没有构造函数, 让编译器自动产生,那么在执行子类构造函数之前先执行编 译器自动产生的父类的缺省构造函数;要么至少要有一个显 式的缺省构造函数可以让子类的构造函数调用...
问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。 2. 从使用角度,虚函数主要用于在信息不全的情况下,能使...
c#析构构造函数c#析构构造函数c#析构构造函数c#析构构造函数
构造函数与默认构造函数的声明、定义、应用、比较
本程序包含构造函数和析构函数,可以把构造函数和析构函数的作用区分开
本篇文章主要是对C#中静态构造函数的几点说明进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
C++\测试 对象成员构造函数、基类构造函数、派生类本身的构造函数 的先后顺序.rar
C++ 拷贝构造函数 赋值构造函数 解释
map使用std::map, CArray,int> > 错误, 解决: 重写CArray, 重载构造函数并加const 添加操作 operator =
包含默认构造函数 初始化构造函数 复制构造函数 转换构造函数
C++ 默认构造函数C++ 默认构造函数C++ 默认构造函数C++ 默认构造函数C++ 默认构造函数C++ 默认构造函数C++ 默认构造函数C++ 默认构造函数C++ 默认构造函数C++ 默认构造函数C++ 默认构造函数C++ 默认构造函数
C++简单类的实现,包括构造函数,析构函数以及拷贝构造函数
3、请设计一个拷贝构造函数,实现将参数的值全部传递给当前对象,同时输出“拷贝构造函数被调用” 4、请设计一个析构函数,同时输出“析构函数被调用” 5、设计一个成员函数 int dayDiff(CTime t) ,用于计算...
《Visual C++2012入门经典(第6版)》实例,在派生类的构造函数中调用基类的构造函数