Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#字符串长度_C# - Fatal编程技术网

C#字符串长度

C#字符串长度,c#,C#,为什么这两个字符串返回不同的长度值。“CertificateKey”是一种财产。它返回41表示长度。但是,等效常量字符串返回40。如果将证书的值作为常量复制,则长度返回41。为什么 // This is the property. Length 41 CertificateKey.Length 41 四十 41我复制并粘贴了你的两个字符串文字,发现我可以复制你的结果,所以我打印每个字符,如下所示: var a = "9FE90CA8A4138F65E9E2C67D1F37B9D5B991938

为什么这两个字符串返回不同的长度值。“CertificateKey”是一种财产。它返回41表示长度。但是,等效常量字符串返回40。如果将证书的值作为常量复制,则长度返回41。为什么

// This is the property. Length 41
CertificateKey.Length
41

四十


41

我复制并粘贴了你的两个字符串文字,发现我可以复制你的结果,所以我打印每个字符,如下所示:

var a = "9FE90CA8A4138F65E9E2C67D1F37B9D5B9919384";
var b = "‎9FE90CA8A4138F65E9E2C67D1F37B9D5B9919384";
foreach (char c in a) Console.WriteLine($"{(int)c:X}");
Console.WriteLine("---");
foreach (char c in b) Console.WriteLine($"{(int)c:X}");
并得到如下结果:

39
46
[...]
34
---
200E
39
46
[...]
34

200E
是使用将字符串拆分为字符的方法,看看会发生什么?可能
CertificateKey
属性包含隐藏的空字符(
\u0000
),这解释了为什么即使字符串有40个可见字符,它也会返回41个字符。乔:是的,我刚刚发现了200E。这是CertificateKey中的第一个字符。现在的问题是它是如何实现的。这个值来自Web.Config。您的问题中没有足够的信息来辨别它是如何到达那里的。我最好的猜测是,它进入web.config的方式与它进入我的LINQPad程序的方式相同:有人从它已经存在的源复制并粘贴了它。但是它是如何进入源数据的,我不能说。我删除了Web.config条目,在NP++中重新创建它,并将其添加回Web.config。成功了。我得把那个归因于坏数据。谢谢大家。在我的例子中,当我从“证书信息”窗口复制粘贴文本(不记得确切的名称,查看证书信息的公共窗口对话框)时,我有完全相同的问题。
var a = "9FE90CA8A4138F65E9E2C67D1F37B9D5B9919384";
var b = "‎9FE90CA8A4138F65E9E2C67D1F37B9D5B9919384";
foreach (char c in a) Console.WriteLine($"{(int)c:X}");
Console.WriteLine("---");
foreach (char c in b) Console.WriteLine($"{(int)c:X}");
39
46
[...]
34
---
200E
39
46
[...]
34