vb.net中嵌入null的字符串长度

und*_*one 4 vb.net vb6 string-length

我有一个简单的问题:vb.net如何确定字符串长度并处理字符串的终止?
我知道in C(和它的家族)null字符是字符串的结尾.在vb6中,null字符对字符串的终止没有影响但在vb.net中它似乎有雾!
在vb6中假设此代码:

Private Sub Command1_Click()
Dim Str As String
Str = "Death is a good user," & Chr(0) & " Yes I'm good"
RichTextBox1.Text = Str
RichTextBox1.Text = RichTextBox1.Text & vbNewLine & Len(Str)
End Sub
Run Code Online (Sandbox Code Playgroud)

这个代码运行时会发生什么: 在此输入图像描述

而且没关系.这是类似的代码C:

#include "stdafx.h"
#include <string.h> 
int main(int argc, char* argv[])
{
    char *p="Death is a good user,\0 Yes I'm good";

    printf("String:%s\nString length:%d\n",p,strlen(p));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这就是发生的事情:
在此输入图像描述

根据C规则,这也很好,但这里是vb.net中的相同代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim str As String = "Death is a good user," & Chr(0) & " Yes I'm good"
    RichTextBox1.Text = str
    RichTextBox1.Text &= vbNewLine & str.Length
End Sub
Run Code Online (Sandbox Code Playgroud)

会发生什么:
在此输入图像描述


这似乎不对!

编辑1:写入文件似乎是对的:

在此输入图像描述

编辑2:Marktcarvin建议,这可能是UI的问题,但它没有解释为什么vb6显示整个字符串!

编辑3:我知道Windows及其API,用户界面,...都是写的C,所以对他们做出反应是正常的C,但正如我上面所说,他们没有.

tca*_*vin 9

在VB.NET(和C#)中,字符串的处理方式与它们在VB6中的处理方式非常相似,即它们具有明确的长度,而不是基于任何特定字符或其中包含的字符.

关于RichTextBox,它只是看起来它不支持嵌入的空字符.