簡體   English   中英

將VB.NET轉換為C#時出錯

[英]Errors converting VB.NET to C#

我試圖將vb.net控制台文件轉換為C#,但是當我嘗試運行控制台應用程序時出現3個錯誤,這是錯誤。

Error   2   Single-line comment or end-of-line expected


private static MySettings defaultInstance = (MySettings)global::System.Configuration.ApplicationSettingsBase.Synchronized(new MySettings());
    #region "My.Settings Auto-Save Functionality"
    #if _MyType = "WindowsForms"    

Error   3   Single-line comment or end-of-line expected

        get {
            #if _MyType = "WindowsForms"
            if (!addedHandler) {
                lock (addedHandlerLockObject) {
                    if (!addedHandler) {
                        My.Application.Shutdown += AutoSaveSettings;
                        addedHandler = true;
                    }
                }
            }
            #endif
            return defaultInstance;


thanx

那是一個構建錯誤,而不是運行時錯誤。 在c#中,#if指令比其他語言受限制得多。 語言參考

當C#編譯器遇到#if指令,最后遇到#endif指令時,只有在定義了指定符號的情況下,它才會編譯指令之間的代碼。 與C和C ++不同,不能將數字值分配給符號。 C#中的#if語句為布爾型,僅測試符號是否已定義。

還要注意#define的局限性。 再次從參考

您使用#define定義符號。 當您使用符號作為傳遞給#if指令的表達式時,該表達式的值將為true,如以下示例所示:

#定義調試

#define指令不能像在C和C ++中那樣用於聲明常量值。 C#中的常數最好定義為類或結構的靜態成員。 如果您有幾個這樣的常量,請考慮創建一個單獨的“常量”類來保存它們。

所以你需要做類似的事情

#define WindowsForms
#if (!WindowsForms)
#define WPF
#endif

在文件的開頭,而不是帶有多個可能值的單個預處理器符號。 對於項目范圍的預處理器符號,在編譯項目時使用/ define選項

這里更多。

暫無
暫無

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

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