Ich weiß, dass es die "I" -Konvention seit COM gibt, aber ich habe nie verstanden, warum sie nicht wie jede andere Namenskonvention vor .NET überdacht wurde.
In Bezug auf den Verbrauch ist das einzige, was eine Schnittstelle beispielsweise von einer abstrakten Klasse unterscheidet, dass sie mehrfach vererbt werden können. Aber alles nach Visual Studio 2003 hat Typensignaturen in QuickInfos angezeigt, sodass es genauso nutzlos ist wie alle anderen ungarischen Notationen, die verworfen wurden.
Ich dachte auch, dass es so sein könnte, dass Sie eine grundlegende Implementierung der Schnittstelle mit demselben Namen haben können, z. B. Messageerben IMessage, aber die meisten .NET-Bibliotheken haben System.Collections.ReadOnlyCollectionBasestattdessen das Wort "Base" am Ende hinzugefügt (z. B. ) - und das macht semantischer Sinn.
COM-Interop scheint ein weiterer möglicher Grund zu sein - aber es ist nicht so, dass die von ihm generierten Wrapper-Klassen vollkommen idiomatisch .NET sind, daher bezweifle ich, dass dies eine ästhetische Überlegung war.
In einem meiner neueren Projekte habe ich ganz auf die Konvention verzichtet und es fühlt sich gut an. Fehlt mir etwas?
IListist ein allgemeiner Begriff für eine sequenzierte, zusammenhängende Sammlung mit wahlfreiem Zugriff, während Listes sich um eine sequenzierte, zusammenhängende, wahlfreie Sammlung mit wachsendem Zugriff handelt . Ich denke , F # , sie habe Recht in Aliasing Listzu ResizeArray; Das ist definitiv ein viel aussagekräftigerer Name. IListdann hätte es sein können List, also scheint das auch kein Grund zu sein.