日期:2014-05-17  浏览次数:21254 次

错误:值不再预期的范围内;


为什么会这样,提示
错误:值不再预期的范围内;

string s = new string(new char[] { '1', '2', '3' });
这条语句是可以经过的,但是在快速监视里头却提示这个错误信息,这是为什么啊

害我调试了很久,我在弄webservice,其实程序是可以正常运行的,结果我发现怎么有错误提示,调试了老半天,发觉程序可以运行,就是快速监视里头会出现这个错误。这是为什么呀?

------解决方案--------------------
在快速监视中运行:

new string(new char[]{'1','2','3'})

实际上是在方法栈上运行代码,运行安全代码没有问题,但是呢,new string()实际上是调用的非安全代码来实现的:

[MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical]
public extern String(char[] value);

在程序运行时,所有的代码都是在安全的托管环境中,自然不会报错;但是在方法栈上运行额外的非安全代码,就报错了...