0

テストタイプ2が実行されているときに一連のラベルを非表示に設定するために使用している次のコードがあります

        if ((int)testType == 2)
            indmetaL.Visible = false;
        if ((int)testType == 2)
            midmetaL.Visible = false;
        if ((int)testType == 2)
            rinmetaL.Visible = false;
        if ((int)testType == 2)
            litmetaL.Visible = false;

これらのステートメントを次のように構成しようとしました。

 if ((int)testType == 2)
       indmetaL.Visible = false;
       midmetaL.Visible = false;
       rinmetaL.Visible = false
       litmetaL.Visible = false;

ただし、midmetaL を実行すると、テストタイプ 1 の間、rinmetaL と litmetaL が非表示のままになります

これらすべての「可視」プロパティを1行でfalseに設定する方法があると確信していますが、構文がわかりません。助けていただければ幸いです。ありがとう!

4

5 に答える 5

3
if ((int)testType == 2)
{
       indmetaL.Visible = false;
       midmetaL.Visible = false;
       rinmetaL.Visible = false
       litmetaL.Visible = false;
}
于 2012-04-29T01:56:14.507 に答える
2

中かっこを使用してコード ブロックを作成します。

if ((int)testType == 2)
{
   indmetaL.Visible = false;
   midmetaL.Visible = false;
   rinmetaL.Visible = false
   litmetaL.Visible = false;
}

またはチェーン割り当てを使用します。

if ((int)testType == 2)
   indmetaL.Visible = midmetaL.Visible = rinmetaL.Visible = litmetaL.Visible = false;
于 2012-04-29T02:01:27.150 に答える
1

のステートメント ブロックを定義するには、中かっこを使用する必要がありますif。そうしないと、最初の行だけがそれに属します。したがって、これは機能します:

if ((int)testType == 2)
{
    indmetaL.Visible = false;
    midmetaL.Visible = false;
    rinmetaL.Visible = false
    litmetaL.Visible = false;
}

中括弧を省略することが悪い習慣と見なされるのはなぜですか?

于 2012-04-29T01:56:38.957 に答える
1

中括弧を使用して、複数のステートメントをブロックにグループ化します。

if ((int) testType == 2)
{
    indmetaL.Visible = false;
    midmetaL.Visible = false;
    rinmetaL.Visible = false;
    litmetaL.Visible = false;
}

C# では、ifステートメントは直後のステートメントまたはブロックのみを条件付きで実行します。したがって、中括弧が必要です。同じことがforwhile、 などの他のフロー制御ステートメントにも一般的に当てはまります。

于 2012-04-29T01:57:06.207 に答える
0

Switchステートメントを使用します。正しいケースに直接ジャンプするため、ifステートメントよりも高速です。

switch((int)testType)
{
    case 2:
        indmetaL.Visible = false;
        midmetaL.Visible = false;
        rinmetaL.Visible = false;
        litmetaL.Visible = false;
    break;
}

または、ifステートメントが必要な場合は、このような中括弧なしで1行で記述できます。

if((int)testType==2)
    indmetaL.Visible = midmetaL.Visible = rinmetaL.Visible = litmetaL.Visible = false;
于 2012-04-29T02:30:45.717 に答える