1
 class AddItemOption
{
    //Fields that contain class data
    string input = Console.ReadLine(); 
   //Methods that define class functionality
    public string myFunction(string Value)
    {
        switch (input)
        {
            case "Umbrella":
               Console.WriteLine("Umbrella is selected");
               break;
            case "Rain Coat":
               Console.WriteLine("Raincoat is selected");
               break;
            case "Boots":
                Console.WriteLine("Boots is selected"); 
                break;
            case "Hood":
                Console.WriteLine("Hood is selected");
                break;
            default:
                Console.WriteLine("Input not reconized, please choose another item");
                break;


        }

    }

「すべてのコードパスが値を返すわけではありません」というエラーが表示されます。myFunction(string Value)からです。これを返す方法や、パラメータを機能させるために何を入力するかがわかりません。その下にも何か必要ですか?私はクラスに不慣れです。これをすべて間違っているのか、それともswitchステートメントを使用する必要があるのか​​を教えてください。

   public AddItemOption(string input) 

        {


        }

Shyjuから私はそれを次のように変更しました:

class AddItemOptionOne
{
    //Fields that contain class data
    string input = Console.ReadLine(); 
   //Methods that define class functionality
    public string myFunction(string Value)
    {
        switch (input)
        {
            case "Key Chain":
               return "Key Chain is selected";
               break;
            case "Leather Armor":
               return "Leather Armor is selected";
               break;
            case "Boots":
                return "Boots is selected"; 
                break;
            case "Sword":
                return "Sword is selected";
                break;
            default:
                return "Input not reconized, please choose another item";
                break;


        }
    }

ただし、ブレークは認識されません。「到達不能コードが検出されました」

4

3 に答える 3

5

メソッドの戻り値のタイプはstring。です。つまり、メソッドは常に何らかの文字列を返す必要があります。しかし、あなたは文字列を返していません。代わりに、WriteLineメソッドを使用してコンソールに書き込みます。

だから変更

Console.WriteLine("Umbrella is selected");

return "Umbrella is selected";

また

メソッドの戻り値のタイプをに変更できますvoid

 public void myFunction(string Value)
 {
   //your current fancy stuff here
   Console.WriteLine("My method dont have a return type");
 }

編集:質問の編集に従って。

returnステートメントは、メソッドから制御を取り除きます。つまり、次の行(break)は実行されません。したがって、breakステートメントを削除します。

 case "Key Chain":
           return "Key Chain is selected";
于 2012-11-06T01:34:43.840 に答える
2

ええと...関数から何も返さないので、次のように変更します

public void myFunction(string Value)
于 2012-11-06T01:36:56.693 に答える
2

これを試して:

class AddItemOptionOne
{
    //Methods that define class functionality
    public string myFunction(string input)
    {
        string result = string.Empty;

        switch (input)
        {
            case "Key Chain":
                result = "Key Chain is selected";
                break;
            case "Leather Armor":
                result = "Leather Armor is selected";
                break;
            case "Boots":
                result = "Boots is selected";
                break;
            case "Sword":
                result = "Sword is selected";
                break;
            default:
                result = "Input not reconized, please choose another item";
                break;
        }

        return result;
    }
}
于 2012-11-06T01:46:43.540 に答える