Hallo, Experte. bin neue hier.
Seit paar Tagen versuche ich mein .NET wissen auffrischen. In vielen C# Bücher/Tutorials sieht man einen sehr häufigen OOP Beispiel - die Person Klasse
In C# sieht die ungefähr so aus:
Dabei fallen mir sofort zwei Sachen auf:
Natürlich wollte ich dieselbe Klasse in VB schreiben. Dabei bin ich auf verschieden Varianten gestoßen.
Variante 1
Variante 1
Variante 2
Gibt es ein "unterschied" zwischen beiden Varianten (außer Quell-Code Länge) ? Wann mach es Sinn (falls überhaupt) die Proeprties ducrch Gets und Sets und Provate zu deklarieren?
die zweite Frage ist: Wozu zwei Konstruktoren ?
Seit paar Tagen versuche ich mein .NET wissen auffrischen. In vielen C# Bücher/Tutorials sieht man einen sehr häufigen OOP Beispiel - die Person Klasse
In C# sieht die ungefähr so aus:
Quellcode
- public class Person
- {
- public int Age {get; set;}
- public string FirstName {get; set;}
- public string LastName {get; set;}
- public Person(){}
- public Person(string firstName, string lastName, int age)
- {
- Age = age;
- FirstName = firstName;
- LastName = lastName;
- }
- public override string ToString()
- {
- return string.Format("Name: {0} {1}, Age: {2}", FirstName, LastName, Age);
- }
- }
Dabei fallen mir sofort zwei Sachen auf:
- Deklaration von Eigenschaften(Properties) a lá public int Age {get; set;}
- Konstruktor wird zweimal definiert ? einmal public Person(){} und public Person(...params...){...code...}
Natürlich wollte ich dieselbe Klasse in VB schreiben. Dabei bin ich auf verschieden Varianten gestoßen.
Variante 1
VB.NET-Quellcode
- Public Class Person
- Public Property Age() As Integer
- Public Property FirstName() As String
- Public Property LastName() As String
- Public Sub New()
- End Sub
- Public Sub New(ByVal firstName As String, ByVal lastName As String, ByVal age As Integer)
- Me.Age = age
- Me.FirstName = firstName
- Me.LastName = lastName
- End Sub
- Public Overrides Function ToString() As String
- Return String.Format("Name: {0} {1}, Age: {2}", FirstName, LastName, Age)
- End Function
- End Class
Variante 1
VB.NET-Quellcode
- Public Class Person
- Public Property Age() As Integer
- Public Property FirstName() As String
- Public Property LastName() As String
- Public Sub New()
- End Sub
- Public Sub New(ByVal firstName As String, ByVal lastName As String, ByVal age As Integer)
- Me.Age = age
- Me.FirstName = firstName
- Me.LastName = lastName
- End Sub
- Public Overrides Function ToString() As String
- Return String.Format("Name: {0} {1}, Age: {2}", FirstName, LastName, Age)
- End Function
- End Class
Variante 2
VB.NET-Quellcode
- Public Class Person
- Public Property Age() As Integer
- '
- ' Gets und Sets werden explizit deklariert
- '
- Get
- Return m_Age
- End Get
- Set
- m_Age = Value
- End Set
- End Property
- '
- ' Privete Eigenschaften werden verwendet
- '
- Private m_Age As Integer
- Public Property FirstName() As String
- Get
- Return m_FirstName
- End Get
- Set
- m_FirstName = Value
- End Set
- End Property
- Private m_FirstName As String
- Public Property LastName() As String
- Get
- Return m_LastName
- End Get
- Set
- m_LastName = Value
- End Set
- End Property
- Private m_LastName As String
- Public Sub New()
- End Sub
- Public Sub New(firstName As String, lastName As String, age As Integer)
- Age = age
- FirstName = firstName
- LastName = lastName
- End Sub
- Public Overrides Function ToString() As String
- Return String.Format("Name: {0} {1}, Age: {2}", FirstName, LastName, Age)
- End Function
- End Class
Gibt es ein "unterschied" zwischen beiden Varianten (außer Quell-Code Länge) ? Wann mach es Sinn (falls überhaupt) die Proeprties ducrch Gets und Sets und Provate zu deklarieren?
die zweite Frage ist: Wozu zwei Konstruktoren ?