2010-11-10 47 views
4

這是那些奇怪的那些感覺就像我必須看到的東西之一,但這裏是一些代碼,我調試:爲什麼將一個數組賦值爲null會創建一個空數組?

private byte[] myCode = null; 

    ... 

    public bool Tampered 
    { 
     get 
     { 
      return Bytes == null; 
     } 

     set 
     { 
      if (value) 
      { 
       if (Bytes != null) 
       { 
        ProcessBytes();   /* BREAKPOINT HERE */ 
        myCode = null; 
       } 
      } 
     } 
    } 

我跑我的代碼,它在執行斷點和someObject.Tampered = true;休息。此時,調試器顯示mycode == bytes[3]。一切都很好。我跨越ProcessBytes。一切都還好。

然後,我跨過myCode = null;,調試器顯示myCode == bytes[0]

發生了什麼事?我有沒有從根本上打破某些東西? myCode不是一個屬性,所以它不應該做任何奇怪的事情。在C#中有一些奇怪的數組,我以前不知道有關嗎?

+2

哦,沒關係。這全是我的錯。儘管大聲說出問題。原來調試器正在調用'get',它調用了Bytes屬性,該屬性重新創建了該數組。 – izb 2010-11-10 14:51:21

+2

你花我的時間來測試你的錯。 – 2010-11-10 14:59:51

回答

1

我認爲調試器可能展示你的myCode的類型,這是在此情況下的(未分配的)byte陣列長度爲零。

相關問題