-4

違いは何ですか:

int c; int c=新しい int();

最初のものを使用して完全に機能することもありますが、ループ内で使用すると機能しないことがあります。

この作品:

    public int[] junta(Table ent,int j)
    {
         int[] matriz=new int[count(ent)];
         int k;
         k = 0;
         for (int i = fline(ent); i <= count(ent) + 1; i++)
         {
             if (Convert.ToString(ent.Cells[j, 3].Value) == Convert.ToString(ent.Cells[i, 3].Value))
             {

                 matriz[k]=Convert.ToInt32(ent.Cells[i,0].Value);
                 k++;

             }

         }
   }

これは機能しません:

public int[] junta(Table ent,int j)
{
     int[] matriz;
     int k;
     k = 0;
     for (int i = fline(ent); i <= count(ent) + 1; i++)
     {
          if (Convert.ToString(ent.Cells[j, 3].Value) == Convert.ToString(ent.Cells[i, 3].Value))
          {

               matriz[k]=Convert.ToInt32(ent.Cells[i,0].Value);
               k++;

           }

      }
}
4

4 に答える 4

6

int cフィールド(クラス変数)として宣言すると、フレームワークはそれをゼロに割り当てます

メソッド内で宣言するint cと、割り当てられる前に使用できないため、これは機能しません

public void TEST()
  {
     int c;
     int a= c*2;
  }

機能させるには、使用する前に割り当てる必要があります。宣言されているものと同じ行にある必要はありません。これはまったく問題ありません。

public void TEST(bool b)
  {
     int c;
     if(b)
       c = 2;
     else
       c = 4;
     int a= c*2;
  }

フィールドとして使う場合は自動で割り振られるのでこれでOK

class TestClass
{
  int c;
  public void TEST()
  {
     int x = c*2; // c has the value of zero.
  }
}

編集

フレームワークは、割り当てられる変数の型であるdefault(typeof(variableType))whereを使用してクラス変数を自動割り当てしますvariableType

于 2013-11-11T12:40:24.470 に答える
3

int c型の変数を宣言しますintint c = new int()タイプの変数を宣言し、intそれに値 (0) を割り当てます。

値を割り当てる前にローカル変数を読み取ることはできないため、次のコードはコンパイルされません。

int c;
int a = c;

次のようになります:

int c = new int();
int a = c;
于 2013-11-11T12:38:56.270 に答える
3

主な違いは次のとおりです。

int c;

変数に値を割り当てないため、後で変数にアクセスしようとすると、コンパイラは次のように文句を言います。

割り当てられていないローカル変数 'c​​' の使用

ただし、これを行う場合:

int c = new int();

次に、次のように書くこともできます。

int c = 0;

これにより値が割り当てられます。

次の 2 つのコード スニペットをテストして、それらの違いを確認できます。

int c;
int a = c;

これとともに:

int c = 0; // try = new int(); as well if you want to
int a = c;
于 2013-11-11T12:39:19.117 に答える