平台調用會複製字串參數,並在需要時將其從 .NET Framework 格式(Unicode)轉換為非受控格式(ANSI)。 因為 Managed 字串是不可變的,所以當函式傳回時,平臺調用不會將它們從 Unmanaged 記憶體複製回 Managed 記憶體。
下表列出字串的封送處理選項、描述其用法,並提供對應 .NET Framework 範例的連結。
| 繩子 | 說明 | 範例 |
|---|---|---|
| 依值。 | 將字串傳遞為 In 參數。 | MsgBox |
| 結果是。 | 從非管理代碼傳回字串。 | 字串 |
| 依參考。 | 使用 StringBuilder傳遞字串作為 In/Out 參數。 | 緩衝區 |
| 以值形式的結構中 | 在結構中傳遞字串,該結構為 In 參數。 | 結構體 |
| 在結構中使用傳址 (char*)。 | 在結構中傳遞字串,該結構為 In/Out 參數。 非受管函式需要指向字元緩衝區的指標,且緩衝區大小是結構體中的一個成員。 | 字串 |
| 以傳址 方式在 結構中 (char[]) 。 | 在結構中傳遞字串,該結構為 In/Out 參數。 非受控函數需要嵌入式字元緩衝區。 | OSInfo |
| 類別為值類型 (char*)。 | 傳遞類別中的字串(類別是 In/Out 參數)。 未管理函式需要字串緩衝區的指標。 | OpenFileDlg |
| 依值排序的類別中(char[])。 | 傳遞類別中的字串(類別是 In/Out 參數)。 非受控函數需要嵌入式字元緩衝區。 | OSInfo |
| 以值形式作為字串陣列。 | 建立以傳值方式傳遞的字串陣列。 | 陣列 |
| 作為包含字串值的結構陣列。 | 建立結構陣列,其中包含字串,而陣列會以傳值方式傳遞。 | 陣列 |
另請參閱
- 字串的預設封送處理
- 使用平台調用封送處理資料
- 封送處理類別、結構和聯合
- 序列化不同類型的陣列
- 其他編組範例