none
三個數值如何簡單的比對? RRS feed

  • 問題

  • 有一table,裡面有兩個欄位一個是書名'book_name',另一個是書有沒有在書架上'book_attitude',裡面資料只有1,2,3。

    1表示在書架上,2表示不在書架上,3表示可能在書架上,正在找。

    現在的寫法是

    if (book_name =="asp.net in nutshell")
    {
     if (book_attitude ==1)
     {
      Console.Write(book_name +"在書架上");
     }
     if (book_attitude ==2)
     {
      Console.Write(book_name +"不在書架上");
     }
     if (book_attitude ==3)
     {
      Console.Write(book_name +"可能在書架上");
     }
    }
    請問一下有沒有更精簡的方式來撰寫,不至於程式看起來落落長。
    2010年6月21日 上午 02:35

解答

  • Hi!

    照您的情況,我自己的習慣是這樣寫

          //int book_attitude = 1;
          //string book_name = "asp.net in nutshell";
          string[] sBAary = new string[] { "", "在書架上", "不在書架上", "可能在書架上" };
    
          if (book_name == "asp.net in nutshell")
          {
            Console.Write(book_name + sBAary[book_attitude]);
          }


    歡迎參觀我的Blog.NET菜鳥自救會

    2010年6月21日 上午 03:10
    版主

所有回覆

  • 1. 這個沒什麼精簡寫法,頂多就是用函數把判斷包起來。
    2. 以你的案例,可以用 switch 而不是 if。
    3. 變數值可以改用列舉,這樣至少人家閱讀時不會被無意義的 1, 2, 3, ... 所困惑。


    以下為簽名檔,請勿對號入座:
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    2010年6月21日 上午 02:55
    版主
  • Hi!

    照您的情況,我自己的習慣是這樣寫

          //int book_attitude = 1;
          //string book_name = "asp.net in nutshell";
          string[] sBAary = new string[] { "", "在書架上", "不在書架上", "可能在書架上" };
    
          if (book_name == "asp.net in nutshell")
          {
            Console.Write(book_name + sBAary[book_attitude]);
          }


    歡迎參觀我的Blog.NET菜鳥自救會

    2010年6月21日 上午 03:10
    版主