C#基礎(1)

来源:https://www.cnblogs.com/xsh-cs/archive/2018/02/20/8455929.html
-Advertisement-
Play Games

摘要:學習c#已經有一段歷程了,回顧之前所打過的代碼以及筆記,做些常用的總結,希望以後工作中如果用到,方便查找。當然,個人首要目的是這樣,加深印象的同時,可以練習一下打字速度。希望也 堅持。當然,如果對其他人能帶來一點點幫助的話,那更好啦。 本文涉及內容: 1、常用對字元串操作 2、集合 3、文件操 ...


        摘要:學習c#已經有一段歷程了,回顧之前所打過的代碼以及筆記,做些常用的總結,希望以後工作中如果用到,方便查找。當然,個人首要目的是這樣,加深印象的同時,可以練習一下打字速度。希望也 堅持。當然,如果對其他人能帶來一點點幫助的話,那更好啦。

      

本文涉及內容:

         1、常用對字元串操作         2、集合           3、文件操作

 

1、常用對字元串操作:

a、字元串截取(Substring):

string str = "我愛中華人民共和國";
str = str.Substring(2, 4);          //參數1:開始截取的索引(從0開始)  參數2:截取的長度  

b、字元串以什麼開頭,以什麼結尾:

 str.StartsWith("");           str.EndsWith("");          //返回true 或者false

c、字元串分割:比較常用,對字元串進行分割,常用於操作把一個字元串分成一個字元串數組,根據字元串的特點,選取需要的部分。

   string serverData = "ok:操作成功";
   string[] data = serverData.Split(':');    
//  string[] data = serverData.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);           //這種方式可以在char數組中多添加需要截取掉的字元串
    for (int i = 0; i < data.Length; i++)
    {  Console.WriteLine(data[i]);  }         //結果為: ok   和  操作成功

d、比較兩個字元串是否一致並忽略大小寫(Equals:參數2可以選擇多種比較方式,常用:比較兩個object

string str1=abc;   string str2 = abC;
bool b = str1.Equals(str2, StringComparison.OrdinalIgnoreCase);   //結果為:true

e、字元串數組插入操作:Join

 string[] str = { "張三", "李四", "王五"};
 string str2 = string.Join("|", str);             //輸出結果為:張三|李四|王五  插入到每個數組元素的中間

小結:字元串還有很多操作,使用頻率比較高的就上面這些,當然,c#一些用方都可以點出來然後看文字說明去使用

 

2:集合

集合是一個很常用的東西 。常用的集合有:鍵值對集合,泛型集合

ArrayList(集合):可添加數據

Hashtable(鍵值對集合):鍵值可以為任何形式的數據類型

Dictionary鍵值對集合(常用):

Dictionary<int, string> dic = new Dictionary<int, string>();    //涉及到鍵必須為int類型,值必須為string類型
dic.Add(1, "張三");    //添加數據
dic.Remove(1);   //傳進來的是鍵標
dic.Clear();    //清空集合

List泛型集合(常用):

List <int> list= new List<int>();    //聲明
list.Add(1); //添加數據
list.AddRange(new int[] { 3,4,5,6,7,8,9});  //添加集合
list.RemoveAt(2);   //索引下標從0開始
list.RemoveRange(2, 4);    //從索引2開始,移除4個元素
list.Clear();//清空集合

集合比較常用,用法也相對比較簡單。常用的有很多,比如:Contains(是否包含) FirstOrDefault:第一個元素,.ToArray :轉換為數組 等  可以list然後點出來,再根據說明

 

3、文件操作

摘要:文件操作是一些項目中必不可少的,對一些上傳圖片的路徑操作,對寫入的一些文檔,日誌文件進行保存之類

a:專門操作路徑的path類 :(靜態類)

using System.IO;
string str = @"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\es\C#.txt";
Path.GetFileName(str);  //獲取文件名
Path.GetFileNameWithoutExtension(str);    //沒有擴展名的文件名
Path.GetExtension(str);   //獲取文件擴展名
Path.GetFullPath(str);  //獲取文件絕對路徑
Path.Combine(@"c:\a\b\c\", @"f\.avi");  //把兩個路徑融合
Path.GetDirectoryName(str);    //獲取路徑名,沒有文件名

涉及到路徑就使用Path,有時候經常和File混合,可能是個人原因

 

b:File讀寫數據

  (1):以位元組形式讀取:

byte[] bte = File.ReadAllBytes(@"C:\Users\xsh.cs\Desktop\new.txt");
string str = Encoding.Default.GetString(bte);   //轉換為字元串(最適用)   還有:UTF8Encoding.Default.GetString(bte)、Encoding.GetEncoding("GB2312").GetString(bte)
、ASCIIEncoding.Default.GetString(bte) 等多種編碼格式

 (2):逐行讀取

string[] st = File.ReadAllLines(@"C:\Users\Administrator\Desktop\new.txt", Encoding.Default);   //逐行讀取內容  遍曆數組 可對每一行進行操作

(3):以文本 形式讀取

string str = File.ReadAllText(@"C:\Users\Administrator\Desktop\new.txt", Encoding.Default);   //以文本形式讀取  對於圖片類,視頻文件類 等其他類 不適用

(a):以位元組形式寫數據

byte[] by = Encoding.Default.GetBytes(str);
File.WriteAllBytes(@"C:\Users\Path\new.txt",by);      

(b):以數組的形式逐行寫數據 

File.WriteAllLines("new.txt",strArray);   //strArray為定義的數組

(c):整體寫入

File.WriteAllText("new.txt",str);  //整體寫入,最常用的方式 str為字元串

(d):追加

File.AppendAllText("new.txt",str);
File.AppendAllLines("new.txt",str);  //逐行追加

 

c:FileStream文件流

   (1):讀取文件:

using (FileStream fread= new FileStream(@"C:\Users\path.txt", FileMode.OpenOrCreate, FileAccess.Read))
{
    byte[] buffer = new byte[1024 * 1024 * 2];
    int r = fread.Read(buffer, 0, buffer.Length);   //返回當前讀取的有效位元組數
    string str = Encoding.Default.GetString(buffer, 0, r);   //解碼
}
 //參數①: 針對哪一個文件  寫文件路徑  
 //參數②: 要對此文件進行怎樣的操作  
//參數③: 要對此文件的數據進行怎樣的操作 

(2):寫文件:

 using (FileStream fwrite = new FileStream(@"C:\Users\文件流.txt",FileMode.OpenOrCreate, FileAccess.Write))
 {
    byte[] buffer = Encoding.Default.GetBytes(str);   //str為字元串
    fwrite.Write(buffer, 0, buffer.Length);
 }

(3):複製文件:

 string path = @"C:\Users\video.avi";
 string newpath = @"C:\Users\videoNew.avi";
  //創建一個負責讀取的文件流  
 using (FileStream fread = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
 {
   //創建一個寫入文件的文件流
     using (FileStream fwrite = new FileStream(newpath, FileMode.OpenOrCreate, FileAccess.Write))
     {
        byte[] buffer = new byte[1024 * 1024 * 5];
        while (true)   //文件過大,可能一次讀寫不完,需要迴圈
        {
          int r = fread.Read(buffer, 0, buffer.Length);
           if (r == 0)                //當讀取不到位元組時,說明已經完畢,則跳出迴圈
            {
               break;
            }
              else
             fwrite.Write(buffer, 0, r);
        }
     }
       Console.WriteLine("複製成功!");
   }

為什麼使用using?  當一個類最終繼承IDisposable 這個介面,就需要到釋放資源空間,用using就可以自動釋放資源空間,提高效率,減少代碼量

 

d:StreamReader和StreamWriter

//讀取
using (StreamReader sRead = new StreamReader(@"C:\Users\Path.txt", Encoding.Default))
 {
    while (!sRead.EndOfStream)   //指示當前流的位置是否為結尾
     {
         Console.WriteLine(sRead.ReadLine());
     }
 }

//寫入
 using (StreamWriter stwr =new StreamWriter(@"C:\Users\Path.txt",true,Encoding.Default))
{
     stwr.Write(str);
}

 

小結:兩種方式都可以對文件進行讀寫操作,相對Stream用的比較多一點,用法很簡單,根據write 或者read的方法,傳入相應的參數即可。

 

總結:c#有很大一部分基礎語法,最重要的會使用微軟封裝的一些類,一些方法。看這些類的方法的重載。如果有vs的那些語言包,都可以看每一個方法重載是做什麼的,然後相應的使用。傳入相應需要的參數,看返回值。

 


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

-Advertisement-
Play Games
更多相關文章
  • 一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)檢查是否obj是否是類 cls 的對象 issubclass(sub, super)檢查sub類是否是 super 類的派生類 二、反射 2 python面向對象中的反射:通 ...
  • Servlet是線程不安全的,Struts1是基於Servlet的框架 而Struts2是基於Filter的框架,解決了線程安全問題 因此Struts1和Struts2基本沒有關係,只是創造者取名問題 接下來搭建並測試 下載Struts2:https://struts.apache.org/ 解壓後 ...
  • 題目描述 對於一棵樹,我們可以將某條鏈和與該鏈相連的邊抽出來,看上去就象成一個毛毛蟲,點數越多,毛毛蟲就越大。例如下圖左邊的樹(圖 1 )抽出一部分就變成了右邊的一個毛毛蟲了(圖 2 )。 輸入輸出格式 輸入格式: 在文本文件 worm.in 中第一行兩個整數 N , M ,分別表示樹中結點個數和樹 ...
  • Division Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 999999/400000 K (Java/Others)Total Submission(s): 5344 Accepted Submission(s): 2115 Pro ...
  • 題目描述 Description 有n堆石子排成一列,每堆石子有一個重量w[i], 每次合併可以合併相鄰的兩堆石子,一次合併的代價為兩堆石子的重量和w[i]+w[i+1]。問安排怎樣的合併順序,能夠使得總合併代價達到最小。 題目描述 Description 有n堆石子排成一列,每堆石子有一個重量w[ ...
  • 題目描述 P教授要去看奧運,但是他舍不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。P教授有編號為1...N的N件玩具,第i件玩具經過壓縮後變成一維長度為Ci.為了方便整理,P教授要求在一個一維容器中的玩具編號是連續的。 ...
  • 一、線程和進程 進程(Process): 1、是電腦中的程式關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。 2、在早期面向進程設計的電腦結構中,進程是程式的基本執行實體。 3、在當代面向線程設計的電腦結構中,進程是線程的容器。程式是指令、數據及其組織 ...
  • 一.Django內置admi a.配置路由 b.定製admin 在admin.py中只需要講Mode中的某個類註冊,即可在Admin中實現增刪改查的功能,如: 3.ModelAdmin中提供了大量的可定製功能,如: 1. list_display,列表時,定製顯示的列。 2. list_displa ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...