zoukankan      html  css  js  c++  java
  • c#泛型方法返回null的问题

    c#的泛型方法实现和java实现有点不同,在java中,所有的泛型方法运行时类型必须是引用类型,所以和非泛型一样可以返回null。

    但是c#中有点不同,可以同时是值类型和引用类型,而值类型不能赋值null,所以不能在泛型方法中直接返回null,因为null不能赋值给值类型。所以在泛型方法中需要返回特定类型的默认值,也就是对于引用类型null,值类型则是约定的默认值,如下所示。

    在泛型类和泛型方法中产生的一个问题是,在预先未知以下情况时,如何将默认值分配给参数化类型 T:

    • T 是引用类型还是值类型。

    • 如果 T 为值类型,则它是数值还是结构。

    给定参数化类型 T 的一个变量 t,只有当 T 为引用类型时,语句 t = null 才有效;只有当 T 为数值类型而不是结构时,语句 t = 0 才能正常使用。  解决方案是使用 default 关键字,此关键字对于引用类型会返回 null,对于数值类型会返回零。  对于结构,此关键字将返回初始化为零或 null 的每个结构成员,具体取决于这些结构是值类型还是引用类型。  对于可以为 null 的值类型,默认返回 System.Nullable<T>,它像任何结构一样初始化。 

        public class MyMethod1
        {        
            public K Get1<K>(int num)

            {

                //没有定义K类型的变量,可以使用default(K)返回泛型参数的默认值

                return default(K);
            }
        }

  • 相关阅读:
    OVER子句
    处理字符数据排序规则(Collation)
    时间管理小强升职记读书笔记
    SQLServer2005查找定位性能瓶颈和性能调优
    zz数据库查询性能优化
    SqlBulkCopy实现数据批量复制(ZZ)
    SQLServer2005大数据量没有返回值不能应用索引的问题
    工作DNA读书笔记
    zz很有用的生活小窍门
    Excel单引号作用与清除方法总结
  • 原文地址:https://www.cnblogs.com/zhjh256/p/5966389.html
Copyright © 2011-2022 走看看