Vs2013 类派生+默认值+参数数组,默认值设置不当导致IDE奔溃或编译错误:-1073740791

1 篇文章 0 订阅
1 篇文章 0 订阅

VS2013开发时,如果遇到类似以下的代码,会导致IDE意外奔溃。

internal class Program
{
	private static void Main(string[] args)
	{
	}
}

internal abstract class baseClass
{
	protected abstract int add(int a, int b = 0, params int[] additionParam);
}

partial class delivedClass : baseClass
{
	protected override int add(int a, int b, params int[] additionParam)
	{
		int s = a + b;
		foreach (var x in additionParam)
			s += x;
		return s;
	}
	int add2(int x)
	{
		return this.add(a);
	}
}


上述代码中,关键问题在于:

1.虚函数要求一个参数数组,并且参数数组前的参数仍有默认值。

2.派生此类,实现此虚函数时,函数的默认值遗漏。

3.如果没有其他函数调用次函数,则一切OK。

4.如果在代码中调用了此函数,会在调用语句输入时,IDE意外奔溃。

5.如果以外部编辑器编辑此代码来调用此函数,则在变异此代码时,发生““Csc.exe”已退出,代码为 -1073740791。”的错误。


解决方式:

此错误比较隐蔽,编译时也没有针对性报错,因此很难查出问题所在。实践上需要保证基类的虚函数与派生类的实现函数的参数表完全一致,包括默认值。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知常曰明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值