net學(xué)習(xí)心得6

時間:2023-04-26 11:41:01 心得體會 我要投稿
  • 相關(guān)推薦

net學(xué)習(xí)心得(6)

1.反射:反射是.net中的重要機(jī)制,通過反射可以在運(yùn)行時獲得.net中每一個類型,包括類、結(jié)構(gòu)、委托和枚舉的成員,包括方法、屬性、事件,以及構(gòu)造函數(shù)等。有了反射,既可以對每一個類型了如指掌。

net學(xué)習(xí)心得(6)

下面來演示一下反射的實(shí)例

(1)新建一個類庫項(xiàng)目。在解決方案上單擊右鍵選擇添加“新建項(xiàng)目”,在彈出來的框中選擇“類庫”,在下面名字欄中輸入ClassLib。然后刪除class1類,新添加一個類“ClassPerson”,添加如下代碼:

namespace ClassLib

{

    public class ClassPerson

    {

        public ClassPerson():this(null)

        {

        }

        public ClassPerson(string strname)

        {

            name = strname;

        }

        private string name;

        private string sex;

        private int age;

        public string Name

        {

            get { return name; }

            set { name = value; }

        }

        public string Sex

        {

            get { return sex; }

            set { sex = value; }

        }

        public int Age

        {

            get { return age; }

            set { age = value; }

        }

        public void SayHello()

        {

            if (null==name)

                Console.WriteLine("hello World");

            else

                Console.WriteLine("Hello," + name);  

        }

    }

}

添加完之后編譯生成一下,就會在這個類庫項(xiàng)目中的Bin\Debug中有一個ClassLib.dll文件。然后添加一個控制臺應(yīng)用程序。引入System.Reflaction的命名空間。添加的代碼如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Reflection;//添加反射的命名空間

namespace ConsoleApplication4

{

    public class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("列出程序集中的所有類型");

            Assembly ass = Assembly.LoadFrom("ClassLib.dll");

            Type[] mytype = ass.GetTypes();

            Type ClassPerson = null;

            foreach (Type p in mytype)

            {

                Console.WriteLine(p.Name);

                if (p.Name=="ClassPerson")

                {

                    ClassPerson = p;

                }

            }

            Console.WriteLine("列出ClassPersonl類中的所有的方法");

            MethodInfo[] md = ClassPerson.GetMethods();

            foreach(MethodInfo m in md)

            {

                Console.WriteLine(m.Name);

            }

            Console.WriteLine("實(shí)例化ClassPerson類,并調(diào)用SayHello方法");

            object obj = Activator.CreateInstance(ClassPerson);

            object objname=Activator.CreateInstance(ClassPerson,"飛鷹");

            MethodInfo mysayhello = ClassPerson.GetMethod("SayHello");

            mysayhello.Invoke(obj, null);//無參數(shù)構(gòu)造函數(shù)

            mysayhello.Invoke(objname, null);//有參構(gòu)造函數(shù)

            Console.ReadKey();      

        }

    }

}

運(yùn)行之后的結(jié)果是:

列出程序集中的所有類型

ClassPerson

列出ClassPersonl類中的所有的方法

get_Name

set_Name

get_Sex

set_Sex

get_Age

set_Age

SayHello

ToString

Equals

GetHashCode

GetType

實(shí)例化ClassPerson類,并調(diào)用SayHello方法

hello World

Hello,飛鷹

2.using的作用

(1)引入命名空間,如:using System。

(2)using別名。

格式:using 別名=包括詳細(xì)命名空間信息的具體的類型

 例如:在兩個命名空間(nameSpace1,nameSpace2)里各有一個MyClass類,這時可以這樣引入命名空間,

using aclass=nameSpace1.MyClass;

using bclass=nameSpace2.MyClass;

實(shí)例化時:

aclass my1=new aclass;

bclass my2=new bclass;

(3)using定義范圍

即時釋放資源,在范圍結(jié)束時處理對象。例如:

using(Class1 cls1=new Class1())

{

}

在這個代碼段結(jié)束時會觸發(fā)cls1的Dispose方法釋放資源。

相關(guān)文章:

學(xué)習(xí).net心得

相關(guān)專題:[電腦][計算機(jī)]

【net學(xué)習(xí)心得6】相關(guān)文章:

Net Worth:資本凈值05-04

ASP.NET技術(shù)選型心得04-25

asp.net網(wǎng)上花店畢業(yè)設(shè)計開題報告04-27

ASP.NET的網(wǎng)站新聞管理系統(tǒng)設(shè)計與實(shí)現(xiàn) -文秘文書12-15

《榜樣6》觀看學(xué)習(xí)心得11-20

Away from Net-bar Campaign遠(yuǎn)離網(wǎng)吧作文(通用15篇)04-10

《榜樣6》學(xué)習(xí)心得(精選16篇)07-20

學(xué)校學(xué)生學(xué)習(xí)心得6篇03-11

職業(yè)禮儀學(xué)習(xí)心得6篇03-14

新課改培訓(xùn)學(xué)習(xí)心得6篇03-27