簡體   English   中英

試圖將VB代碼轉換為C#但發生錯誤

[英]Tried to convert VB code to C# but error occurred

我確實將VB代碼轉換為以下C#代碼,但是發生了錯誤。 我在Strings.InStrStrings.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  
//=======================================================  

請幫我...

您使用過的C#等效方法:

Strings.InStr具有String.IndexOf的等效項

Strings.Mid具有String.Substring的等效

您的問題必須是Strings.InStrStrings.Mid在C#中不是標准方法,而在VB.net中。 您應該添加using Microsoft.VisualBasic才能使用它們,盡管我建議使用C#等效方法。

更好地說,您讓Telerik轉換器轉換代碼。 代碼轉換器不能安全地假定一種語言中存在的庫和函數調用不存在另一種語言中; 就他們所知,目標代碼具有一個自定義庫,該庫模仿僅源語言中存在的功能的行為。 此外,VB中大多數僅VB的功能都是基於1的,而不是.Net其余部分中的基於0的功能。

因此,您不會自動將Strings.InStr轉換為String.IndexOf 您也不會看到Strings.Mid到String.Substring。 代碼尋找從Strings.InstrStrings.Mid返回的“ 0”,因為沒有發現任何內容將中斷,因為“ 0”現在是成功搜索中的第一個索引。 實際上,您實際上需要隨之而來的錯誤來確定需要調整代碼的位置,以尋找正確的響應(即,搜索為-1,沒有結果)。

您需要使用C#等效功能,如下所示:

nPos = sHeadingNm.IndexOf('1');

sHeadingNm = sHeadingNm.Substring(1,nPos-1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM