[C#] 變數宣告

環境:Windows 10
IDE:VS2019

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

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

整數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

發佈留言

內容索引