drukowanie pola name obiektu klasy Employee

0

Member 'Employee.Employee.name' cannot be accessed with an instance reference; qualify it with a type name instead

Nie mogę wydrukować na konsolę pola typu string! klasa Employee, pole name i pojawia się błąd o powyższej treści, dlaczego??
W utworzonej na szybko klasie Test o polu string imie instrukcja Console.Writeline(obj.imie) bez problemu wypisuje zawartość pola. załamka :(

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Employee
{
class Employee
{
static string name;
static string surname;
static int salary;

    public Employee (string styp, string simie)
    {
        if (styp == "name") SetName(simie);
        else if (styp == "surname") SetSurname(simie);
        else
        {
            Console.WriteLine("określ typ jako name lub surname");
        }
    }

    public Employee(int ipensja)
    {
        try
        {
            SetSalary(ipensja);
        }
        catch (ArgumentOutOfRangeException outOfRange)
        {
            Console.WriteLine("Error: {0}", outOfRange.Message);
        }
         
    }

    public Employee(string simie, string snazwisko, int ipensja)
    {
        SetName(simie); SetSurname(snazwisko); SetSalary(ipensja);
    }

    public string GetName() { return name; }
    public string GetSurname() { return surname; }
    public int GetSalary() { return salary; }
    
    public void SetName(string imie) { name = imie; }
    public void SetSurname(string nazwisko) { surname = nazwisko; }
    public void SetSalary(int pensja) 
    {
        if (pensja < 0)
            throw new ArgumentOutOfRangeException("Pensja musi byc nieujemna!");
        else
            salary = pensja;
    }




    static void Main(string[] args)
    {
        Employee a = new Employee("Michał", "Kowalski",3);
        Employee b = new Employee("Michała", "Kowalski", 3);
        Console.WriteLine(a.name); //TU WYSKAKUJE OPISANY BŁĄD
        Organization o = new Organization(2);
        o[0] = a;
        o[1] = new Employee("Michała", "Kowalski", 3);
        
        System.Console.ReadKey();
    }

    
}

}


class MyClass
{
private string name;
private string surname;

    public MyClass(string imie)
    {
        name = imie;
    }

    public string GetName {
        get { return this.name; }
        set { this.name = value; }
    }

    static void Main(string[] args)
    {
        MyClass a = new MyClass("kris");
        Console.WriteLine(a.name); // tutaj działa normalnie, drukuje kris.
        Console.ReadKey();
    }
}
0

pola statyczne, zrozumiałem, do usunięcia. :)

0

W pierwszym kodzie masz pola statyczne w klasie Employee, wywal static.
Wątpię żeby Ci działał drugi kod, próbujesz się dostać do prywatnego pola.
Ogarnij jakiś podstawowy kurs.

0
dam1an napisał(a):

Wątpię żeby Ci działał drugi kod, próbujesz się dostać do prywatnego pola.

Oczywiscie, ze drugi kod mu zadziala - probuje sie dostac do prywatnego pola klasy z wnetrza tejze klasy wiec co mialoby nie dzialac?
Chyba ktos inny powinien ogarnac podstawowy kurs :)

Ale faktem jest, ze ten kod jest napisany tak tragicznie, ze moze wprowadzac czytajacego w blad :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1