将 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 以进行测试.来自调试器的图像

将 null 分配给可为空的属性 C#

我发现了问题。这是类属性的 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 的逻辑在哪里?