背景:以前在VS2002中C#开发的程序,现在移交到VS2008上运行。
问题:在VS中的类型转换。不知道是强制转换,还是属于重复定义。
现象如下:具体代码略:
   public static void Method( sting [] InputDate)
{
   。
   。
   string InputDate[x] = "";
   ............
}
在以前的系统中跑是没有问题的,这样的写法(请不要质疑上述的语法,一开始我也曾质疑,但是那个程序已经跑了好多年了,现在只是服务器升级,顺便这个程序也升一下。)。不知道是属于重新定义,还是转换类型的问题
现在移交到VS2008上,编译不过,解决方案我也有了,就是Convert.TOsting().
关键问题,是如何解释上述问题?客户需要。我猜想是不是开发版本的问题(小弟没有用过2002,不知道),但那只是猜想没有说服力。。所以希望资深的老大哥解释一下。最好来点有说服力的文档,或者资深的经验说明

解决方案 »

  1.   

     string InputDate[x] = "";
    这一句你觉得是对的?
      

  2.   

    哥,我纯属记忆,我纠正一下是 (string )InputDate[x] = "";
      

  3.   

     (string )InputDate[x] = "";这样写同样是错的  你不能对一个左值进行类型转换,而且这里根本不需要转换!
      

  4.   

    string InputDate[x] = "";这个肯定是错的我猜测 可能是 string[] InputDate
    或者 是string  将串初始化为空?
      

  5.   

      public static void Method( sting [] InputDate)
    {
      。
      。
      string InputDate[x] = "";  ............
    }
    sting [] InputDate
     重复定义
    怎么编译通过的?
      

  6.   

    这个在VS2003中确实是可以编译过的。大哥不信,可以试试。。还望大侠看看这个新帖:
    http://topic.csdn.net/u/20100707/13/6819604f-1c91-47be-8086-7c0e50311356.html?12296
      

  7.   

    我觉得这样的代码,大家应该可以看清楚了吧。  
    public static void Method( ref string[] GetDate)
    {
      //GetDate[0]:SM GetDate[1]:PL GetDate[2]:SS  GetDate[3]:OM
      try
    {
    for(int i=0; i <= 3 ; i++)//SM PL SS OM 为NULL的情况下,用“”赋值。
    {
       if(GetDate[i].ToString() == null || GetDate[i].ToString() == "" )   
    {
    (string)GetDate[i] = "";}
    }
      catch()
    }
      

  8.   

    (string)GetDate[i] = "";GetDate[i] 是字符串数组string[] GetDate的一个成员,)GetDate[i]就是获取这个字符串数组的第i个元素,也是一个字符串,没有必要做(string)强制类型转换,当然这么做,也不会出错。
    由于使用了ref参数,所以你可以对GetDate[i]进行修改,以便调用方传入的字符串数组,经过Method方法修改后,可以保留修改结果。