![](/img/trans.png)
[英]How to convert c# code to vb.net. Error occurred in getting numeric value of a character
[英]Tried to convert VB code to C# but error occurred
我确实将VB
代码转换为以下C#
代码,但是发生了错误。 我在Strings.InStr
和Strings.Mid
遇到错误。
sHeadingNm = ActiveDocument.Styles(wdStyleHeading1).NameLocal;
if (!string.IsNullOrEmpty(sHeadingNm)) {
nPos = Strings.InStr(1, sHeadingNm, "1");
if (nPos > 0)
sHeadingNm = Strings.Mid(sHeadingNm, 1, nPos - 1);
}
//=======================================================
//Service provided by Telerik (www.telerik.com)
//Conversion powered by NRefactory.
//Twitter: @telerik
//Facebook: facebook.com/telerik
//=======================================================
请帮我...
您的问题必须是Strings.InStr
和Strings.Mid
在C#中不是标准方法,而在VB.net中。 您应该添加using Microsoft.VisualBasic
才能使用它们,尽管我建议使用C#等效方法。
更好地说,您让Telerik转换器转换代码。 代码转换器不能安全地假定一种语言中存在的库和函数调用不存在另一种语言中; 就他们所知,目标代码具有一个自定义库,该库模仿仅源语言中存在的功能的行为。 此外,VB中大多数仅VB的功能都是基于1的,而不是.Net其余部分中的基于0的功能。
因此,您不会自动将Strings.InStr
转换为String.IndexOf
。 您也不会看到Strings.Mid到String.Substring。 代码寻找从Strings.Instr
或Strings.Mid
返回的“ 0”,因为没有发现任何内容将中断,因为“ 0”现在是成功搜索中的第一个索引。 实际上,您实际上需要随之而来的错误来确定需要调整代码的位置,以寻找正确的响应(即,搜索为-1,没有结果)。
您需要使用C#等效功能,如下所示:
nPos = sHeadingNm.IndexOf('1');
sHeadingNm = sHeadingNm.Substring(1,nPos-1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.