zoukankan      html  css  js  c++  java
  • VS2010环境下.NET4.0中Tuple<T>的一个小BUG问题

    启动一个桌面程序后,发现一个窗体cfdata=null, 执行时发生错误, 但是在初始化的时候,我明明是cfdata=new Cfdata();为什么会出现这个错误呢.

    我开始跟踪,发现当执行cfdata=new Cfdata()时, 执行被中断, 后面的代码没有执行, 但是VS2010没有报错, 也就是执行到cfdata=new Cfdata()时发生了错误!但是VS2010没有提示我!

    继续调试跟踪,问题出现了以下代码,使用了未赋值的Tuple<T1,T2>的成员值, 而VS2010并没有捕获到该错误提示我:

             public Tuple<string,string,string>  Spath;
    
             public PersonAll()
             {
                 string sa = ME.RnowFolder(1, 1);
                 string sb = ZCspathasm20150407;
    
                 //这里还没有对Spath赋值,就使用了它的成员值,所以肯定有错,但是VS2010并没有报错,而是执行到这里终止,使得该对象无法实例化,同时使得包含PersonAll实例的对象也无法实例化,使得最外面的cfdata也无法完成实例化,所以虽然执行了cfdata=new Cfdata();但是cfdata依然为null.
                 string sc = Spath.Item1 + Spath.Item2;
                 Spath = new Tuple<string, string, string>(sa, sb, sc);
             }

    只是很奇怪,string sc = Spath.Item1 + Spath.Item2;既然这里使用了未赋值的成员值,为什么VS2010执行到这里不能给出提示呢,如果直接给提示,那么我第一步就知道错误在哪里,而不必一步步地调试寻找, 或许,Tuple作为一个新的类, 还存在一些小问题没有完善吧!

  • 相关阅读:
    48. Rotate Image
    83. Remove Duplicates from Sorted List
    46. Permutations
    HTML5笔记
    18. 4Sum
    24. Swap Nodes in Pairs
    42. Trapping Rain Water
    Python modf() 函数
    Python min() 函数
    Python max() 函数
  • 原文地址:https://www.cnblogs.com/flyant/p/4419458.html
Copyright © 2011-2022 走看看