1. 程式人生 > >C#基礎(1)

C#基礎(1)

文檔 使用 忽略大小寫 read fault else ogr subst itop

摘要:學習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的那些語言包,都可以看每一個方法重載是做什麽的,然後相應的使用。傳入相應需要的參數,看返回值。

C#基礎(1)