Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#实现和转换接口_C# - Fatal编程技术网

C#实现和转换接口

C#实现和转换接口,c#,C#,Ive是一个实现IMARCA接口的类: public class BaseQuestao : IMarcas { public string TxtMarca { get; set; } } 其中TxtMarca属性是来自该接口的赋值 问题是,当我尝试执行以下代码时,表示BasesQuestao不是IMARCA: BaseQuestao bs = new BaseQuestao(

Ive是一个实现IMARCA接口的类:

  public class BaseQuestao : IMarcas
    {
        public string TxtMarca
        {
            get;
            set;
        }
    }
其中TxtMarca属性是来自该接口的赋值

问题是,当我尝试执行以下代码时,表示BasesQuestao不是IMARCA:

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

有什么想法吗?

在您将
bs
转换为
IMarcas
作为
brand
,然后检查
bs
是否为空,而不是
brand
。您应该检查
brand
是否为空,以查看强制转换是否成功

除此之外,它应该工作得很好。如果仍然不起作用,请发布更多代码/上下文。

试试看

if (brand != null)

正如其他人所说,您使用了错误的变量(
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");
}

。。。它仍然很好。

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

你不应该检查bs是否为空,你应该检查brand。一个简短但完整的程序演示这个问题确实会有帮助,因为上面的代码很好。也许接口没有声明为公共的?上面的代码很好,问题一定出在其他地方。要寻找的最明显的东西包括:未声明为公共的接口。命名空间问题,缺少引用。请张贴整个代码,包括接口的定义。我很抱歉,即使检查品牌变量,它仍然说这是NULL@user257234:我的工作示例包括您发布的所有代码,这意味着它必须位于您未发布的某些代码中。请拿出一个类似的简短但完整的程序,但这个程序确实失败了。你能单步调试并观看它的运行吗?在某个时刻,你的bs不知何故被设置为null。您发布的代码不足以让我们确定发生了什么。