はい、一般的に動的を使用することは悪い習慣であると考えられています。
動的呼び出し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 中国語 Web サイトの他の関連記事を参照してください。