Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将这行vb代码转换为C#_C#_Vb.net_Preprocessor Directive - Fatal编程技术网

无法将这行vb代码转换为C#

无法将这行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

我有一个vb.net项目,我正试图转换成C。我有一个名为MyWebExtension.vb的文件,其中有一行代码
#如果_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,谢谢大家。你是对的!更新了我的答案。