Was ist die eigentliche Funktion der Projekteinstellung C # „unsicheren Code zulassen“
Frage
Ich frage mich, ob die C # Projekteinstellung „unsicherer Code zuläßt“ nur auf unsicher C # -Code in dem Projekt selbst, oder ist es notwendig, setzen Sie diese Option bei der Verknüpfung in einem nativen C ++ DLL gilt? Was ist in einer verwalteten DLL verknüpft, das sich zu einer nativen DLL verknüpft? Was bedeutet diese Option wirklich tun, unter der Haube?
Lösung
Es hat mit dem „unsicheren“ Schlüsselwort in C # zu tun. „Unsicher“ dreht sich alle Prüfungen aus, die normalerweise geschehen würde, und ermöglicht es Ihnen, direkt auf den Speicher zugreifen. es bezieht sich nicht native C ++ DLL oder Schnittstellen zu nennen.
Andere Tipps
Es ermöglicht Ihnen, den "unsicheren" Block zu verwenden.
unsafe(...)
{
}
Dies bezieht sich nur auf die Verwendung von unsafe
Blöcke (wo Zeiger kann verwendet werden). Es ist nicht regieren P / Invoke.
Es ist notwendig, den unsicheren {} Kontext zu verwenden. Früher erforderlich sizeof () zu verwenden, aber in späteren Versionen, die nicht mehr wahr ist.
Sie müssen keine unsicheren Code ermöglichen, wenn Sie in einer anderen Sprache wie C auf eine andere DLL geschrieben werden externing.