返回bool或char

her*_*ron 0 c# string char

我需要的是,checkChar(line [i])返回false或char.因此,如果结果不为false,则for循环有效,如果有结果,则会中断并打印出char.

我是c#的新手,所以不知道怎么做.我试过这种方式.

using System.IO;
using System;

class Program
{
    static void Main()
    {
       Console.Write("Write a string: ");
       string line = Console.ReadLine();
       char result;
       if (line != null)
        {
            for(int i=0; i<=line.Length; i++){
                result = checkChar(line[i]);
                if(!result.Equals("#"))
                    break;
            }
            Console.WriteLine(result);
        }
    }    

    static char checkChar(char input){
        char[] letters={'f', 'g', 'h'};
        char noResult="#";
        foreach(char letter in letters){
            if(input.Equals(letter))
                return letter;
            else return noResult;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

得到错误:

main.cs(18,31): error CS0165: Use of unassigned local variable `result'
main.cs(24,14): error CS0029: Cannot implicitly convert type `string' to `char'
main.cs(22,17): error CS0161: `Program.checkChar(char)': not all code paths return a value
Compilation failed: 3 error(s), 0 warnings
Run Code Online (Sandbox Code Playgroud)

Ric*_*Ric 5

 char noResult="#";
Run Code Online (Sandbox Code Playgroud)

应该

 char noResult= '#';
Run Code Online (Sandbox Code Playgroud)

""表示字符串,其中as ''表示char.

该方法不应该如下吗?

static char checkChar(char input){
        char[] letters={'f', 'g', 'h'};
        char noResult="#";
        foreach(char letter in letters){
            if(input.Equals(letter))
                return letter;
        }
        return noResult;
    }
Run Code Online (Sandbox Code Playgroud)

因此,一旦foreach完成了迭代letters,noResult返回而不是在迭代完成之前?这样,即使char找不到结果,也总是返回结果.