Ich bin mir bewusst, dass dies eine sehr grundlegende Frage ist, aber ein Interviewer hat mich sehr trickreich gefragt und ich war hilflos :(
Ich kenne nur materielle oder theoretische Definitionen für eine Schnittstelle und habe sie auch in vielen Projekten implementiert, an denen ich gearbeitet habe. Aber ich verstehe wirklich nicht, warum und wie das nützlich ist.
Ich verstehe auch nichts in der Benutzeroberfläche. dh wir verwenden zum Beispiel
conn.Dispose();
in endlich blockieren. Aber ich sehe nicht, dass die Klasse die IDisposable
interface ( SqlConnection
) -Klasse implementiert oder erbt , meine ich. Ich frage mich, wie ich einfach den Methodennamen aufrufen kann. In der gleichen Sache verstehe ich auch nicht, wie die Dispose-Methode funktioniert, da wir den Funktionskörper mit unserer eigenen Implementierung für alle Schnittstellenmethoden implementieren müssen. Wie werden Schnittstellen als Verträge akzeptiert oder benannt? Diese Fragen gingen mir bis jetzt immer wieder durch den Kopf und ehrlich gesagt habe ich nie einen guten Thread gesehen, der meine Fragen auf eine Weise erklären würde, die ich verstehen kann.
MSDN sieht wie immer sehr beängstigend aus und es ist dort keine einzige Zeile klar ( Leute, bitte entschuldigen Sie, wer sich in der Entwicklung auf hohem Niveau befindet. Ich bin der festen Überzeugung, dass jeder Code oder Artikel den Verstand von jedem erreichen sollte, der ihn sieht, daher, wie viele andere sagen, MSDN ist nicht von Nutzen ).
Der Interviewer sagte:
Er hat 5 Methoden und implementiert diese gerne direkt in der Klasse. Wenn Sie sich jedoch für eine abstrakte Klasse oder Schnittstelle entscheiden müssen, welche wählen Sie und warum? Ich habe ihm all die Dinge beantwortet, die ich in verschiedenen Blogs gelesen habe und die Vor- und Nachteile sowohl der abstrakten Klasse als auch der Schnittstelle sagten, aber er ist nicht überzeugt, er versucht, "Warum Schnittstelle" im Allgemeinen zu verstehen. "Warum abstrakte Klasse" im Allgemeinen, auch wenn ich die gleichen Methoden nur einmal implementieren kann und sie nicht ändern werde.
Ich sehe nirgendwo im Netz, ich könnte einen Artikel bekommen, der mich klar über Schnittstellen und deren Funktionsweise erklärt. Ich bin einer der vielen Programmierer, die noch nichts über Schnittstellen wissen (ich kenne die theoretischen Methoden und Methoden, die ich verwendet habe), aber nicht zufrieden sind, dass ich sie klar verstanden habe.
SqlConnection
erbt System.ComponentModel.Component
welche implementiert IDisposable
.
SqlConnection
implementiert IDisposable
.