我正在从VB6到VB.Net(VS 2010)的过渡,有一个基本的,而不是后者的扩张性的认识。 我显然有相当多的代码。我毫不犹豫地用“升级”时,“端口”会考虑到在VS以前的版本升级向导可能还有刚才注释掉的代码更贴切的词,说“嘿,你为什么不从头重新开始?”
其中,我将跨越一个程序Len()
函数是用来确定一个字符串变量长度。 这仍然工作在VB.Net(虽然我想,它实际上是在一个呼叫Strings.Len
方法),但另一种方法是只查询.Length
可变的特性。
现在的问题是,其使用和为什么。 我已经通过MSDN上的相关网页看上去和所有他们似乎要告诉我的是,该方法/属性存在。 没有谈及性能问题,特别是当大量呼叫的循环可能参与。
我的问题,那么,有没有人是否知道使用一种方法比其他任何测试,证实利益,还是它只是个人喜好的问题。 虽然给出的堆栈溢出的指导方针,它只是这一个问题,我很希望看到是否有一个明确的答案,因为我做的进展,我可能会遇到类似的情况下,任何指针也将不胜感激。
因为你使用VB.NET,您的Strings
可以Nothing
,除非你明确检查的时候,多数VB方法,包括Len
,将把它一样String.Empty
即""
。
随着反射镜可以看到Len
实现为空检查,返回0
的Nothing
否则返回.Length
和抖动将可能在网上呼叫。
所以,如果你正在使用其他的方法,VB,我建议使用Len
太多,除非你知道String
是不是Nothing
或检查Nothing
无处不在。
所以根据这个 :
莱恩,另一种经典的基本功能,返回一个字符串的长度。 System.String有Length属性,它提供了相同的信息。 这个比那个好吗?
性能方面,这两个功能显示在迭代的1000年相差不大。 似乎没有任何理由更喜欢一个比其他在这种情况下,再加上没有功能上的差异。 我有点偏爱使用属性值,而不是VB的功能,因为它鼓励.NET字符串作为对象的思想。 然而,在核心,这真的只是一个个人喜好的事情。
如果你相信他们的话,那么你的答案。 否则,编码了一个测试和迭代应该给你最后的答案。
我不知道有关的细节Len()
方法(我选择的语言是C#),但我要说的肯定与去Length
属性。 Length
是所述成员System.String
类,而Len()
不是。
我的猜测是, Len()
仅仅是在顶部的垫片VB Length
属性。 有人也许可以使论点,即使用Len()
是更地道,从一个VB点。 我想我宁愿使用内置的属性类,而不仅仅是使用不同的机制,只是因为它是由语言提供。
除了@安德鲁的帖子,LEN()是字符串函数Visual Basic运行时库 ,其中的Length
是的属性System.String
类.NET框架API的。
所述Len
被提供用于与旧VB6(或更早)non-.NET代码向后兼容性的方法。 没有什么技术上的错误使用它。 它会工作,也很好,在那个。 但是,最好使用做事只要有可能的新的.NET方式。 让你多进“.NET心态”之外,虽然使用的唯一真正的实惠String.Length
的是,它可以更容易地将代码移植到将来其他.NET语言。
最近,我遇到的问题与使用LEN()函数我的老VB.Net代码。 我升级我的项目核心这是引用旧VB.net DLL文件,并将其用LEN()函数。 我得到了运行时的兼容性错误 - 未找到方法:“的Int32 Microsoft.VisualBasic.Strings.Len(System.String)”
我必须改变核心已弃用所有老等功能。 所以我坚持使用string.length减了莱恩()由史蒂芬Doggart的建议。