2013-01-10 58 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()并把它放在那里!