将 null 分配给可为空的属性 C#
本文关键字:属性 null 分配 | 更新日期: 2023-09-27 18:35:05
我一直在寻找、阅读和尝试不同的事情,但我可以完成最基本的事情。
我有一个具有多个可为空属性的自定义对象。问题是,当此属性已有数据时,它不会设置为 null。为简单起见,本文简化了代码。
此方法获取传递的数据以修改数据库中的记录。因此,在我创建订阅对象的行中,我使用参数来了解它是新记录还是正在修改现有记录。当我想修改现有记录时,它会在数据库中查找记录,并返回用数据库中的数据填充的对象。然后我用新数据覆盖对象属性并再次保存。正在发生的事情是,如果我想覆盖具有属性 FechaAlta 数据的现有记录,并将此日期设置为 null,则对象属性 FechaData 不会设置为 null。希望它足够清楚。
public string ProcessSubscription(string cRMID, string suscripID, DateTime? fechaAlta = null)
{
Subscription subscription = null;
....
subscription = new Suscription(modify)
....
subscription.CRMID = cRMID;
subscription.SuscripID = suscripID;
subscription.FechaAlta = fechaAlta;
....
return _update.UpdateEntity(subscription);
}
这是调试器在该行之后显示的内容。我试图将其设置为 null 以进行测试.来自调试器的图像
我发现了问题。这是类属性的 set 方法中的代码问题。仅当值 != null 时,我才设置该属性。我真的很笨谢谢大家。
你的问题有些缺乏。 但是从我收集的信息来看,您想在满足某些条件时在函数中将 fechaAlta 设置为 null? 如果是这种情况,您的函数甚至不会尝试将 fechaAlta 设置为 null。 我所看到的只是您将fechaAlta设置为"可选参数",这意味着如果在调用ProcessSubscription()时未指定fechaAlta,则只有这样它才会为空。 但是,如果在调用 ProcessSubscription() 时指定了 fechaAlta IS,则它永远不会为 null,因为您没有将其设置为 null。
如果调用此函数,并且 dateTime 不为空,则它永远不会为空:
ProcessSubscription("string1","string2", dateTime);
仅当您调用以下内容时,它才会为 null:
ProcessSubscription("string1","string2");
或
ProcessSubscription("string1","string2", null);
您需要:
subscription.FechaAlta = null;
或。。。
fechaAlta = null;
。在您的函数中的某个地方。
函数中将其设置为 null 的逻辑在哪里?