Also.
Zum einen kannst du sehr wohl Zeiger verwenden, und zwar in einem unsicheren (unsafe) Kontext. Ich weiß nicht, wie der unter Delphi eingeleitet wird, in C# kannst du jeden Block, jede Funktion und jede Klasse als unsafe deklarieren und kannst dann drinnen Zeiger benutzen.
Zum anderen, wenn es dir nur um die Verwendung von nicht gemanageten APIs geht, hast du einen guten Freund namens Marshaller. Der sorgt nämlich zum Beispiel dafür, dass der Typ String in const char* oder der Typ StringBuilder in char* umgesetzt wird. Du kannst dir auch mal die Prototypen auf
P/Invoke.net anschauen, da kann man auch schon was bei lernen. Und schließlich halt mal im
SDK unter Migration bzw. "Zusammenarbeit mit nicht verwaltetem Code" nachschauen.
Managed
DirectX ist übrigens ein erstklassiges Beispiel für eine
API, die sowohl mit Zeigern als auch ohne verwendet werden kann. Einfach mal reinschauen.