C# 将VB.NET转换为C时出错

C# 将VB.NET转换为C时出错,c#,vb.net,converter,C#,Vb.net,Converter,我正在尝试将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())

我正在尝试将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的局限性。再次从以下方面:

可以使用“定义”来定义符号。使用符号作为传递给if指令的表达式时,表达式的计算结果将为true,如下例所示:

定义调试

定义指令不能用于声明常量值,如通常在C和C++中所做的那样。C中的常量最好定义为类或结构的静态成员。如果有几个这样的常数,请考虑创建一个单独的常量类来保存它们。

所以你需要做一些类似的事情

#define WindowsForms
#if (!WindowsForms)
#define WPF
#endif
在文件的开头,而不是使用带有许多可能值的单个预处理器符号。对于项目范围的预处理器符号,在编译项目时使用


更多。

My通常在VB.NET中使用。我不是100%确定,但我认为这是C的等价物。所以My.Application.Shutdown应该是这个.Application.Shutdown。@Tim My是C中不存在的东西。对于My.Application OP,应该寻找答案。@Tim VB等价物对于这不是My而是我。My是一种包含大量无关内容的对象。AgentFire和Lucas-谢谢。我没有做很多VB.NET,把我和我的电脑搞混了。你可以使用或