在类型转换时我有一个简单的特殊处理功能:
private static void TestRecord<T>(RecordBase record, Action<T> action) where T : RecordBase
{
T answer = record as T;
if ((action != null) && (answer != null)) action(answer);
}
它将包含更多基于RecordBase类的验证,但目的很简单:检查对象是否为T类型,如果是,则调用特定操作。
问题在于行动本身。如果我这样称呼:
TestRecord<RecordSpecific>(answer, record => Console.WriteLine("* {0} => {1}", record.GetType().Name, record.Name));
IDE现在警告我记录可能为空。不,它不是,我可以安全地忽略该警告,但我喜欢让我的IDE免于此警告,我不想在操作中包含检查以确保它不为空。那么,有什么方法可以指定此操作始终具有非空值?