2

Metro c# で文字列インターン メソッドを取得する方法。Windows 8 c# で見つからない場合、指定された文字列へのシステムの参照を維持するための同等の方法はありますか。

4

1 に答える 1

11

これは、「.NET for Metro スタイル アプリ」API を有効にする CLR に組み込まれている言語プロジェクションの必然的な副作用です。このプロジェクションは、WinRT API 呼び出しから取得された文字列を System.String にマップします。基になる文字列はマネージド文字列ではなく、ガベージ コレクション ヒープには存在しません。HSTRING です。 言語プロジェクションにより、System.String のように動作します。

したがって、その API では、String クラスにはマネージド文字列に固有のメソッドがありません。Intern() や IsInterned() と同様に、管理された文字列に対してのみ機能します。Copy、Clone、および GetEnumerator も問題ありません。これに対する回避策はありません。mscorlib のマネージ String クラスへのアクセスは、参照アセンブリによって完全にブロックされ、型が System.Runtime.dll に転送されます。その方法なしで機能させる必要があります。

于 2012-07-17T12:44:36.657 に答える