0

chip8 Emu の作成で別の問題が発生しています。入力が必要なものやグラフィックを含むものを除いて、すべての指示をうまく機能させることができました。

ボタンが押されているかどうかを単純に判断する別のクラスを作成しようとしています。私はこれにしばらく取り組んできましたが、非常に単純なものが欠けているか、概念的に何かを理解していないと思います。これは、コメントに正確なエラーを含めて書いているクラスです

using System;
 using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    class userIn
{
    bool pressed = false;
    public userIn()
    {

    }

    public bool checkPress() //Error    9   'WindowsFormsApplication1.userIn.checkPress()': not all code paths return a value   C

    {  //<---- it is teling me that a closing bracket is expected here?
         private void key5_Click(object sender, EventArgs e)
    {
             pressed = true;
    }

    private void keyb_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void key0_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void keya_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void keye_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void key9_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void key8_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void key7_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void keyd_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void keyf_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void key6_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void key4_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void keyc_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void key3_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void key2_Click(object sender, EventArgs e)
    {
        pressed = true;
    }

    private void key1_Click(object sender, EventArgs e)
    {
        pressed = true;
    }


        return pressed; //Error 6   Invalid token 'return' in class, struct, or interface member declaration    

    }
}

} // エラー 8 型または名前空間の定義、またはファイルの終わりが必要です

最後の行がボックスに収まりません

アイデアや提案はありますか?

いつものように、どんな助けも大歓迎です!

4

3 に答える 3

4

}forcheckPressメソッドはクラスの最後にあり、正しい方法は次のとおりです。

public bool checkPress()
{ 
    return pressed; 
}

コードは次のようになります。

using System;
...

namespace WindowsFormsApplication1
{
    class userIn
    {
        bool pressed = false;
        public userIn()
        {

        }

        public bool checkPress() // This method
        {
            return pressed;
        } // Must close here, not end of class

        .
        . 
        .

        private void key1_Click(object sender, EventArgs e)
        {
            pressed = true;
        }
    }
}
于 2012-10-15T04:31:01.453 に答える
0

短い答え:

別のメソッド内でメソッドを開きました。


長い答え

以下は、適切にインデントされたコードです(そのためには、AStyleをお勧めします)。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    class userIn
    {
        bool pressed = false;
        public userIn()
        {

        }

        public bool checkPress() //Error    9   'WindowsFormsApplication1.userIn.checkPress()': not all code paths return a value   C
        {  //<---- it is teling me that a closing bracket is expected here?
            private void key5_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void keyb_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void key0_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void keya_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void keye_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void key9_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void key8_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void key7_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void keyd_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void keyf_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void key6_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void key4_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void keyc_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void key3_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void key2_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            private void key1_Click(object sender, EventArgs e)
            {
                pressed = true;
            }
            return pressed; //Error 6   Invalid token 'return' in class, struct, or interface member declaration
        }
    }
} // Error 8 Type or namespace definition, or end-of-file expected

あなたはまだ問題を見ることができませんか?わかりました、ここに要約バージョンがあります:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    class userIn
    {
        bool pressed = false;
        public userIn()
        {

        }

        public bool checkPress() //Error    9   'WindowsFormsApplication1.userIn.checkPress()': not all code paths return a value   C
        {  //<---- it is teling me that a closing bracket is expected here?
            private void key5_Click(object sender, EventArgs e)
            {
                pressed = true;
            }

            //And some other methods

            return pressed; //Error 6   Invalid token 'return' in class, struct, or interface member declaration
        }
    }
} // Error 8 Type or namespace definition, or end-of-file expected

それはあなたに正しく見えますか?

まあ、それはそれを置くための単なる方法です、これはコンパイラが見るものです:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    class userIn
    {
        bool pressed = false;
        public userIn()
        {

        }

        public bool checkPress() //Error    9   'WindowsFormsApplication1.userIn.checkPress()': not all code paths return a value   C
        {  //<---- it is teling me that a closing bracket is expected here?
            private void key5_Click(object sender, EventArgs e)
            {
                pressed = true;
        }

        //And some other methods

        return pressed; //Error 6   Invalid token 'return' in class, struct, or interface member declaration
    }
}
} // Error 8 Type or namespace definition, or end-of-file expected

今は意味がありますか?

上記のコードが正しいと思う可能性があります。そうであれば、これは答えではありません...代わりに質問です:あなたは何をしようとしていると思いますか?

はい、C#はラムダをサポートしています。次のことを実行しようとしていますか?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    class userIn
    {
        bool pressed = false;
        public userIn()
        {

        }

        public bool checkPress()
        {

            key5.Click += (sender, e)  =>
            {
                pressed = true;
            };

            //And some other (anonymous) methods

            return pressed;
        }
    }
}

しかし、私の本能は、あなたが奇妙なコピー&ペーストをしただけで、意図したコードは次のようになっていると言っています。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    class userIn
    {
        bool pressed = false;
        public userIn()
        {

        }

        public bool checkPress()
        {               
            return pressed;
        }

        private void key5_Click(object sender, EventArgs e)
        {
            pressed = true;
        }

        //And some other methods
    }
}

わかる?私は願います。

于 2012-10-16T23:56:47.693 に答える
0

ボタンがクラスに属している場合はXXX、読み取り専用プロパティを作成してその状態を公開できます。の内部実装に依存する別のクラスを作成することはお勧めできませんXXX

于 2012-10-15T04:33:05.157 に答える