C#(三)基礎篇—方法,遞歸,條件分支,循環,三元操作符

  • 2020 年 12 月 3 日
  • 筆記

C#

本隨筆為個人複習鞏固知識用,多從書上總結與理解得來,如有錯誤麻煩指正

2020-12-03

1.方法

 

static void Main(string[] args)
        {
            float Sum(float a, float b)  //定義一個方法,返回值浮點型,標識符ADD
            {
                return a + b;
            }
            float number1 = 5;
            float number2 = 10;
      

            float number3 = Sum(number1, number2);//先執行sum方法再將返回值賦值給number3
            Console.WriteLine(number3);   //輸出值

        }

如果方法的參數是內置參數,則在方法內部引用的是參數的副本,方法內的運算不會影響到參數本身。如果希望在方法內改變內置類型參數值,需要添加ref或out標識符

我所學習的書中示例也是出現了另一個錯誤,Change中和下方定義的變數不能重複,將Change中a變為b即可解決

 

static void Main(string[] args)
        {
            void Change(ref int b)
            {
                b += 10;
            }

            int a = 0;
            Change(ref a);
            Console.Write(a);

        }

也可將ref替換為out,區別是需要在方法中初始化變數再使用它

 

static void Main(string[] args)
        {
            
            void Change(out int a)
            {
                a = 0;
                a += 10;

            }

            int b = 0;
            Change(out b);
            Console.Write(b);

        }

 

 

2.遞歸

 

在方法中調用當前方法叫遞歸

static void Main(string[] args)
        {
            
           
            void Print( int n)
            {
                
                if (n == 0)
                {
                    Console.WriteLine(n);
                    return;
                }
                else
                {
                    Console.WriteLine(n);
                    Print(n - 1);
                }
            }
            int a = 10;
            Print(a);

        }

要注意遞歸一定要有退出條件,輸出的前後順序也會影響輸出結果,遞歸與普通循環相比效率更低,不適合項目,適合試題

 

3.條件分支語句

 

常使用到if,else,switch等關鍵詞

在上面遞歸中就用到了if,即if後的判斷為true時執行if{}里的語句,具體可以參考上面

switch語句作用與if類似,可讀性更佳

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        enum FRUIT
        {
            Apple=0,
            Banana,
            Cherry,
        }
        static FRUIT fruit = FRUIT.Apple;

        static void Main(string[] args)
        {
            switch(fruit)
            {
                case FRUIT.Apple:             //如果fruit的值等於FRUIT.Apple
                    Console.WriteLine("Apple"); 
                    break;// 使用break退出

                case FRUIT.Banana:
                    Console.WriteLine("Banana");
                    break;

                case FRUIT.Cherry:
                    Console.WriteLine("Cherry");
                    break;

                    
            }
            //上述語句等價於
            if (fruit == FRUIT.Apple)
            { 

                Console.Write("Apple");
            }
            else if (fruit == FRUIT.Banana)
            {
                Console.Write("Banana");
            }
            else if (fruit == FRUIT.Cherry)
            {
                Console.Write("Cherry");
            }
            Console.ReadKey();//按任意鍵退出



        }
    }
}

 

4.循環語句

 

while語句是一個條件循環語句,每次循環返回一個邏輯表達式值,只有表達式值為false時才會退出循環,使用時要注意不要陷入死循環

int n=0;
while(n<10)  //如果n<10,則會一直循環{}中語句
{
n++;     //如果n為10時退出循環
}

for語句與while類似,都是條件循環語句,不同的是,for語句可以更方便的控制循環次數

for(int i=0;i<10;i++)   //i初始值為0,i小於10會循環,每次循環加一
{
//循環10次
}

很多時候,需要在循環中直接退出或者不再執行剩下語句繼續下一個循環,可以使用break和continue

int n=10;
while(true)
{
if(n==5)//當n=5時,直接退出循環
 {break;}
n--;
}



forint i=0;i<10;i++)
{
if(i==5)
{continue;}   //當i=5,將跳過其他程式碼直接下一個循環
//其他程式碼



}

 

5.三元操作符

作用與if類似,條件表達式為true執行表達式1,否則執行表達式2

//條件表達式?表達式1:表達式2
int a=50,b=100;
int max = a>b?a:b

max值為100