2016-08-26 18 views
5

Merhaba C# için yeni ve bunu öğrendim. Aslında bunu kullanacağımı düşündüğüm birkaç şey var, ama emin olmadan sormaya çalışacağım. O, koleksiyonları bulamadığım bir şey söyledi. Bir VB.NET arka planından geldim ve daha önce bir veri bankasından geçmek zorunda kalmak yerine özelliklerini depolamak için başka bir sınıfın koleksiyonlarını kullandım. Benim daha önceki kodu (bu C# ve yapmam başarmış somthing kolaydır) fikir ne olursa nedenle özelliklere sahip bir sınıf almak aşağıdakiKoleksiyonlar C# üzerinde VB.NET

Public class UserDetails 

Public Property Username() As String 
    Get 
     Return sUsername 
    End Get 
    Set(ByVal value As String) 
     sUsername = value 
    End Set 
End Property 

Public Property Forename() As String 
    Get 
     Return sForename 
    End Get 
    Set(ByVal value As String) 
     sForename = value 
    End Set 
End Property 

Public Property Surname() As String 
    Get 
     Return sSurname 
    End Get 
    Set(ByVal value As String) 
     sSurname = value 
    End Set 
End Property 

End Class 

gibi bir şey oldu.

public string Username { get { return sUsername; } set { sUsername = value; } } 
public string Forename { get { return sForename; } set { sForename = value; } } 
public string Surname { get { return sSurname; } set { sSurname = value; } } 

Daha sonra başka bir sınıfa ve bu sınıfa bir nesne oluşturup her nesneyi bir koleksiyonda saklamak istiyorum;

clUserDetails = New Collection 
Dim objUserDetails as new UserDetails 
objUserDetails.Username = "SomeonesUsername" 
objUserDetails.Forename = "SomeonesForename" 
objUserDetails.Surname = "SomeonesSurname" 
clUserDetails.Add(objUserDetails) 

ve sınıfı da Şimdi özelliklerine almak veya aşağıdaki

yapmak üzere bir nesne her nesne arasında döngü ve atayarak ya bu almak koleksiyonu

Public Function Items() As Collection 
    Return clUserDetails 
End Function 

döndüren bir işlevi var

objUsers.Items(1) 

Şimdi C# içinde koleksiyon nesnesini bulamadığım için List <> kullanmayı denedim. Bunun VB olayı olduğunu farz ediyorum, bu yüzden C# 'da bunu nasıl başaracağınız konusunda yardım isterim.

aşağıdaki

private List <UserDetails> clUserDetails; 
UserDetails objUserDetails = new UserDetails(); 
objUserDetails.Username = "Username"; 
objUserDetails.Forename = "Forename"; 
objUserDetails.Surname = "Surname"; 
clUserDetails.Add(objUserDetails); 

denedi ama bu liste/koleksiyonun tek nesneyi almak için nasıl olarak şaşırıp.

birileri

+0

IDE'de tanıma sağ tıklarsanız, o koleksiyonun [visualbasic] adresinden geldiğini göreceksiniz (https://msdn.microsoft.com/en-us/lib rary/microsoft.visualbasic.collection (v = vs.110) .aspx) eski ve kullanılmaması gereken ad alanı. Tek bir öğeye erişmek için, sadece [belgelere] bakın (https://msdn.microsoft.com/en-us/library/6sh2ey19 (v = vs.110) .aspx? Cs-save-lang = 1 & cs-lang = csharp # kod pasajı-2). İlk sayfada, frenet [] not(); –

+0

İlk maddeyi almak için clUserDetails [0] 'ı kullanmanız gerekir. –

+0

Bu belge, döngü içinde olduğunuzu gösterir, ancak ilkini nasıl alacağınızı göstermez. Ona ulaşmak için nasıl döngü yapılacağını biliyorum. Ama sadece bulduğum ilk şeyi atamak istiyorum. objUsers.Items [1]; Çalıştığım ilk şey olduğu gibi çalışmıyor. –

cevap

5

bu yapabilmek istediğini mi yardımcı olabilir misiniz?

Modeliniz:

public class UserDetails 
{ 
    public string Username { get; set; } 
    public string Forename { get; set; } 
    public string Surname { get; set; } 
} 

Ve <>

var userDetails = new UserDetails 
{ 
    Username = "Username", 
    Forename = "Forename", 
    Surname = "Surname" 
}; // object initialiser 

var listOfUsers = new List<UserDetails>(); 
listOfUsers.Add(userDetails); 

Ve sonra bir dizini kullanarak almak bir Listesine kullanıcı eklemek oluşturmak/şöyle, (eğer mevcutsa sağlanan):

listOfUsers[0].Forename 
+1

Merhaba teşekkürler, sıfır tabanlı olduğunu bilmiyordum. İşe yaradı. –

3

Eh, sen yerdesin. System.Collections.Generic içinde List ihtiyacınız olan şeydir.

List<UserDetails> clUserDetails = new List<UserDetails>(); 

Böyle listenize daha UserDetails ekleyebilirsiniz:

clUserDetails.Add(new UserDetails { Username = "UserName1", Forename = "Forename1", Surname = "Surname1" }); 
clUserDetails.Add(new UserDetails { Username = "UserName2", Forename = "Forename2", Surname = "Surname2" }); 
clUserDetails.Add(new UserDetails { Username = "UserName3", Forename = "Forename3", Surname = "Surname3" }); 

class UserDetails 
{ 
    public string Username { get; set; } 
    public string Forename { get; set; } 
    public string Surname { get; set; } 
} 

UserDetails yeni Listesini bildirin:

Ben senin sınıf biraz basitleştirilmiş Ve sonra bir foreach

ile döngü yapabilirsiniz
foreach(UserDetails userDet in clUserDetails) 
{ 
    Console.WriteLine($"Current user details --> Username : {userDet.Username} Forename : {userDet.Forename} Surname : {userDet.Surname} "); 
} 

çıkışı olacaktır:

Geçerli kullanıcı ayrıntıları -> Kullanıcı Adı: UserName1 Forename: Forename1 Soyadı: Soyadı1 Mevcut kullanıcı ayrıntıları -> Kullanıcı Adı: UserName2 Önad: Forename2 Soyadı: Soyadı2 Güncel kullanıcı ayrıntıları -> Adı: USERNAME3 Forename: Forename3 Soyadı: o istisna t ile VB.NET üzerindedir gibi Surname3

+0

Merhaba teşekkürler, koleksiyona ekledikçe her özelliği ekleyebileceğinizi farketmediniz. Ama bunun hakkında düşünmek işe yaramalı. Tekrar teşekkürler –

+0

Bu veya elbette yeni bir 'UserDetails' oluşturabilir ve bunu 'clUserDetails''e de ekleyebilirsiniz. Öyle söyleniyor ki, neredeyse hiçbir zaman bir öğeye indeksle erişmek istemiyorum. Yani "clUserDetails [0] .UserName" yerine, örneğin, örnek olarak döngü yapmanızı öneririm. – uTeisT

2

yanı sıra C# diziler, koleksiyonları ile çalışma olduğunu C# 'de şapka, (ve) yerine [ve] karakterlerini dizinleyici olarak kullanırız.

: diziler nasıl kullanılacağına dair

// Create a dictionary and add some items to it. 
var myDic = new Dictionary<string, string>(); 
myDic.Add("google.com", "Search engine"); 
myDic.Add("stackoverflow.com", "An awesome site"); 

// Now, use the dictionary (get its keys value). 
string google = myDic["google.com"]; 
string stackOverflow = myDic["stackoverflow.com"]; 

Örnek: Bir Dictionary nasıl kullanılacağına dair

// Create a list and add some items to it. 
var myList = new List<string>(); 
myList.Add("Item A"); 
myList.Add("Item B") 

// Now, use the list. 
string itemA = myList[0]; 
string itemB = myList[1]; 

Örnek: bir listeyi (veya başka koleksiyonu) nasıl kullanılacağına dair

Örnek

// Declare an array and add some items to it. 
string[] myFirstArray = { "One", "Two", "Three" } 
// Declare a second array similar to the first one. 
string[3] mySecondArray; 
mySecondArray[0] = "One"; 
mySecondArray[1] = "Two"; 
mySecondArray[2] = "Three"; 

// Now, use values of the arrays. 
string one = myFirstArray[0]; 
string two = mySecondArray[1]; 
string three = myFirstArray[2];