Wird das pimpl Idiom in c# verwendet?
Das hängt davon ab, was Sie mit dieser Redewendung meinen.
Die betreffende Redewendung besteht im Wesentlichen darin, die Implementierungsdetails eines Typs in eine Klasse und die öffentliche Oberfläche in eine Wrapper-Klasse zu trennen, die einfach einen Zeiger auf die Implementierungsklasse enthält.
Dies hat zwei Vorteile.
Erstens kann es in C++ zu Verbesserungen bei der Kompilierzeit führen, da die Nutzer der öffentlichen Fläche nur die Header-Datei mit der öffentlichen Fläche parsen müssen; sie müssen nicht die Header-Datei mit den Implementierungsdetails parsen.
Zweitens führt es zu einer sehr sauberen Trennung von Schnittstelle und Implementierung; die Implementierung kann sich völlig verändern, ohne dass dies Auswirkungen auf den Verbraucher hat, da dieser die Implementierungsdetails nie zu Gesicht bekommt.
Der erste Vorteil ist in C# nicht von Bedeutung. Der C#-Compiler ist schnell (zum großen Teil natürlich, weil die Sprache so konzipiert wurde, dass sie schnell zu kompilieren ist).
Der zweite Vorteil ist in C# von großem Nutzen. In C# wäre die idiomatische Art und Weise, dieses Muster zu implementieren, die Erstellung einer private verschachtelte Klasse die die "eigentliche" Arbeit macht, und eine öffentliche Klasse, die nur eine Fassade mit der öffentlichen Oberfläche ist.
Eine Technik, die ich in C# besonders mag, ist es, die öffentliche Klasse zur Basisklasse der privaten verschachtelten Klasse, geben Sie der Basisklasse einen privaten Konstruktor, um Erweiterungen durch Dritte zu verhindern, und verwenden Sie das Fabrikmuster, um Instanzen der privaten verschachtelten Klasse auszugeben.
Ich verstehe nicht wirklich, warum das Gleiche nicht auch mit C++ möglich ist.
Dann ermutige ich Sie, einen C++-Compiler zu schreiben, der dies tut. Entweder wird es Ihnen gelingen, einen viel schnelleren C++-Compiler zu erstellen, oder Sie werden herausfinden, warum das Gleiche in C++ nicht machbar ist. Sie profitieren so oder so!