C# 为什么这是假的?

C# 为什么这是假的?,c#,boolean,logic,C#,Boolean,Logic,所以我有一个检查方法,如果所有参数都满足,它会返回true,如果不满足,它会返回false。我的问题是。。。为什么(c='z'| c=='/')在以下输入时等于false: 小提琴手01010100 10011100/ro *划线 public static bool check(string action) { string[] arguments = action.Split(' '); if (arguments.Length > 3) { s

所以我有一个检查方法,如果所有参数都满足,它会返回true,如果不满足,它会返回false。我的问题是。。。为什么(c='z'| c=='/')在以下输入时等于false:

小提琴手01010100 10011100/ro

*划线

public static bool check(string action)
{
    string[] arguments = action.Split(' ');
    if (arguments.Length > 3)
    {
        string[] time = { arguments[1], arguments[2] };
        for (int i = 1; i < time.Length; i++)
        {
            if (i == 1 || i == 2)
                foreach (char c in time[i])
                {
                    if (c >= '0' && c <= '9') { }
                    else return false;
                }
            else break;
        }
        for (int i = arguments.Length - 1; i >= 3; i--)
        {
            if (i != 1 || i != 2 && arguments[i] != "")
            {
                foreach (char c in arguments[i])
                {
     >>> >>> >>>    if (c <= 'a' && c >= 'z' || c == '/') { }
                    else return false;
                }
                if (arguments[i] == " " || arguments[i] == null || call.arguments.Contains(arguments[i]) == true) { }
                else return false;
            }
        }
    }
    else if (arguments.Length == 3)
    {
        for (int i = 1; i <= arguments.Length; i++)
        {
            if (i == 1 || i == 2)
            {
                foreach (char c in arguments[i])
                {
                    if (c >= '0' && c <= '9') { }
                    else return false;
                }
            }
            else
            {
                foreach (char c in arguments[i].ToUpper())
                {
                    if (c <= 'a' && c >= 'z' || c == '/') { }
                    else return false;
                }
                if (arguments[i] == " " || arguments[i] == null || call.arguments.Contains(arguments[i]) == true) { }
                else return false;
            }
        }
    }
    else return false;
    return true;
}
公共静态布尔检查(字符串操作)
{
string[]参数=action.Split(“”);
如果(arguments.Length>3)
{
字符串[]时间={参数[1],参数[2]};
for(int i=1;i='0'&&c=3;i--)
{
如果(i!=1 | | i!=2&&arguments[i]!=“”)
{
foreach(参数[i]中的字符c)
{
>>>>>>>>>如果(c='z'| c=='/'){}
否则返回false;
}
if(arguments[i]==“”| | arguments[i]==null | | | call.arguments.Contains(arguments[i])==true){}
否则返回false;
}
}
}
else if(arguments.Length==3)
{

对于代码中的(inti=1;i='0'&&c,表达式是
c='z'
,它们不可能都是真的,所以总是假的。您可能是想写
c>='a'&&c您的代码有很多错误

首先,在本部分代码中:

string[] time = { arguments[1], arguments[2] };
for (int i = 1; i < time.Length; i++)
{
     if (i == 1 || i == 2)
没有任何检查

第二,这部分:

for (int i = arguments.Length - 1; i >= 3; i--)
{
    if (i != 1 || i != 2 && arguments[i] != "")
i
决不能等于
1
2
,因为此检查已在
for
语句中。您应该删除此检查以清除代码


第三,这个检查
c='z'
总是错误的,因为
'z'>'a'
。你可能应该使用这个
c>='a'&&c你的帖子和你的代码不匹配-你有两个相反的表达式-确保你有一个正确的
(c>='a'&&c你能为你的问题准备一个最有价值的例子吗?我认为整个方法在这里并不重要,因为你要问的是你代码的特定部分。
c='z'
这永远不会是真的。除非我遗漏了什么,否则这与比较
c=26
一样没有意义。你知道数组在C#中,是以零为基础,而不是以1为基础?这段代码有太多错误,我建议你专注于一个问题,每个问题只问一个问题。很抱歉反应太晚并接受了正确的答案。生活问题终究会占上风。谢谢你纠正我的错误!谢谢你纠正我愚蠢的错误…我不能我相信这是我写的。
for (int i = arguments.Length - 1; i >= 3; i--)
{
    if (i != 1 || i != 2 && arguments[i] != "")