UTF8Encoding.GetMaxByteCount(Int32) 方法

定義

計算編碼指定字元數所產生的最大位元組數。

public:
 override int GetMaxByteCount(int charCount);
public override int GetMaxByteCount(int charCount);
override this.GetMaxByteCount : int -> int
Public Overrides Function GetMaxByteCount (charCount As Integer) As Integer

參數

charCount
Int32

需要編碼的字元數。

傳回

編碼指定字元數所產生的最大位元組數。

例外狀況

charCount 小於零。

-或-

所得的位元組數大於可回傳為整數的最大數值。

後來出現了備用機制(更多資訊請參見 .NET 中的字元編碼

-及-

EncoderFallback 設定為 EncoderExceptionFallback

範例

以下範例使用該 GetMaxByteCount 方法回傳編碼指定字元所需的最大位元組數。

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        UTF8Encoding utf8 = new UTF8Encoding();
        int charCount = 2;
        int maxByteCount = utf8.GetMaxByteCount(charCount);
        Console.WriteLine(
            "Maximum of {0} bytes needed to encode {1} characters.",
            maxByteCount,
            charCount
        );
    }
}
Imports System.Text

Class UTF8EncodingExample
    
    Public Shared Sub Main()
        Dim utf8 As New UTF8Encoding()
        Dim charCount As Integer = 2
        Dim maxByteCount As Integer = utf8.GetMaxByteCount(charCount)
        Console.WriteLine( _
            "Maximum of {0} bytes needed to encode {1} characters.", _
            maxByteCount, _
            charCount _
        )
    End Sub
End Class

備註

要計算儲存所得位元組所需的 GetBytes 精確陣列大小,你就呼叫了 方法 GetByteCount 。 要計算最大陣列大小,你呼叫 方法 GetMaxByteCount 。 此 GetByteCount 方法通常分配較少記憶體,而 GetMaxByteCount 執行速度較快。

GetMaxByteCount 是一個最壞情況的數值,包括目前選擇 EncoderFallback的 的最壞情況。 若選擇備援時字串 GetMaxByteCount 可能很大,則可回傳較大值。

在大多數情況下,此方法對於小字串回傳的數值相當合理。 對於大字串,你可能得在使用非常大的緩衝區和在罕見情況下抓出錯誤之間做選擇,因為緩衝區超過了更合理的緩衝區。 你也可以考慮使用 GetByteCountEncoder.Convert的其他方法。 例如,英文及許多其他語言的文字通常只需一個 UTF-8 位元組來表示一個字元,但回 GetMaxByteCount 傳的數字必須考慮該字串可能完全由每個字元需要四個位元組的字元組成。

GetMaxByteCount 與 無關 GetChars。 如果你的應用程式需要類似的功能來搭配 GetChars,它應該使用 GetMaxCharCount

Note

GetMaxByteCount(N) 不一定與 N* GetMaxByteCount(1)相同。

適用於

另請參閱