2013-01-10 73 views
0

爲什麼這個程序仍然輸出「不爲空」即使一切都是空的?我必須改變什麼才能最終使其爲空?爲什麼這個程序仍然輸出「不爲空」?

「您的帖子沒有太多的上下文來解釋代碼段,請更清楚地解釋您的場景。」對不起...

public interface IDrawable 
{ 
    void Draw(); 
} 

public interface IAdvancedDraw : IDrawable 
{ 
    void DrawInBoundingBox(); 
    void DrawUpsideDown(); 
} 

public class BitmapImage : IAdvancedDraw 
{ 
    public void Draw() { } 
    public void DrawInBoundingBox() { } 
    public void DrawUpsideDown() { } 
} 

class Program 
{ 

    static void Main(string[] args) 
    { 

     BitmapImage myBitmap = new BitmapImage(); 

     if ((IAdvancedDraw)myBitmap != null){ 
      Console.WriteLine("not null"); 
     } 

     Console.ReadLine(); 
    } 
} 
+0

我想你是空的方法與空對象混淆。 'BitmapImage myBitmap;'會給你null,但是'BitmapImage myBitmap = new BitmapImage();'將創建一個不等於null的類的實例 – 2013-01-10 22:28:23

+0

爲什麼你認爲'(IAdvancedDraw)myBitmap'必須是' NULL'? –

+0

也許你真的想學習['as'](http://msdn.microsoft.com/en-us/library/cscsdfbt(v = vs.110).aspx)運算符和繼承。但是,您需要嘗試將其轉換爲類似字符串的錯誤類型以獲取「null」。由於'BitmapImage'繼承自'IAdvancedDraw',所以轉換成功。 –

回答

4

因爲它被初始化它不是空的。

BitmapImage myBitmap = new BitmapImage(); 

new Operator

1

你總是給我"not null'因爲總有一些myBitmap - 畢竟,你就創建了一個new BitmapImage()並把它放在那裏!