C#调用接口void方法时报错:编译器提示尝试将void转bool如何解决
错误原因
你定义的Ixd接口中WriteNorM()方法的返回值为void,代表该方法没有任何返回值,但你在Main方法中把D.WriteNorM()、D1.WriteNorM()的调用结果作为参数传入了Console.WriteLine()方法,相当于尝试把无返回值的方法执行结果作为输入传给Console.WriteLine(),触发编译报错。你看到的“尝试将void转换为bool”属于部分C#编译器版本对这类非法用法的适配性报错,核心问题就是无返回值方法不能被当作值来使用。
另外WriteNorM()方法内部已经实现了Console.WriteLine()输出逻辑,不需要再套一层输出方法。
修正方案
直接调用WriteNorM()方法即可,不需要在外层再加Console.WriteLine()。
修正后完整代码
class xd { interface Ixd { void WriteNorM(); } class writeN : Ixd { public void WriteNorM() { Console.WriteLine("n"); } } class writeM: Ixd { public void WriteNorM() { Console.WriteLine("m"); } } static void Main() { Ixd D = new writeN(); Ixd D1 = new writeM(); D.WriteNorM(); D1.WriteNorM(); } }
运行后会依次输出:
n m
符合你的预期效果。
内容的提问来源于stack exchange,提问作者Chilled
相关产品推荐
相关产品推荐

