關於書籍《Learning hard C#學習筆記》,結合着菜鳥教程中的C#教程看,效果顯著!
菜鳥教程是一個學習網站,鏈接:https://www.runoob.com/csharp/csharp-struct.html
第3章 C#語言基礎
3.1 標識符和關鍵字
3.1.1 標識符
…
3.1.2 關鍵字
C#共102個關鍵字,如表3-1所示。
表3-1 C#的102個關鍵字
abstract |
as |
base |
bool |
break |
byte |
case |
catch |
char |
checked |
class |
const |
continue |
decimal |
default |
delegate |
do |
double |
else |
enum |
event |
explict |
extern |
false |
finally |
fixed |
float |
for |
foreach |
goto |
if |
implicit |
in |
int |
interface |
internal |
is |
lock |
long |
namespace |
new |
null |
object |
operator |
out |
override |
params |
private |
protected |
public |
readonly |
ref |
return |
sbyte |
sealed |
short |
sizeof |
stackalloc |
static |
string |
struct |
switch |
this |
throw |
true |
try |
typeof |
uint |
ulong |
unchecked |
unsafe |
ushort |
using |
virtual |
void |
volatile |
while |
add |
alias |
ascending |
async |
await |
descending |
dynamic |
from |
get |
global |
group |
into |
join |
let |
orderby |
partial |
remove |
select |
set |
value |
var |
where |
yield |
|
|
|
|
|
3.2 基礎數據類型
公共語言運行時(CLR)包括通用類型系統(CTS)和公共語言規範(CLS)兩部分。
通用類型系統又把類型分爲兩大類:值類型和引用類型。
C# 是基於 .NET 框架的語言,它定義了自己的數據類型,包括:數值類型、布爾類型、字符串類型、枚舉類型、結構體類型和數組類型。
3.2.1 數值類型
分爲 整型、浮點型和十進制型 3種。
3.2.2 布爾類型
存儲布爾值true和false。
3.2.3 字符串類型
string(字符串)類型是System.String的別名,表示由零個或多個Unicode字符組成的不可變序列。可使用 “ []” 運算符訪問string中的每個字符。
string類型爲引用類型,string變量本身存儲在棧裏,而變量所指向的值則存儲在託管堆裏。
3.2.4 枚舉類型
屬於值類型,用於聲明一組命名了的常數。
enum Gender
{
female ,
male,
num
}
3.2.5 結構體類型
是一種值類型,通常適用於表示諸如Point、Rectangle和Color等的輕量級對象。
C#結構體的特點,參考: https://www.runoob.com/csharp/csharp-struct.html
3.2.6 數組類型
是一種引用類型,它代表了相同元素的集合。
聲明和初始化,語法:type[] array = new type[arrayCount];
3.3 變量和常量
3.3.1 變量的使用
數據類型 變量名
3.3.2 變量的作用域
變量的作用域指變量的使用範圍,超出作用域後不能再對變量進行讀取和賦值等操作。
string[] array = new string[6] { "Hi", ",", " we", " are", " friends", " !" };
//變量str的作用域
foreach (string str in array)//臨時變量str 僅在foreach()循環體內可讀可寫,在循環體外則不可被使用
{
Console.Write(str);
}
Console.WriteLine();
Console.ReadKey();
3.3.3 常量
常量一旦被初始化就不能再次改變,C#中使用 const關鍵字進行定義,
語法:const 數據類型 常量名 = 與數據類型相對應的值;
注意點:
(1)因後續無法修改,所以必須在聲明時就初始化;
(2)常量無法接受變量的賦值,即使變量是readonly(只讀)也不可以;
(3)常量默認是靜態的,不允許顯式使用static關鍵字聲明;
3.4 運算符和表達式
3.4.1 運算符
在C#中,運算符是用於操作一個或多個操作數的程序元素。接受一個操作數的運算符稱爲一元運算符,如 ++ --;二元運算符,如 + - * /;C#中唯一的三元運算符,? : 。
3.4.2 運算符優先級
只有三個優先級是從右至左結合的,一元、條件、賦值運算符。
3.4.3 運算符重載
運算符重載只能用於結構或類中,用關鍵字 operator 對運算符進行聲明。
對於一元運算符,其重載方法需要帶一個類或結構類型的變量作參數;而二元運算符重載則需要兩個。
語法: public static 自定義結構體或類 operator 重載的運算符(類型1,類型2);
注意: 所有運算符重載的方法都是static的、public的; 並不是所有的運算符都可以重載。
例子:
(1)VS2015 新建一個class,名叫 Complex.cs,寫如下代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LanguageFoundation
{
//複數
class Complex
{
private int _real;//複數的實數部分
private int _imag;//複數的虛數部分
public int real //字段
{
get { return _real; }
set { _real = value; }
}
public int imag
{
get { return _imag; }
set { _imag = value; }
}
public Complex()//空構造函數
{ }
public Complex(int tmp1, int tmp2)//自定義構造函數
{
this.real = tmp1;
this.imag = tmp2;
}
public static Complex operator +(Complex num1, Complex num2)// + 號的重載
{
Complex re = new Complex();
re.real = num1.real + num2.real;
re.imag = num1.imag + num2.imag;
return re;
}
public override string ToString()//ToString()函數的重寫 影響範圍僅在本類實例中 不會影響正常的 ToString()發揮作用
{
return string.Format("{0},{1}i", real, imag);
}
}
}
(2) 在默認的Program.cs中寫如下代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LanguageFoundation
{
class Program
{
static void Main(string[] args)
{
//4 運算符重載
Complex num1 = new Complex(1, 2);
Complex num2 = new Complex(3, 4);
Complex re = num1 + num2;
Console.WriteLine("Complex num1 = " + num1.ToString());
Console.WriteLine("Complex num2 = " + num2.ToString());
Console.WriteLine("overloading + : num1 + num2 = " + re.ToString());
Console.ReadKey();
}
}
}
如何理解:static可修飾類、字段、屬性、方法
參考鏈接:https://blog.csdn.net/nineleafclover/article/details/77964611
static在使用的時候分三種方法。
1.修飾類的時候:
將類修飾爲靜態的,意味着這個類不能實例化對象,在調用類裏面的任何內容的時候直接用類名加點的形式調用其中的方法或者字段(類名.方法/類名.字段)
2.修飾方法或者屬性的時候:
將方法修飾爲靜態方法,表示此方法爲所在的類所有,而不是這個類實例化的對象所擁有,這個方法在調用的時候需要類名加點(類名.方法)來調用。
3.修飾變量:
表示在每次調用該變量的方法或者類的時候,變量的值爲最後一次賦值時的值,而不是再次初始化它的值。
3.4.4 表達式
…
3.5 C#中的語句
C#語句包含:聲明語句、條件語句、循環語句、跳轉語句 和 異常語句等;
3.5.1 條件語句
if 、 switch
3.5.2 循環語句
while、do…while
for、foreach
foreach語句用於遍歷數組或對象集合中的元素。但是並非所有的數組或對象集合都能使用foreach語句進行遍歷,只有那些實現了System.Collections.IEnumerable和System.Collections.Generic.Ienumerable<T>接口的數組或對象集合纔可以使用foreach語句。
3.5.3 跳轉語句
break:直接退出整個循環
continue:立即終止本次循環,繼續進行循環體中的下一次循環
goto:跳出循環到已標記好的位置(不推薦使用)
return:退出循環和循環所在的函數