[英]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.