MaxLengthAttribute 是如何测量长度的?

How does MaxLengthAttribute measure length?

MaxLengthAttribute 究竟是如何测量字符串的长度的?它是否基于 UTF-16 中的字节,因为 C# 字符串是 UTF-16?因此,如果我的 SQL 服务器使用 UTF-8 排序规则,可能会出现 SQL 服务器和 C# 对字符串长度是否为 e.g. 有不同意见的情况。 <= 100?

该属性不测量字符串的长度,它只是指定字符串长度的限制 属性,即 clearly documented 作为字符数。

Is it based on bytes in UTF-16 as C# strings are UTF-16

不是,是string对象中的字符数,即stringLength属性返回的数字。

例如,值为“abc”的 stringLength 为 3,在 UTF-8 中用 3 个字节表示,在 UTF-16 中用 6 个字节表示。

尽管在 UTF-8 和 UTF-16 中都由 6 个字节表示,但值为“åäö”的 string 也有一个 Length 3。

所以它指的是char个元素的个数,或者string的长度。