Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.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
C# IF和OR的语法是什么#_C#_If Statement - Fatal编程技术网

C# IF和OR的语法是什么#

C# IF和OR的语法是什么#,c#,if-statement,C#,If Statement,我正在尝试做如果(某件事&&不)或(某件事&&不)。。。但它不起作用,你能看出我做错了什么吗 if (MyBeam.Position.Rotation == Position.RotationEnum.FRONT && !(MyBeam.Profile.ProfileString.Contains("RHS") || MyBeam.Profile.ProfileString.Contains("CHS") || MyBeam.Profile.ProfileString.Conta

我正在尝试做如果(某件事&&不)或(某件事&&不)。。。但它不起作用,你能看出我做错了什么吗

if (MyBeam.Position.Rotation == Position.RotationEnum.FRONT &&
!(MyBeam.Profile.ProfileString.Contains("RHS")
|| MyBeam.Profile.ProfileString.Contains("CHS")
|| MyBeam.Profile.ProfileString.Contains("MET")
|| MyBeam.Profile.ProfileString.Contains("SHS")

||

(MyBeam.Position.Rotation == Position.RotationEnum.BACK &&
!(MyBeam.Profile.ProfileString.Contains("RHS")
|| MyBeam.Profile.ProfileString.Contains("CHS")
|| MyBeam.Profile.ProfileString.Contains("MET")
|| MyBeam.Profile.ProfileString.Contains("SHS")))))

忽略对API的引用,但我相信它仍然有意义。

你是说你希望旋转是正面的还是背面的,你不想要RHS而是接受CHS、MET、SHS

if ((MyBeam.Position.Rotation == Position.RotationEnum.FRONT || MyBeam.Position.Rotation == Position.RotationEnum.BACK) &&
(
!MyBeam.Profile.ProfileString.Contains("RHS")
|| MyBeam.Profile.ProfileString.Contains("CHS")
|| MyBeam.Profile.ProfileString.Contains("MET")
|| MyBeam.Profile.ProfileString.Contains("SHS")
)
)
if ((MyBeam.Position.Rotation == Position.RotationEnum.FRONT || MyBeam.Position.Rotation == Position.RotationEnum.BACK) &&
 !(
MyBeam.Profile.ProfileString.Contains("RHS")
|| MyBeam.Profile.ProfileString.Contains("CHS")
|| MyBeam.Profile.ProfileString.Contains("MET")
|| MyBeam.Profile.ProfileString.Contains("SHS")
)
)
或者,如果你是说你希望旋转要么是正面的,要么是背面的,你不想要任何RHS,CHS,MET,SHS

if ((MyBeam.Position.Rotation == Position.RotationEnum.FRONT || MyBeam.Position.Rotation == Position.RotationEnum.BACK) &&
(
!MyBeam.Profile.ProfileString.Contains("RHS")
|| MyBeam.Profile.ProfileString.Contains("CHS")
|| MyBeam.Profile.ProfileString.Contains("MET")
|| MyBeam.Profile.ProfileString.Contains("SHS")
)
)
if ((MyBeam.Position.Rotation == Position.RotationEnum.FRONT || MyBeam.Position.Rotation == Position.RotationEnum.BACK) &&
 !(
MyBeam.Profile.ProfileString.Contains("RHS")
|| MyBeam.Profile.ProfileString.Contains("CHS")
|| MyBeam.Profile.ProfileString.Contains("MET")
|| MyBeam.Profile.ProfileString.Contains("SHS")
)
)

你的“不”部分似乎不正确。您需要所有
条件下的
而不是

if ((MyBeam.Position.Rotation == Position.RotationEnum.FRONT || MyBeam.Position.Rotation == Position.RotationEnum.BACK) &&
!((MyBeam.Profile.ProfileString.Contains("RHS")
|| MyBeam.Profile.ProfileString.Contains("CHS")
|| MyBeam.Profile.ProfileString.Contains("MET")
|| MyBeam.Profile.ProfileString.Contains("SHS"))

你的括号错了。这一条应该有效:

if ((MyBeam.Position.Rotation == Position.RotationEnum.FRONT &&
     !(MyBeam.Profile.ProfileString.Contains("RHS") || 
       MyBeam.Profile.ProfileString.Contains("CHS") || 
       MyBeam.Profile.ProfileString.Contains("MET") || 
       MyBeam.Profile.ProfileString.Contains("SHS"))) ||
    (MyBeam.Position.Rotation == Position.RotationEnum.BACK &&
     !(MyBeam.Profile.ProfileString.Contains("RHS") || 
       MyBeam.Profile.ProfileString.Contains("CHS") || 
       MyBeam.Profile.ProfileString.Contains("MET") || 
       MyBeam.Profile.ProfileString.Contains("SHS"))))
也就是说,它很难读懂。尝试将其中一些组合成变量,例如:

bool profileCheck = MyBeam.Profile.ProfileString.Contains("RHS") || MyBeam.Profile.ProfileString.Contains("CHS") || 
                    MyBeam.Profile.ProfileString.Contains("MET") || MyBeam.Profile.ProfileString.Contains("SHS");

if ((MyBeam.Position.Rotation == Position.RotationEnum.FRONT && !profileCheck) ||
    (MyBeam.Position.Rotation == Position.RotationEnum.BACK && !profileCheck))
在这种形式中,我可以看到它可以简化:

if (!profileCheck && (MyBeam.Position.Rotation == Position.RotationEnum.FRONT || MyBeam.Position.Rotation == Position.RotationEnum.BACK))

哪部分不适合你?合并它
if((MyBeam.Position.Rotation==Position.rotationnum.FRONT | | MyBeam.Position.Rotation==Position.rotationnum.BACK)
为了简化
包含的
位,可以使用数组并执行
myArray.Any(MyBeam.Profile.ProfileString.Contains)
,其中
myArray
“RHS”、“CHS”的数组…
基本上它不会返回true,但条件是true,因为我在应用程序中已将其设置为true?数组听起来不错,我会尝试。不,我试图说==前面或后面-&不是RHS、CHS、MET、SHS