C#实现和转换接口

时间:2010-11-29 17:13:15

标签: c#

我有一个实现IMarcas接口的类:

  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";
}

任何想法?

4 个答案:

答案 0 :(得分:0)

bs投射到IMarcas brand之后,检查bs是否为空,而不是brand。您应该检查brand是否为null,以查看转换是否成功。

除此之外它应该工作得很好。如果仍然无效,请发布更多代码/背景信息。

答案 1 :(得分:0)

尝试

if (brand != null)

答案 2 :(得分: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");
}

......它仍然很好。

答案 3 :(得分:0)

检查您的代码,因为上面的代码很好