封送處理字串
更新:2007 年 11 月
如果需要的話,平台叫用會複製字串參數,將它們從 .NET Framework 格式 (Unicode) 轉換成 Unmanaged 格式 (ANSI)。因為 Managed 字串是不變的,所以當函式傳回時,平台叫用並不會從 Unmanaged 記憶體中將 Managed 字串複製回 Managed 記憶體。
下表列出字串的封送處理選項、說明其用法,並提供對應之 .NET Framework 範例的連結。
字串 |
說明 |
範例 |
---|---|---|
傳值方式 |
將字串當成 In 參數傳遞 |
|
做為結果 |
從 Unmanaged 程式碼傳回字串 |
|
傳址方式 |
使用 StringBuilder,將字串當成 In/Out 參數傳遞 |
|
在結構中 - 傳值方式 |
傳遞結構中的字串 (結構是 In 參數) |
|
在結構中 - 傳址方式 (char*) |
傳遞結構中的字串 (結構是 In/Out 參數)。Unmanaged 函式預期是字元緩衝區的指標,而緩衝區大小是結構的成員 |
|
在結構中 - 傳址方式 (char[]) |
傳遞結構中的字串 (結構是 In/Out 參數)。Unmanaged 函式預期是內嵌字元緩衝區 |
|
在類別中 - 傳值方式 (char*) |
傳遞類別中的字串 (類別是 In/Out 參數)。Unmanaged 函式預期字元緩衝區的指標 |
|
在類別中 - 傳值方式 (char[]) |
傳遞類別中的字串 (類別是 In/Out 參數)。Unmanaged 函式預期是內嵌字元緩衝區 |
|
做為傳值字串的陣列 |
建立以傳值方式傳遞的字串陣列 |
|
做為含有傳值字串的結構陣列 |
建立含有字串的結構陣列,而且陣列是以傳值方式傳遞 |