第六單元 流程式控制制

来源:https://www.cnblogs.com/xuyubing/archive/2023/05/30/17442318.html
-Advertisement-
Play Games

C# 流程語句分為:順序結構,選擇結構,迴圈結構。 1. 順序結構 順序結構指的是程式一步步向下執行。 int a =10; int b =a; a++; 2. 選擇結構 C# 提供以下類型的選擇語句。 聲明描述 if聲明 一個if語句包含一個布爾表達式後跟一個或多個語句。 if...else聲明 ...


C# 流程語句分為:順序結構,選擇結構,迴圈結構。

1. 順序結構

順序結構指的是程式一步步向下執行。

int a =10;
int b =a;
a++;

2. 選擇結構

C# 提供以下類型的選擇語句。

聲明描述
if聲明 一個if語句包含一個布爾表達式後跟一個或多個語句。
if...else聲明 一個if語句可以跟著一個可選的else語句,當布爾表達式是假的,其執行。
嵌套if語句 您可以在另一個if or else if語句中使用一個if or else if語句。
switch語句 switch語句允許一個變數來針對值的列表平等進行測試。
嵌套的switch語句 您可以在另一個switch語句中使用一個switch語句。

if ... else

condition1

if .. else 語法

if(bool 表達式)
{
    ... 
}
else if(bool 表達式) // 可選的
{
    ...
}
else  // 可選的
{
    ...
}

例1:

int score =90;
if(score >= 60)
{
    Console.WriteLine("及格");
}
else
{
    Console.WriteLine("不及格");
}

例2:

static void Main(string[] args)
{
    int a = 90;
    Console.WriteLine(GetGrade(a));
}
​
public static string GetGrade(int score)
{
    if (score>=60)
    {
        return "及格";
    }
    else
    {
        return "不及格";
    }
}
// 簡寫
public static string GetGrade(int score)
{
    if (score>=60)
    {
        return "及格";
    }
    return "不及格";
}

 

例3:

static void Main(string[] args)
{
    int a = 90;
    Console.WriteLine(GetGrade(a));
}

public static string GetGrade(int score)
{
    if (score<60)
    {
        return "不及格";
    }
    else if(score>=60 && score<=70)
    {
        return "一般";
    }
    else if (score > 70 && score <= 80)
    {
        return "良好";
    }
    else
    {
        return "優秀";
    }
}

 

如果if 或者 else 後面 只有一條語句,則 “{}” 可以省略,但一般不建議省略

if (score<60)
     return "不及格";

? : 運算符

我們已經在前面的章節中講解了 條件運算符 ? :,可以用來替代 if...else 語句。它的一般形式如下:

Exp1 ? Exp2 : Exp3;

其中,Exp1、Exp2 和 Exp3 是表達式。請註意,冒號的使用和位置。

? 表達式的值是由 Exp1 決定的。如果 Exp1 為真,則計算 Exp2 的值,結果即為整個 ? 表達式的值。如果 Exp1 為假,則計算 Exp3 的值,結果即為整個 ? 表達式的值。

switch...case

一個 switch 語句允許測試一個變數等於多個值時的情況。每個值稱為一個 case,且被測試的變數會對每個 switch case 進行檢查。

C# 中 switch 語句的語法:

switch(expression){
    case constant-expression  :
       statement(s);
       break; 
    case constant-expression  :
       statement(s);
       break; 
  
    /* 您可以有任意數量的 case 語句 */
    default : /* 可選的 */
       statement(s);
       break; 
}

switch 語句必須遵循下麵的規則:

  • switch 語句中的 expression 必須是一個整型或枚舉類型,或者是一個 class 類型,其中 class 有一個單一的轉換函數將其轉換為整型或枚舉類型。

  • 在一個 switch 中可以有任意數量的 case 語句。每個 case 後跟一個要比較的值和一個冒號。

  • case 的 constant-expression 必須與 switch 中的變數具有相同的數據類型,且必須是一個常量。

  • 當被測試的變數等於 case 中的常量時,case 後跟的語句將被執行,直到遇到 break 語句為止。

  • 當遇到 break 語句時,switch 終止,控制流將跳轉到 switch 語句後的下一行。

  • 不是每一個 case 都需要包含 break。如果 case 語句為空,則可以不包含 break,控制流將會 繼續 後續的 case,直到遇到 break 為止。

  • C# 不允許從一個 case 部分繼續執行到下一個 case 部分。如果 case 語句中有已經執行,則必須包含 break 或其他跳轉語句。

  • 一個 switch 語句可以有一個可選的 default 語句,在 switch 的結尾。default 語句用於在上面所有 case 都不為 true 時執行的一個任務。default 也需要包含 break 語句,這是一個良好的習慣。

  • C# 不支持從一個 case 標簽顯式貫穿到另一個 case 標簽。如果要使 C# 支持從一個 case 標簽顯式貫穿到另一個 case 標簽,可以使用 goto 一個 switch-case 或 goto default。

C# 中的 switch 語句

實例

以下實例用於判斷當前是星期幾:

static void Main(string[] args)
{
    int day = 4;
    switch (day) // 數字,字元串,枚舉
    {
        case 1:  // 只能寫常量 
            Console.WriteLine("Monday");
            break;
        case 2:
            Console.WriteLine("Tuesday");
            break;
        case 3:
            Console.WriteLine("Wednesday");
            break;
        case 4:
            Console.WriteLine("Thursday");
            break;
        case 5:
            Console.WriteLine("Friday");
            break;
        case 6:
            Console.WriteLine("Saturday");
            break;
        case 7:
            Console.WriteLine("Sunday");
            break;
        default:
            Console.WriteLine("Sunday");
            break;
    }    
}

C# 8.0 可將switch 進行優化:

static void Main(string[] args)
{
    int day =4;
    string week = day switch
    {
            1=>"Monday",
            2=>"Tuesday",
            3=>"Wednesday",
            4=>"Thursday",
            5=>"Friday",
            6=>"Saturday",
            7=>"Sunday",
            _=>"Sunday" // 預設
    };
    Console.WriteLine(week);
}

 

執行結果根據當天日期有所不同,我這裡執行這天的結果為:

Thursday

C# 9.0 藉助於模式匹配

// c# 9.0 : 模式匹配,結合switch
int score = 88;
string result = score switch
{
    >0 and <60 => "不及格",
    >=60 and <=69 => "合格",
    >=70 and <=79 => "中等",
    >=80 and <=89 => "",
    _ => "優秀"
};
Console.WriteLine(result);

以下實例判斷學生的成績,包含了 default 語句:

static void Main(string[] args)
{
    /* 局部變數定義 */
    char grade = 'B';

    switch (grade)
    {
        case 'A':
            Console.WriteLine("很棒!");
            break;
        case 'B':
        case 'C':
            Console.WriteLine("做得好");
            break;
        case 'D':
            Console.WriteLine("您通過了");
            break;
        case 'F':
            Console.WriteLine("最好再試一下");
            break;
        default:
            Console.WriteLine("無效的成績");
            break;
    }
    Console.WriteLine("您的成績是 {0}", grade);
    Console.ReadLine();
}

 

當上面的代碼被編譯和執行時,它會產生下列結果:

做得好
您的成績是 B

if 與 switch 的區別

一:從“優缺點”分析 if…else 優點:使用靈活,代碼空間小 ;

缺點:效率低,因為 if else 必須遍歷所有的可能值;

switch…case 優點:代碼結構清晰,效率高;

C# 9.0 以後,已經完全可以代替if else 結構了。

 

強化練習

  1. 業務場景:消費者在圖書商城購買圖書,下單後需要在支付頁面顯示訂單優惠後的價格。具體優惠規則如下:

規則編號規則名稱描述
1 規則一 所購圖書總價在100元以下的沒有優惠
2 規則二 所購圖書總價在100到200元的優惠20元
3 規則三 所購圖書總價在200到300元的優惠50元
4 規則四 所購圖書總價在300元以上的優惠100元

現在需要根據上面的規則計算優惠後的價格。

// 表示購物金額
int money = 666;
// 所購圖書總價在100元以下的沒有優惠
if (money < 100)
{
    money = money;
}
else if (money >= 100 && money <= 200)
{
    //所購圖書總價在100到200元的優惠20元
    money -= 20;
}
else if (money>200 && money<=300)
{
    money -= 50;
}
else
{
    money -= 100;
}

Console.WriteLine(money);

// switch 精簡代碼 
// ...大家自行補上

3. 迴圈結構

1. 為什麼需要迴圈結構

例如:求1-10之間的和

int sum = 1+2+3+4+5+6+7+8+9+10;

如是讓你:求 1-1000之間的和。你該怎麼辦?此時就需要用到迴圈結構來解決這個問題。

2. 什麼是迴圈結構

有的時候,可能需要多次執行同一塊代碼。一般情況下,語句是順序執行的:函數中的第一個語句先執行,接著是第二個語句,依此類推。

編程語言提供了允許更為複雜的執行路徑的多種控制結構。

迴圈語句允許我們多次執行一個語句或語句組,下麵是大多數編程語言中迴圈語句的一般形式:

迴圈結構

3. 迴圈類型

C# 提供了以下幾種迴圈類型。點擊鏈接查看每個類型的細節。

迴圈類型描述
while 迴圈 當給定條件為真時,重覆語句或語句組。它會在執行迴圈主體之前測試條件。
for 多次執行一個語句序列,簡化管理迴圈變數的代碼。
do...while 迴圈 除了它是在迴圈主體結尾測試條件外,其他與 while 語句類似。
嵌套迴圈 您可以在 while、for 或 do..while 迴圈內使用一個或多個迴圈。
foreach 迴圈 對一個集合或者數組進行迴圈遍歷

4. 迴圈控制語句

迴圈控制語句更改執行的正常序列。當執行離開一個範圍時,所有在該範圍中創建的自動對象都會被銷毀。

C# 提供了下列的控制語句。點擊鏈接查看每個語句的細節。

控制語句描述
break 語句 終止 loopswitch 語句,程式流將繼續執行緊接著 loop 或 switch 的下一條語句。
continue 語句 引起迴圈跳過主體的剩餘部分,立即重新開始測試條件。

5. while 迴圈

只要給定的條件為真,C# 中的 while 迴圈語句會重覆執行一個目標語句。

語法

C# 中 while 迴圈的語法:

while(condition)
{
   statement(s);
}

 

在這裡,statement(s) 可以是一個單獨的語句,也可以是幾個語句組成的代碼塊。condition 可以是任意的表達式,當為任意非零值時都為真。當條件為真時執行迴圈。

當條件為假時,程式流將繼續執行緊接著迴圈的下一條語句。

C# 中的 while 迴圈

在這裡,while 迴圈的關鍵點是迴圈可能一次都不會執行。當條件被測試且結果為假時,會跳過迴圈主體,直接執行緊接著 while 迴圈的下一條語句。

static void Main(string[] args)
{
    /* 局部變數定義 */
    int a = 10;

    /* while 迴圈執行 */
    while (a < 20)
    {
        Console.WriteLine("a 的值: {0}", a);
        a++;
    }
    Console.ReadLine();
}

 

當上面的代碼被編譯和執行時,它會產生下列結果:

a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

  

6. for 迴圈

一個 for 迴圈是一個允許您編寫一個執行特定次數的迴圈的重覆控制結構。

C# 中 for 迴圈的語法:

for ( init; condition; increment )
{
   statement(s);
}

  

下麵是 for 迴圈的控制流:

  1. init 會首先被執行,且只會執行一次。這一步允許您聲明並初始化任何迴圈控制變數。您也可以不在這裡寫任何語句,只要有一個分號出現即可。

  2. 接下來,會判斷 condition。如果為真,則執行迴圈主體。如果為假,則不執行迴圈主體,且控制流會跳轉到緊接著 for 迴圈的下一條語句。

  3. 在執行完 for 迴圈主體後,控制流會跳回上面的 increment 語句。該語句允許您更新迴圈控制變數。該語句可以留空,只要在條件後有一個分號出現即可。

  4. 條件再次被判斷。如果為真,則執行迴圈,這個過程會不斷重覆(迴圈主體,然後增加步值,再然後重新判斷條件)。在條件變為假時,for 迴圈終止。

C# 中的 for 迴圈

實例:求1-100的和

static void Main(string[] args)
{
    int sum =0;
    /* for 迴圈執行 */
    for (int a = 1; a <= 100; a = a + 1)
    {
        sum+=a;// sum = sum +a;
    }
    Console.WriteLine(sum) ;
    Console.ReadLine();
}

輸出結果:

5050

7. do...while 迴圈

不像 forwhile 迴圈,它們是在迴圈頭部測試迴圈條件。do...while 迴圈是在迴圈的尾部檢查它的條件。

do...while 迴圈與 while 迴圈類似,但是 do...while 迴圈會確保至少執行一次迴圈。

C# 中 do...while 迴圈的語法:

do
{
   statement(s);

}while( condition );

請註意,條件表達式出現在迴圈的尾部,所以迴圈中的 statement(s) 會在條件被測試之前至少執行一次。

如果條件為真,控制流會跳轉回上面的 do,然後重新執行迴圈中的 statement(s)。這個過程會不斷重覆,直到給定條件變為假為止。

流程圖

C# 中的 do...while 迴圈

static void Main(string[] args)
{
    /* 局部變數定義 */
    int a = 10;

    /* do 迴圈執行 */
    do
    {
        Console.WriteLine("a 的值: {0}", a);
        a = a + 1;
    } while (a < 20);

    Console.ReadLine();
}

 

當上面的代碼被編譯和執行時,它會產生下列結果:

a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

  

8. 迴圈控制語句

迴圈控制語句更改執行的正常序列。當執行離開一個範圍時,所有在該範圍中創建的自動對象都會被銷毀。

C# 提供了下列的控制語句。點擊鏈接查看每個語句的細節。

控制語句描述
break 語句 終止 loopswitch 語句,程式流將繼續執行緊接著 loop 或 switch 的下一條語句。
continue 語句 引起迴圈跳過主體的剩餘部分,立即重新開始測試條件。

break

C# 中 break 語句有以下兩種用法:

  1. break 語句出現在一個迴圈內時,迴圈會立即終止,且程式流將繼續執行緊接著迴圈的下一條語句。

  2. 它可用於終止 switch 語句中的一個 case。

如果您使用的是嵌套迴圈(即一個迴圈內嵌套另一個迴圈),break 語句會停止執行最內層的迴圈,然後開始執行該塊之後的下一行代碼。

C# 中的 break 語句

實例

static void Main(string[] args)
{
    /* 局部變數定義 */
    int a = 10;

    /* while 迴圈執行 */
    while (a < 20)
    {
        Console.WriteLine("a 的值: {0}", a);
        a++;
        if (a > 15)
        {
            /* 使用 break 語句終止 loop */
            break;
        }
    }
    Console.ReadLine();
}

 

當上面的代碼被編譯和執行時,它會產生下列結果:

a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15

continue

C# 中的 continue 語句有點像 break 語句。但它不是強迫終止,continue 會跳過當前迴圈中的代碼,強迫開始下一次迴圈。

對於 for 迴圈,continue 語句會導致執行條件測試和迴圈增量部分。對於 whiledo...while 迴圈,continue 語句會導致程式控制回到條件測試上。

C# 中的 continue 語句

static void Main(string[] args)
{
    /* 局部變數定義 */
    int a = 10;

    /* do 迴圈執行 */
    do
    {
        if (a == 15)
        {
            /* 跳過迭代 */
            a = a + 1;
            continue;
        }
        Console.WriteLine("a 的值: {0}", a);
        a++;

    } while (a < 20);

    Console.ReadLine();
}

 

當上面的代碼被編譯和執行時,它會產生下列結果:

a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

  

9. 嵌套迴圈

C# 允許在一個迴圈內使用另一個迴圈,下麵演示幾個實例來說明這個概念。

語法

C# 中 嵌套 for 迴圈 語句的語法:

for ( init; condition; increment )
{
   for ( init; condition; increment )
   {
      statement(s);
   }
   statement(s);
}

  

C# 中 嵌套 while 迴圈 語句的語法:

while(condition)
{
   while(condition)
   {
      statement(s);
   }
   statement(s);
}

  

C# 中 嵌套 do...while 迴圈 語句的語法:

do
{
   statement(s);
   do
   {
      statement(s);
   }while( condition );
​
}while( condition );

  

關於嵌套迴圈有一點值得註意,您可以在任何類型的迴圈內嵌套其他任何類型的迴圈。比如,一個 for 迴圈可以嵌套在一個 while 迴圈內,反之亦然。

實例:列印9 * 9乘法表

for (int i = 1; i < 10; i++)
{
    for (int j = i; j < 10; j++) // j=i,可以避免 1* 9 和 9 * 1 這種重覆情況
    {
        Console.WriteLine($"{i} * {j} = {i * j}");
    }
}

 

優化輸出, 列印三次之後才換行:

int index = 0;
for (int i = 1; i < 10; i++)
{
    for (int j = i; j < 10; j++)
    {
        if ((index++) %3 ==0)
        {
            Console.WriteLine("\n");// 換行
        }
        Console.Write($"{i} * {j} = {i*j}\t");
    }
}

 

輸出結果:

1 * 1 = 1       1 * 2 = 2       1 * 3 = 3
1 * 4 = 4       1 * 5 = 5       1 * 6 = 6
1 * 7 = 7       1 * 8 = 8       1 * 9 = 9
2 * 2 = 4       2 * 3 = 6       2 * 4 = 8
2 * 5 = 10      2 * 6 = 12      2 * 7 = 14
2 * 8 = 16      2 * 9 = 18      3 * 3 = 9
3 * 4 = 12      3 * 5 = 15      3 * 6 = 18
3 * 7 = 21      3 * 8 = 24      3 * 9 = 27
4 * 4 = 16      4 * 5 = 20      4 * 6 = 24
4 * 7 = 28      4 * 8 = 32      4 * 9 = 36
5 * 5 = 25      5 * 6 = 30      5 * 7 = 35
5 * 8 = 40      5 * 9 = 45      6 * 6 = 36
6 * 7 = 42      6 * 8 = 48      6 * 9 = 54
7 * 7 = 49      7 * 8 = 56      7 * 9 = 63
8 * 8 = 64      8 * 9 = 72      9 * 9 = 81

  

10. 無限迴圈(死迴圈)

如果條件永遠不為假,則迴圈將變成無限迴圈。for 迴圈在傳統意義上可用於實現無限迴圈。由於構成迴圈的三個表達式中任何一個都不是必需的,您可以將某些條件表達式留空來構成一個無限迴圈。

static void Main(string[] args)
{
    for (; ; )
    {
        Console.WriteLine("Hey! I am Trapped");
    }
    
 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 編寫包含多個 `csproj` 的程式時,隨著項目數量的持續增加,可能涉及一些文件夾的變動,手動添加項目或者變動會變得非常麻煩,這個時候,可以利用 `dotnet cli` 幫助我們完成。 如果從零開始,我們可以新建一個解決方案。 ```powershell dotnet new sln -n to ...
  • # 依賴註入的使用 ## 構造方法註入 這是將服務註入類的最常用方法,是將依賴項註入類的首選方式,也是微軟推崇的模式。這樣,除非提供了所有構造方法註入的依賴項,否則無法構造類,顯示的聲明瞭類必需的服務,使開發人員一目瞭然。 ```csharp public class BookAppService ...
  • 假設老師類設計如下: class 老師類 { 屬性:姓名,性別,生日,工資 行為:吃飯,跑步,教學 } 學生類設計如下: class 老師類 { 屬性:姓名,性別,生日,班級 行為:吃飯,跑步,學習 } 我們秉承著,讓最簡潔的代碼,實現最最強大的功能原則,能否讓上述案例中的重覆代碼進行優化呢?我們能 ...
  • 前言 我們天天都在使用 Console.WriteLine("Hello world"); ​ Console.ReadLine(""); ​ Arrays.Sort() 為什麼Console 類 調用 方法不需要實例化而可以直接調用呢? 我們可以查看Console的源碼發現Console類定義如下 ...
  • 假設,班級里40位同學,我們用程式保存40位學生的信息:學號,姓名,性別,生日,身份證號。如果是你,你會怎麼實現? 小菜同學拿到這個題,奮書疾筆,馬上寫出如下代碼: ArrayList list = new ArrayList(); ​ string stuNo1="10001"; string n ...
  • 1. 數組(Array) 數組是一個存儲相同類型元素的固定大小的順序集合。數組是用來存儲數據的集合,通常認為數組是一個同一類型變數的集合。 聲明數組變數並不是聲明 number0、number1、...、number99 一個個單獨的變數,而是聲明一個就像 numbers 這樣的變數,然後使用 nu ...
  • 今天這一份資料庫可以幫助學習認識簡繁體字。資料庫提供簡繁欄位,可以根據簡體選擇繁體,也可以根據繁體選擇簡體。 需要說明的是: 1.有很多簡體繁體字是一樣的,簡體字繁體字不一樣的記錄一共僅有3168條。 2.簡字中存在相同字多條記錄的情況,如下圖,不相同的簡字統計共有2萬多個。 3.同2一樣繁字中也存 ...
  • 很多時間,寫代碼並不能一擼到底,中間都是經歷過無數次的調試,才能正常正確的運行起來。就好像一臺設備剛買來也需要不斷的調試才能達到最佳狀態。 DotNet程式的調試,是DotNet程式員必備的技能之一,開發出穩定的程式、解決程式的疑難雜症都需要很強大的調試能力。DotNet調試有很多方法和技巧。 1. ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...