c# - 检查一个 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 类的情况下检查整数的“无价值”?
让我知道是否需要任何进一步的信息。谢谢你。
解决方案
您可以检查 的默认值int
,即 0。我假设在某种数据存储中,您的人员 ID 永远不会等于 0(甚至小于 0)。
public void Put(Quote quote)
{
if (quote.PersonId == default)
{
// person id is the default value of int (0)
}
}
推荐阅读
- python - 无法让 OpenPyXl 删除行
- python - 过滤没有空白列的熊猫
- c++ - c++中带默认参数的函数重载
- python - python脚本有效,但heroku崩溃
- validation - 在 MVC 中,如何验证是否使用动态创建的复选框选中了至少一个复选框?
- linux - 使用 LetsEncrypt 通配符证书签署 CSR
- python - Python:将字符串中的数字乘以常数
- javascript - Antd Upload的Dragger组件上传跨域发生
- highcharts - 如何将自定义多选添加到 highcharts 图例?
- ruby - 使用 Ruby Sequel 插入带有硬编码值的选择