Blog Dla Młodszych Programistów C#/.NET

Dzisiaj będziemy kontynuować serię pytań, z którymi możesz się spotkać na rozmowie kwalifikacyjnej na stanowisko młodszy programista .NET. Przeanalizujemy kolejnych 10 pytań wraz z odpowiedziami.

100 Pytań (i Odpowiedzi!) z Rozmów Kwalifikacyjnych Dla Młodszych Programistów C#/.NET (Część 3/10)


21) Jakie są modyfikatory dostępu w C#?


W C# mamy 5 modyfikatorów dostępu. Są to public, private, protected, internal oraz protected internal.

Modyfikator public – element oznaczony tym modyfikatorem jest dostępny wszędzie, z każdego miejsca wewnątrz i z zewnątrz klasy.

Modyfikator private – element oznaczony tym modyfikatorem jest dostępny tylko w tej samej klasie, w której został stworzony.

Modyfikator protected – element oznaczony tym modyfikatorem jest dostępny tylko w klasie, w której został utworzony, a także w klasach pochodnych. To znaczy klas, które dziedziczą po klasie, w której został zadeklarowany ten element.

Modyfikator internal – dostępność dla danego elementu tylko w tym samym module.

Modyfikator protected internal – oznacz dostępność dla wszystkich w danym module oraz dla każdej klasy pochodnej. Jest sumą dostępów protected i internal.

private string _pesel;
public string FirstName;
protected string LastName;
protected internal int Age;
internal DateTime DateOfBirth;


22) Jaka jest różnica pomiędzy const, a readonly?


Wartość pola oznaczona jako const, nie może zostać zmieniona w trakcie działania programu. Jest to stała, której wartość zostaje określona w czasie kompilacji. Stosuje się do wartości, które nigdy się nie zmieniają. Na przykład wartość liczby PI. Pole oznaczone modyfikatorem const jest traktowane jako pole statyczne. Z kolei wartość pola oznaczona jako readonly może zostać przypisana zarówno w czasie kompilacji, jak i w trakcie działania programu, ale tylko przy inicjalizacji i w konstruktorze. Również, w przeciwieństwie do const, może być wartością instancyjną, nie tylko statyczną.

private readonly string _name;
public const double PI = 3.14159;


23) Jaki jest domyślny modyfikator dostępu klas?


Domyślnym modyfikatorem dostępu klas w C# jest internal.

class Student
{
}

internal class Student
{
}


24) Jaki jest domyślny modyfikator dostępu dla składowych klasy?


Domyślny modyfikator dostępu dla składowych klasy jest private.

int _age;
private string _pesel;

void DisplayAge()
{
}

private void DisplayPesel()
{
}


25) Czy w C# jest możliwe dziedziczenie z wielu klas?


W C# możemy dziedziczyć tylko po 1 klasie. Nie ma możliwości dziedziczenia po kilku klasach.

public class Student : Person
{
}


26) Czy klasa może implementować wiele interfejsów?


Tak. W przeciwieństwie do dziedziczenia, w C# klasa może implementować wiele interfejsów.

public class Student : IDisposable, ICloneable
{
    public object Clone()
    {
        return null;
    }

    public void Dispose()
    {
    }
}


27) Czy w C# można utworzyć metodę, która może przyjmować zmienną liczbę parametrów?


Tak, aby to zrobić, należy użyć słowa kluczowego params.

public class Student
{
    private List< int>  _marks = new List< int> ();

    public void AddMarks(params int[] number)
    {
        foreach (var item in number)
        {
            _marks.Add(item);
        }
    }
}

var student = new Student();
student.AddMarks(1, 2, 3);
student.AddMarks(1, 2, 3, 4, 5, 5, 5, 5, 1);


28) Jaka jest różnica pomiędzy słowem kluczowym ref, a out?


Zarówno parametr oznaczony słowem kluczowym ref, jak i out pozwala nam przekazać wartość do metody za pomocą referencji. Jednak każdy z nich będzie bardziej dopasowany do innej sytuacji. Podstawowe różnice pomiędzy nimi:
-Zmienna oznaczona słowem ref musi być zainicjalizowana przed przekazaniem jej jako parametr.
-Zmienna oznaczona słowem out nie musi (ale może) być zainicjalizowana przed przekazaniem jej jako parametr. Również może być inicjalizacja przed przekazaniem, lecz nie ma to najmniejszego sensu.
-Zmienna oznaczona przez ref nie musi zostać zainicjalizowana w metodzie.
-Zmienna oznaczona przez out musi zostać zainicjalizowana w metodzie.

Podsumowując, zmienna oznaczona przez ref mówi nam, że zmienna została już wcześniej zainicjalizowana i może zostać odczytana lub/i zmieniona w metodzie, a wszystkie zmiany będą widoczne również poza metodą. Zmienna oznaczona przez out mówi nam, że zmienna nie została jeszcze zainicjalizowana, nie ma żadnej wartości. Jej wartość będzie zainicjalizowana wewnątrz metody i zazwyczaj używamy w przypadkach, gdy chcemy, żeby wartość jakiejś zmiennej została zmieniona poza metodą.

public void IncrementRefValue(ref int value)
{
    value++;
}
public void IncrementOutValue(out int value)
{
    value = 10;
    value++;
}


29) Co oznacza słowo kluczowe void?


Takim słowem kluczowym może zostać oznaczona metoda. I mówi nam o tym, że metoda nie zwraca żadnej wartości.

public void Display()
{
}


30) Czym są indeksery?


Indeksery, są to metody, dzięki którym możemy mieć dostęp do obiektu, tak jakby był on tablicą, czy kolekcją elementów.

public class MyList
{
    private List< int>  _list = new List< int> ();

    public int this[int index]
    {
        get
        {
            return _list[index];
        }
        set
        {
            _list[index] = value;
        }
    }
}

var myList = new MyList();
myList[0] = 1;


ZAKOŃCZENIE


To wszystkie pytania na dzisiaj. Do kolejnych pytań wrócimy już w kolejnym artykule. Jeżeli taki materiał Ci się spodobał, to koniecznie dołącz do mojej społeczności – darmowe zapisy, gdzie będziesz również miał dostęp do dodatkowych materiałów.

To wszystko na dzisiaj, do zobaczenia w kolejnym artykule.

Poprzedni artykuł - 100 Pytań (i Odpowiedzi!) z Rozmów Kwalifikacyjnych Dla Młodszych Programistów C#/.NET (Część 2/10).
Następny artykuł - 100 Pytań (i Odpowiedzi!) z Rozmów Kwalifikacyjnych Dla Młodszych Programistów C#/.NET (Część 4/10).
Autor artykułu:
Kazimierz Szpin
Kazimierz Szpin
Programista C#/.NET. Specjalizuje się w ASP.NET Core, ASP.NET MVC, ASP.NET Web API, Blazor, WPF oraz Windows Forms.
Autor bloga ModestProgrammer.pl
Komentarze (2)
Kuba
KUBA, 17 grudnia 2021 23:32
Ekstra seria, klarowne wyjaśnienia, tego szukałem na polskiej scenie .NET :)
Kazimierz Szpin
KAZIMIERZ SZPIN, 18 grudnia 2021 06:17
@KUBA, dzięki i zapraszam do śledzenia bloga, w kolejnych dniach zostaną dodane następne części z tej serii :)
Dodaj komentarz

Wyszukiwarka

© Copyright 2022 modestprogrammer.pl. Wszelkie prawa zastrzeżone. Polityka prywatności. Design by Kazimierz Szpin