c using statement c virtual method tutorial with examples
Ten szczegółowy samouczek wyjaśnia wszystko o języku C # przy użyciu instrukcji i metody wirtualnej. Dowiesz się również, jaka jest różnica między metodami abstrakcyjnymi i wirtualnymi:
Blok Using pomaga głównie w zarządzaniu zasobami, pozwala systemowi zarządzać swoimi zasobami poprzez określenie zakresu obiektu i jego wymagań dotyczących zasobów.
.Net Framework oferuje różne sposoby zarządzania zasobami obiektów za pomocą modułu odśmiecania pamięci. Oznacza to, że nie musisz jawnie przydzielać i usuwać obiektów pamięci. Operacja czyszczenia dowolnego niezarządzanego obiektu zostanie wykonana przy użyciu destruktora.
Aby pomóc programistom to osiągnąć, instrukcja C # using zawiera warunek zniszczenia obiektu.
=> Sprawdź bezpłatny przewodnik szkoleniowy języka C # tutaj .
Aby osiągnąć automatyczne zniszczenie obiektu, C # oferuje metodę usuwania, którą można wywołać, gdy obiekt nie jest już wymagany. Instrukcja using w C # definiuje warunkową granicę istnienia obiektu. Gdy sekwencja wykonania opuści granicę używania, platforma .Net będzie wiedziała, że nadszedł czas, aby zniszczyć ten obiekt.
najlepszy darmowy ripper DVD dla systemu Windows 10
Czego się nauczysz:
- C # przy użyciu instrukcji
- Metoda wirtualna C #
- Co to jest metoda wirtualna?
- Metody wirtualne: kilka punktów do zapamiętania
- Jakie jest zastosowanie wirtualnego słowa kluczowego w języku C #?
- Różnica między metodą abstrakcyjną a metodą wirtualną
- Różnica między wirtualnym a zastąpieniem w C #
- Czy zastąpienie metody wirtualnej w C # jest obowiązkowe?
- Wniosek
C # przy użyciu instrukcji
Zaimplementuj interfejs IDisposable do użycia
Instrukcja C # Using umożliwia programistom zaimplementowanie kilku zasobów w jednej instrukcji. Wszystkie obiekty zdefiniowane w using bloku kodu powinny implementować interfejs IDisposable, co umożliwia platformie wywoływanie metod dispose dla określonych obiektów w instrukcji po jej zakończeniu.
Przykład
Używanie instrukcji można łączyć z typem, który może implementować IDisposable, takim jak StreamWriter, StreamReader itp.
Rzućmy okiem na prosty program:
public class Program { public static void Main(string[] args) { using (SysObj so = new SysObj()) { Console.WriteLine('Inside using statement'); } Console.WriteLine('Outside of the using statement block'); } } class SysObj : IDisposable { public void Dispose() { Console.WriteLine('Dispose method'); } }
Wynik
Wynik powyższego programu:
Wewnątrz za pomocą oświadczenia
Metoda usuwania
Poza blokiem instrukcji using
Wyjaśnienie
W powyższym przykładzie, gdy program jest wykonywany, najpierw w stercie pamięci alokowana jest instancja „SysObj”. Następnie blok using rozpoczyna wykonywanie i wyświetla dane wyjściowe, które zdefiniowaliśmy w konsoli. Następnie, gdy blok instrukcji Using dobiega końca, wykonanie jest natychmiast przenoszone do metody dispose.
Następnie kod opuszcza blok instrukcji i wypisuje instrukcję zewnętrzną do konsoli.
Metoda wirtualna C #
Co to jest metoda wirtualna?
Metoda wirtualna to metoda klasy, która oferuje programiście funkcję przesłaniania metody w klasie pochodnej, która ma tę samą sygnaturę. Metody wirtualne są używane głównie do wykonywania polimorfizmu w środowisku OOP.
Metoda wirtualna może mieć implementację zarówno w klasach pochodnych, jak i podstawowych. Jest używany głównie wtedy, gdy użytkownik potrzebuje większej funkcjonalności w klasie pochodnej.
Metoda wirtualna jest najpierw tworzona w klasie bazowej, a następnie jest zastępowana w klasie pochodnej. Metoda wirtualna może zostać utworzona w klasie bazowej przy użyciu słowa kluczowego „virtual” i ta sama metoda może zostać zastąpiona w klasie pochodnej za pomocą słowa kluczowego „override”.
Metody wirtualne: kilka punktów do zapamiętania
- Metoda wirtualna w klasie pochodnej ma słowo kluczowe virtual, a metoda w klasie pochodnej powinna mieć słowo kluczowe override.
- Jeśli metoda jest zadeklarowana jako metoda wirtualna w klasie bazowej, wówczas klasa pochodna nie zawsze wymaga, aby nadpisała tę metodę, tj. Opcjonalne jest przesłonięcie metody wirtualnej w klasie pochodnej.
- Jeśli metoda ma tę samą definicję zarówno w klasie bazowej, jak i pochodnej, nie jest wymagane przesłonięcie metody. Zastąpienie jest wymagane tylko wtedy, gdy oba mają inną definicję.
- Metoda nadpisywania pozwala nam na użycie więcej niż jednej formy dla tej samej metody, stąd też pokazuje polimorfizm.
- Wszystkie metody są domyślnie niewirtualne.
- Wirtualny modyfikator nie może być używany razem z modyfikatorami Private, Static lub Abstract.
Jakie jest zastosowanie wirtualnego słowa kluczowego w języku C #?
Słowo kluczowe virtual w C # służy do zastępowania elementu członkowskiego klasy bazowej w jego klasie pochodnej na podstawie wymagania.
Słowo kluczowe virtual służy do określania metody wirtualnej w klasie bazowej, a metoda o tej samej sygnaturze, która musi zostać zastąpiona w klasie pochodnej, jest poprzedzona słowem kluczowym override.
Różnica między metodą abstrakcyjną a metodą wirtualną
Metody wirtualne zawierają implementację i pozwalają klasie pochodnej na przesłonięcie jej, podczas gdy metoda abstrakcyjna nie oferuje żadnej implementacji i zmusza programistów do pisania metod zastępujących w klasie pochodnej.
Stąd, w prostych słowach, metody abstrakcyjne nie mają w sobie żadnego kodu, podczas gdy metoda wirtualna ma własną implementację.
Różnica między wirtualnym a zastąpieniem w C #
Po słowie kluczowym virtual zazwyczaj następuje sygnatura metody, właściwości itp. I umożliwia ona przesłonięcie jej w klasie pochodnej. Słowo kluczowe override jest używane w klasie pochodnej z tą samą sygnaturą metody / właściwości, co w klasie bazowej, aby uzyskać przesłonięcie w klasie pochodnej.
jak zainstalować subversion w eclipse
Czy zastąpienie metody wirtualnej w C # jest obowiązkowe?
Kompilator nigdy nie będzie zmuszał programistów do przesłonięcia metody wirtualnej. Klasa pochodna nie zawsze wymaga przesłonięcia metody wirtualnej.
Przykład
Spójrzmy na przykład, aby lepiej zrozumieć metody wirtualne.
W tym przykładzie będziemy używać dwóch różnych metod w klasie bazowej, pierwsza jest metodą niewirtualną, a druga jest metodą wirtualną ze słowem kluczowym virtual. Obie te metody zostaną zastąpione w klasie pochodnej.
Spójrzmy:
Program
using System; public class Program { public static void Main(string[] args) { calculate calc = new calculate (); numbers nmbr = calc; calc.addition(); nmbr.addition(); calc.subtraction(); nmbr.subtraction(); } } public class numbers { public void addition(){ Console.WriteLine('This is addition method'); } public virtual void subtraction(){ Console.WriteLine('This is subtraction method'); } } public class calculate : numbers { public void addition(){ Console.WriteLine('This is addition method in the derived class'); } public override void subtraction(){ Console.WriteLine('This is subtraction method override in derived class'); } }
Wynik
Wynik powyższego programu to:
To jest metoda dodawania w klasie pochodnej
To jest metoda dodawania
Jest to przesłonięcie metody odejmowania w klasie pochodnej
Jest to przesłonięcie metody odejmowania w klasie pochodnej
Wyjaśnienie
W powyższym przykładzie mamy dwie klasy, tj. Number i Calculate. Klasa bazowa Number ma dwie metody, tj. Dodawanie i odejmowanie, gdzie dodawanie jest metodą niewirtualną, a odejmowanie jest metodą wirtualną. Stąd, gdy wykonujemy ten program, metoda „dodawania” klasy bazowej jest zastępowana w klasie pochodnej Calculate.
W innej klasie „Program” tworzymy punkt wejścia, aby utworzyć instancję klasy pochodnej Calculate, a następnie przypisujemy tę samą instancję do obiektu instancji klasy bazowej.
Kiedy wywołujemy metody wirtualne i niewirtualne przy użyciu instancji klasy, widzimy, że metoda wirtualna została zastąpiona przez użycie obu instancji, podczas gdy metoda niewirtualna została zastąpiona tylko podczas wywoływania klasy pochodnej.
Wniosek
Instrukcja using w języku C # jest używana głównie do zarządzania zasobami. Instrukcja using określa warunkową granicę istnienia obiektu.
Gdy wykonanie wyjdzie z bloku instrukcji, mówi frameworkowi, aby zniszczył każdy obiekt, który został utworzony w bloku instrukcji. Kod zdefiniowany w instrukcji powinien również implementować interfejs IDisposable, aby umożliwić platformie .Net wywołanie metody dispose dla zdefiniowanych obiektów.
Metoda wirtualna umożliwia użytkownikowi przesłonięcie metody w klasie pochodnej, która ma taki sam podpis jak metoda w klasie bazowej. Metoda wirtualna może być wykorzystana do uzyskania polimorfizmu w zorientowanych obiektowo językach programowania.
Metoda wirtualna jest używana głównie wtedy, gdy w klasie pochodnej wymagana jest dodatkowa funkcjonalność. Metody wirtualne nie mogą być prywatne, statyczne ani abstrakcyjne. Jest definiowany przy użyciu słowa kluczowego virtual w klasie bazowej i słowa kluczowego override w klasie pochodnej.
=> Obejrzyj szczegółowe samouczki szkoleniowe języka C # tutaj
rekomendowane lektury
- Python DateTime Tutorial z przykładami
- Selenium Find Element By Text Samouczek z przykładami
- Metoda MongoDB Sort () z przykładami
- Dokument zapytania MongoDB przy użyciu metody Find () (przykłady)
- Wykorzystanie kursora w MongoDB z przykładami
- Klasy i obiekty języka C #: szczegółowy samouczek z przykładami
- Samouczek dotyczący skryptów powłoki Unix z przykładami
- C # samouczek obsługi wyjątków z przykładami kodu