В C#, если у меня естьЯвляется ли метод перегрузки полиморфизмом Раннее связывание в C#?
public class BaseClass
{
//BaseClass implementation
}
public class Derived : BaseClass
{
//Derived implementation
}
public class AnotherClass
{
AnotherClass(BaseClass baseClass)
{
//Some code
}
AnotherClass(Derived derived) : this(derived as BaseClass)
{
//Some more code
}
}
, а затем сделать:
BaseClass baseVariable = new Derived();
AnotherClass anotherVariable = new AnotherClass(baseVariable);
Это приведет к раннему связыванию, вызывая метод AnotherClass(BaseClass)
.
Вместо этого, если я бросил его, используя dynamic
ключевое слово - или экземпляр переменной с динамическим, а затем передать его в качестве аргумента конструктора, то AnotherClass(Derived)
будет вызван:
BaseClass baseVariable = new Derived();
//This will instantiate it using the AnotherClass(Derived)
AnotherClass anotherVariable = new AnotherClass(baseVariable as dynamic);
Является ли метод перегрузки рано связан (Оценивается при компиляции время) в C#? Это значение имеет ли какой-либо другой способ или трюк , чтобы определить вызванный в основном вызов другого конструктора классов, чтобы применить вызов конструктора, который принимает в основном аргумент типа основного типа в моем случае без использования dynamic
или отражения ?
Вы не создаете 'AnotherClass' в любом месте, поэтому я не вижу, насколько релевант второй фрагмент. –
Обратите внимание, что 'new AnotherClass (base as dynamic)' даже не будет компилироваться, так как 'base' не является допустимым выражением самостоятельно. –
Вопрос обновлен. Я скучаю по чему-то еще? –