C#學習筆記---異常捕獲和變數運算符

来源:https://www.cnblogs.com/TonyCode/archive/2023/10/09/17751761.html
-Advertisement-
Play Games

異常捕獲 使用異常捕獲可以捕獲出現異常的代碼塊,防止因為異常拋出造成的程式卡死的情況發生。 try{}catch{}finally{}結構 //異常捕獲 try { string str=Console.ReadLine(); int i=int.Parse(str); Console.WriteL ...


異常捕獲

使用異常捕獲可以捕獲出現異常的代碼塊,防止因為異常拋出造成的程式卡死的情況發生。

try{}catch{}finally{}結構

//異常捕獲
try
{
    string str=Console.ReadLine();
    int i=int.Parse(str);
    Console.WriteLine("輸入的字元串數值轉為int的數值"+i);
}catch
{
    Console.WriteLine("請輸入合法數字");
}finally
{
    //無論正常執行還是是否進行異常捕獲 都會執行
    Console.WriteLine("執行完畢");
}

運算符

算術運算符

算術運算符是英語數值類型變數運算的運算符,運算結果仍舊為數值。

賦值運算符:=

註意:賦值運算符理解將右邊數值賦值給左邊變數。

算術運算符:

//算術數運算符
//加+
int i1=5;
int sum=1+2+3+i1*2;
//減 -
int j1=6;
int sub=15-j1-2;
//乘 *
int c=5;
int c1=5*c;
//除 /
int d=28;
int d1=d/4;
//取模 (取餘) %
int e=12;
e=e%5;
Console.WriteLine(e);

算術運算符的優先順序
乘除取餘 > 加減

int a = 1 + 2 * 3 / 2 + 1 + 2 * 3; //=11
Console.WriteLine(a);

a = 1 + 4 % 2 * 3 / 2 + 1; //2
Console.WriteLine(a);

//括弧可以改變優先順序 優先計算括弧內內容
a = 1 + 4 % (2 * 3 / 2) + 1; //3
Console.WriteLine(a);

//多組括弧 先算最裡層括弧 依次往外算
a = 1 + (4 % (2 * (3 / 2))) + 1; //2
Console.WriteLine(a);

複合運算符

+= -= *= /= %= 相當於對自身進行某項算術操作之後的結果重新賦給自己

//符合運算符
int i3 = 1;
i3 = i3 + 2;
Console.WriteLine(i3);

i3 = 1;
i3 += 2;//i3 = i3 + 2;
Console.WriteLine(i3);

i3 = 2;
i3 += 2;//4
i3 -= 2;//2
i3 /= 2;//1
i3 *= 2;//2
i3 %= 2;//0
Console.WriteLine(i3);

int i4 = 10;
// i4 += 4
i4 += 20 * 2 / 10;
Console.WriteLine(i4);

//註意:複合運算符 只能進行一種運算 不能混合運算
//i4 */-= 2;

自增/減運算符

註意理解前置還是後置的運算符,區別先用後自增/減還是先自增/減再使用。
可以理解為電擊小子打怪物,小光先變身成電擊小子打怪獸還是打完怪獸再變身。

//自增運算符
 //自增運算符  讓自己+1 
a2 = 1;
a2++;//先用再加
Console.WriteLine(a2);
++a2;//先加再用
Console.WriteLine(a2);
a2 = 1;
Console.WriteLine(a2++);//1
//2
Console.WriteLine(++a2);//3

//自減運算符 讓自己-1
a2 = 1;
a2--;//先用再減
--a2;//先減再用

a2 = 1;
Console.WriteLine(a2--);//1
//0
Console.WriteLine(--a2);//-1
//思考?這個
int a = 10, b = 20;
// 11 + 20
int number1 = ++a + b;
Console.WriteLine(number1);//31
a = 10;
b = 20;
//10 + 20
int number2 = a + b++;
Console.WriteLine(number2);//30
a = 10;
b = 20;
//10 + 21 + 11
int number3 = a++ + ++b + a++;
Console.WriteLine(number3);//42
Console.WriteLine(a);//12

字元串的拼接

  1. 使用+拼接

    string str = "123";
    //用+號進行字元串拼接
    str = str + "456";
    Console.WriteLine(str);
    str = str + 1;
    Console.WriteLine(str);
    //使用+=
    str = "123";
    str += "1" + 4 + true;
    Console.WriteLine(str);
    
    //註意:只要遇到字元串,就是轉為字元串
     string str = "暢知";
    str += 1 + 2 + 3 + 4;
    Console.WriteLine(str);//暢知10
    
    str = "";
    str += "" + 1 + 2 + 3 + 4;//開頭就變為字元串
    Console.WriteLine(str);//1234
    
    str = "";
    str += 1 + 2 + "" + (3 + 4);//先算括弧,從首到尾計算
    Console.WriteLine(str);//37
    
    str = "123";
    str = str + (1 + 2 + 3);
    Console.WriteLine(str);//1236
    
  2. 使用占位符替換方式拼接(占位符從0開始,用{}括起來)

    string str2 = string.Format("我是{0}, 我今年{1}歲, 愛好:{2}", "暢知", 21, "我愛寫博客!!");
    Console.WriteLine(str2);
    
    str2 = string.Format("asdf{0},{1},sdfasdf{2}", 1, true, false);
    Console.WriteLine(str2);
    

條件運算符

條件運算符均為雙目運算符,返回結果為bool類型的,使用其運算結果來做某些情況的判斷。

條件運算符的優先順序要低於算術運算符

//條件運算符
int a = 5;
int b = 10;
//大於
bool result = a > b;
Console.WriteLine(result);
//小於
result = a < b;
Console.WriteLine(result);
//大於等於
result = a >= b;
Console.WriteLine(result);
//小於等於
result = a <= b;
Console.WriteLine(result);
//等於
result = a == b;
Console.WriteLine(result);
//不等於
result = a != b;
Console.WriteLine(result);
//也可以直接和數值比較
result=10>5;

//優先順序
// 先計算 再比較
result = a + 3 > a - 2 + 3;// true
result = 3 + 3 < 5 - 1;//false

//不同類型之間的比較
//不同數值類型之間 可以隨意進行條件運算符比較
int i = 5;
float f = 1.2f;
double d = 12.4;
short s = 2;
byte by = 20;
uint ui = 666;

//只要是數值 就能夠進行條件運算符比較  比較大於小於等於等等
int i = 5;
float f = 1.2f;
double d = 12.4;
short s = 2;
byte by = 20;
uint ui = 666;
bool result;
//只要是數值 就能夠進行條件運算符比較  比較大於小於等於等等
result = i > f;//true
Console.WriteLine(result);
result = f < d;//true
Console.WriteLine(result);
result = i > by;//false
Console.WriteLine(result);
result = f > ui;//false
Console.WriteLine(result);
result = ui > d;//true
Console.WriteLine(result);

//特殊類型 char string bool 只能同類型進行 == 和 != 比較
string str = "123";
char c = 'A';
bool bo = true;

result = str == "234";//false
result = str == "123";//true
result = str != "123";//false

result = c == 'B';//false

//不僅可以和自己類型進行 == != 還可以和數值類型進行比較
//字元參與比較大小時候將自身作為ASCII碼比較
//還可以和字元類型進行大小比較
result = c > 123;
result = c > 'B';

result = bo == true;//true;

邏輯運算符

邏輯與 & 邏輯或 || 邏輯非 !

邏輯運算符優先順序 < 條件運算符 算術運算
條件運算符均為雙目運算符,返回結果為bool類型的,使用其運算結果來做某些情況的判斷。

條件運算符的優先順序要低於算術運算符

//條件運算符
int a = 5;
int b = 10;
//大於
bool result = a > b;
Console.WriteLine(result);
//小於
result = a < b;
Console.WriteLine(result);
//大於等於
result = a >= b;
Console.WriteLine(result);
//小於等於
result = a <= b;
Console.WriteLine(result);
//等於
result = a == b;
Console.WriteLine(result);
//不等於
result = a != b;
Console.WriteLine(result);
//也可以直接和數值比較
result=10>5;

//優先順序
// 先計算 再比較
result = a + 3 > a - 2 + 3;// true
result = 3 + 3 < 5 - 1;//false

//不同類型之間的比較
//不同數值類型之間 可以隨意進行條件運算符比較
int i = 5;
float f = 1.2f;
double d = 12.4;
short s = 2;
byte by = 20;
uint ui = 666;

//只要是數值 就能夠進行條件運算符比較  比較大於小於等於等等
int i = 5;
float f = 1.2f;
double d = 12.4;
short s = 2;
byte by = 20;
uint ui = 666;
bool result;
//只要是數值 就能夠進行條件運算符比較  比較大於小於等於等等
result = i > f;//true
Console.WriteLine(result);
result = f < d;//true
Console.WriteLine(result);
result = i > by;//false
Console.WriteLine(result);
result = f > ui;//false
Console.WriteLine(result);
result = ui > d;//true
Console.WriteLine(result);

//特殊類型 char string bool 只能同類型進行 == 和 != 比較
string str = "123";
char c = 'A';
bool bo = true;

result = str == "234";//false
result = str == "123";//true
result = str != "123";//false

result = c == 'B';//false

//不僅可以和自己類型進行 == != 還可以和數值類型進行比較
//字元參與比較大小時候將自身作為ASCII碼比較
//還可以和字元類型進行大小比較
result = c > 123;
result = c > 'B';

result = bo == true;//true;

邏輯運算符

邏輯與 & 邏輯或 || 邏輯非 !

邏輯運算符優先順序 < 條件運算符 算術運算

邏輯運算符中: !(邏輯非)優先順序最高 &&(邏輯與)優先順序高於||(邏輯或)

//邏輯運算符
//邏輯與&& 並且
//規則: 對兩個bool值進行邏輯運算 有假則假 同真為真
bool result = true && false;
Console.WriteLine(result);
result = true && true;
Console.WriteLine(result);
result = false && true;
Console.WriteLine(result);

//bool相關的類型 bool變數  條件運算符 
//邏輯運算符優先順序 低於 條件運算符 算術運算
// true && true
result = 3 > 1 && 1 < 2;
Console.WriteLine(result);
int i = 3;
// 1 < i < 5;
// true && true
result = i > 1 && i < 5;
Console.WriteLine(result);

//多個邏輯與 組合運用
int i2 = 5;
// true && false && true && true
//在沒有括弧的情況下 從左到右 依次看即可
//有括弧 先看括弧內
result = i2 > 1 && i2 < 5 && i > 1 && i < 5;
Console.WriteLine(result);
//符號 || 或者
//規則 對兩個bool值進行邏輯運算 有真則真 同假為假
result = true || false;
Console.WriteLine(result);
result = true || true;
Console.WriteLine(result);
result = false || true;
Console.WriteLine(result);
result = false || false;
Console.WriteLine(result);
// false || true
result = 3 > 10 || 3 < 5;
Console.WriteLine(result);//true

int a = 5;
int b = 11;
// true || true || false
result = a > 1 || b < 20 || a > 5;
Console.WriteLine(result);
// ? && ?
// ? || ?
// ? 可以是寫死的bool變數 或者 bool值
// 還可以是 條件運算符相關

//----------邏輯非!
//符號 !
//規則 對一個bool值進行取反  真變假  假變真

result = !true;
Console.WriteLine(result);
result = !false;
Console.WriteLine(result);
result = !!true;
Console.WriteLine(result);
//邏輯非的 優先順序 較高
result = !(3 > 2);
Console.WriteLine(result);

a = 5;
result = !(a > 5);
Console.WriteLine(result);

//混合使用邏輯運算符的優先順序問題
// 規則  !(邏輯非)優先順序最高   &&(邏輯與)優先順序高於||(邏輯或)
// 邏輯運算符優先順序 低於 算數運算符 條件運算符(邏輯非除外)

bool gameOver = false;
int hp = 100;
bool isDead = false;
bool isMustOver = true;

//false || false && true || true;
//false || false || true;
result = gameOver || hp < 0 && !isDead || isMustOver;
Console.WriteLine(result);

邏輯運算符的短路原則(聰明的運算符)

//短路原則
//|| 判斷原則為有真則真 所以第一個條件判斷為真,則直接可以得出運算結果為真 便不會檢查第二個
//個運算條件的真假
//同理,&& 若左邊條件為假,則不會判斷右邊條件,直接可以得出運算結果為假
//邏輯或 有真則真 那左邊只要為真了 右邊就不重要
int i3=1;
bool result = i3 > 0 || ++i3 >= 1;
Console.WriteLine(i3);//1
Console.WriteLine(result);
// false && i3 ++ > 1;拋棄後面不去計算

//邏輯與 有假則假 那左邊只要為假了 右邊就不重要
result = i3 < 0 && i3++ > 1;
Console.WriteLine(i3);//1
Console.WriteLine(result);

//思考?
//求列印結果是什麼?
//註意運算符的優先順序
bool gameOver;
bool isWin;
int health = 100;
gameOver = true;
isWin = false;
// true || false && true
Console.Write(gameOver || isWin && health > 0);

位運算符

位運算是基於二進位編碼的運算,首先將值轉換為二進位數值,然後對於位進行操作運算。
運算符:位與& 位或| 異或^ 位或 | 位取反! 左移<< 右移>>

//位運算符
//位與& 有0則0 全1才1
// 對位運算 有0則0
int a = 1;// 001
int b = 5;// 101
//  001
//& 101
//  001  =  1
int c = a & b;
Console.WriteLine(c);

//多個數值進行位運算 沒有括弧時 從左到右 依次計算
a = 1;//   001
b = 5;//   101
c = 19;//10011
//  00001
//& 00101
//  00001
//& 10011
//  00001
int d = a & b & c;
Console.WriteLine(d);

//位或| 有1則1,全0則0
 a = 1;//001
b = 3;//011
c = a | b;
//  001
//| 011
//  011
Console.WriteLine(c);

a = 5; //  101
b = 10;// 1010
c = 20;//10100
//  00101
//| 01010
//  01111
//| 10100
//  11111 => 1 + 2 + 4 + 8 + 16  =31

Console.WriteLine(a | b | c);

//異或^ =======
//不同為1 相同為0
// 對位運算 相同為0 不同為1
a = 1; //001
b = 5; //101
// 001
//^101
// 100
c = a ^ b;
Console.WriteLine(c);

a = 10; // 1010
b = 11; // 1011
c = 4;  //  100
//  1010
//^ 1011
//  0001
//^ 0100
//  0101  = 5
Console.WriteLine(a ^ b ^ c);

//位取反 ~ 取反
// 對位運算 0變1 1變0
a = 5; 
// 0000 0000 0000 0000 0000 0000 0000 0101
// 1111 1111 1111 1111 1111 1111 1111 1010
// 反碼補碼知識  
// 電腦中的二進位是以補碼形式存儲的
//補碼:正數的補碼是本身  負數的補碼是絕對值取反加一
c = ~a;
Console.WriteLine(c);

//左移 右移
// 規則 讓一個數的2進位數進行左移和右移
// 左移幾位 右側加幾個0
a = 5; // 101
c = a << 5;
// 1位 1010
// 2位 10100
// 3位 101000
// 4位 1010000
// 5位 10100000 = 32 + 128 = 160
Console.WriteLine(c);

// 右移幾位 右側去掉幾個數
a = 5; // 101
c = a >> 2;
// 1位 10
// 2位 1
Console.WriteLine(c);
//練習----
 //99 ^ 33 和 76 | 85 的結果為?

// 1100011 ^ 100001
// 1100011
//^0100001
// 1000010
Console.WriteLine(99 ^ 33);

// 1001100 | 1010101
// 1001100
//|1010101
// 1011101 => 64 + 29 = 93
Console.WriteLine(76 | 85);

三目運算符

條件?A :B 條件為真則走A邏輯否則走B

//三目運算符
 int a = 5;
str = a < 1 ? "a大於1" : "a不滿條件";
Console.WriteLine(str);
int i = a > 1 ? 123 : 234;
//第一個空位 始終是結果為bool類型的表達式 bool變數 條件表達式 邏輯運算符表達式
//第二三個空位 什麼表達式都可以 只要保證他們的結果類型是一致的 
bool b = a > 1 ? a > 6 : !false;

======
我會每天更新C#學習筆記,感興趣的可以給個訂閱!
點個訂閱,練習C#代碼不迷路!


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

-Advertisement-
Play Games
更多相關文章
  • 一、背景: 需要對當前公司所有的項目進行代碼行數的統計 二、 可實現方式 1.腳本:通過git腳本將所有的項目拉下來並然後通過進行代碼行數的統計 樣例: echo 創建項目對應的文件夾 mkdir 項目名稱echo 切到創建的文件夾中 cd 項目名稱echo 進行git初始化 git init ec ...
  • 配置文件中的敏感信息,如密碼,賬號這些都應該是秘文的,在程式獲取時,再將它們動態解密,這樣保證了配置信息的安全;在springboot中,有個resources\META-INF\spring.factories文件,他幫我們完成了自動裝配,開發過starter包的同學應該不會陌生,而在這個文件里, ...
  • 直方圖,又稱質量分佈圖,用於表示數據的分佈情況,是一種常見的統計圖表。 一般用橫軸表示數據區間,縱軸表示分佈情況,柱子越高,則落在該區間的數量越大。構建直方圖時,首先首先就是對數據劃分區間,通俗的說即是劃定有幾根柱子(比如,1980年~2020年的數據,每5年劃分一個區間的話,共8個區間)。接著,對 ...
  • 本節將向讀者介紹如何使用鍵盤滑鼠操控模擬技術,鍵盤滑鼠操控模擬技術是一種非常實用的技術,可以自動化執行一些重覆性的任務,提高工作效率,在Windows系統下,通過使用各種鍵盤滑鼠控制函數實現動態捕捉和模擬特定功能的操作。有時我們經常需要進行重覆性的滑鼠操作,例如繁瑣的點擊、拖拽。這些任務可能消耗大量... ...
  • 基於java應急救援物資管理系統設計與實現,可適用於java物資系統,java物資救援管理系統,springboot應急救援物資管理系統,java物資分配管理系統,javaWeb應急救援物資管理系統設計與實現,物資進銷存管理系統,物資入庫出庫管理系統,物資申領系統等等 ...
  • 9. 用Rust手把手編寫一個wmproxy(代理,內網穿透等), HTTP2改造篇之HPACK示例, 瞭解http2頭信息如何處理 項目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy github: https://github.com/ti ...
  • 本次問題是想要拷貝文件夾,但是找了一圈發現只有File有Copy或者FileInfo的CopyTo,並沒有Directory的拷貝操作方法。 針對C#中拷貝文件夾的方法就是先生成一個目標文件夾(destinationFolder)再將(soursefolder)中的文件依次拷貝到目標文件夾中,C#並 ...
  • 客戶端: 在UGUI中創建兩個Button,一個是連接伺服器,一個是發送消息的按鈕,分別綁定Connection和SendMessage兩個函數 並且創建一個InputField和一個Text文本,Text文本用於顯示伺服器回傳的消息,InputField用於輸入要發送的消息 以下是代碼: 1 us ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...