C# 无法隐式转换类型';布尔';至';char';在HashSet.Contains方法中

C# 无法隐式转换类型';布尔';至';char';在HashSet.Contains方法中,c#,C#,使用C#打印给定字符串中的第一个重复字符。运行此获取错误消息时 无法将类型“bool”隐式转换为“char” 公共类程序{ 公共静态void Main(字符串[]args){ string str=“faffaa”; char[]ArrChar=str.ToCharArray(); Console.WriteLine(“第一个重复字符:”,MatChar(ArrChar)); } 公共静态字符匹配(字符[]输入){ HashSet HasChar=newhashset(); for(int i=

使用C#打印给定字符串中的第一个重复字符。运行此获取错误消息时

无法将类型“bool”隐式转换为“char”

公共类程序{
公共静态void Main(字符串[]args){
string str=“faffaa”;
char[]ArrChar=str.ToCharArray();
Console.WriteLine(“第一个重复字符:”,MatChar(ArrChar));
}
公共静态字符匹配(字符[]输入){
HashSet HasChar=newhashset();
for(int i=0;i
在else情况下不要返回。另外,您忘记了格式字符串中的占位符

public static void Main(string[] args)
{
    string str = "fafaffaa";
    char[] ArrChar = str.ToCharArray();
    Console.WriteLine("First Repeating char : {0}", MatChar(ArrChar));
}

public static char MatChar(char[] input)
{
    HashSet<char> HasChar = new HashSet<char>();
    for (int i = 0; i < input.Length; i++)
    {
        char c = input[i];
        if (HasChar.Contains(c))
            return c;
        else
            HasChar.Add(c);
    }
    return '\0';
}
publicstaticvoidmain(字符串[]args)
{
string str=“faffaa”;
char[]ArrChar=str.ToCharArray();
WriteLine(“第一个重复字符:{0}”,MatChar(ArrChar));
}
公共静态字符匹配(字符[]输入)
{
HashSet HasChar=新HashSet();
for(int i=0;i
您在else条件下返回。我认为您的意图是只想添加到HashSet中

if (HasChar.Contains(c)) return c; else HasChar.Add(c);
获取此错误是因为HasChar.Add()返回bool。如果元素添加为false,则返回true。因此,仅获取此错误,所以使用List而不是HashSet。 可以重写以下内容 公共课程 { 公共静态void Main(字符串[]args) { string str=“faffaa”; char[]ArrChar=str.ToCharArray(); MatChar(ArrChar); Console.Read(); } 公共静态无效匹配(字符[]输入) { List HasChar=新列表(); for(int i=0;i谢谢您的回复,是的,但前提是它不包含。如果当前字符尚未显示,您需要继续下一个循环。如果没有重复字符,您将返回
\0
。如果当前字符已知,则返回该字符。为此,我需要在HashSet know中插入
if (HasChar.Contains(c)) return c; else HasChar.Add(c);
Getting this error because HasChar.Add() return bool. It return true if element added else false. So only getting this error, So use List instead of HashSet.
Can rewrite following


public class Program
    {
        public static void Main(string[] args)
        {
            string str = "faffaa";
            char[] ArrChar = str.ToCharArray();
            MatChar(ArrChar);
            Console.Read();
        }

        public static void MatChar(char[] input)
        {
            List<char> HasChar = new List<char>();
            for (int i = 0; i < input.Length; i++)
            {
                char c = input[i];
                if (HasChar.Contains(c))
                {
                    Console.WriteLine("First repeating character: {0}", c);
                    break;
                }
                else
                    HasChar.Add(c);
            }

        }

    }