[C#] 變數宣告

環境:Windows 10
IDE:VS2019

在C#中,//是單行註解,/**/是區塊註解

  • 宣告的變數一定要給予型別。
  • var則是一定要給值

Table of Contents

<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="顯示/隱藏內容目錄"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span>

整數int

microsoft(整數的數字型別)

int apple = 100;  // 宣告變數apple時就給值100

int bird; // 宣告變數bird,但不給值
bird = 200; // 設定變數bird的值為200

int lucky_girl_age = 18, lucky_boy_age = 17, abby; // 宣告數個同型別的變數

var

  • 必需宣告值
    var是一定要先給值,var是讓電腦來區分值是什麼型別,若沒有給值,電腦會無法判斷。

在編譯時會經由10,推測number的型別是整數:

var number = 10; 

不能只宣告的:var

補充:checked 是用來明確啟用整數型別算術運算和轉換的溢位檢查。

浮點數(float、double、decimal)

microsoft(浮點數值型別)
每個浮點數型別的預設值都是零,浮點數型別都有 MinValue 與 MaxValue 常數,提供該型別的最小與最大有限值。

  1. float
  • 單精準數
  • 不可以直接只指定數值,必需在數值最後加 F 或 f
  1. double
  • 雙精準數
  • 可以直接指定數值,或在數值最後加 D 或 d
  1. decimal
  • 進位數
  • 不可以直接只指定數值,必需在數值最後加M或m
  • 通常用於財務(有關錢的計算)。

從c# 7.0開始支援_做為數位分隔符號,可以使用數位分隔符號搭配所有種類的數值常值。

double d_1 = 9D;
double d_2 = 6d;
double d_3 = 4.852_0001000;
Console.WriteLine(d_3); // 4.8520001

float f_1 = 2_000.5F;
float f_2 = 3.4000f;
Console.WriteLine(f_2); // 3.4

decimal myMoney_1 = 3_000.50m;
decimal myMoney_2 = 400.750000M;
Console.WriteLine(myMoney_2); // 400.750000

也可以使用科學記號標記法。

double d = 0.42e2;
Console.WriteLine(d);  // 42

float f = 134.45E-2f;
Console.WriteLine(f);  // 1.3445

decimal m = 1.5E6m;
Console.WriteLine(m);  // 1500000

字串(String)

  • 字串加字串
string firstName = "Hello";
string lastName = "World";
string fullName = firstName + "," + lastName;
Console.WriteLine(fullName); // Hello,World
  • 字串加數字
int sum = 1 + 1;
string leading = "1+1=";
string result = leading + sum;
Console.WriteLine(result); //1+1=2
  • 宣告字串為Null
    null 表示字串沒有任何值,可以與字串相加,不等於零(0)也不等於空字串。
string value1 = null;
  • 空字串
string value1 = "";
string value2 = string.Empty; // 空字串比較好的寫法

陣列(arry)

  • 指定長度後就不可以再修改長度,較適合已知長度
  • 第一筆資料從0開始
  • 型別必須一致
  • 可以重覆修改值

格式:

資料型別 [] 陣列名稱 = new 資料型別[陣列大小];
int[] numbers = new int[4]; // 陣列長度為4
// 宣告後再把值填到陣列裡
numbers[0] = 1000;
numbers[1] = 10;
numbers[2] = 20;
numbers[3] = 30;
numbers[2] = -100; //修改值 

宣告陣列時填入值:

// 雖然一開始沒指定長度,但長度是固定的
string[] items = new[] {"A", "B", "C", "D", "E"};
// items[5] = "Z" //會報錯,陣列的長度已超過
/*
 * 長度只到5,會出現錯誤的訊息:
 * System.IndexOutOfRangeException: Index was outside the bounds of the array.
*/

取得陣列長度:

string[] items = new[] {"A", "B", "C", "D", "E"};
int length = items.Length;

排序小到大&大到小:

int[] items = new int[] {8, 10, 1, 3, 5};
Array.Sort(items); // 小到大
//Array.Reverse(items); // 轉成大到小需先使用sort排列過
foreach (var item in items)
{
    Console.Write($"{item}\t");
}
// 1    3   5   8   10

Sort(小到大)允許傳入兩個陣列;
下方使用2個不同的陣列來做成績的排序,且名字要與分數一致。

string[] students = {"小王", "小美", "大強", "大白", "自強", "莒光"};
int[] score_math = {80, 50, 90, 66, 76, 99};

// 將score_math排序, 且同時用相同順序排列students
Array.Sort(score_math, students);

//若想要遞增,則需使用2次Reverse
// Array.Reverse(score_math);
// Array.Reverse(students);
for (int i = 0; i< students.Length; i++)
{
    string name = students[i];
    int score = score_math[i];
    Console.WriteLine($"{name}的成績:{score}");
}

遞減的結果:

遞增的結果:

特殊逸出Escape字元

  • \’ 單引號
  • \” 雙引號
  • \ 反斜線
  • \a 發出一聲警告
  • \b 倒退一個字元
  • \f Form Feed
  • \n 換新行
  • \r 換行並移到最前方
  • \t 水平方向的Tab
  • \v 垂直方向的Tab