惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
The Register - Security
The Register - Security
Stack Overflow Blog
Stack Overflow Blog
博客园 - 三生石上(FineUI控件)
T
Threat Research - Cisco Blogs
S
SegmentFault 最新的问题
V2EX - 技术
V2EX - 技术
Hacker News: Ask HN
Hacker News: Ask HN
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Proofpoint News Feed
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
M
MIT News - Artificial intelligence
AI
AI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
B
Blog
N
News and Events Feed by Topic
N
News | PayPal Newsroom
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
C
Cybersecurity and Infrastructure Security Agency CISA
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
U
Unit 42
腾讯CDC
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Cloudflare Blog
H
Help Net Security
Recent Announcements
Recent Announcements
P
Privacy & Cybersecurity Law Blog
IT之家
IT之家
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Archives - TechRepublic
Security Archives - TechRepublic
L
LINUX DO - 热门话题
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
H
Heimdal Security Blog
博客园 - 聂微东
S
Securelist
大猫的无限游戏
大猫的无限游戏
Cloudbric
Cloudbric
Cisco Talos Blog
Cisco Talos Blog

博客园 - whale

Ajax提交失败,因为输入框带尖括号< listview添加列 - whale - 博客园 局域网中访问xp机器用户名为灰色,不能修改 SQL2005服务启动不了是因为VIA协议启动了 负载测试错误表包含:“未能找到应用阈值规则所需的从属计数器” CString, BSTR, LPCTSTR之间得关系和区别 移动流媒体技术及其应用发展方向(转载) - whale - 博客园 vs2005使用analysis service 项目出现错误尝试读取或写入受保护内存... - whale Excel连接Analysis service2005初始化数据源失败 利用SQL中的递归返回多行数据的连接 SQL Server不能调试存储过程解决方法 文本框放到下拉框上面。 - whale - 博客园 ADO 读取Excel文件数据, 丢失数据或数据错误问题。 最好的.net学习资源 今天开始开发Mobile5.0项目 组件 访问被拒绝 配置错误 不同层的session在timeout后不能跨层访问的原因。 VB运行调试时提示不能修改 .net调试时,计算机调试管理服务被禁用的解决
局部变量的生命周期和委托的关系
whale · 2005-10-28 · via 博客园 - whale

通常,在VB6中,一个在局部变量在这个域外面就会销毁对象,在.NET中,通常也是这样的。
例子,在下面的代码中

public class clsMain
{
public void newListen()
{
  
new clsListen()
}
}


这个函数newListen里面,建立了一个clsListen对象,但没有赋值给任何外部的变量,那么,这个clsListen的实例是不是建立后就销毁了呢。
下面有个例子,这个例子里面一共有3个类,分别是clsMain, sendEvent, clsListen. sendEvent 类有一个静态的事件OnNewEvent, 它的方法ShowNewEvent 里会触发这个事件。

      clsListen类的构造函数中会用处理函数sendEvent_OnNewEvent来侦听sendEvent的OnNewEvent事件。
  clsMain类中有个方法,在这个newListen方法中创建一个clsListen的实例。
再看下面代码:

 1public class sendEvent
 2{
 3public static event System.EventHandler OnNewEvent;
 4        public static void ShowNewEvent(object sender,System.EventArgs e)
 5        {
 6            if(null !=OnNewEvent)
 7            {
 8                OnNewEvent(sender,e);
 9            }

10
11        }
 
12}

13    public class ClsListen
14    {
15        private int _instance;
16        public static int sInt;
17        public ClsListen()
18        {
19            //
20            // TODO: 在此处添加构造函数逻辑
21            //
22            _instance=0;
23        //'    sendEvent.OnNewEvent +=new EventHandler(sendEvent_OnNewEvent);
24        }

25        public void sendEvent_OnNewEvent(object sender,System.EventArgs e)
26        {
27            _instance+=1;
28            sInt++;
29            System.Windows.Forms.MessageBox.Show(_instance.ToString());
30        }

31    }

在上面的代码中,clsListen的实例是在clsMain的一个方法里创建的。创建后是否会销毁呢。那我们再重看看clsMain类,我在这个类的构造函数里面这样写:
public class clsMain
{
 public clsMain()
  {
      newListen()
      sendEvent.showNewEvent()

  }
public void newListen()
{
  
new clsListen()
}
在上面代码中,clsMain先在newListen中创建一个clsListen, 这个clsListen实例是在函数里面的。那照理它应该接着就会销毁了。在接着的语句中会触发一个sendEvent 的事件。

运行以上的代码(还需要在某个main()函数来启动程序并先实例clsMain类。你会发现运行结果是进入了listen的事件处理程序。那就是说,这个listen的实例是真确存在的。

   以后我会讨论对象侦听普通类事件对对象生命周期的影响。怎样才能撤掉这些对象等等。
第一次写东西,希望大家不吝指教以后我会努力写得更简洁完善。