第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

C#面向?qū)ο缶幊?/h2>

kong66 全棧工程師
難度入門
時長 3小時17分
學(xué)習(xí)人數(shù)
綜合評分9.47
105人評價 查看評價
9.7 內(nèi)容實用
9.2 簡潔易懂
9.5 邏輯清晰
  • 1、泛型類就是一個模子,放入類型的材料(字段屬性方法),可以塑造出想要的產(chǎn)品。
    2、語法
    class Cage<T>//這是一個籠子類和泛型類,類名后加上一對<>,加上一個泛型參數(shù)
    {
    T[] petArray;//定義T類型的數(shù)組
    public void PutIn(T pet){···}//放入T類型的寵物
    public T TakeOut(int index){···}//占位符T,cage類變?yōu)榫唧w類時,T相應(yīng)的變成具體數(shù)
    }
    //實例化
    var dogCage=new Cage<Dog>();//得到狗狗籠子
    var catCage=new Cage<Cat>();//得到貓咪籠子
    3、為什么需要泛型,用基類(包括所有類的基類object)或者公共的接口也可以實現(xiàn)一個Cage類,但是類型太寬泛,需要顯示轉(zhuǎn)換類型并判斷真是類型是什么。
    4、泛型使用:聲明一個泛型類->引用泛型->構(gòu)造實例
    class Cage<t>{···}
    class Cage<Dog>{···}
    dogCage=new Cage<Dog>;

    比如不寫Petcage<Dog> dog=new Petcage<Dog> ("名字");而用一個從來沒見過的 var代替。還有 return default<T>也沒解釋啥意思
    理解:泛型就是在不確定類的參數(shù)類型和返回類型時,設(shè)置一個變量來代替這個固定的類型。當創(chuàng)建類實例時,在給這個變量賦對應(yīng)類類型值,這樣就可以實現(xiàn)一個類,輸出不同類型的值和方法。
    不用老師的例子,用一個給數(shù)組賦值輸出數(shù)組的例子更好理解;如設(shè)置一個類,構(gòu)造函數(shù)初始化一個數(shù)組數(shù)組類型為int,有給數(shù)組賦值方法和獲取數(shù)組值的方法,在此注意:數(shù)組的類型int和獲取數(shù)組值的方法的返回值類型都為int,如果實例此類調(diào)用方法,實參和返回值類型也必須是int;就此限定死了此類的實例; 如果想要一個設(shè)置char類型的實例,還得必須創(chuàng)建一個新的char的類和方法才能實現(xiàn);這樣代碼工作量很大;若使用泛型,用變量<T>代替固定類型int或char,這樣在實例化的時候,將T賦不同類型(int、double、char)就可以獲得想要的返回值類型,從而實現(xiàn)了一個模板,只變一個參數(shù)T就能實現(xiàn)相同的功能
    上面給出的例子。只需要把所有<T>去掉,后面的T全改為int或char 就能變?yōu)槠胀惲恕Ρ壤斫夥浅:唵瘟?/p>

    查看全部
    0 采集 收起 來源:泛型類

    2021-05-23

  • 1、什么是重載運算符

    不能創(chuàng)造新的運算符,所以利用現(xiàn)有的某種運算符,針對自定義類或者結(jié)構(gòu)(預(yù)定義類型和現(xiàn)有運算符的運算含義是確定的所有不能更改),定義某種運算符(該運算符和該操作具有一定相關(guān)性,如公狗狗+母狗狗=新生狗狗),從而簡化自定義類型的操作。

    為什么需要重載運算符:利用現(xiàn)有運算符,簡化自定義類型的操作。最好是,該運算符和該操作,具有一定億相關(guān)性。

    2、語法細節(jié)
    public static Dog operator +(Dog male,Dog female)//如公狗狗+母狗狗=新生狗狗
    {
    ···
    }
    3、哪些運算符可以重載
    一元運算符:+、-、!、~、++、- -、true、false(操作數(shù)必須是類和結(jié)構(gòu))
    二元運算符:+、-、*、%、&、|!、^、<<、>>、= =、!=、>、<、>=、<=(兩個操作數(shù)至少有一個表示類或者結(jié)構(gòu))
    不能重載:=、&&、||、[](索引操作)、()等
    4、重載運算符不能做什么
    創(chuàng)造新運算符
    改變運算符語法
    重定義運算符如何處理預(yù)定義類型
    改變運算符的優(yōu)先級和結(jié)合性
    5、重在運算符舉例
    ···
    public void ShowAge()
    {
    Console.WriteLine("Age="+_age);
    }
    ···
    //重載自增操作,針對寵物的年齡
    public static Pet opertor ++(Pet pet)//返回值為Pet類型,參數(shù)為寵物自身。所有的重載方法都需要public static修飾
    {
    ++pet._age;
    return pet;
    }
    ···
    Dog dog=new Dog("Jack");
    dog._age=2;
    dog++;
    dog.ShowAge();

    查看全部
    0 采集 收起 來源:重載運算符

    2021-05-23

  • 隱式轉(zhuǎn)換語法public static implicit opertor Dog()(Cat cat){retuen new Cat(Dog dog);}

    顯示轉(zhuǎn)換語法public static explicit operator Dog(Cat cat){...}

    查看全部
  • 1、裝箱:根據(jù)值類型的值,在堆上創(chuàng)建一個完整的引用類型對象,并返回對象的引用,是一種隱式轉(zhuǎn)換(語言自動完成)。
    2、為什么要裝箱
    有時候需要將值類型轉(zhuǎn)化為引用類型(比如object)來進行統(tǒng)一的操作(比如作為函數(shù)的參數(shù))和統(tǒng)一的存儲(比如object[])。
    3、裝箱簡單實例
    int i=3;
    object oi=null;
    oi=i;//發(fā)生裝箱,原來的int保持不變,創(chuàng)建了一個新的對象,該對象在堆當中。需要性能消耗的。
    4、裝箱的本質(zhì)
    就是在對上創(chuàng)建了一個引用類型的副本,新創(chuàng)建的引用類型和原來的值類型相互獨立。
    相互獨立代碼驗證:
    int i=3;
    object oi=i;//發(fā)生裝箱
    Console.WriteLine("i="+i+",oi="+oi.ToString);//輸出為i=3,oi=3
    oi=10;
    i=7;
    Console.WriteLine("i="+i+",oi="+oi.ToString);//輸出為i=7,oi=10, oi存儲在堆中, i存儲在棧中
    說明兩者相互獨立
    5、拆箱
    將裝箱后的對象轉(zhuǎn)化回值類型的過程,是一種顯示轉(zhuǎn)換(需要手動干預(yù))。
    6、拆箱實例
    in i=3;
    object oi=i;//裝箱
    int j=(int)oi;//拆箱 通過強制轉(zhuǎn)換

    Console.WriteLine("j="+j);//輸出10

    查看全部
    0 采集 收起 來源:裝箱和拆箱

    2021-05-23

  • 1、靜態(tài)類

    包含靜態(tài)屬性和方法,被標記為static
    靜態(tài)類不能創(chuàng)建實例,不能被繼承。
    可以為靜態(tài)類定義靜態(tài)構(gòu)造函數(shù)。
    2、作用
    主要用于基礎(chǔ)類庫(math類)和擴展方法。
    3、如何擴展方法
    若有源代碼,直接添加一個新方法
    如果不能修改單也不是密閉類,可以派生子類擴展
    如果以上條件不滿足,可以使用靜態(tài)類擴展方法
    3、在靜態(tài)類中的靜態(tài)方法中參數(shù)中加入this關(guān)鍵,則可以直接利用對象調(diào)用方法就可以。

    static class PetGuide//擴展Dog類的方法
    {

    ?public?static double HowToFreedDog(this Dog dog){...}

    {
    Console.WriteLine("播放如何喂養(yǎng)一直狗狗的視頻");
    }
    }

    Dog dog=new Dog("Tommy");

    dog.HowToFreedDog();


    4、總結(jié)擴展要求
    擴展方法所屬的類,必須是static類
    擴展方法本身就是static方法
    擴展方法的第一個參數(shù)類型,必須是this+類名。
    例如:
    Dog類沒辦法修改,修改Dog類就需要擴展方法,需要一個喂養(yǎng)寵物的方法
    static class PetGuide//擴展Dog類的方法
    {

    static public void HowToFreedDog(this Dog dog)

    {
    Console.WriteLine("播放如何喂養(yǎng)一直狗狗的視頻");
    }
    }

    ···
    Dog dog=new Dog();//Dog類中沒有HowToFreedDog();方法
    dog.HowToFreedDog();//擴展之后好像Dog類中有這樣的方法一樣。

    查看全部
    0 采集 收起 來源:靜態(tài)類

    2021-05-23

  • 靜態(tài)類和靜態(tài)成員
    1、類的靜態(tài)成員
    成員被標記為static時,就是靜態(tài)成員。靜態(tài)成員將會被類的所有實例共享,所有實例都訪問統(tǒng)一內(nèi)存位置。
    靜態(tài)成員跟實例成員分開存放。靜態(tài)成員存放在堆中。class Dog{static int Num;}

    2、靜態(tài)成員訪問
    直接通過類名訪問,普通成員需要通過實例訪問。

    3、靜態(tài)成員聲明周期
    獨立任何實例,沒有實例也可以訪問。靜態(tài)成員使用之前編譯器已經(jīng)幫忙完成初始化。
    4、靜態(tài)函數(shù)不能訪問實例成員,僅能訪問其他靜態(tài)成員,普通方法可以訪問靜態(tài)成員
    5、靜態(tài)構(gòu)造函數(shù)

    class Dog{static public void PrintNum(){Console.WriteLine(“Num=”+Num);}}用于初始化靜態(tài)字段
    在引用任何靜態(tài)成員之前,和創(chuàng)建任何實例之前調(diào)用。
    與類同名,使用static,無參數(shù),沒有訪問修飾符,普通構(gòu)造函數(shù)可以重載的.
    靜態(tài)函數(shù)只能訪問靜態(tài)成員,非靜態(tài)函數(shù)可以訪問靜態(tài)/非靜態(tài)成員

    class?Dog//類名

    {static?Dog()//靜態(tài)構(gòu)造函數(shù),與類同名,無參數(shù),無訪問修飾符

    {num=0;//只能訪問靜態(tài)成員

    }

    }

    查看全部
    0 采集 收起 來源:靜態(tài)成員

    2021-05-23

  • 結(jié)構(gòu)和類
    1、不同點
    結(jié)構(gòu)是值類型(在棧中),類是引用類型(在堆中)
    結(jié)構(gòu)不支持繼承,類支持繼承
    結(jié)構(gòu)不定義默認構(gòu)造函數(shù),編譯器會定義
    2、適用場合
    結(jié)構(gòu)由于分配內(nèi)存快,作用域結(jié)束即被刪除。不需要垃圾回收,用于小型數(shù)據(jù)結(jié)構(gòu),傳遞過程會復(fù)制,應(yīng)該用ref類參數(shù)傳遞提高效率。
    類用于其他需要繼承體系的場合。
    例如:定義食物是一個不需要長期存儲的數(shù)據(jù)類型,吃完就沒有了,所以可以定義一個食物struct

    關(guān)于堆和棧內(nèi)存:? ? ? 棧內(nèi)存:棧內(nèi)存首先是一片內(nèi)存區(qū)域,存儲的都是局部變量,凡是定義在方法中的都是局部變量(方法外的是全局變量),for循環(huán)內(nèi)部定義的也是局部變量,是先加載函數(shù)才能進行局部變量的定義,所以方法先進棧,然后再定義變量,變量有自己的作用域,一旦離開作用域,變量就會被釋放。棧內(nèi)存的更新速度很快,因為局部變量的生命周期都很短。? ? ?? 堆內(nèi)存:存儲的是數(shù)組和對象(其實數(shù)組就是對象),凡是new建立的都是在堆中,堆中存放的都是實體(對象),實體用于封裝數(shù)據(jù),而且是封裝多個(實體的多個屬性),如果一個數(shù)據(jù)消失,這個實體也沒有消失,還可以用,所以堆是不會隨時釋放的,但是棧不一樣,棧里存放的都是單個變量,變量被釋放了,那就沒有了。堆里的實體雖然不會被釋放,但是會被當成垃圾,Java有垃圾回收機制不定時的收取。

    查看全部
  • 接口
    1、接口就是制定一組函數(shù)成員,而不實現(xiàn)他們的引用類型,用interface聲明。接口函數(shù)不能用其他訪問修飾符修飾,默認為public。

    interface ICatchMice{void CatchMice();}

    2、接口只能用來被實現(xiàn)
    例如? ?Cat:ICatchMice{ public void CatchMice(){...}
    //實現(xiàn)接口函數(shù)
    }

    Cat c=new Cat();

    ICatchMice ic=(ICatchMice)c;

    c.CatchMice(); //通過對象調(diào)用

    ic.CatchMice(); //通過接口調(diào)用

    3、一個類可以實現(xiàn)多個接口,當一個類同時繼承基類和實現(xiàn)接口時,應(yīng)該將基類寫在最前面,用逗號隔開

    可實現(xiàn)多個接口? ? ??

    Cat:Pet ,ICatchMice,IClimbTree? ?//基類? ? ? 接口1? ? ? ? 接口2

    ?{? ? ? ? ??

    ? ? ? ? ? ? public void CatchRat(){}.? ? ? ? ? ?

    ? ? ? ? ? ? ?public void ClimbTree()}

    ? ? ? ? ? ? ?...

    }

    4、一個類實現(xiàn)接口時,必須實現(xiàn)接口聲明的函數(shù)。
    5、可以通過接口引用調(diào)用接口中的方法,也可通過實例調(diào)用接口方法。例子
    爬樹為一個接口,抓老鼠為一個接口,當貓這個類實現(xiàn)這兩個接口時,
    Cat c=new Cat("tom");
    爬樹 ci=(爬樹)c;
    c.pashu();//通過實例調(diào)用接口方法
    ci.pashu();//通過接口引用調(diào)用接口方法

    查看全部
    0 采集 收起 來源:接口

    2021-05-23

  • 密閉類 密閉方法?

    ?sealed override public void Speak(){}

    查看全部
    0 采集 收起 來源:密閉類

    2021-05-23

  • 派生類調(diào)用基類的構(gòu)造函數(shù)

    查看全部
  • http://img1.sycdn.imooc.com//609f819a00015b7105210199.jpg

    擴展想擴展類的方法

    查看全部
    0 采集 收起 來源:靜態(tài)類

    2021-05-15

  • http://img1.sycdn.imooc.com//609f63580001a4b210780436.jpg

    抽象

    查看全部
  • 依賴倒置原則,程序盡量依賴于抽象類

    http://img1.sycdn.imooc.com//609f41cf0001c2b507560311.jpg

    查看全部
  • http://img1.sycdn.imooc.com//609f3ebc000146e111770460.jpg

    隱藏方法

    http://img1.sycdn.imooc.com//609f3ef10001db6a07300369.jpg

    查看全部
    1 采集 收起 來源:隱藏方法

    2021-05-15

  • 優(yōu)點

    http://img1.sycdn.imooc.com//609f3ce70001229007310390.jpg

    查看全部
    0 采集 收起 來源:課程介紹

    2021-05-15

舉報

0/150
提交
取消
課程須知
1、需要掌握c#基礎(chǔ)語法和基本概念 2、建議聽課和寫代碼實踐相結(jié)合,更好的掌握知識點
老師告訴你能學(xué)到什么?
1、通過學(xué)習(xí)繼承和多態(tài),構(gòu)建對象的森林,減少重復(fù)代碼 2、學(xué)習(xí)靜態(tài)成員靜態(tài)類,實現(xiàn)對象間的共享資源和擴展非派生類 3、學(xué)習(xí)接口,可以跨類型地實現(xiàn)對象的統(tǒng)一管理 4、學(xué)習(xí)操作符重載,大大簡化我們自定義對象的相關(guān)操作 5、學(xué)習(xí)泛型,極大地降低了開發(fā)的工作量

微信掃碼,參與3人拼團

微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復(fù)購買,感謝您對慕課網(wǎng)的支持!