LEN()函数VS String.length属性; 选哪个?(Len() function v

2019-07-31 02:43发布

我正在从VB6到VB.Net(VS 2010)的过渡,有一个基本的,而不是后者的扩张性的认识。 我显然有相当多的代码。我毫不犹豫地用“升级”时,“端口”会考虑到在VS以前的版本升级向导可能还有刚才注释掉的代码更贴切的词,说“嘿,你为什么不从头重新开始?”

其中,我将跨越一个程序Len()函数是用来确定一个字符串变量长度。 这仍然工作在VB.Net(虽然我想,它实际上是在一个呼叫Strings.Len方法),但另一种方法是只查询.Length可变的特性。

现在的问题是,其使用和为什么。 我已经通过MSDN上的相关网页看上去和所有他们似乎要告诉我的是,该方法/属性存在。 没有谈及性能问题,特别是当大量呼叫的循环可能参与。

我的问题,那么,有没有人是否知道使用一种方法比其他任何测试,证实利益,还是它只是个人喜好的问题。 虽然给出的堆栈溢出的指导方针,它只是这一个问题,我很希望看到是否有一个明确的答案,因为我做的进展,我可能会遇到类似的情况下,任何指针也将不胜感激。

Answer 1:

因为你使用VB.NET,您的Strings可以Nothing ,除非你明确检查的时候,多数VB方法,包括Len ,将把它一样String.Empty""

随着反射镜可以看到Len实现为空检查,返回0Nothing否则返回.Length和抖动将可能在网上呼叫。

所以,如果你正在使用其他的方法,VB,我建议使用Len太多,除非你知道String是不是Nothing或检查Nothing无处不在。



Answer 2:

所以根据这个 :

莱恩,另一种经典的基本功能,返回一个字符串的长度。 System.String有Length属性,它提供了相同的信息。 这个比那个好吗?

性能方面,这两个功能显示在迭代的1000年相差不大。 似乎没有任何理由更喜欢一个比其他在这种情况下,再加上没有功能上的差异。 我有点偏爱使用属性值,而不是VB的功能,因为它鼓励.NET字符串作为对象的思想。 然而,在核心,这真的只是一个个人喜好的事情。

如果你相信他们的话,那么你的答案。 否则,编码了一个测试和迭代应该给你最后的答案。



Answer 3:

我不知道有关的细节Len()方法(我选择的语言是C#),但我要说的肯定与去Length属性。 Length是所述成员System.String类,而Len()不是。

我的猜测是, Len()仅仅是在顶部的垫片VB Length属性。 有人也许可以使论点,即使用Len()是更地道,从一个VB点。 我想我宁愿使用内置的属性类,而不仅仅是使用不同的机制,只是因为它是由语言提供。



Answer 4:

除了@安德鲁的帖子,LEN()是字符串函数Visual Basic运行时库 ,其中的Length是的属性System.String类.NET框架API的。



Answer 5:

所述Len被提供用于与旧VB6(或更早)non-.NET代码向后兼容性的方法。 没有什么技术上的错误使用它。 它会工作,也很好,在那个。 但是,最好使用做事只要有可能的新的.NET方式。 让你多进“.NET心态”之外,虽然使用的唯一真正的实惠String.Length的是,它可以更容易地将代码移植到将来其他.NET语言。



Answer 6:

最近,我遇到的问题与使用LEN()函数我的老VB.Net代码。 我升级我的项目核心这是引用旧VB.net DLL文件,并将其用LEN()函数。 我得到了运行时的兼容性错误 - 未找到方法:“的Int32 Microsoft.VisualBasic.Strings.Len(System.String)”

我必须改变核心已弃用所有老等功能。 所以我坚持使用string.length减了莱恩()由史蒂芬Doggart的建议。



文章来源: Len() function vs String.Length property; which to choose?