2011-01-03 12 views
0

abrufen Ich möchte Objektdaten von einer ArrayList abrufen;Ich möchte Daten aus einer ArrayList mit 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

Was ist die Frage? Ich sehe nur Code. – David

+2

die Frage war im Code .. – BrokenGlass

+0

siehe "hier möchte ich Daten aus der Array-Liste abrufen" im Code – AaronLS

Antwort

1

Sie wären besser dran mit einem stark typisierte generische List<serverkey> und eine foreach-Schleife statt einer for-Schleife. Es wird so etwas wie

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 
} 

gesagt haben, dass, wenn Sie Sie eine generische aus irgendeinem Grund verwenden können, verwenden Sie ein ‚als‘

Arraylist list = new 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

Nein, benutze 'as' nicht. Für die Liebe von $ DEITY, nicht. In diesem Fall bedeutet die Verwendung von "as", dass "Element keine Zeichenfolge war" ** nicht unterscheidbar "von" Element war eine Null-Objektreferenz. " Sie würden lieber eine ClassCastException sehen, wenn die Umwandlung zu einem späteren Zeitpunkt nicht ausgeführt werden kann als eine NullReferenceException. * Verwenden Sie nur 'as ', wenn Sie sich über den Typ des Objekts nicht sicher sind, und folgen Sie dann immer * sofort * mit einem Null-Check. (Es sei denn, Sie übergeben das Ergebnis an eine Methode, bei der das Verhalten bei der Übergabe einer Nullreferenz akzeptabel ist.) – cdhowie

+0

In der Regel ausreichend. Wie gesagt, persönlich finde ich eine stark typisierte generische Sammlung die beste Lösung. aber in diesem Fall sind wir uns des Typs sicher. Ich denke, eine harte Besetzung wäre auch genauso gültig. – Doobi

Verwandte Themen