2016-08-26 2 views
5

Привет Я новичок в C# и изучал его. На самом деле думаю, что я использую его, есть некоторые вещи, о которых я не уверен, но попытаюсь их исследовать, прежде чем спросить. Тем не менее, я не могу найти коллекции. Я пришел из базы VB.NET, и ранее я использовал коллекции другого класса для хранения своих свойств вместо того, чтобы пробираться через datatable. Мой предыдущий код был что-то вроде следующегоКоллекции в C# над 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 

вы получите идею, класс со свойствами, для того, что когда-либо причине (это легко в C# и Somthing я сумел сделать).

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; } } 

Затем у меня есть другой класс и создайте объект для этого класса и сохраните каждый объект в коллекции, как показано ниже;

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

и класс также есть функция, которая возвращает коллекцию

Public Function Items() As Collection 
    Return clUserDetails 
End Function 

Теперь я получить это либо пробегает по каждому объекту и назначению объекта, чтобы добраться до свойств или сделать следующее

objUsers.Items(1) 

Теперь в C# я попытался использовать Список <>, поскольку я не могу найти объект коллекции. Я предполагаю, что это вещь VB, поэтому мне нужна помощь, как это сделать на C#.

Я попытался следующий

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

, но я застрял о том, как получить единый объект этого списка/коллекции.

Может кто-нибудь помочь

+0

Если вы щелкните правой кнопкой мыши перейдите к определению в среде IDE, вы увидите, что эта коллекция поступает из [visualbasic] (https://msdn.microsoft.com/en-us/lib rary/microsoft.visualbasic.collection (v = vs.110) .aspx), которое является старым и не должно использоваться. Что касается доступа к отдельным элементам, просто просмотрите [документацию] (https://msdn.microsoft.com/en-us/library/6sh2ey19 (v = vs.110) .aspx? Cs-save-lang = 1 & cs-lang = CSharp # код-фрагмент-2). Это прямо на первой странице, вам нужно использовать braket [] not(); –

+0

Вам нужно использовать clUserDetails [0], чтобы получить первый элемент –

+0

Этот документ показывает вам цикл, но он не показывает, как вы просто получите первый. Я уже знаю, как пройти, чтобы добраться до него. Но я просто хочу назначить самый первый, который я нахожу. objUsers.Items [1]; не работает, поскольку это было первым, что я пробовал. –

ответ

5

Является ли это то, что вы хотите быть в состоянии сделать?

Ваша модель:

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

И создать/добавить пользователя в список <>

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

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

А затем получить с помощью индекса (при условии, что существует), например, так:

listOfUsers[0].Forename 
+1

Привет, спасибо, не понимал, что это основано на нуле. Это сработало. –

3

Ну, вы на месте. List в System.Collections.Generic - это то, что вам нужно.

Я упростил ваш класс немного:

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

Объявляем новый список UserDetails:

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

Вы можете добавить больше UserDetails в свой список, как это:

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" }); 

И затем вы можете использовать петлю с foreach

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

Выход будет:

Текущие реквизиты пользователя -> Имя пользователя: USERNAME1 Имя, отчество: Forename1 Фамилия: Surname1 Текущие реквизиты пользователя -> Имя пользователя: USERNAME2 Имя, отчество: Forename2 Фамилия: Surname2 Текущий реквизиты пользователя -> Имя пользователя: UserName3 Имя, отчество: Forename3 Фамилия: Surname3

+0

Привет, спасибо, не понимал, что вы можете добавить каждое свойство, добавив его в коллекцию. Но думая об этом, это должно сработать. Еще раз спасибо –

+0

Это или вы можете, конечно, создать новый 'UserDetails' и добавить его в' clUserDetails'. При этом я почти никогда не хочу получать доступ к элементу по индексу. Поэтому вместо 'clUserDetails [0] .UserName' я бы посоветовал вам зацикливать список, как в примере. – uTeisT

2

Работа с коллекциями, а также с массивами в C#, как это на VB.NET, за исключением т hat в C#, мы используем символы [и] вместо (и) в качестве индексатора.

Пример того, как использовать список (или любой другой коллекции):

// 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]; 

Пример о том, как использовать словарь:

// 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"]; 

Пример о том, как использовать массивы:

// 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]; 
Смежные вопросы