1. 程式人生 > >2017-06-27

2017-06-27

copy ets 操作系統 exists user 剪切 集合 表示 電腦

ArrayList 不太好用: 因為集合裏面存放的是 Object 類型的元素,會產生裝箱和拆箱,影響系統運行
時間

AddRange 添加數組,添加進去之後,在集合裏面是以單個元素存放的

裝箱:值類型====>引用類型( string 數組 class object 接口)

拆箱:引用類型==>值類型

int n = 10;//值類型
object o = n;//裝箱
int n2 = (int)o;//拆箱(裝箱用的什麽類型,拆箱就要用什麽類型,不然要拋異常)

string s = "123";
int n = Convert.ToInt32(s);//引用類型==>值類型,但不是拆箱,裝箱拆箱的前提是:兩種
類型是否有繼承關系


Hashtable(鍵值對集合)(鍵 就相當於 數組的下標,但無法使用for循環遍歷,要用foreach遍歷 )
----- 必須熟練掌握!!

var 能夠根據賦值推斷出類型,但是聲明的時候必須賦初值.

Hashtable h = new Hashtable();
h.Add(1, "asdfa");//添加數據
h.Add(‘男‘, false);
h.Add(178.99, "80KG");

foreach (var item in h.Keys) // h.keys 所有的鍵

{
Console.WriteLine(h[item]);
}


//鍵必須是唯一的,值可以重復
h[object key] = (object value)// 賦值 ,key 可以不存在
bool b = h.ContainsKey(object key) //是否包含某個鍵
bool bb = h.ContainsValue(object value)//是否包含某個值

foreach(叠代遍歷): 只能遍歷,但不能更改

C#是一門強類型語言:必須對數據的類型有一個明確的定義.
JavaScipt 弱類型語言


//成員變量的作用域大於局部變量
//成員變量可以有訪問修飾符,並且有默認的訪問修飾符
//局部變量不允許添加訪問修飾符,局部變量的作用域就是在當前所在的函數(大括號)

ArrayList 和 Hashtable 都是 非泛型集合


泛型集合: List<T> Dictionary<Tkey,Tvalue> //固定類型 Type

ArrayList 和 List<T> 可以通過下標遍歷

Hashtable 和 Dictionary<Tkey,Tvalue> 只能通過 foreach 遍歷

list.RemoveAll(n => n.Length == 3);//去掉所有長度等於3的字符串


對於Dictionary<Tkey,Tvalue> 可以使用一種比較洋氣的遍歷方式

d.Add(1, "張山");
d.Add(2, "李四");
d[3] = "網吧";

foreach (KeyValuePair<int,string> kv in d)
{
Console.WriteLine(kv);//也可以寫成
//Console.WriteLine("鍵是{0},值是
{1}",kv.Key,kv.Value);

}
顯示結果為:

[1,張山]
[2,李四]
[3,網吧]

Path:
string p = @"C:\Users\Administrator\Desktop\1.TXT";
///獲取文件名
string s = Path.GetFileName(p);
Console.WriteLine(s);
//獲取文件名,不含擴展名
Console.WriteLine(Path.GetFileNameWithoutExtension(p));
//獲取文件所在的文件夾的路徑
Console.WriteLine(Path.GetDirectoryName(p));
//改變文件的擴展名
Console.WriteLine(Path.ChangeExtension(p,".jpg"));
//將多個路徑連接成一個路徑,"\"要放在前一個路徑的結尾.而不能放到後一個路徑的開
頭.
Console.WriteLine(Path.Combine(@"c:\a\b\",@"c\d\e\",@"f.txt"));
Console.WriteLine(Path.GetFileName(p));
Console.WriteLine(Path.GetFileNameWithoutExtension(p));
//通過相對路徑來返回絕對路徑(可以直接在電腦中找到的路徑)
//相對路徑:文件相對於應用程序的路徑
// E:\C#練習\面向對象\20170627\PATH\bin\Debug\1123.txt
string p2 = "1123.txt";
Console.WriteLine(Path.GetFullPath(p2));

File類: 一般操作小文件!!幾十M的文件(讀大文件用文件流)

//如果文件不存在就創建
if (!File.Exists("1.txt"))
{
File.Create("1.txt");
Console.WriteLine("創建成功!");
}
//如果文件存在則刪除後再創建
else
{
File.Delete("1.txt");
File.Create("2.txt");
Console.WriteLine("2.txt創建成功");
}

//第一個參數是源文件的路徑
//第二個參數是目標文件的路徑
//第三個參數表示,如果目標文件存在,則覆蓋(該參數可以沒有)
File.Copy("2.txt", @"C:\Users\Administrator\Desktop\22.txt", true);

//剪切
File.Move(@"C:\Users\Administrator\Desktop\22.txt", @"E:\C#練習\面向對象
\20170627\File類\bin\Debug\33.TXT");

編碼:將字符串以怎樣的形式保存為二進制
出現的亂碼的原因:保存這個文件所采用的編碼跟打開這個文件所采用的編碼不一樣


//File.ReadAllBytes();可以讀取所有的文件

//File.ReadAllLines(string path);
//File.ReadAllText(string path);
//這兩個文件只能讀取文本文件
//文本文件:如果拖到txt中還能看得懂,那麽就是文本文件

//默認用UTF-8格式讀取文件所有行,因此要加上Encoding.Default獲取當前操作系統默
認的編碼
//返回值是 一個是string 一個是string[]
//如果要對每一行進行操作,用ReadAllLines

string str = File.ReadAllText(@"C: \Users\Administrator\Desktop\1.txt",
Encoding.Default);

string[] s = File.ReadAllLines(@"C: \Users\Administrator\Desktop\1.txt",
Encoding.Default);

byte[] b = File.ReadAllBytes(@"C: \Users\Administrator\Desktop\1.txt");

string s1 = Encoding.Default.GetString(b);

//寫入文件,都是覆蓋寫入,會將之前的覆蓋掉
string s2 = "幾天天asdfasdf真整的很好呀啊a呀呀呀ldfjgop8374592!";
string[] s3 = { "最佳哈買那個薩滿", "阿什頓了解放啦", "大家垃圾" };
byte[] b1 = Encoding.Default.GetBytes(s2);

File.WriteAllBytes(@"234.txt",b1);

File.WriteAllText(@"aaa.txt", s2);

File.WriteAllLines(@"mm.txt",s3);

2017-06-27