<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 固定大小的緩沖區(C# 編程指南) 在 C# 中,可以使用 [fixed](https://msdn.microsoft.com/zh-CN/library/f58wzh21.aspx) 語句在數據結構中創建帶有固定大小數組的緩沖區。使用現有代碼(如使用其他語言、預先存在的 DLL 或 COM 項目編寫的代碼)時,這種方法非常有用。固定數組可采用允許普通結構成員使用的任何特性或修飾符。唯一的限制是,數組類型必須是 **bool**、**byte**、 **char**、 **short**、**int**、**long**、**sbyte**、**ushort**、**uint**、**ulong**、**float** 或 **double**。 ``` private fixed char name[30]; ``` ## 備注 在早期版本的 C# 中,聲明 C++ 樣式的固定大小結構是很困難的,因為包含數組的 C# 結構不包含數組元素。相反,該結構包含對元素的引用。 C# 2.0 添加了在 [struct](https://msdn.microsoft.com/zh-CN/library/ah19swz4.aspx)(當用在 [unsafe](https://msdn.microsoft.com/zh-CN/library/chfa2zb8.aspx) 代碼塊中時)中嵌入固定大小的數組的功能。 例如,在 C# 2.0 之前,下面的 **struct** 的大小為 8 字節。 pathName 數組是對堆分配數組的引用: ``` public struct MyArray { public char[] pathName; private int reserved; } ``` 從 C# 2.0 開始,**struct** 可以包含嵌入的數組。在下面的示例中,fixedBuffer 數組有固定的大小。若要訪問數組的元素,應使用 **fixed** 語句建立指向第一個元素的指針。 **fixed** 語句將 fixedBuffer 實例固定到內存中的特定位置。 ``` namespace FixedSizeBuffers { internal unsafe struct MyBuffer { public fixed char fixedBuffer[128]; } internal unsafe class MyClass { public MyBuffer myBuffer = default(MyBuffer); } internal class Program { static void Main() { MyClass myC = new MyClass(); unsafe { // Pin the buffer to a fixed location in memory. fixed (char* charPtr = myC.myBuffer.fixedBuffer) { *charPtr = 'A'; } } } } } ``` 128 個元素的 **char** 數組的大小為 256 字節。在固定大小的 [char](https://msdn.microsoft.com/zh-CN/library/x9h8tsay.aspx) 緩沖區中,每個字符始終占用兩個字節,而與編碼無關。即使將 char 緩沖區封送到具有 CharSet = CharSet.Auto 或 CharSet = CharSet.Ansi 的 API 方法或結構,也是如此。有關更多信息,請參見 [CharSet](https://msdn.microsoft.com/zh-CN/library/system.runtime.interopservices.charset.aspx)。 另一種常見的固定大小的數組是 [bool](https://msdn.microsoft.com/zh-CN/library/c8f5xwh7.aspx) 數組。 **bool** 數組中元素的大小始終為一個字節。 **bool** 數組不適合于創建位數組或緩沖區。 | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 除了用 [stackalloc](https://msdn.microsoft.com/zh-CN/library/cx9s2sy4.aspx) 創建的內存之外,C# 編譯器和公共語言運行時 (CLR) 不執行任何安全緩沖區溢出檢查。與所有不安全代碼一樣,請謹慎使用。 | 不安全緩沖區與常規數組在以下方面不同: * 不安全緩沖區只能用在不安全上下文中。 * 不安全緩沖區始終是向量(或一維數組)。 * 數組的聲明應包括計數,如 char id[8]。而不能使用 char id[]。 * 不安全緩沖區只能是不安全上下文中的結構的實例字段。 ## 請參閱 [C# 編程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) [不安全代碼和指針(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/t2yzs44b.aspx) [fixed 語句(C# 參考)](https://msdn.microsoft.com/zh-CN/library/f58wzh21.aspx) [互操作性(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173184.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看