C# 前期绑定 和 后期绑定 有啥区别呀???

时间:2023-02-25 23:37:30
上课时听老师说过c# 既有 前期绑定 又有后期绑定


自己知道 c#的后期绑定类似与java的动态绑定


系统对c#的前期绑定是如何处理的?还有就是程


序中对变量分配内存的过程是操作系统负责呢,

还是编译系统,或者是其他?与详细越好 谢谢了!

12 个解决方案

#1


前期绑定相当于直接引用一个类 声明并实例化
后期绑定在C#中一般应用反射,通过类名字符串来实例化一个类,在程序运行之前,对被实例化的类毫不知情
Assembly.Load(程序集).CreateInstance(命名空间.类)

#2


引用 2 楼 fengjian_428 的回复:
前期绑定相当于直接引用一个类 声明并实例化 
后期绑定在C#中一般应用反射,通过类名字符串来实例化一个类,在程序运行之前,对被实例化的类毫不知情 
Assembly.Load(程序集).CreateInstance(命名空间.类)

此贴正解

#3


2楼完全正确

#4


[code=BatchFile]publuc class A
{
   public virtual void eat()
   {
      ...
   }
   
   public void sing()
   {
      ...
   }
}

public class B : A
{
   public override void eat()   {
       ...
   }
}

public class C : A
{
   public new void sing()
   {
       ...
   }
}


A b = new B();
b.eat();      //后期绑定,是吗?
A c = new C();
c.sing()      //前期绑定?

[/code]

#5


基本也就那样,概念性的东西了解不是很深

#6


你是想问基于多态的晚期绑定哦

#7


引用 5 楼 any0007 的回复:
BatchFile codepubluc class A
{
   public virtual void eat()
   {
      ...
   }
   
   public void sing()
   {
      ...
   }
}

public class B : A
{
   public override void eat()   {
       ...
   }
}

public class C : A
{
   public new void sing()
   {
       ...
   }
}


A b = new B();
b.eat();      //后期绑定,是吗?
A c = new C();
c.sing()      //前期绑定?

直接这样实例化看不出什么意思的,而且你两个派生类并没有相同的方法啊

//这样
public Interface IA
{
 void dosomething();
}
public class B:IA
{
 public void dosomething(){}
}
public class C:IA
{
 public void  dosomething(){}
}

//后期绑定这样在调用do方法的时候视传入引用上是哪个对象来决定调用谁的dosomething()方法
public static class Dosomething
{
 public void do(IA ia)
 {
  ia.dosomething();
 }
}

#8


学习

#9


该回复于2011-02-27 09:28:43被版主删除

#10


学习

#11


学习学习了!

#12


学习

#1


前期绑定相当于直接引用一个类 声明并实例化
后期绑定在C#中一般应用反射,通过类名字符串来实例化一个类,在程序运行之前,对被实例化的类毫不知情
Assembly.Load(程序集).CreateInstance(命名空间.类)

#2


引用 2 楼 fengjian_428 的回复:
前期绑定相当于直接引用一个类 声明并实例化 
后期绑定在C#中一般应用反射,通过类名字符串来实例化一个类,在程序运行之前,对被实例化的类毫不知情 
Assembly.Load(程序集).CreateInstance(命名空间.类)

此贴正解

#3


2楼完全正确

#4


[code=BatchFile]publuc class A
{
   public virtual void eat()
   {
      ...
   }
   
   public void sing()
   {
      ...
   }
}

public class B : A
{
   public override void eat()   {
       ...
   }
}

public class C : A
{
   public new void sing()
   {
       ...
   }
}


A b = new B();
b.eat();      //后期绑定,是吗?
A c = new C();
c.sing()      //前期绑定?

[/code]

#5


基本也就那样,概念性的东西了解不是很深

#6


你是想问基于多态的晚期绑定哦

#7


引用 5 楼 any0007 的回复:
BatchFile codepubluc class A
{
   public virtual void eat()
   {
      ...
   }
   
   public void sing()
   {
      ...
   }
}

public class B : A
{
   public override void eat()   {
       ...
   }
}

public class C : A
{
   public new void sing()
   {
       ...
   }
}


A b = new B();
b.eat();      //后期绑定,是吗?
A c = new C();
c.sing()      //前期绑定?

直接这样实例化看不出什么意思的,而且你两个派生类并没有相同的方法啊

//这样
public Interface IA
{
 void dosomething();
}
public class B:IA
{
 public void dosomething(){}
}
public class C:IA
{
 public void  dosomething(){}
}

//后期绑定这样在调用do方法的时候视传入引用上是哪个对象来决定调用谁的dosomething()方法
public static class Dosomething
{
 public void do(IA ia)
 {
  ia.dosomething();
 }
}

#8


学习

#9


该回复于2011-02-27 09:28:43被版主删除

#10


学习

#11


学习学习了!

#12


学习