これはどのようにして完全にコンパイルされ、動作するのか分かりません。プロパティを新しいタイプでオーバーライドするにはどうすればよいですか?
ことが可能である場合、それをオーバーライドする場合(Nullable<bool>
からbool
およびint
からNullable<int>
に)プロパティの種類を変更するため?
public class Program
{
public static void Main(string[] args)
{
var testBase = new BaseClass();
var testDerived = new DerivedClass();
Console.WriteLine("'" + Convert.ToString(testBase.BaseInt) + "'");
Console.WriteLine("'" + Convert.ToString(testDerived.BaseInt) + "'");
Console.WriteLine("'" + Convert.ToString(testBase.BaseBoolNullable) + "'");
Console.WriteLine("'" + Convert.ToString(testDerived.BaseBoolNullable) + "'");
}
}
public class BaseClass
{
public bool? BaseBoolNullable { get; set; }
public int BaseInt { get; set; }
}
public class DerivedClass : BaseClass
{
public new bool BaseBoolNullable { get; set; }
public new int? BaseInt { get; set; }
}
出力:
'0'
''
''
'False'
それはこのようなコードを書くための大きなコードのにおいです私の質問で?道徳的に間違っているか何かのように – ibiza
必ずしもそうではありません。それはあなたがしようとしていることによると思います。 'testDerived.BaseInt'を参照すると自動的にベース' BaseInt'プロパティが使用されるため、ベースクラスと派生クラスでヌル入力と非ヌル入力を切り替える必要がない場合は、もっと簡単になります。 –
2番目の例はコンパイルされません。 – ibiza