程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 委托 作用域-請教關於作用域和委托的問題(附MSDN示例)

委托 作用域-請教關於作用域和委托的問題(附MSDN示例)

編輯:編程綜合問答
請教關於作用域和委托的問題(附MSDN示例)

MSDN中使用回調方法檢索數據的案例
https://msdn.microsoft.com/zh-cn/library/ts553s52(v=vs.110).aspx

using System;
using System.Threading;

public class ThreadWithState
{
    private string boilerplate;
    private int value; 
    private ExampleCallback callback;     

    public ThreadWithState(string text, int number, ExampleCallback callback)
    {
        boilerplate = text;
        value = number;
        this.callback = callback; 
    }    

    public void ThreadProc()
    {
        Console.WriteLine(boilerplate, value);
        if (callback != null) 
            callback(1);
    }
}

public delegate void ExampleCallback(int lineCount);

public class Example
{
    public static void Main()
    {        
        ThreadWithState tws = new ThreadWithState(  "This report displays the number {0}.",42, new ExampleCallback(ResultCallback) ); 

        Thread t = new Thread(new ThreadStart(tws.ThreadProc));
        t.Start();
        Console.WriteLine("Main thread does some work, then waits.");
        t.Join();
        Console.WriteLine( "Independent task has completed; main thread ends.");  
    }    

    public static void ResultCallback(int lineCount)
    {
        Console.WriteLine(   "Independent task printed {0} lines.", lineCount); 
    }
}

問題1:public delegate void ExampleCallback(int lineCount);這個語句,不在主程序中,也沒有包含在其他的類中,為什麼可以這樣寫?不是說“所有可執行的 C# 代碼都必須包含在類中”嗎?為什麼ExampleCallback在public class ThreadWithState{}類中是可見的?
問題2:如果 t.Start()很快就執行完了,那麼 t.Join()是否還會起作用?

最佳回答:


問題1補充:為什麼ExampleCallback在public class ThreadWithState{}類中是可見的?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved