C#中使用typeof關鍵字和GetType()獲取類的內部結構(反射機制)

1、問題描述java

java有反射機制,C#也有反射機制,在C#中typeof關鍵字用於獲取類型的System.Type對象,該對象的GetMethods()方法能夠獲得類型中定義的方法對象的計集合,調用方法集合中每一個方法對象的GetParameters()能夠獲得每一個方法的參數集合,可是須要引用Reflection命名空間。spa

        獲取System.Type對象有兩種方法:第一種是用typeof關鍵字,第二種是用對象引用調用GetType()方法.net

一、System.Type type =  typeof(System.Int32);   //參數是一種系統類型code

 

二、 string str= 「test」;     orm

              System.Type type = str.GetType();    //用對象引用調用GetType()方法對象

 

2、解決步驟blog

一、在代碼中引用Reflection命名空間input

using System.Reflection;string

二、能夠用typeof關鍵字,也能夠用GetType()方法獲取類的內部結構it

 

3、代碼演示

一、獲取String類的的全部方法和參數並顯示。

 

代碼:


————————————————
版權聲明:本文爲CSDN博主「tongyuehong」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/tongyuehong137/article/details/51393309

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
 
namespace test1
{
    public partial class Form7 : Form
    {
        public Form7()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //Type type = typeof(System.String);
            String str = "test";
            Type type = str.GetType();
            foreach (MethodInfo method in type.GetMethods())
            {
                out_rtb.AppendText("方法名稱:"+method.Name+Environment.NewLine);
                foreach (ParameterInfo param in method.GetParameters())
                {
                    out_rtb.AppendText("\t參數:" + param.Name + Environment.NewLine);
                }
            }
        }
    }
}

二、提示錯誤信息後,將全部CheckBox控件內容清空

       

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
 
namespace test1
{
    public partial class Form6 : Form
    {
        public Form6()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            byte input1,input2;
            if (byte.TryParse(input1_tbx.Text, out input1) && byte.TryParse(input2_tbx.Text, out input2))
            {
                try
                {
                    checked
                    {
                        input1 += input2;
                    }
                    result_tbx.Text = input1.ToString();
                }
                catch (OverflowException ex)
                {
                    MessageBox.Show(ex.Message, "錯誤信息");
                }
            }
            else
            {
                MessageBox.Show("請輸入小於255的數字!", "提示信息");               
            }
 
            //清空輸入信息
            foreach (Control c in Controls)
            {
                if (c.GetType() == typeof(TextBox))
                {
                    ((TextBox)c).Clear();
                }
            }
        }
 
    }
}
相關文章
相關標籤/搜索