一些VB字符串函数有System.String类似的方法,如mid和substring,instr和indexof.是否有充分的理由使用其中一种?
Ste*_*eve 10
一个例子可以解释很多.这是来自Microsoft.VisualBasic的Mid的源代码
public static string Mid(string str, int Start, int Length)
{
if (Start <= 0)
{
throw new ArgumentException(Utils.GetResourceString("Argument_GTZero1", new string[] { "Start" }));
}
if (Length < 0)
{
throw new ArgumentException(Utils.GetResourceString("Argument_GEZero1", new string[] { "Length" }));
}
if ((Length == 0) || (str == null))
{
return "";
}
int length = str.Length;
if (Start > length)
{
return "";
}
if ((Start + Length) > length)
{
return str.Substring(Start - 1);
}
return str.Substring(Start - 1, Length);
}
Run Code Online (Sandbox Code Playgroud)
在他们所谓的子字符串中的一天结束....
故事几乎就是一个比较复杂的Instragains IndexOf,因为你可以使用一个比较参数,而且在这种情况下,在Microsoft.VisualBasic程序使用的内部代码兼容性(粗体是我的)库再次落入.NET Framework提供的基本方法中.
当然,如果你只需要维护一个从VB6开始的旧程序,那么使用这些方法是绝对正确的.相反,如果您计划继续演进程序或构建新程序,我建议尽快切换到.NET Framework核心方法.
我想说你应该使用Mid()或Instr()因为我们中的一些人多年来一直在使用这些功能,但我建议不要使用这些功能.主要是因为便携式目标平台(如Xbox和Windows Phone)不支持它们.对我而言,这表明他们将比以后更快地弃用.我也读过.Net版本似乎表现更好,但现在找不到支持该声明的任何统计数据.
另一个有趣的注意事项是,Trim()函数处理断行的方式是不同的.示例代码:
Dim strTest As String = ControlChars.NewLine ' OR Environment.NewLine OR vbNewLine
Dim oldLength As Integer = Len(Trim(strTest)) '2
Dim newLength As Integer = strTest.Trim().Length '0
Run Code Online (Sandbox Code Playgroud)
因此,如果要将代码移植到.Net版本,请务必小心.