首页 > 解决方案 > 检查一个 int 属性是否具有来自 HTTP 请求的分配值

问题描述

各位程序员朋友们好,

我有一个简单的域表示如下:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Quote> Quotes { get; set; } = new List<Quote>();
}

public class Quote
{
    public int Id { get; set; }
    public string Text { get; set; }
    public Person Person { get; set; }  // Just a navigation property.
    public int PersonId { get; set; }   // The foreign key for Person.
}

我正在处理 ASP.NET Core 中的 PUT 端点,该端点从 HTTP 请求的正文中获取一个 Quote 对象,以更新报价文本。但是,我想确保说这句话的人没有随着文字一起被改变。

当作为 JSON 传递时,对象如下所示:

{
    "id": 69,
    "text": "nice quote"
}

由于PersonId不一定必须包含,它被发送回来null,因此在与当前值进行比较时我必须忽略它以查看它是否不同,但 C# 编译器不会让我这样做,因为整数是不可为空的值类型,做出PersonId == null无意义的陈述。

所以我的问题是:有没有办法在不使用int?POCO 类的情况下检查整数的“无价值”?

让我知道是否需要任何进一步的信息。谢谢你。

标签: c#httpasp.net-coreasp.net-core-webapi.net-5

解决方案


您可以检查 的默认值int,即 0。我假设在某种数据存储中,您的人员 ID 永远不会等于 0(甚至小于 0)。

public void Put(Quote quote) 
{
   if (quote.PersonId == default) 
   {
      // person id is the default value of int (0)
   }
}

推荐阅读