是的,使用动态通常被认为是一种不好的做法。
动态调用C# 4.0 中引入的类型后期绑定是指系统仅在执行期间而不是编译期间检查对象的类型。这意味着用户,而不是程序员,负责发现潜在的错误。
使用动态的后果:
动态调用的替代方案:
考虑使用替代方法,例如:
1。接口虚拟调用:
public interface IInvoker { void InvokeMethod(); } public abstract class MyBaseClass : IInvoker { public abstract void InvokeMethod(); } public class MyClass : MyBaseClass { public override void InvokeMethod() { /* Do something */ } } // ... ((IInvoker)myBaseClassRef).InvokeMethod();
2.扩展方法:
public static class InvokerEx { public static void Invoke(this MyClass c) { /* Do something */ } } // ... myBaseClassRef.Invoke();
3.访客模式:
public interface IVisitor { void Visit(MyAnotherClass c); void Visit(MyClass c); } // ... IVisitor visitor = new MyVisitor(); myBaseClassRef.Accept(visitor);
4.通用方法:
public void InvokeMethod<T>(T instance) where T : IInvoker { instance.InvokeMethod(); } // ... InvokeMethod(myBaseClassRef);
当动态有用时:
在某些情况下,动态调用可以带来好处,例如:
但是,这些用途应仔细权衡潜在的缺点。在大多数情况下,替代方法可以提供更好的性能、类型安全性和可维护性。
以上是C# 中的动态调用是一种不好的做法吗?什么时候可以接受?的详细内容。更多信息请关注PHP中文网其他相关文章!