我最近接手了一个170k的VB.net项目,并被指示将其带入C#。没有时间进行完全重写,我测试了几种转换工具。我最终使用了Tangible的Instant C#,它实际上做了一件令人难以置信的工作。经过几个小时的错误修复后,它会编译并且(大部分)正常工作。
由于C#与VB Val
没有等价,转换器使用以下方法创建了SimulateVal
辅助类:
public static double Val(string expression)
{
if (expression == null)
return 0;
//try the entire string, then progressively smaller
//substrings to simulate the behavior of VB's 'Val',
//which ignores trailing characters after a recognizable value:
for (var size = expression.Length; size > 0; size--)
{
double testDouble;
if (double.TryParse(expression.Substring(0, size), out testDouble))
return testDouble;
}
//no value is recognized, so return 0:
return 0;
}
在整个VB程序中使用了 Val
。因此,这些辅助方法被多次调用。
在搜索更多信息和其他选项时,我找到了this discussion,其中包含来自有形物的回复,显示了此助手类。但是,我还没有找到进一步的讨论。
将这个帮助程序类保留到位并只使用帮助程序类是否足够?在C#中寻找另一种处理方法会更好吗,或者这是一个足够轻的解决方案留下来?
答案 0 :(得分:0)
帮助程序类旨在涵盖原始VB' Val'盖子。如果你使用了' Val'并不依赖于原始的VB特性,那么您可以用简单的TryParse替换。
请注意,' Val'不仅仅是一个简单的TryParse。
你也可以检查原来的VB' Val'代码可以确切地了解它正在做什么 - 可能比帮助类正在做的更多。