none
宣告一個陣列,不指定大小, 用foreach 對陣列加入數量不定的新元素, 是否可行 RRS feed

  • 一般討論

  • string[] Test = {};

    string List = "伯伯 媽媽 爸爸";

    int i = o;

    foreach(char c in List)

    {

    if(c!=" ")

    Test[i] += Convert.ToString(c)

    else

    i++

    }

    會出現錯誤, 為什麼?

     

     



    2011年8月4日 上午 09:09

所有回覆


  • Hi:

    因為宣告的陣列長度為0

    何不考慮用集合呢?

    string sList = "伯伯 媽媽 爸爸";
    
    //ArrayList集合
    ArrayList list=new ArrayList();
    
    foreach(string s in sList.Split(' '))
    {
    
     list.Add(s);
    
    }
    
    

    ===========

    以下是重構您的程式碼

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
      class Program
      {
        static void Main(string[] args)
        {
          string[] Test = {};//這樣長度為0
    
           string List = "伯伯 媽媽 爸爸";
    
          Array.Resize(ref Test, List.Split(' ').Length);//重新改變陣列長度
    
          int i = 0;
          foreach(string s in List.Split(' '))
          {
            Test[i] += s;
            //Console.WriteLine(Test[i]);
            i++;
          }
    
    
          
          Console.ReadKey();
    
        }
      }
    }
    

     


    Shadowと愉快なコード達
    Please correct me if my concept is wrong

    2011年8月4日 上午 09:15
  • (1) 在.Net的世界中, 陣列是需要先初始化後才會配置記憶體空間, 而且是固定的.

    (2) 照你的需求, 有很多類別可以用, ArrayList是一種, List也可以, Collection也可以...甚至用DataTable也可以, 端看你的資料後續要怎麼使用.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年8月4日 上午 10:02
    版主
  • 您好

    可以先說明一下你這個程式想要做什麼嗎? 因為你目前的程式有很多不合理的地方

    假如只是要做消去空白的動作,直接用 string.Replace 把空白取代掉就好


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年8月4日 上午 10:17
    版主
  • 會出現錯誤, 為什麼?

    把程式改做如下的樣子:

     

       string[] Test = { };
       string List = "伯伯 媽媽 爸爸";
       int i = 0;
       foreach (char c in List)
       {
        if (c != ' ')
        {
         Array.Resize<string>(ref Test, i + 1);
         Test[i] = Convert.ToString(c);
         i++;
        }
       }
    

     


    但是為什麼要這樣改, 請仔細看一下這一篇: http://www.dotblogs.com.tw/johnny/archive/2010/01/25/13298.aspx

     


    ASP.NET 2Share - http://www.dotblogs.com.tw/johnny
    2011年8月4日 下午 01:11