c# - 这是使用泛型处理数据库中空值读取的安全有效方法吗?

标签 c# .net generics

我一直在玩泛型,希望我能得到一些关于我创建的函数的反馈或建议,以帮助处理从数据库中读取空值。我主要关心的是 if 语句。有没有更好的方法来确定 T 是否是字符串等?谢谢。

public static T CheckNull<T>(object value)
    {
        if ((value != null) && value.Equals(DBNull.Value))
        {
            if (object.ReferenceEquals(typeof(T), typeof(String)))
                value = string.Empty;
            else if (object.ReferenceEquals(typeof(T), typeof(Boolean)))
                value = false;
            else
                value = null;
        }
        return (T)value;
    }

最佳答案

无论 T 的类型如何,您都可以回退到 default(T),它将为给定类型提供默认值 ( string.Empty0falsenull 等...):

value = default(T);

编辑:default(string) 会返回 null

关于c# - 这是使用泛型处理数据库中空值读取的安全有效方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1438888/

相关文章:

C#//vs///注释

c# - 是否可以仅使用键盘对 .NET DataGridView 列进行排序?

.net - 如何在数据库中存储数组?

java - 缩小继承的返回类型(涉及泛型)

Java 6 Map.get() 类型安全意外行为(?)

c# - WebBrowser - 空 DocumentText

c# - 如何获取和设置图像的属性项

c# - .NET - 扩展列表类中的 FindIndex() 编译错误

c# - 在另一个 Expression<Func> 中使用 Expression<Func> 映射 DTO 类

ios - 了解具有泛型约束的泛型