Podczas nauki c# trafiłem na problem którego nie mogę rozgryźć(od razu mówie,że odpowiedzi nie znalazłem ani w książce ani w dokumentacji - a przynajmniej nie mogę do tego dojść).Z tego co zrozumiałem to właściwości służą do ustawiania bądź pobierania wartości pól obiektu.A więc:
{
class Class1
{
public int number; //te pola są publiczne tylko na potrzeby eksperymentu.
public string name;
public int Number { get; set; }
public string Name { get; set; }
public Class1(int num,string nam)
{
Number = num;
Name = nam;
}
}
}
{
class Program
{
static void Main(string[] args)
{
Class1 example = new Class1(123,"przykład"); //tutaj przekazuje do konstruktora parametry,więc oczekuje,że po pobraniu ich za pomocą właściwości
//wyświetlą mi sie właśnie te wartości.
Console.WriteLine("properties Name: " + example.Name + " Number: " + example.Number + "\n"); //niestety wyświetla mi sie znak pusty i 0.
Console.WriteLine("fields Name: " + example.name + " Number: " + example.number + "\n"); //a tutaj wyświetla mi się to co podałem.
example.Name = "lol"; //próbuje ustawić wartości za pomocą properties
example.Number = 400;
Console.WriteLine("properties Name: " + example.Name + " Number: " + example.Number + "\n"); //wyświetla mi się to co ustawiłem
Console.WriteLine("fields Name: " + example.name + " Number: " + example.number + "\n"); //a tu dalej to co przekazałem przez konstruktor na początku
Console.Read();
}
}
}
Czy ktoś może m i wyjaśnić dlaczego po użyciu właściwości wartości pól pozostają takie same jak te które zostały przekazane przy tworzeniu obiektu?
I dlaczego przy tworzeniu obiektu i wyświetleniu za pomocą właściwości zawierają one znak pusty i 0?
Zastanawiałem się,czy temat umieścić w newbie czy tutaj,jeżeli źle wybrałem to przepraszam.