web-dev-qa-db-ja.com

宣言する前にローカル変数を使用することはできません

関数を作成しようとしていますが、エラーメッセージが表示されます。

public int[] genericSearch(int searchWidth, int startingRadius, int width, int height, Bitmap bitmap)
{
    //Generic function for finding the best path from a certain range
    if (startingRadius == -1)
        startingRadius = bitmap.Height() / 2;

宣言される前のローカル変数 'startingRadius'は使用できません。

同じ問題がビットマップ変数でも発生します。通常、C++では、このタイプの宣言が機能します。ただし、なぜここで機能しないのかはわかりません。

21
user1084113

ビジュアルスタジオで。変数をもう一度宣言するとき(2回目)。このエラーが発生します。たとえば、これはあなたが言及した例外を時々投げます:

 1.  int startingRadius = 0;
 2.  startingRadius = 5; <-- Exception thrown here.
 3.  
 4.  int startingRadius = 0;

明らかにこれはとにかく正しくありません。したがって、2行目の宣言(4行目)を削除すると問題が解決します。

注:通常予想される例外はA local variable named 'startingRadius' is already defined in this scopeです。しかし、何らかの理由で、あなたが言及した例外が時々示されます。

57
gunwin

あなたのメソッドの閉じ括弧が欠落していますが、それ以外の場合、このコードは私のマシンでコンパイルできます...(Heightもプロパティに変更されました)

public int[] genericSearch(int searchWidth, int startingRadius, int width, int height,Bitmap bitmap)
         {
         //Generic function for finding the best path from a certain range
             if (startingRadius == -1)
                 startingRadius = bitmap.Height / 2;
         }
4
Kevin

_}_の場所を間違っているか、変数名のスペルが間違っているようです。完全なコードを確認しないと、本当にわかりません。

エラーメッセージは基本的に、宣言されていない使用しようとしているローカル変数があることを通知しています。これは、if (startingRadius == 1)コードが、宣言したメソッドとは異なるメソッドの中に実際にあることを示唆しています。

2
Stephen