欢迎大家参加“.net百题问答的活动” ========================= <<C#基础>>

elite2018 2004-05-04 08:51:51
加精
具体规则及建议:
见 http://expert.csdn.net/Expert/topic/2974/2974842.xml?temp=.5148126

汇百家之精华,大家都可以总结常见的问题及经验,提出一些典型问题,并给出答案在后面,但是要确定答案正确(经过实验验证的)。但是自己未解决的问题不要贴在本贴了,否则太长了,同时对答案有不同观点或其他答案的可讨论,最后汇总到一起。

这个活动是否能坚持下去要依赖于大家的共同力量,群策群力,我可以来置顶,答案正确否由大家评判。

1.using System;

class First
{
~First()
{
Console.WriteLine("First's destructor is called");
}
}

class Second: First
{
~Second()
{
Console.WriteLine("Second's destructor is called");
}
}

class Third: Second
{
~Third()
{
Console.WriteLine("Third's destructor is called");
}
}

public class MainClass
{
public static void Main()
{
Third myObject = new Third();
=================================
结果 是?


如果 更改为
public static void Main()
{

Second sobj= new Second();
First fobj =new First();
Third myObject = new Third();

结果?

你可以先想想结果,再比较和编译结果是否相同,看看能否理解, 解释几天后公布 :)

===========我先抛砖引玉,希望下面大家有更好的典型问题 !

...全文
3102 153 点赞 打赏 收藏 举报
写回复
153 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zgq19801123 2004-07-20
up
  • 打赏
  • 举报
回复
yydy 2004-07-19
现在几楼了?
  • 打赏
  • 举报
回复
triout 2004-07-17
呵呵,楼主客气。
  • 打赏
  • 举报
回复
elite2018 2004-07-16
thank you, triout(笨牛)
  • 打赏
  • 举报
回复
zgq19801123 2004-07-16
  • 打赏
  • 举报
回复
triout 2004-07-16
另外,如果把所有的构造函数的内容放置在析构函数中,同时,在First的析构函数的最后添加代码:

OnMyEnter();

执行结果又会如何?
  • 打赏
  • 举报
回复
triout 2004-07-16
一个小错误,代码:

class First
{
public delegate void MyEnterHandler(void);
public event MyEnterHandler MyEnter;
public First()
{
MyEnter+=new MyEnterHandler(MyEnter_Occur);
OnMyEnter();
}
protected void OnMyEnter()
{
if(this.MyEnter!=null)
this.MyEnter();
}

private void MyEnter_Occur()
{
Console.WriteLine("MyEnter Event Occured In First");
}
}


修改为:

class First
{
public delegate void MyEnterHandler(void);
public event MyEnterHandler MyEnter;
public First()
{
MyEnter+=new MyEnterHandler(MyEnter_Occur);
}
public void Enter()
{
OnMyEnter();
}
protected void OnMyEnter()
{
if(this.MyEnter!=null)
this.MyEnter();
}

private void MyEnter_Occur()
{
Console.WriteLine("MyEnter Event Occured In First");
}
}


这样,在实例对象后调用Enter方法,否则……嘻嘻,运行一下,看会有什么结果?
  • 打赏
  • 举报
回复
Cyounger 2004-07-16
gz
  • 打赏
  • 举报
回复
triout 2004-07-15
关于楼主提出的问题,我没有测试,下面是我的分析:

实例一个类,首先应该实例其基类,然后才可以实例自己,否则,没有根,怎么来的子孙?

相同的道理,析构一个实例,应该先析构自己,然后再析构基类,否则,没有了根,皮之不存,毛将焉附?

所以答案:

第一个问题:

third
second
first

的顺序

第二个问题类推。

另外,前面有人提出了构造函数如何,如果把这些代码放置在构造函数中,则刚好相反:

first,second,third



另外,还有一个有趣的东西:事件。

事件是一个很实用的东西,但要用好却不是那么的容易。

首先一个问题:

假如楼主的帖子中对first引入一个事件enter,

class First
{
public delegate void MyEnterHandler(void);
public event MyEnterHandler MyEnter;
public First()
{
MyEnter+=new MyEnterHandler(MyEnter_Occur);
OnMyEnter();
}
protected void OnMyEnter()
{
if(this.MyEnter!=null)
this.MyEnter();
}

private void MyEnter_Occur()
{
Console.WriteLine("MyEnter Event Occured In First");
}
}

class Second:First
{
public Second()
{
MyEnter+=new MyEnterHandler(MyEnter_Occur);
}
private void MyEnter_Occur()
{
Console.WriteLine("MyEnter Event Occured In Second");
}
}

class Third:First
{
public Third()
{
MyEnter+=new MyEnterHandler(MyEnter_Occur);
}
private void MyEnter_Occur()
{
Console.WriteLine("MyEnter Event Occured In Third");
}
}

使用楼主的第一个主程序,运行后,结果如何呢?明显的答案是:

Third
Second
First

这就是事件,但如果……你想改变实用相同的主程序,改变输出顺序,比如希望输出为:

First
Second
Third

代码该如何写?

或者输出结果为:

Third
First
Second

或者结果为:

Second
First
Third

等等呢?

还有,结果为:

First
Third
Second

可能吗?
  • 打赏
  • 举报
回复
triout 2004-07-15
DataGrid的翻页功能非常的好用,可是大家却忽略了系统开支。

要实现DataGrid的翻页,必须获取所有的数据,然后绑定到DataGrid中,这样,如果数据量非常大的话,那系统资源的开销就可想而知了。

因此,建议不要轻易使用DataGrid的翻页功能(WINDOWS应用例外),而使用存储过程来实现页面数据的获取。
  • 打赏
  • 举报
回复
triout 2004-07-15
我也来贴:

数据绑定的最佳时机。

对数据绑定的地方很多,可以在Page_Load中,也可以在用户的PostBack事件操作中,但数据绑定的最佳时机却是在OnPreRender事件中。

这种绑定数据的好处是:不需要多处调用绑定,代码一致性强。在用户的POSTBACK事件修改页码、过滤条件时,只要简单的把过滤条件、页码放到变量中,然后在OnPreRender中使用这些页码、条件获取数据进行绑定。
  • 打赏
  • 举报
回复
elite2018 2004-07-15
next time I suggest to open a topic about NetWork Programming
  • 打赏
  • 举报
回复
hainang1234 2004-07-14
怎么搞的?那个C#的群是假的?!我查了,没有!还有没有人有C#群,我想加。告诉我,OK?
  • 打赏
  • 举报
回复
anantnt203120 2004-07-13
真TM盖了
  • 打赏
  • 举报
回复
superhasty 2004-07-13
不错。
  • 打赏
  • 举报
回复
我骄傲啥呢 2004-07-13
不能回帖了现在.
  • 打赏
  • 举报
回复
wuchangyu 2004-07-12
学习。
  • 打赏
  • 举报
回复
DragonPro 2004-07-12
出现IIs与路径不对的解决办法:
用出现的第二个选项FrontPage扩展打开,或重新设置IIS目录

我打开一个项目但打不开,提示安装程序要添加WEB开发的组件是怎么回事?
--可以这样解决,新建一个空项目,把这个空项目的.csproj文件放在打不开的那个项目里面,最好改一个不同的名字以免覆盖旧的文件点击这个文件,然后在项目里点击显示隐藏文件,把那些需要的文件包含进来就行了,其他的自己看着办就行了.

VC软件包未注册
--只能重装.NET.(官方解释)

用IeWebControls的时候新版替换旧版,出现CS1595错误
分析原因:为什么会出现 "已经在多处定义" 可能还和旧版冲突说明旧版还没清理干净
用新的Microsoft.web.ui.iewebcontrols.dll覆盖旧版本的就行了
http://msdn.microsoft.com/library/default.asp
  • 打赏
  • 举报
回复
qufo 2004-07-12
回楼上。好!
mark一下.
  • 打赏
  • 举报
回复
elite2018 2004-07-12
各位觉得下一议题以 ADO.NET 如何 ?
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2004-05-04 08:51
社区公告

让您成为最强悍的C#开发者