2011-01-03 2 views
0

Я хочу получить данные объекта из ArrayList;Я хочу получить данные из ArrayList, используя C#

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

Вы бы лучше использовать строго типизированный общий цикл List<serverkey> и в Еогеаспе, а не цикл. Это будет что-то вроде

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 was not a string »является ** indistinguishable ** from« item был ссылкой на нулевой объект ». Вы бы предпочли бы исключение ClassCastException, если в какой-то момент позже кастинг не может быть выполнен, чем исключение NullReferenceException. * Только * используйте 'as', если вы не уверены в типе объекта, а затем всегда следуете ему * немедленно * с нулевой проверкой. (Если вы не передаете результат методу, в котором допустимо поведение передачи в нулевой ссылке.) – cdhowie

+0

Достаточно справедливо. Как я уже сказал, лично я считаю, что наилучшим решением является строго типизированная общая коллекция. но в этом случае мы уверены в типе. Я думаю, что жесткий бросок тоже будет таким же правильным. – Doobi