2010-11-29 74 views
0

伊夫實現該IMarcas接口的類:C#實現和轉換接口

public class BaseQuestao : IMarcas 
    { 
     public string TxtMarca 
     { 
      get; 
      set; 
     } 
    } 

哪裏TxtMarca屬性是從該接口的assignture。

問題是,當我嘗試執行跟隨代碼是說,BasesQuestao不是IMarcas:

BaseQuestao bs = new BaseQuestao(); 
IMarcas brand = bs as IMarcas; 
if (brand != null) 
{ 
    bs.TxtMarca = "voila"; 
} 

任何ideias?

+0

您不應該檢查bs爲null,您應該檢查品牌。 – 2010-11-29 17:17:35

+0

顯示問題的簡短但完整的程序確實有幫助,因爲上述情況良好。 – 2010-11-29 17:17:50

回答

0

正如其他人所說,你使用了錯誤的變量(的bs代替brand) - 但它會工作無論哪種方式。

下面是更正後的代碼示例:

using System; 

public interface IMarcas 
{ 
    string TxtMarca { get; set; } 
} 

public class BaseQuestao : IMarcas 
{ 
    public string TxtMarca 
    { 
     get; 
     set; 
    } 
} 

class Test 
{ 
    static void Main() 
    { 
     BaseQuestao bs = new BaseQuestao(); 
     IMarcas brand = bs as IMarcas; 
     if (brand != null) 
     { 
      brand.TxtMarca = "voila"; 
      Console.WriteLine("Done"); 
     } 
    } 
} 

,甚至與原代碼:

if (bs != null) 
{ 
    bs.TxtMarca = "voila"; 
    Console.WriteLine("Done"); 
} 

...它仍然很好。

0

之後你施放bs一個IMarcasbrand,那麼你是否bs爲空,不brand。您應該檢查brand是否爲空以查看投射是否成功。

除此之外,它應該工作得很好。如果仍然無效,請發佈更多代碼/上下文。

0

嘗試

if (brand != null) 
0

檢查您的代碼,因爲上面的代碼是好的