C# 检查int属性是否具有从HTTP请求分配给它的值

C# 检查int属性是否具有从HTTP请求分配给它的值,c#,http,asp.net-core,asp.net-core-webapi,.net-5,C#,Http,Asp.net Core,Asp.net Core Webapi,.net 5,大家好,程序员们 我有一个简单的域,表示如下: public class Person { public int Id { get; set; } public string Name { get; set; } public List<Quote> Quotes { get; set; } = new List<Quote>(); } 我正在ASP.NET核心中开发一个PUT端点,该端点从HTTP请求主体中获取Quote对象,以便更新Quote

大家好,程序员们

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

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Quote> Quotes { get; set; } = new List<Quote>();
}
我正在ASP.NET核心中开发一个PUT端点,该端点从HTTP请求主体中获取Quote对象,以便更新Quote文本。然而,我想确保说这句话的人不会随着文字的变化而改变

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

{
    "id": 69,
    "text": "nice quote"
}
由于
PersonId
不一定要包含在内,它会作为
null
返回,因此在与当前值进行比较时,我必须忽略它,以查看它是否不同,但C#编译器不允许我这样做,因为整数是不可为null的值类型,使
PersonId==null
成为无意义的语句

所以我的问题是:有没有一种方法可以在POCO类中不使用
int?
检查整数的“无值”呢


如果需要进一步的信息,请告诉我。谢谢。

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

publicsvoidput(报价)
{
if(quote.PersonId==默认值)
{
//person id是int(0)的默认值
}
}

查看您是否不想将PersonId发送回去-不要这样做。创建另一个类型来表示没有PersonId属性的返回的Quote。我在链接帖子中尝试了这种方法,虽然它有效,但现在我在响应中发送了布尔字段以及相关字段LOL,这有点尴尬。无论如何,谢谢你的洞察力。虽然还没有尝试过@Fabio的解决方案,但这似乎是对我来说最简单的方法,但我曾经在一个地方工作过,那里有一些客户的ERP数据库xD中的ID为负数
{
    "id": 69,
    "text": "nice quote"
}