§ ITPOW >> 文档 >> C#

C# 类继承-能改变隐藏、重写方法的返回值类型吗?

作者:vkvi 来源:ITPOW(原创) 日期:2021-2-22

如果是隐藏(new),返回值类型是可以不一样

如下,基类的 F 返回的是 string,派生类的 F 返回的是 int,这是允许的,能够正常调用、运转。

public class B
{
	public string F()
	{
		return "itpow";
	}
}
public class D : B
{
	public new int F()
	{
		return 0;
	}
}

如果是重写(virtual 与 override)返回值类型必须一样

如下,会出错,编译都通不过。

public class B
{
	public virtual string F()
	{
		return "itpow";
	}
}
public class D : B
{
	public override int F()
	{
		return 0;
	}
}

如果是抽象(abstract)返回值类型是必须一样

因为 abstract 也隐含了 virtual 的意思。

顺道说一下重载,重载返回值类型是可以不一样

总结

可同时使用的情况,返回值类型可以不一样

比如隐藏、重载,同样场景下,A,B 方法可以同时使用。

相关文章