.Net基礎(chǔ)10

主要內(nèi)容
1留凭、里氏轉(zhuǎn)換

1)然爆、子類可以賦值給父類
2)、如果父類中裝的是子類對(duì)象拖云,那么可以講這個(gè)父類強(qiáng)轉(zhuǎn)為子類對(duì)象

2那伐、類型轉(zhuǎn)換

is:表示類型轉(zhuǎn)換踏施,如果能夠轉(zhuǎn)換成功,則返回一個(gè)true罕邀,否則返回一個(gè)false
as:表示類型轉(zhuǎn)換畅形,如果能夠轉(zhuǎn)換則返回對(duì)應(yīng)的對(duì)象,否則返回一個(gè)null

ArrayList集合

集合:很多數(shù)據(jù)的一個(gè)組合
數(shù)組:長度不可變诉探、類型單一
集合的好處:長度可以任意改變 類型隨便

  • 基本使用
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _01ArrayList集合
{
    class Program
    {
        static void Main(string[] args)
        {
            //創(chuàng)建集合對(duì)象
            ArrayList list = new ArrayList();

            list.Add(1);
            list.Add(3.24);
            list.Add(true);
            list.Add("張三");
            list.Add('女');
            list.Add(5000m);
            list.Add(new int[] { 1, 2, 4 });

            Person p = new Person();
            list.Add(p);
            list.Add(list);
            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }

            Console.ReadKey();
        }

        //我們將一個(gè)對(duì)象輸出到控制臺(tái) 默認(rèn)情況下 打印的就是這個(gè)對(duì)象所在的類的命名空間

        public class Person
        {
            public void sayHello()
            {
                Console.WriteLine("hello");
            }
        }
    }
}
輸出結(jié)果

這個(gè)結(jié)果好像并不是我們想達(dá)到的日熬。這是因?yàn)?strong>我們將一個(gè)對(duì)象輸出到控制臺(tái) 默認(rèn)情況下 打印的就是這個(gè)對(duì)象所在的類的命名空間

  • 我們使用里氏變化來轉(zhuǎn)換下 修改for循環(huán)中的代碼如下。
for (int i = 0; i < list.Count; i++)
{
    if (list[i] is Person)
    {
        ((Person)list[i]).sayHello();
    }
    else if (list[i] is int[])
    {
        for (int j = 0; j < ((int[])list[i]).Length; j++)
        {
            Console.WriteLine(((int[])list[i])[j]);
        }
    }
    else
    {
        //未判斷
        Console.WriteLine(list[i]);
    }
}

加了里氏變化判斷后的輸出結(jié)果

從結(jié)果可以看出問題得到了解決阵具,當(dāng)然最后一個(gè)沒有進(jìn)行轉(zhuǎn)換碍遍。因?yàn)閷懫饋頍┒ㄍ!怕敬!?/p>

  • 當(dāng)我們需要添加單個(gè)元素的時(shí)候可以用Add()方法揣炕,但當(dāng)需要添加集合的時(shí)候選用AddRange()更方便,看例子
static void Main(string[] args)
        {
            ArrayList list = new ArrayList();

            list.Add(1);
            list.Add(3.24);
            list.Add(true);
            list.Add("張三");
            list.Add('女');
            list.Add(5000m);

            //添加集合
            list.AddRange(new int[] { 1, 2, 4 });
            list.AddRange(list);

            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }
            Console.ReadKey();
        }
輸出結(jié)果

使用AddRange()可以省略上面for循環(huán)中的一坨代碼东跪。

常用的一些方法畸陡。

//清空所有元素
list.Clear();

//刪除單個(gè)元素
list.Remove("張三");

//根據(jù)索引刪除元素
list.RemoveAt(0);

//根據(jù)下表刪除一定范圍的元素
list.RemoveRange(0, 3);

//升序排列
list.Sort();

//反轉(zhuǎn)元素
list.Reverse();

//在指定位置插入一個(gè)元素
list.Insert(1, "插入的");

//在指定位置插入集合
list.InsertRange(2, new char[

//判斷集合是否包含某個(gè)元素
bool b = list.Contains('A');

  • ArrayList集合的長度問題
    每次集合中實(shí)際包含的元素個(gè)數(shù)(count)超過了可以包含的元素的個(gè)數(shù)(capcity)的時(shí)候,集合就會(huì)向內(nèi)存中申請(qǐng)多開辟一倍的空間虽填,來保證集合的長度一直夠用丁恭。
HashTable (鍵值對(duì)集合)

在鍵值對(duì)集合當(dāng)中,我們是根據(jù)鍵去找值的斋日。
語法:鍵值對(duì)對(duì)象[鍵]=值;(鍵不可以重復(fù)牲览,值可以重復(fù))
鍵值對(duì)對(duì)象[鍵] = 值(鍵不存在,添加該數(shù)據(jù)恶守;鍵存在第献,覆蓋該鍵已經(jīng)存在的對(duì)應(yīng)數(shù)據(jù))

static void Main(string[] args)
{
    //創(chuàng)建一個(gè)鍵值對(duì)集合對(duì)象
    Hashtable ht = new Hashtable();
    ht.Add(1, "張三");
    ht.Add(2, true);
    ht.Add(false, "錯(cuò)誤");

    ht[9] = "新來的";//這也是一種添加數(shù)據(jù)的方式
    ht[1] = "把張三干掉";//如果有鍵1 就添加,有就覆蓋


    //在鍵值對(duì)集合中兔港,是根據(jù)鍵去找值的
    Console.WriteLine(ht[1]);
    Console.WriteLine(ht[2]);
    Console.WriteLine(ht[false]);

    foreach (var item in ht.Keys)
    {
        Console.WriteLine("鍵{0} ------ 值{1}", item, ht[item]);
    }

    Console.ReadKey();
}


輸出結(jié)果

對(duì)于鍵值對(duì)集合取值庸毫,可以采用foreach循環(huán)
小練習(xí):簡繁轉(zhuǎn)換

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _04簡繁轉(zhuǎn)換
{
    class Program
    {

        private const String jian = "張長場";
        private const String fan = "張長場";
        static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            for (int i = 0; i < jian.Length; i++)
            {
                ht.Add(jian[i], fan[i]);
            }

            Console.WriteLine("請(qǐng)隨便輸入");
            string input = Console.ReadLine();
            //將用戶輸入的簡體字轉(zhuǎn)換成繁體字

            for (int i = 0; i < input.Length; i++)
            {
                if (ht.ContainsKey(input[i]))
                {
                    Console.Write(ht[input[i]]);
                }
                else
                {
                    Console.Write(input[i]);
                }
            }

            Console.ReadKey();
        }
    }
}
輸出結(jié)果
Path類

專門用來操作路徑的一個(gè)類。直接上代碼衫樊。

static void Main(string[] args)
{
    string str = @"D:\CodeRush\Support\abc.mp4";
    //int index = str.LastIndexOf("\\");
    //str = str.Substring(index +1);
    //Console.WriteLine(str);

    //獲取文件名字
    Console.WriteLine(Path.GetFileName(str));

    //獲取文件名不包括擴(kuò)展名
    Console.WriteLine(Path.GetFileNameWithoutExtension(str));

    //獲取文件的擴(kuò)展名
    Console.WriteLine(Path.GetExtension(str));

    //獲取文件所在文件夾的名稱
    Console.WriteLine(Path.GetDirectoryName(str));

    //獲取文件所在的全路徑
    Console.WriteLine(Path.GetFullPath(str));

    //連接兩個(gè)字符串作為路徑
    Console.WriteLine(Path.Combine(@"c:\a\",@"b.text"));

    Console.ReadKey();
}
輸出結(jié)果
File類

直接丟代碼

static void Main(string[] args)
{
    //創(chuàng)建文件
    //File.Create(@"C:\Users\Administrator\Desktop\new.txt");

    //刪除文件
    //File.Delete(@"C:\Users\Administrator\Desktop\new.txt");

    //復(fù)制一個(gè)文件
    File.Copy(@"C:\Users\Administrator\Desktop\new.txt", @"C:\Users\Administrator\Desktop\new2.txt");

    Console.ReadKey();
}
編碼

文本文件編碼飒赃,文本文件有不同的存儲(chǔ)方式,將字符串一什么樣的形式保存為二進(jìn)制科侈,這就是編碼载佳。
產(chǎn)生亂碼的原因:就是因?yàn)槟惚4孢@個(gè)文件的編碼格式跟你打開這個(gè)文件的編碼格式不一樣。


往期回顧

圖文無關(guān).png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兑徘,一起剝皮案震驚了整個(gè)濱河市刚盈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挂脑,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欲侮,死亡現(xiàn)場離奇詭異崭闲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)威蕉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門刁俭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人韧涨,你說我怎么就攤上這事牍戚∥攴保” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵如孝,是天一觀的道長宪哩。 經(jīng)常有香客問我,道長第晰,這世上最難降的妖魔是什么锁孟? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮茁瘦,結(jié)果婚禮上品抽,老公的妹妹穿的比我還像新娘。我一直安慰自己甜熔,他們只是感情好圆恤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腔稀,像睡著了一般盆昙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烧颖,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天弱左,我揣著相機(jī)與錄音,去河邊找鬼炕淮。 笑死拆火,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的涂圆。 我是一名探鬼主播们镜,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼润歉!你這毒婦竟也來了模狭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤踩衩,失蹤者是張志新(化名)和其女友劉穎嚼鹉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驱富,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锚赤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了褐鸥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片线脚。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浑侥,到底是詐尸還是另有隱情姊舵,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布寓落,位于F島的核電站括丁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏零如。R本人自食惡果不足惜躏将,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望考蕾。 院中可真熱鬧祸憋,春花似錦、人聲如沸肖卧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塞帐。三九已至拦赠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葵姥,已是汗流浹背荷鼠。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留榔幸,地道東北人允乐。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像削咆,于是被迫代替她去往敵國和親牍疏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理拨齐,服務(wù)發(fā)現(xiàn)鳞陨,斷路器,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法瞻惋,類相關(guān)的語法厦滤,內(nèi)部類的語法,繼承相關(guān)的語法歼狼,異常的語法馁害,線程的語...
    子非魚_t_閱讀 31,623評(píng)論 18 399
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,077評(píng)論 25 707
  • 如果來日還下雨 去遠(yuǎn)游不會(huì)帶傘 旅途中不等天晴 只癡癡等你的傘
    鄒海詩歌閱讀 1,469評(píng)論 0 4
  • 你是否也和我一樣,擁有很多種愛好蹂匹,卻未從將任何一項(xiàng)進(jìn)行深耕,將其變成自己擅長的技藝凹蜈?你是否也和我一樣限寞,在人...
    朱朱的餐具閱讀 184評(píng)論 3 8