Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# C:运算符“!=”无法应用于“object”和“char”类型的操作数_C# - Fatal编程技术网

C# C:运算符“!=”无法应用于“object”和“char”类型的操作数

C# C:运算符“!=”无法应用于“object”和“char”类型的操作数,c#,C#,我是一名新学员,正在尝试解决Leetcode上的一个问题,但出现了一个编译错误 public class Solution { public bool IsValid(string s) { if(s.Length%2==1) { return false; } if(s.Length==0) { return true; } Stack st=new Stack(); for(int i=0;i

我是一名新学员,正在尝试解决Leetcode上的一个问题,但出现了一个编译错误

public class Solution 
{
public bool IsValid(string s) 
{
    if(s.Length%2==1)
    {
        return false;
    }
    if(s.Length==0)
    {
        return true;
    }
    Stack st=new Stack();
    for(int i=0;i<s.Length;i++)
    {
        switch(s[i])
        {
            case '(':
            st.Push(s[i]);
            break;
            case'[':
            st.Push(s[i]);
            break;
            case'{':
            st.Push(s[i]);
            break;
            case ')':
            if(st.Count==0||st.Peek()!='(')
            {
                return false;
            }
            else
            {
                st.Pop();
            }
            break;
            case']':
            if(st.Count==0||st.Peek()!='[')
            {
                return false;
            }
            else
            {
                st.Pop();
            }
            break;
            case'}':
            if(st.Count==0||st.Peek()!='}')
            {
                return false;
            }
            else
            {
                st.Pop();
            }
            break;
        }
    }
    return st.Count==0;
}
}
我知道这是关于数据类型的,但我不知道如何解决它


我不会说英语,所以我的一些英语语法可能是疯狂的。对此很抱歉,如果您能帮助我,谢谢您。

您遇到了错误,因为您使用的堆栈没有泛型。您的堆栈是Object类型的堆栈

您需要将从堆栈中弹出或查看的数据转换为char

例如:

if(st.Count==0|| (char) st.Peek()!='(')  
堆栈存储对象,但您希望专门存储字符。 改用


ifst.Count==0 | | st.Peek.ToString=你必须投射这个物体。比如:查尔·圣皮克=这两个答案都是正确的,问题是编译器无法隐式地知道对象是否为char,因此必须将其强制转换为char,使堆栈成为chars的堆栈。这两个答案都是正确的。但遗憾的是,我不能全部接受。我投票赞成这个答案,因为定义堆栈的类型将使任何其他与字符相关的操作变得更容易
if(st.Count==0|| (char) st.Peek()!='(')  
  Stack<char> st = new Stack<char>();