altaaf.hussein altaaf.hussein - 3 months ago 23
Vb.net Question

Collections in C# over VB.NET

Hi I am new to C# and have been learning it. Actually think I am getting use to it there are a few things which I am unsure about but will try to research them before asking. That said one thing I cannot find it collections. I come from a VB.NET back ground and previously I used collections of another class to store its properties instead of having to wade through a datatable. My previous code was something like the following

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


you get the idea, a class with properties for what ever reason (this is easy in c# and somthing I have managed to do).

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


Then I have another class and create an object to this class and store each object in a collection, again as below;

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


and the class also have a function which returns the collection

Public Function Items() As Collection
Return clUserDetails
End Function


Now I retrieve this either by looping through each object and assigning an object to get to the properties or do the following

objUsers.Items(1)


Now in C# I have tried to use List<> as I cannot find the collection object. I am assuming this is VB thing so would like some help as how to accomplish this in C#.

I have tried the following

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


but I am stuck as to how to get the single object of of this list/collection.

Can somebody help

Answer

Is this what you want to be able to do?

Your model:

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

And create/add a user to a List<>

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

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

And then retrieve using an index (provided it exists), like so:

listOfUsers[0].Forename