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