C# MaxLengthAttribute如何测量长度?

C# MaxLengthAttribute如何测量长度?,c#,sql-server,validation,utf-8,utf-16,C#,Sql Server,Validation,Utf 8,Utf 16,如何准确地测量字符串的长度?它是否基于UTF-16中的字节,因为C#字符串是UTF-16?因此,如果我的SQL server使用UTF-8排序规则,则可能会出现SQL server和C#对字符串长度是否为的不同意见的情况。例如,属性不度量字符串的长度,它只指定字符串的长度属性的限制,即字符数 它是否基于UTF-16中的字节,因为C#字符串是UTF-16 否,它是字符串对象中的字符数,即字符串的长度属性返回的数字 例如,值为“abc”的字符串的长度为3,在UTF-8中表示为3字节,在UTF-16中

如何准确地测量字符串的长度?它是否基于
UTF-16
中的字节,因为C#字符串是
UTF-16
?因此,如果我的SQL server使用
UTF-8
排序规则,则可能会出现SQL server和C#对字符串长度是否为的不同意见的情况。例如,
属性不度量字符串的长度,它只指定字符串的长度属性的限制,即字符数

它是否基于UTF-16中的字节,因为C#字符串是UTF-16

否,它是
字符串
对象中的字符数,即
字符串
长度
属性返回的数字

例如,值为“abc”的
字符串的
长度为3,在UTF-8中表示为3字节,在UTF-16中表示为6字节

值为“åäö”的
字符串也具有
长度
,尽管在UTF-8和UTF-16中都由6个字节表示

因此,它是指中
char
元素的数量,或
字符串的长度