在.NET之前的Visual Basic中,程序员可以将字符串声明为某个宽度.例如,我知道社会安全号码(在美国)总是十一个字符.所以,我可以声明一个字符串,将社会安全号码存储为11个字符的字符串,如下所示:
Dim SSN As String * 11
我的问题是:这是否会产生任何类型的性能优势,使代码运行得更快或者使用更少的内存?另外,固定长度的字符串是否会以不同的方式分配在内存中(即:在堆栈中而不是在堆中)?
VB6或更早版本中我必须使用固定长度字符串的唯一一次是使用API调用.没有传递固定长度的字符串会导致长度超过预期时出现无法解释的错误,甚至有时短于预期.
如果您正在进行并计划在应用程序中更改它,请确保没有将字符串传递给API或外部DLL,并且程序不需要输出固定长度字段,例如使用许多AS / 400进口计划.
我个人从来没有看到性能差异,因为我正在运行300k记录的循环,但别无选择,只能在我做的时候提供和使用固定长度.但是VB默认情况下喜欢使用未定义的长度,所以我认为固定长度的性能会更低.
尝试编写测试应用程序来执行两个字符串的基本连接,并让它循环遍历函数,如50k次.时间两者之间的差异有一个未定义的长度而另一个是固定的.