1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. C#學(xué)習(xí)筆記及方法

        時(shí)間:2020-12-29 12:00:24 學(xué)習(xí)方法 我要投稿

        C#學(xué)習(xí)筆記及方法

          C#是一門面向?qū)ο蟮恼Z(yǔ)言,具有面向?qū)ο蟮幕咎卣,抽象、封裝、繼承、多態(tài)等性質(zhì)。學(xué)習(xí)C#除了一些基本的語(yǔ)法,還得學(xué)習(xí)一些新的特性,比如說(shuō):泛型、多線程、集合、反射等,下面就選其中一些來(lái)學(xué)習(xí)吧!

        C#學(xué)習(xí)筆記及方法

          一、C#中的各種器

          A、 C#構(gòu)造器-構(gòu)造函數(shù)

          如下:

          復(fù)制代碼 代碼如下:

          //構(gòu)造器1

          public Products(int id)

          {

          _Id = id;

          }

          //構(gòu)造器2,使用this來(lái)調(diào)用構(gòu)造器1

          public Products(int id, string Name, string Band)

          : this(id)

          {

          _ProductName = Name;

          _ProductBand = Band;

          }

          靜態(tài)構(gòu)造器-用來(lái)對(duì)類進(jìn)行初始化信息,它不是顯示調(diào)用的,在首次訪問類時(shí)將自動(dòng)調(diào)用,用來(lái)初始化類的一些基本信息而不是對(duì)象,但最好不要使用靜態(tài)的構(gòu)造器,代碼如下:

          復(fù)制代碼 代碼如下:

          static Products() { }//靜態(tài)構(gòu)造器

          public Products() { }

          B、初化器-在沒有帶參數(shù)的構(gòu)造器時(shí),我們可以用初始化器對(duì)對(duì)象的共公屬性進(jìn)行初始化

          如下:

          復(fù)制代碼 代碼如下:

          //產(chǎn)品的集合List

          ListListProduct = new List()

          {

          new Products() { _Id = 1, _ProductName = "whc" },//使用{}是調(diào)有用初始化器,對(duì)屬性進(jìn)行初始化

          new Products() { _Id = 1, _ProductName = "whc1", _ProductBand = "ctbu" },

          new Products() { _Id = 1, _ProductName = "whc2", _ProductBand = "ctbu" }

          };

          C、終結(jié)器

          終結(jié)器是在一次對(duì)象最后一次活動(dòng)之后,并在程序終止之前執(zhí)行。拉圾回收器會(huì)在回收過(guò)程中,找到帶有終結(jié)器的對(duì)象,然后加入到終結(jié)隊(duì)列,線程遍歷完了,就調(diào)用終結(jié)隊(duì)列上對(duì)象的終結(jié)器來(lái)回收資源

          二、C#中那些重要的知識(shí)

          A、委托與事件

          委托

          C#中將一個(gè)方法作為一個(gè)參數(shù)傳遞給其它方法使用,實(shí)現(xiàn)這樣功能的模式叫做委托

          1、委托的類型:是強(qiáng)類型,因?yàn)樵诼暶魑蟹椒〞r(shí),指定的參數(shù),在調(diào)用這個(gè)委托時(shí)必須傳遞相同類型的參數(shù)與參數(shù)個(gè)數(shù)

          2、委托的內(nèi)部機(jī)制:C#中所有的委托都繼承自System.Delegate,但是我們不能繼承它來(lái)實(shí)現(xiàn)自定義的委托,可以使用delegate關(guān)鍵字來(lái)定義

          3、委托的定義:使用delegate關(guān)鍵字來(lái)使用

          4、委托的實(shí)例化:定義一個(gè)與委托相同類型的函數(shù),作為委托的參數(shù)傳遞,不需要用new關(guān)鍵字進(jìn)行實(shí)例化,它可以通過(guò)委托推斷,在C#1.0中,在傳遞方法時(shí),需要用new delegate(Method)

          5、委托的使用:

          復(fù)制代碼 代碼如下:

          class DelegateClass

          {

          //一個(gè)泛型的委托,可以不同類型的參數(shù)進(jìn)行處理

          public delegate void AlculateMethod(T first, T second);

          }

          class MehtodConllection

          {

          public void AlculateAdd(T first, T second)

          {

          string third = first.ToString() + second.ToString();

          System.Console.WriteLine(third);

          }

          public void AlculateDelete(int first, int second)

          {

          System.Console.WriteLine(first - second);

          }

          public void AlculateAddOther(T first, T second)

          {

          string third = first.ToString() + "Hello Word" + second.ToString();

          System.Console.WriteLine(third);

          }

          }

          private static void _Demo4()

          {

          //方法的集合

          MehtodConllection mc = new MehtodConllection();

          //泛型的委托聲明

          DelegateClass.AlculateMethodDemo = null;

          //添加委托方法

          Demo += mc.AlculateAdd;

          //

          Demo += mc.AlculateAddOther;

          //調(diào)用方法,所有在委托中的方法都能被執(zhí)行

          Demo("str", "sterte");

          }

          事件

          事件是一種特殊的委托,在聲明委托時(shí),添加一個(gè)event關(guān)鍵字

          步驟:

          1、定義委托的類型,相當(dāng)于一個(gè)類,如: public delegate void ActionMethod();

          2、定義事件委托變量,用1、中的委托類型定義,如: public event ActionMethod amd;

          3、調(diào)用定義的事件,觸發(fā)器,如:

          復(fù)制代碼 代碼如下:

          class Cat

          {

          //定義委托方法

          public delegate void ActionMethod();

          //聲明事件委托

          public event ActionMethod amd;

          //觸發(fā)事件

          public void CatShout()

          {

          System.Console.WriteLine("貓叫了,事件觸發(fā)了。!");

          amd();

          }

          }

          4、向事件中添加方法,將方法與事件綁定在一起,以便在觸發(fā)時(shí)一起執(zhí)行,如:

          復(fù)制代碼 代碼如下:

          private static void _Demo15() {

          Cat cat = new Cat();

          HostPerson hp = new HostPerson();

          Mouse mouse = new Mouse();

          cat.amd += mouse.runing;

          cat.amd += hp.WeekUp;

          cat.CatShout();

          }

          5、最后觸發(fā)事件

          B、反射與特性

          反射

          1、反射的作用:

          (1)、訪問程序集中的元數(shù)據(jù),比如說(shuō),方法屬性修鉓符

         。2)、使用元數(shù)據(jù),在運(yùn)行時(shí)動(dòng)態(tài)的調(diào)用元數(shù)據(jù)的成員與屬性等,而不是在編譯時(shí)進(jìn)行綁定

          2、反射是擇指對(duì)一個(gè)程序集中的元數(shù)據(jù)進(jìn)行檢查的過(guò)程,并且可以列舉程序集的類型與屬性,以及使用一些特定的對(duì)象調(diào)用上面的成員

          3、使用System.Type訪問元數(shù)據(jù)

          類型的元數(shù)據(jù)System.Type是一個(gè)實(shí)例,這個(gè)實(shí)例提供了一些方法,這些方法可以列舉元數(shù)據(jù)的成員,主要方法有以下幾種:

          Type.Name、Type.IsPublic、Type.BaseType、Type.GetInterface()、Type.Assemble、Type.GetProperties()、Type.GetMethod()、Type.GetField()、Type.GetCustomAttributes()等屬性

         。1)、使用GetType()得到元數(shù)據(jù)的類型對(duì)象(System.Type)

          例:

          類一:

          復(fù)制代碼 代碼如下:

          class CustomClass

          {

          private string Name = "Test";

          public string _Name = "Demo";

          private int index { get; set; }

          public int _index { get; set; }

          private void GetName()

          {

          }

          public void Get_Name()

          {

          }

          }

          類二:同時(shí)使用了typeof與GetType()來(lái)得到類型對(duì)象

          復(fù)制代碼 代碼如下:

          public void Exec()

          {

          CustomClass cc = new CustomClass();

          //得到當(dāng)前類型的實(shí)例對(duì)象

          Type type = cc.GetType();

          //得到當(dāng)前類型的實(shí)例對(duì)象使用typeof

          //Type type = typeof(CustomClass);

          //遍歷public的屬性,而不是字段,使用GetProperties()

          foreach (PropertyInfo property in type.GetProperties())

          {

          //得到屬性名

          System.Console.WriteLine(property.Name);

          //得到屬性的類型

          System.Console.WriteLine(property.PropertyType);

          //得到反射的.類型,就是反射對(duì)象的類名

          System.Console.WriteLine(property.ReflectedType);

          //得到成員類型,是屬性還是方法

          System.Console.WriteLine(property.MemberType);

          }

          System.Console.WriteLine("------------------------------------------");

          //得到當(dāng)前對(duì)象的公共方法,包含公共屬性的方法get,set

          foreach (System.Reflection.MethodInfo method in type.GetMethods())

          {

          //方法名

          System.Console.WriteLine(method.Name);

          //成員的類型

          System.Console.WriteLine(method.MemberType);

          }

          }

          結(jié)果:

         。2)、得到與設(shè)置屬性的值

          復(fù)制代碼 代碼如下:

          //設(shè)置屬性的值

          property.SetValue(cc, 45, null);

          //得到屬性的值

          System.Console.WriteLine(property.GetValue(cc, null).ToString());

         。3)、調(diào)用方法Invoke()函數(shù)

          復(fù)制代碼 代碼如下:

          MethodInfo demo = type.GetMethod("Get_Name");

          demo.Invoke(cc, null);

          得到一個(gè)無(wú)參的方法Get_Name,若有參null應(yīng)為參數(shù)的數(shù)組

          如: //調(diào)用有參的

          復(fù)制代碼 代碼如下:

          MethodInfo test = type.GetMethod("GetName");

          string[] param = { "12" };

          test.Invoke(cc, param);

          特性 (attribute)

          1、特性是用來(lái)描述或修飾元數(shù)據(jù)的額外的信息,比如說(shuō):類、屬性、程序集等

          2、自定義特性,繼承自Attribute類

          如下:

          復(fù)制代碼 代碼如下:

          class CustomAttribute : Attribute

          {

          public CustomAttribute();

          public CustomAttribute(AttributeTargets validOn);

          public bool AllowMultiple { get; set; }

          public bool Inherited { get; set; }

          public AttributeTargets ValidOn { get; }

          }

          使用:

          復(fù)制代碼 代碼如下:

          [CustomAttribute(AttributeTargets.All)]

          class CustomClass

          {

          [CustomAttribute(AllowMultiple = true)]

          [Custom(Inherited = true)]

          private string Name = "Test";

          public string _Name = "Demo";

          private int index { get; set; }

          public int _index { get; set; }

          }

          C、擴(kuò)展方法的使用與Lambda表達(dá)式

          擴(kuò)展方法

          當(dāng)你不能修改一個(gè)類的時(shí)候,擴(kuò)展方法是一個(gè)方便給這個(gè)類添加其它方法的方式

          1、擴(kuò)展方法的定義:擴(kuò)展方法使用this這個(gè)關(guān)鍵字,將一個(gè)方法綁定到this所指向的類型(如:類)的成員中對(duì),從而就可以通過(guò)這個(gè)類的對(duì)象來(lái)調(diào)用這個(gè)方法,在MVC中,擴(kuò)展,HtmlHelper類是很有用的,如下代碼:

          復(fù)制代碼 代碼如下:

          public static class PersonExtension

          {

          public static void Extension(this PersonSingle ps, string name)

          {

          System.Console.WriteLine("Name is " + name);

          }

          }

          將Extension(string name)這方法添加到PersonSingle中去,然后就可以通過(guò)對(duì)象調(diào)用這個(gè)方法

          PersonSingle類:

          復(fù)制代碼 代碼如下:

          public class PersonSingle

          {

          public void Show()

          {

          System.Console.WriteLine("PersonSingle Method!!!");

          }

          }

          測(cè)試:

          復(fù)制代碼 代碼如下:

          private static void _Demo16()

          {

          PersonSingle ps = new PersonSingle();

          ps.Show();

          ps.Extension("whc");

          }

          2、擴(kuò)展方法的訪問權(quán)限要與所擴(kuò)展的類的方法一致,這里都是public

          3、擴(kuò)展方法是寫在一個(gè)靜態(tài)類中的靜態(tài)方法

          Lambda表達(dá)式

          Lambda表達(dá)式是一種比匿名方法更加簡(jiǎn)潔的一種匿名函數(shù)語(yǔ)法,其主要分為二類:一是語(yǔ)句lambda,二是表達(dá)式lambda

          1、語(yǔ)句Lambda:是一種匿名方法的簡(jiǎn)化語(yǔ)法,其中不包含delegate關(guān)鍵字,只需要使用lambda運(yùn)算符=>,是一個(gè)語(yǔ)句塊

          例:

          復(fù)制代碼 代碼如下:

          Demo += (string first, string second) =>

          {

          System.Console.WriteLine();

          };

          2、表達(dá)式Lambda:是一個(gè)表達(dá)式,而不是一個(gè)語(yǔ)句塊

          例:

          復(fù)制代碼 代碼如下:

          Demo = (first, second) => first.ToString();

          3、Lambda表達(dá)式中能使用外部的變量

          總結(jié)

          那些年學(xué)習(xí)C#,作了一些筆記,此文大都直接從筆記中拷貝,當(dāng)然還有很多沒有提到,將在下次追加一些;此文以回憶那些年學(xué)習(xí)的日子。

        【C#學(xué)習(xí)筆記及方法】相關(guān)文章:

        速錄學(xué)習(xí)技巧及方法08-13

        速錄學(xué)習(xí)及提速方法08-13

        速錄技巧及學(xué)習(xí)方法08-07

        速錄學(xué)習(xí)方法及技巧11-11

        CAD學(xué)習(xí)方法及技巧08-16

        學(xué)習(xí)數(shù)學(xué)的小技巧及方法07-30

        A-level數(shù)學(xué)及學(xué)習(xí)方法08-27

        速錄的學(xué)習(xí)方法及技巧08-10

        亞偉速錄學(xué)習(xí)方法及技巧11-13

        日語(yǔ)口語(yǔ)學(xué)習(xí)方法及技巧08-29

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>