C#早期綁定&后期綁定


早期綁定(early binding),又可以稱為靜態綁定(static binding)。在使用某個程序集前,已知該程序集里封裝的方法、屬性等。則創建該類的實例后可以直接調用類中封裝的方法。

后期綁定(late binding),又可以稱為動態綁定(dynamic binding),需要使用System.Reflection,動態地獲取程序集里封裝的方法、屬性等。

Example: 在命名空間Binding中有一個Employee類,代碼如下:

public class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public float Salary { get; set; }

        public Employee()
        {
            ID = -1;
            Name = string.Empty;
            Salary = 0;
        }
        public Employee(int id, string name, float salary)
        {
            ID = id;
            Name = name;
            Salary = salary;
        }
        public void DisplayName()
        {
            Console.WriteLine("Name : " + Name);
        }
        public void PrintSalary()
        {
            Console.WriteLine("Salary : " + Salary);
        }
        public void displayemp(string name)
        {
            Console.WriteLine("Name : " + name);
        }

    }

早期綁定是已知該類中的屬性和方法,只要實例化類后,可以直接調用類中的方法,如下所示:

class Program
    {
        static void Main(string[] args)
        {
            // Early Binding
            Employee employee = new Employee();
            employee.Name = "Larissa";
            employee.ID = 64;
            employee.Salary = 3000;

            employee.DisplayName();
            employee.PrintSalary();

            Console.Read();
        }
    }

后期綁定需要使用System.Reflection獲取類中的方法和屬性。這種后期綁定的方法大量的被使用在IDE和UI設計中,如下所示:

class Program
    {
        static void Main(string[] args)
        {
            Type _type = Type.GetType("Binding.Employee");
            Console.WriteLine(_type.FullName);
            Console.WriteLine(_type.Namespace);
            Console.WriteLine(_type.Name);

            PropertyInfo[] info = _type.GetProperties();
            foreach(PropertyInfo propinfo in info)
            {
                Console.WriteLine(propinfo.Name);
            }

            MethodInfo[] methods = _type.GetMethods();
            foreach(MethodInfo methodinfo in methods)
            {
                Console.WriteLine(methodinfo.ReturnType.Name);
                Console.WriteLine(methodinfo.Name);
            }

            Console.Read();
        }
    }

運行結果如圖所示:

早期綁定易於開發且會比后期綁定運行的更快,因為不需要類型轉換。此外早期綁定中出錯的可能性較小。后期綁定的優點是可以保存對任何對象的引用。

 參考文獻:https://www.codeproject.com/Tips/791017/Reflection-Concept-and-Late-Binding-in-Csharp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM