亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C#基礎04

2019-11-14 13:44:45
字體:
來源:轉載
供稿:網友

介紹:泛型介紹,索引,Foreach遍歷的解釋,yield方法,path文件操作,Directory類基本操作<目錄>

一:泛型

  百度資料:泛型是 2.0 版 C# 語言和公共語言運行庫 (CLR) 中的一個新功能。泛型將類型參數的概念引入 .NET Framework,類型參數使得設計如下類和方法成為可能:這些類和方法將一個或多個類型的指定推遲到客戶端代碼聲明并實例化該類或方法的時候。例如,通過使用泛型類型參數 T,您可以編寫其他客戶端代碼能夠使用的單個類,而不致引入運行時強制轉換或裝箱操作的成本或風險,

   使用泛型類型可以最大限度地重用代碼、保護類型的安全以及提高性能。泛型最常見的用途是創建集合類。.NET Framework 類庫在 System.Collections.Generic 命名空間中包含幾個新的泛型集合類。應盡可能地使用這些類來代替普通的類,如 System.Collections 命名空間中的 ArrayList。您可以創建自己的泛型接口、泛型類、泛型方法、泛型事件和泛型委托。可以對泛型類進行約束以訪問特定數據類型的方法。關于泛型數據類型中使用的類型的信息可在運行時通過反射獲取。

* 泛型的好處:代碼的重用。通過使用<T>來進行重用??梢酝锩鎮鬟f不同的參數類型,我們也可以將其定義為泛型方法,泛型類,泛型接口。

* 自定義泛型

   里面有泛型類,泛型方法,泛型接口。

eg 1:

    /// 自定義泛型類    public class MyClass1<T>    {        public void SayHi(T teg)        {            Console.WriteLine(teg);        }    }    //泛型方法    public class Myclass2    {        public void Say<T>(T er)        {            Console.WriteLine(er);        }    }    //泛型接口    public interface IMyClass3<T>    {        T Sayhi();                        //返回值類型        void SayHello(T msg);             //參數類型    }    //實現泛型接口的兩種情況    //1:普通類實現泛型接口    public class Class2 : IMyClass3<String>    {        public void SayHello(string msg)        {            Console.WriteLine(msg);        }        public string Sayhi()        {            throw new NotImplementedException();        }    }    //2:泛型類實現泛型接口    //這里的IMyClass3<U>的U是根據類接口中的U來決定的。    public class Class3<U> : IMyClass3<U>    {        public void SayHello(U msg)        {            Console.WriteLine(msg);        }        public U Sayhi()        {            throw new NotImplementedException();        }    } 

二:創建一個索引

    public class MyClass    {        PRivate string[] _data = new string[5];        /// <summary>        /// 定義一個索引        /// </summary>        public string this[int index]        {            get { return _data[index]; }            set { _data[index] = value; }        }    }
 創建泛型索引
    public class MyClass<T>    {        private T[] _data = new T[5];        /// <summary>        /// 定義一個索引        /// </summary>        ///         public T this[int index]        {            get { return _data[index]; }            set { _data[index] = value; }        }    } 
 

三:泛型約束

   就是在泛型的后面加上where T:struct/class等。說明泛型以后會在定義的這個約束中來進行T的更換。

wps1E41.tmp

四:foreach(*)   是只讀方法

使用條件:凡是具有GetEnumerator()方法的類型都可以進行遍歷。

定義:調用枚舉器來實現的。

通過上面的解釋,我們應該知道只要實現了具有GetEnumerator()方法就可以實現froeach的遍歷。

實例

  1:先在類中實現IEnumerable接口,擁有GetEnumerator()方法,接著在寫個Enumerator(枚舉器)類且此類實現IEnumerator(枚舉器接口)接口,這樣我們這個類中就有了枚舉器的所有的功能。

//不使用foreach來實現遍歷。 foreach主要是調用了枚舉器這個方法,我們只需要自己重新寫個方法就行。實現IEnumerable接口就可以實現GetEnumerator

Main()中的寫法

            var p = new Person();            var etor = p.GetEnumerator();             while(etor.MoveNext())            {                Console.WriteLine(etor.Current.ToString());            }            Console.WriteLine("OK");            Console.ReadKey();

具體類的實現

 public class Person:IEnumerable    {        private string [] friends=new string[]{"11","22","33"};        public string Name { get; set; }        public int Age { get; set; }        public IEnumerator GetEnumerator()        {            return new PersonEnumerator(this.friends); //這里返回的是Object類型        }                    }    public class PersonEnumerator:IEnumerator    {        private string[] _friends;        public PersonEnumerator(string[] fs)        {            _friends = fs;        }        private int index = -1;                        //下標 指代0號前面位        //獲取數據        public object Current        {            get            {                if(index>=0&&index<_friends.Length)                {                    return _friends[index];   //通過下標來返回值。                }                else                {                    throw new Exception();                }            }        }        //移動下標        public bool MoveNext()        {            if(index+1<_friends.Length)            {                index++;                return true;            }            return false;        }        //將下標還原,初始化        public void Reset()        {            index = -1;        }    }
五:yield方法

   yield 關鍵字向編譯器指示它所在的方法是迭代器塊。編譯器生成一個類來實現迭代器塊中表示的行為。在迭代器塊中,yield 關鍵字與 return 關鍵字結合使用,向枚舉器對象提供值。這是一個返回值,例如,在 foreach 語句的每一次循環中返回的值。yield 關鍵字也可與 break 結合使用,表示迭代結束。

六:文件操作

wps1920.tmp

  *:File:操作文件,靜態類,對文件整體操作。(拷貝,賦值,剪切等)

  *:Directory:操作目錄的類,目錄夾

  *:DirectoryInfo:文件夾的一個類,用來描述文件夾對象,(獲取指定目錄下所有目錄時返回一個DirectoryInfo數組)

  *:FileInfo:文件夾,用來描述一個文件對象。獲取指定目錄下的所有文件時,返回一個FileInfo數組。

  *:Path:對文件”目錄和路徑”進行操作,<字符串>。

  *:Stream :文件流,抽象類。

      1:FileStream 文件流 MemoryStream內存流      NetworkStream網絡流

      2:StreamReader:快速讀取文本文件

      3:StreamWriter:快速寫入文本文件

* Path文件操作

   我們通過使用Path類來獲取我們文件名,路徑,修改文件名等。

            string path = @"F:/VS2008/Projects/ShipinJiChu__HeiMa/文件操作/bin/Debug/文件操作.exe.config";            //獲取文件名            Console.WriteLine(Path.GetFileName(path));            //獲取文件的后綴            Console.WriteLine(Path.GetExtension(path));            //獲取不帶后綴的文件名            Console.WriteLine(Path.GetFileNameWithoutExtension(path));            //獲取該路徑的目錄部分            Console.WriteLine(Path.GetDirectoryName(path));            //更改文件后綴名            Console.WriteLine(Path.ChangeExtension(path, "dll"));            //合并兩個路徑            string path1 = @"F:/VS2008/Projects/";            string path2 = "xiaohui.exe";            Console.WriteLine(Path.Combine(path1 + path2));            //返回當前用戶的臨時文件夾的路徑。            Console.WriteLine(Path.GetTempPath());            //創建磁盤上唯一命名的零字節的臨時文件并返回該文件的完整路徑。            Console.WriteLine(Path.GetTempFileName());            Console.ReadKey(); 

* Directory類基本操作<目錄>

             //創建目錄            for (int i = 0; i < 10; i++)            {                Directory.CreateDirectory(@"C:/" + i);            }            Console.WriteLine("OK");            Console.ReadKey();            //刪除目錄            for (int i = 0; i < 10; i++)            {                //Directory.Delete(@"C:/" + i); //只能刪除空目錄                Directory.Delete(@"C:/" + i, true);            }            Console.WriteLine("OK");            Console.ReadKey();            //剪切                  Directory.Move(@"C:/11", @"C:/222/11");            //重命名       <利用剪切來實現>            Directory.Move(@"C:/222", @"C:/333");            Console.WriteLine("OK");            Console.ReadKey();            //獲取文件下面的所有的子目錄            string path = @"C:/333/11";           var file= Directory.GetFiles(path);           foreach (var item in file)            {                Console.WriteLine(item);            }            //刪除目錄            Directory.Delete(@"C:/333",true);            Console.WriteLine("OK");            Console.ReadKey();


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜精品一区二区三区在线播放| 91亚洲一区精品| 91久久精品日日躁夜夜躁国产| 中文字幕av一区二区| 国产成人精品999| 日韩欧美国产成人| 亚洲性夜色噜噜噜7777| 亚洲区免费影片| 91久久精品在线| 亚洲精品电影在线| 亚洲区免费影片| 欧美性在线视频| 国产69精品久久久久久| 日韩欧美在线中文字幕| 欧美小视频在线观看| 久久国产天堂福利天堂| 国产专区精品视频| 亚洲电影成人av99爱色| 日韩在线视频播放| 精品成人69xx.xyz| 亚洲成人国产精品| 欧美日韩免费观看中文| 在线观看欧美日韩国产| 欧美日韩国产在线看| 欧美体内谢she精2性欧美| 午夜精品福利视频| 97超视频免费观看| 久久综合88中文色鬼| 精品无码久久久久久国产| 自拍偷拍亚洲精品| 精品久久久久久久久中文字幕| 国产日产久久高清欧美一区| 亚洲人成在线免费观看| 亚洲欧美一区二区精品久久久| 国产亚洲欧美视频| 成人黄色av播放免费| 欧洲亚洲女同hd| 91美女片黄在线观看游戏| 亚洲综合自拍一区| 狠狠爱在线视频一区| 久久人人爽人人爽人人片av高清| 国产精品精品一区二区三区午夜版| 久久在线视频在线| 国产视频精品xxxx| 亚洲一级黄色av| 久久九九精品99国产精品| 精品国产一区二区三区久久狼5月| 亚洲视频在线观看免费| 日本亚洲欧美成人| 欧美贵妇videos办公室| 午夜精品久久久久久99热| 精品国产91久久久久久老师| 国产精品影院在线观看| 亚洲美女av黄| 久久理论片午夜琪琪电影网| 91欧美视频网站| 国内精品久久久久久| 久久久91精品国产一区不卡| 欧美大片免费观看在线观看网站推荐| 亚洲欧美日韩视频一区| 在线观看久久久久久| 亚洲精品国产福利| 久久精品视频99| 亚洲精品白浆高清久久久久久| 欧美精品亚州精品| 亚洲a级在线观看| 国产欧美一区二区三区久久| 九九久久久久久久久激情| 日韩中文字幕在线| 91av在线视频观看| 91精品国产91久久久久久吃药| 亚洲精品综合久久中文字幕| 国产欧美精品日韩精品| 北条麻妃在线一区二区| 日韩免费看的电影电视剧大全| 国产欧美 在线欧美| 91在线精品播放| 不卡av日日日| 国产精品成熟老女人| 成人性教育视频在线观看| 久久久久久久久久av| 狠狠色狠狠色综合日日小说| 欧美日韩国产一区二区三区| 欧美与黑人午夜性猛交久久久| 亚洲嫩模很污视频| 国产午夜精品麻豆| 亚洲国产欧美久久| www国产精品视频| 久久资源免费视频| 久久亚洲精品毛片| 久久久亚洲国产天美传媒修理工| 国内精品久久久久影院 日本资源| 永久免费看mv网站入口亚洲| 17婷婷久久www| 欧美极品在线播放| 91亚洲精品久久久| 欧美大学生性色视频| 日韩暖暖在线视频| 久久久成人av| 国产高清视频一区三区| 欧美日韩在线另类| 欧美激情精品久久久久久变态| 成人性生交大片免费看小说| 久久精品国产成人精品| 51色欧美片视频在线观看| 国产欧美一区二区三区四区| 久久久久久12| 欧美激情xxxx性bbbb| 91久久久久久久久久久久久| 成人a在线视频| 欧美日本亚洲视频| 亚洲精品色婷婷福利天堂| 日韩欧美极品在线观看| 精品国产一区二区三区四区在线观看| 91色视频在线导航| 欧美日韩精品在线观看| 福利一区视频在线观看| 成人午夜激情网| 国产一区二区黄| 91av在线播放| 青青草一区二区| 欧美日韩国产中文字幕| 亚州欧美日韩中文视频| 夜夜嗨av色综合久久久综合网| 欧美一区二区三区免费观看| 欧美一区二区影院| 国产丝袜一区二区三区| 91久久久在线| 中文字幕欧美国内| 国产亚洲欧美日韩精品| 亚洲男人的天堂在线| 欧美性视频网站| 狠狠色狠狠色综合日日小说| 秋霞午夜一区二区| 激情成人在线视频| 成人国产精品av| 国产精品久久久久久网站| 精品国产乱码久久久久久婷婷| 亚洲日韩欧美视频一区| 96pao国产成视频永久免费| 96精品视频在线| 亚洲va欧美va国产综合剧情| 中日韩午夜理伦电影免费| 久久福利网址导航| 精品国产欧美一区二区三区成人| 欧美日韩免费区域视频在线观看| 国产欧美日韩中文字幕在线| 亚洲精品在线视频| 不用播放器成人网| 国产精品视频一区二区高潮| 久久国产精品久久国产精品| 久久久国产精彩视频美女艺术照福利| 日韩成人在线播放| 欧美日韩亚洲系列| 久久这里只有精品99| 久久久久国产精品一区| 成人免费视频网址| 成人免费高清完整版在线观看| 午夜免费久久久久| 日韩av在线看| 精品久久中文字幕久久av| 国产精品亚洲综合天堂夜夜| 中文字幕国产精品久久| 不卡在线观看电视剧完整版|