gpt4 book ai didi

c# - 强类型数据表/数据集中的可空类型 - 解决方法?

转载 作者:IT王子 更新时间:2023-10-29 04:22:16 26 4
gpt4 key购买 nike

强类型数据表支持“可空”字段类型,但设计器不允许您将任何值类型字段的设置更改为“允许空值”。 (即:字符串类型允许为空,但 int 类型不允许)。

解决方法是在您想要获取 Myfield 时随时调用 IsMyFieldNull()。如果您在 MyField 确实包含 null 时访问它,它会引发异常。

这是一个非常令人头疼的问题,此外还会在出现 null 时导致应用程序崩溃时导致许多运行时错误。多年来我一直向微软提示这个问题,但 visual studio 的每个新版本仍然不允许使用可为 null 的值类型。

我的问题:有人知道可以用来解决这个主要缺点的奇特扩展方法吗?

最佳答案

如果您使用的是 .Net 3.5 或更高版本,这些扩展可能对您有用: http://msdn.microsoft.com/en-us/library/system.data.datarowextensions.field.aspx

根据文档,它完全支持可空类型。它允许您使用像

这样的结构
MyRow.Field<int?>("MyField") 

并且如果您将它分配给正确类型的现有变量或从正确类型的现有变量分配它,编译器可以自动推断类型并且您可以省略类型说明符,使其尽可能短

int? myVar = MyRow.Field("MyField");
MyRow.Field("MyField") = myVar;

仍然不完美,但比在任何地方都必须使用 IsMyFieldNull() 等更清晰。

哦,如果你想在列名拼写错误方面更加安全,你可以使用类似的东西

MyRow.Field(MyTable.MyFieldColumn)

不要忘记添加对 System.Data.DataSetExtensions 的引用。

关于c# - 强类型数据表/数据集中的可空类型 - 解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3367272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com