无法将这行vb代码转换为C#
我有一个vb.net项目,我正试图转换成C。我有一个名为MyWebExtension.vb的文件,其中有一行代码无法将这行vb代码转换为C#,c#,vb.net,preprocessor-directive,C#,Vb.net,Preprocessor Directive,我有一个vb.net项目,我正试图转换成C。我有一个名为MyWebExtension.vb的文件,其中有一行代码#如果_MyType“Empty”,那么 我试图将if(_MyType!=“Empty”)转换为C##if(_MyType!=“Empty”) 当我运行应用程序时,出现以下错误: 预处理器表达式无效 我的转换有什么问题吗?来自 以下示例显示了一些有效和无效的预处理器表达式: #if symbol // OK #endif #if !symbol // OK #endi
#如果_MyType“Empty”,那么
我试图将if(_MyType!=“Empty”)转换为C##if(_MyType!=“Empty”)
当我运行应用程序时,出现以下错误:
预处理器表达式无效
我的转换有什么问题吗?来自
以下示例显示了一些有效和无效的预处理器表达式:
#if symbol // OK
#endif
#if !symbol // OK
#endif
#if (symbol) // OK
#endif
#if true // OK
#endif
#if false // OK
#endif
#if 1 // CS1517
#endif
#if ~symbol // CS1517
#endif
#if * // CS1517
#endif
class x
{
public static void Main()
{
}
}
所以我觉得你可以这样用,
#define _MyType
#If _MyType
从
当C#编译器遇到一个#if指令时,最终
通过#endif指令,它将在
指令仅当定义了指定的符号时。与C和C++不同,
不能为符号指定数值;C语言中的#if语句#
是布尔值,仅测试符号是否已定义
您可以使用运算符==(相等),!=(不平等)只是为了测试
不管是真是假。True表示符号已定义。声明
-#if DEBUG与#if具有相同的含义(DEBUG==true)。运算符&(and)和| |>(or)可用于评估是否有多个符号
已经定义了。您还可以将符号和运算符分组为
括号
C语言中的define只能指定“flags”,而不是VB允许的常量值
在C#中,您可以有:
#define _MyType
#If _MyType
#Const _MyType = "SomeType"
#If _MyType = "SomeType"
或:
但在VB中,您可以:
#define _MyType
#If _MyType
#Const _MyType = "SomeType"
#If _MyType = "SomeType"
没有很好的解决方法-您可以使用常量,但当然这些只能从类中引用。Ben请显示完整的VB编译器指令代码行。。您是否缺少类似Ben
#if\u MyType!=“Empty”#endif
变量的类型是什么?不需要完整的代码,这种转换不起作用#如果#MyType“Empty”,则命名空间My“”模块用于定义Web项目My命名空间中可用的属性。“”Module MyWebExtension//此处的一些代码End Module End Namespace#End IfSoner如果是预处理器指令,那么他将需要#
,否则为什么要首先使用它…?-1您不能将预处理器指令更改为常规if语句并期望它工作。@DJKRAZE和juharr,谢谢大家。你是对的!更新了我的答案。