Zdaję sobie sprawę, że to bardzo podstawowe pytanie, ale ankieter zadał mi bardzo podstępny sposób i byłam bezradna :(
Znam tylko materiałową lub teoretyczną definicję interfejsu i zaimplementowałem ją w wielu projektach, nad którymi pracowałem. Ale naprawdę nie rozumiem, dlaczego i jak jest to przydatne.
Nie rozumiem też jednej rzeczy w interfejsie. czyli na przykład używamy
conn.Dispose();
w końcu bloku. Ale nie widzę, że klasa implementuje lub dziedziczy klasę IDisposable
interface ( SqlConnection
), mam na myśli. Zastanawiam się, jak mogę po prostu nazwać nazwę metody. Również w tym samym miejscu nie rozumiem, jak działa metoda Dispose, ponieważ musimy zaimplementować treść funkcji z naszą własną implementacją dla wszystkich metod interfejsu. W jaki sposób interfejsy są akceptowane lub nazywane jako kontrakty? Te pytania toczyły się w mojej głowie aż do teraz i szczerze mówiąc, nigdy nie widziałem żadnego dobrego wątku, który wyjaśniałby moje pytania w sposób, który mógłbym zrozumieć.
MSDN jak zwykle wygląda bardzo przerażająco i żadna pojedyncza linijka nie jest tam jasna ( ludzie, uprzejmie przepraszam, którzy interesują się rozwojem na wysokim poziomie, jestem przekonany, że każdy kod lub artykuł powinien dotrzeć do umysłu każdego, kto go zobaczy, stąd jak wielu innych mówi, MSDN nie nadaje się ).
Ankieter powiedział:
Ma 5 metod i chętnie zaimplementuje je bezpośrednio w klasie, ale jeśli musisz wybrać klasę abstrakcyjną lub interfejs, którą wybierzesz i dlaczego? Odpowiedziałem mu na wszystkie rzeczy, które przeczytałem na różnych blogach, mówiąc o zaletach i wadach zarówno klasy abstrakcyjnej, jak i interfejsu, ale on nie jest przekonany, próbuje ogólnie zrozumieć „Dlaczego interfejs”. „Dlaczego klasa abstrakcyjna” w ogóle, nawet jeśli mogę zaimplementować te same metody tylko raz i nie zamierzam tego zmieniać.
Nigdzie w sieci nie widzę, mógłbym dostać artykuł, który wyjaśniłby mi jasno o interfejsach i ich działaniu. Jestem jednym z tych wielu programistów, którzy wciąż nie wiedzą o interfejsach (znam teorię i metody, z których korzystałem), ale nie są zadowoleni, że dobrze to zrozumiałem.
SqlConnection
dziedziczy System.ComponentModel.Component
który implementuje IDisposable
.
SqlConnection
implementacji IDisposable
.