none
變數 '<variable name>' 尚未宣告或沒有指派的問題 RRS feed

  • 問題

  • 我製作了一個表單,在設計的畫面。原本都可以看到,但在程式碼中加了下列四行後,會出現
    "變數名稱 'm_BoardcastTimerDelegate' 尚未宣告或沒有指派。 ",測試後發現是在第四行的問題,msdn中說要解決此問題請宣告或指派錯誤訊息中指示的變數。但我這樣寫有宣告了吧?而指派的話應該是要怎麼指派它呢?
    (ps...程式可執行)
    在外面宣告
    private System.Threading.TimerCallback m_BoardcastTimerDelegate;
    private System.Threading.Timer m_BoardcastTimer;
    在方法中
    m_BoardcastTimerDelegate = new TimerCallback(BoardcastTimer_Tick);
    m_BoardcastTimer = new System.Threading.Timer(m_BoardcastTimerDelegate, null, 0, 35);
    2011年8月17日 上午 06:15

解答

  • 如果是在物件內的成員變數,建議使用 this 來指定。

    this.m_BoardcastTimerDelegate = new TimerCallback(BoardcastTimer_Tick);

    但如果連 this 都找不到,那你要檢查你的方法是不是 static method


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure
    • 已標示為解答 TSWAL 2011年8月17日 上午 06:36
    2011年8月17日 上午 06:23
    版主

所有回覆

  • private System.Threading.TimerCallback m_BoardcastTimerDelegate = null;
    • 已標示為解答 TSWAL 2011年8月17日 上午 06:35
    • 已取消標示為解答 小朱MVP, Moderator 2011年8月17日 上午 07:07
    2011年8月17日 上午 06:22
  • 如果是在物件內的成員變數,建議使用 this 來指定。

    this.m_BoardcastTimerDelegate = new TimerCallback(BoardcastTimer_Tick);

    但如果連 this 都找不到,那你要檢查你的方法是不是 static method


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure
    • 已標示為解答 TSWAL 2011年8月17日 上午 06:36
    2011年8月17日 上午 06:23
    版主
  • to 阿尼:那個方法我之前試過了,一樣會有錯誤

    to 小朱:我原本是寫在InitializeComponent()裡,經你講後我去檢查才突然想到說書上有寫說不要去更改InitializeComponent,所以我移出來後就可以了。(雖然我不懂為什麼不能更動InitializeComponent內容)

    謝謝兩位的幫忙!!

    2011年8月17日 上午 06:35
  • InitializeComponent() 會由 Visual Studio Designer 自動維護,如果你改了它的內容,很可能下次你使用 designer 變更東西後,你原本的程式會消失,或是讓 designer 根本就打不開。

    所以最好不要去動 InitializeComponent() 的內容。


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure
    2011年8月17日 上午 06:58
    版主
  • to 阿尼:那個方法我之前試過了,一樣會有錯誤

    to 小朱:我原本是寫在InitializeComponent()裡,經你講後我去檢查才突然想到說書上有寫說不要去更改InitializeComponent,所以我移出來後就可以了。(雖然我不懂為什麼不能更動InitializeComponent內容)

    謝謝兩位的幫忙!!

    因為 InitializeComponent會在建構的時候就執行. 如果你在物件建構尚未完成前就去存取它, 就有可能出錯.

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年8月17日 上午 08:07
    版主
  • 瞭解了,謝謝小朱及Bill Chung的說明
    2011年8月18日 上午 01:11