在前一篇,我們學會了變數與運算子,能處理像「成交金額 = 價格 × 成交量」這樣的計算。
不過選股工具真正有用的地方是:能根據 條件 來判斷一檔股票是否該被觀察。
今天,我們來學 C# 的流程控制:if/else 與 switch。
舉例來說:
這就是程式中的「分支」。如果沒有條件判斷,程式就只能一成不變,沒辦法根據情況作出不同反應。
最簡單的範例:
double price = 120;
double target = 100;
if (price > target)
{
Console.WriteLine("股價高於目標價,進入觀察名單");
}
else
{
Console.WriteLine("股價未達目標價,忽略");
}
輸出:
股價高於目標價,進入觀察名單
有時候 if/else
區塊很短,寫起來就顯得冗長。
C# 提供了「三元運算子」可以讓程式更精簡:
double price = 120;
double target = 100;
Console.WriteLine(
(price > target)
? "股價高於目標價,進入觀察名單"
: "股價未達目標價,忽略"
);
👉 建議:三元運算子適合「單一判斷 + 單行結果」的場合,如果邏輯複雜還是用 if/else
比較清楚。
當條件很多時,使用 if/else
會讓程式變得很亂,這時候 switch
更清楚。
標準寫法:
string mode = "技術面";
switch (mode)
{
case "基本面":
Console.WriteLine("模式:基本面分析");
break;
case "技術面":
Console.WriteLine("模式:技術分析");
break;
case "籌碼面":
Console.WriteLine("模式:籌碼分析");
break;
default:
Console.WriteLine("未知的模式");
break;
}
有時候 default
可以和某些 case 共用邏輯,程式就會更緊湊:
string mode = "技術面";
switch (mode)
{
default:
case "基本面":
Console.WriteLine("模式:基本面分析");
break;
case "技術面":
Console.WriteLine("模式:技術分析");
break;
case "籌碼面":
Console.WriteLine("模式:籌碼分析");
break;
}
👉 這樣的寫法代表:
mode
沒有符合任何 case,或等於 "基本面"
時,都會進入「基本面分析」。雖然 if/else
非常好用,但它並不是萬能的。
如果條件太多,一路寫下來就會變成「階梯狀地獄」── 可讀性差、維護困難。
像下面這張圖的例子:
程式碼沒有語法錯誤,但充滿了巢狀的 if/else if
。
這種寫法短期內能跑,但:
👉 解決方式:
switch
改寫最後我們把今天的重點整合到一個 Console 程式:
using System;
class Program
{
static void Main(string[] args)
{
// 股票資訊
string stock = "TSMC";
double price = 540.5;
// 使用者設定目標價
double target = 500;
// if/else 判斷
if (price > target)
{
Console.WriteLine($"股票 {stock} 股價 {price} 高於目標價 {target} → 加入觀察名單");
}
else
{
Console.WriteLine($"股票 {stock} 股價 {price} 未達目標價 {target} → 忽略");
}
// 三元運算子 (簡化 if/else)
Console.WriteLine(
(price > target)
? "使用三元運算子:股價達到目標價"
: "使用三元運算子:股價未達目標價"
);
// 使用 switch 判斷觀察模式
string mode = "技術面";
switch (mode)
{
default:
case "基本面":
Console.WriteLine("模式:基本面分析");
break;
case "技術面":
Console.WriteLine("模式:技術分析");
break;
case "籌碼面":
Console.WriteLine("模式:籌碼分析");
break;
}
}
}
執行結果:
股票 TSMC 股價 540.5 高於目標價 500 → 加入觀察名單
使用三元運算子:股價達到目標價
模式:技術分析
今天我們學會了: