2011-01-03 13 views
0

ArrayListからオブジェクトデータを取得したい。Cを使用してArrayListからデータを取得したい場合#

public class Form1 
{ 

ArrayList list = new ArrayList(); 

private void OnSockMessage(object sender, SockEventArgs e) 
{ 

     Regex MyRegex = new Regex("^[<][A-Za-z]"); 
     if (e.SockMsg != null) 
     { 
      string y = e.SockMsg.ToString(); 

      if (MyRegex.IsMatch(y) == true) 
      { 

       rrr = y; 
       string ipdd = SocClient[e.SocketRef].Soc.RemoteEndPoint.ToString(); 
       //serverkey seckey; 
       list.Add(new serverkey(ipdd,rrr)); 


      } 
      else 
      { 
       string curipadd = SocClient[e.SocketRef].Soc.RemoteEndPoint.ToString(); 

       for (int i = 0; i < list.Count-1; i++) 
       { 


        //serverkey pk = list[i] as serverkey; 
        //string jj = list[i].ToString(); 
        // serverkey pk = new serverkey(list[i].ToString()); 

        /********************************************* 
        here i want to retrieve data from array list 
        *********************************************/ 
        string ipadd; 


        if (curipadd == ipadd) 
        { 
         y = DecryptString(e.SockMsg, rrr); 
         listBox1.Items.Add(txtIP.Text + " <<" + y); 

        } 
       } 

      } 
     } 

public class serverkey : Form1 
    { 
     string ipaddress; 

     string secertkey; 


     public serverkey(string IPAdd, string Seckey) 
     { 
      ipaddress = IPAdd; 
      secertkey = Seckey; 
     } 
public string ip 

     { 
      get { return ipaddress; } 
     } 
    public string key 
     { 
      get { return secertkey; } 
     } 
+4

何が質問ですか?私はコードを見るだけです。 – David

+2

質問はコード内にありました.. – BrokenGlass

+0

コード – AaronLS

答えて

1

あなたはむしろforループよりも、強く型付けされたジェネリックList<serverkey>とforeachループを使用したほうが良いと思います。それは

List<serverkey> list = new List<serverkey>(); 

//add your items as you already are 

foreach(var item in list) 
{ 
    item.ip ...// use item as a serverkey 
} 

のようなものは、あなたが何らかの理由でジェネリックを使用することができれば、

ArrayListのリスト「など」=新しいArrayListを()を使用して、と言っただろう。

//add your items as you already are 

foreach(var item in list) 
{ 
    var sk = item as serverkey; 
    sk.ip ...// use item as a serverkey 
} 
+1

いいえ、「as」は使用しないでください。 $ DEITYの愛のために、しないでください。この場合、「as」を使用することは、「アイテムは文字列ではありません」が「itemはnullオブジェクト参照である」と区別できないことを意味します。後である時点でキャストをNullReferenceExceptionよりも実行できない場合は、ClassCastExceptionが表示されます。 *オブジェクトの型が不明な場合は 'as 'を使用し、常にnullチェックを使用して即座に*に従います。 (ヌル参照を渡す振る舞いが受け入れられるメソッドに結果を渡す場合を除き) – cdhowie

+0

十分に一般的です。私が言ったように、個人的には、強く型付けされたジェネリックコレクションが最善の解決策だと私は思います。この場合、我々は特定のタイプのものです。私はハードキャストも有効であると思います。 – Doobi

関連する問題