C# Visual Studio 2019中的灰色#else指令块

wvt8vs2t  于 2023-04-07  发布在  C#
关注(0)|答案(1)|浏览(390)

在下面的代码中,#else和#endif之间的代码块作为多行注解变灰Image Code Block

#if UNITY_EDITOR
    newImgAimX = Mouse.current.position.value.x;
    newImgAimY = Mouse.current.position.value.y;
#else
    newImgAimX = imgAim.transform.position.x + v2MouseDelta.x;
    newImgAimY = imgAim.transform.position.y + v2MouseDelta.y;
#endif

是否可以在此块中进行语法高亮显示?

jgwigjjp

jgwigjjp1#

这是一个编译时常量或预处理器指令。这意味着编译器可以在编译时确定正确的条件。因此,它是灰色的。它向您显示将要编译的代码块。要解决这个问题,请将每个块转换为函数。
例如:

// ref is used to indicated that the object will be mutated 
public void CompileForX(ref MyObj obj) {
     
}
public void CompileForY(ref MyObj obj) {

}

然后:

#if UNITY_EDITOR
    CompileForX(obj);
#else
    CompileForY(obj);
#endif

然而,这种方法有一个缺点。非常重要的一点是,函数CompileForXCompileForY都将被实际编译,并且它们将成为程序集的一部分。这是因为条件块中的内容仅在编译时条件为真时才被编译。

相关问题