日期:2014-05-18  浏览次数:21085 次

检测到无法访问的代码
我在vs2005底下写程序时,因为OpenFileDialog中没有SafeFileName方法,于是自己就写了两个,其中一个老是出现无法访问的代码,小弟甚是不解,不知道这样对程序有什么影响.百度了下,说是代码前面有return么的,可是我将她提到return前面还是不行,烦劳各位瞅瞅.并给讲解一下它可能会造成怎么样的后果.代码如下
C# code


        public string SafeFileName
        {
            get {
                string str = this.openFileDialog1.FileName;
                StringBuilder sbuild = new StringBuilder();
                char[] ch = str.ToCharArray();

                for ( int count = str.Length-1; ; --count )
                {
                    if (ch[count] != '\\')
                        sbuild.Append(ch[count]);
                }

                string fileName = sbuild.ToString();//这里的string底下有波浪线,警告无法检测到的代码
                return fileName;
            }
        }

一开始的时候我是直接返回的 return sbuild.ToString();同样是不行的,呵呵

------解决方案--------------------
你那个for是个死循环
------解决方案--------------------
for ( int count = str.Length-1; ; --count )
{
if (ch[count] != '\\')
sbuild.Append(ch[count]);
}

这是一个死循环
------解决方案--------------------
改成这样就可以了
for(int count = str.Length-1;count >= 0; count--)
...
------解决方案--------------------
确实,循环结束条件有问题
------解决方案--------------------
for循环永远不会结束