C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: C#書き方


(過去ログ 56 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■31422 / inTopicNo.1)  C#書き方
  
□投稿者/ 幸広 (2回)-(2009/01/22(Thu) 00:01:36)

分類:[.NET 全般] 

C#学習です


変数Nが1から1000になる可能性があるものですが
Nが1と3と7と・・・・と同じ場合Aの処理などのようにしたいのですがNのAの処理をしたい番号は規則性がありません。
その場合if(n==1 || n==3 || n==7 ・・・)のように書くしかないのでしょうか
別の書き方ってありませんか(SQLのin句のような・・・)
引用返信 編集キー/
■31423 / inTopicNo.2)  Re[1]: C#書き方
□投稿者/ aetos (79回)-(2009/01/22(Thu) 00:04:21)
aetos さんの Web サイト
No31422 (幸広 さん) に返信
> C#学習です
>
>
> 変数Nが1から1000になる可能性があるものですが
> Nが1と3と7と・・・・と同じ場合Aの処理などのようにしたいのですがNのAの処理をしたい番号は規則性がありません。
> その場合if(n==1 || n==3 || n==7 ・・・)のように書くしかないのでしょうか
> 別の書き方ってありませんか(SQLのin句のような・・・)

int の配列に入れとくとか。
引用返信 編集キー/
■31429 / inTopicNo.3)  Re[2]: C#書き方
□投稿者/ 未記入 (9回)-(2009/01/22(Thu) 01:24:51)
> その場合if(n==1 || n==3 || n==7 ・・・)のように書くしかないのでしょうか

マジックナンバー列挙するくらいなら、if よりは switch の方がまだマシですね。 List 系に番号を詰めて for で判断が妥当でしょう。
引用返信 編集キー/
■31438 / inTopicNo.4)  Re[3]: C#書き方
□投稿者/ みきぬ (341回)-(2009/01/22(Thu) 09:23:10)
List<int> あたりに詰め込んで、Contains メソッドで判定するのがお勧め。
引用返信 編集キー/
■31440 / inTopicNo.5)  Re[4]: C#書き方
□投稿者/ επιστημη (1562回)-(2009/01/22(Thu) 09:45:55)
επιστημη さんの Web サイト
> List<int> あたりに詰め込んで、Contains メソッドで判定するのがお勧め。

HashSet<int> 使えば"ちょっと"速くなる鴨。
List<int> に詰め込んで昇順にソートしとけばBinarySerchできっから"ほんのちょっと"速くなる鴨。

※ いずれも候補となる要素数が少ないと効果ありません。

引用返信 編集キー/
■31442 / inTopicNo.6)  Re[1]: C#書き方
□投稿者/ .SHO (546回)-(2009/01/22(Thu) 09:52:34)
No31422 (幸広 さん) に返信

> その場合if(n==1 || n==3 || n==7 ・・・)のように書くしかないのでしょうか
> 別の書き方ってありませんか(SQLのin句のような・・・)

ORをIN句のようにしたいようなので、intの配列でいいと思います。

引用返信 編集キー/
■31462 / inTopicNo.7)  Re[2]: C#書き方
□投稿者/ みきぬ (344回)-(2009/01/22(Thu) 12:37:00)
2009/01/22(Thu) 12:38:14 編集(投稿者)
No31442 (.SHO さん) に返信
> ORをIN句のようにしたいようなので、intの配列でいいと思います。
> 
    // それって↓こういうこと?(数字はてきとー)
    int[] conditions = new int[] { 1, 3, 7, 15, 31, 63, 127, 255, 511 };
    int N = new Random().Next(1, 1000);
    foreach (int i in conditions)
    {
        if (N == i)
        {
            処理A(N);
            break;
        }
    }

    // ↑に対して、↓のほうが楽だと思ったのよね(.NET 2.0 以降が前提だけど)
    List<int> conditionList = new List<int>(new int[] { 1, 3, 7, 15, 31, 63, 127, 255, 511 });
    if (conditionList.Contains(N))
    {
        処理A(N);
    }

    // ↓むりやり1行にしてみた(ぉ
    if (new List<int>(new int[] { 1, 3, 7, 15, 31, 63, 127, 255, 511 }).Contains(N)) 処理A(N);

    // あと、Array.Find っつー手もあるかもしれない

引用返信 編集キー/
■31464 / inTopicNo.8)  Re[3]: C#書き方
□投稿者/ .SHO (549回)-(2009/01/22(Thu) 12:55:51)
No31462 (みきぬ さん) に返信

> // ↑に対して、↓のほうが楽だと思ったのよね(.NET 2.0 以降が前提だけど)

「↓」の方でいいと思います。
ただ、スレ主さんの質問のレベルから、難しいこと言っても(たいして難しくないけど)
無理そうなので、まずは「↑」の方からかな?と思った次第です。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -