问题:ee6d64b9

你有一个泛型类包含一个由类自身定义类型参数的变量。由于对泛型对象的约束,你希望这个变量被初始化为其默认值。

解决方法:

非常简单的方法:只要使用default关键字初始化其值为默认值即可:

    public class DefaultValueExample<T>
    {
        T data = default(T);

        public bool IsDefaultData()
        {
            T temp = default(T);

            if (temp.Equals(data))
            {
                return (true);
            }
            else
            {
                return (false);
            }
        }
        
        public void SetData(T val)
        {
            data = val;
        }
    }

使用这个类的代码可以参考这里:

using System;
using System.Collections.Generic;
using System.Text;

namespace SetDefaultValueExample
{
    class Program
    {
        static void Main(string[] args)
        {
            DefaultValueExample<int> dv = new DefaultValueExample<int>();

            // 检查是否被设置为默认值,如果是返回true
            bool isDefault = dv.IsDefaultData();
            Console.WriteLine("Initial data: " + isDefault);

            // 设置数据
            dv.SetData(100);
            // 再次检查,这个时候应该返回false
            isDefault = dv.IsDefaultData();
            Console.WriteLine("Set data: " + isDefault);
        }
    }

    public class DefaultValueExample<T>
    {
        T data = default(T);

        public bool IsDefaultData()
        {
            T temp = default(T);

            if (temp.Equals(data))
            {
                return (true);
            }
            else
            {
                return (false);
            }
        }

        public void SetData(T val)
        {
            data = val;
        }
    }
}

当初始化一个相同类型参数的变量时,你不能只是设置这些变量为null。如果这个变量是值类型,比如说int或char,那会是什么呢?那将不能运行,因为值类型不能是null的。你也许会想到一个nullable类型,比如long?或者Nullable<long>,可以被设为空。然而,编译器无法知道用户将使用什么类型参数去构造这个类型。

default关键字允许你告诉编译器在编译时,这个类型的默认值将被使用。如果提供的类型参数是数值(int,long,decimal),那么默认值将会是0。如果是引用类型,那么默认值将会是null。如果是结构体,那么这个结构体的默认值将根据其每一个字段的类型设为0或null。

转载于:https://www.cnblogs.com/adaiye/archive/2008/07/23/defaultValue.html

【C#食谱】【面食】菜单7:用默认值初始化泛型变量相关推荐

  1. 计算机用户变量path的初值,Windows10系统环境变量默认值(PATH变量原始值)

    有时用户会修改windows10专业版系统的环境变量,改到后面原来是什么的也记不得了,想要改回去还要去别的电脑查看,这里小编分享下win10专业版环境变量的默认初始值. 用户变量 Path: %USE ...

  2. java 泛型 默认值_java泛型 Java泛型的入门知识

    在学习java的过程当中,我们就肯定会接触到java泛型,那么你知道java泛型是什么吗,有关java的使用方法又有哪些呢?今天小编就从java泛型的使用方法来了解一下java泛型这一知识. java ...

  3. JavaScript中实现函数重载和参数默认值

    2019独角兽企业重金招聘Python工程师标准>>> 参数默认值是指在调用函数时,若省略了某个实参,函数会自动为该参数分配一个默认值,使得函数调用的方便性和灵活性大大提高. 举个例 ...

  4. 【Groovy】闭包 Closure ( 自定义闭包参数 | 自定义单个闭包参数 | 自定义多个闭包参数 | 闭包参数默认值指定 )

    文章目录 一.自定义闭包参数列表 1.定义一个自定义参数的闭包 2.定义多个自定义参数的闭包 3.为闭包参数指定默认值 二.完整代码示例 一.自定义闭包参数列表 如果要向 闭包 中 , 传递多个参数 ...

  5. java参数注解pam_java – 使用xmlelement defaultvalue注释指定默认值的简单方法

    我通过JAXB有一个简单的pojo注释类: public class MyPojo implements Serializable { private final static long serial ...

  6. easyui validatebox设置默认值时 去掉校验

    //校验失败时 <input id="email" type="text" class="easyui-validatebox validate ...

  7. 【ES6 教程】第一章 新的ES6语法04—如何设置函数参数的默认值

    英文 | https://www.javascripttutorial.net 翻译 | 杨小爱 在本节教程中,我们将学习如何在 ES6 中处理 JavaScript 默认参数. TL;DR func ...

  8. php 下拉菜单 不提交 选中的值,在html中怎样可以做到下拉菜单提交后保留选中值不返回默认值...

    这次给大家带来在html中怎样可以做到下拉菜单提交后保留选中值不返回默认值,在html中做到下拉菜单提交后保留选中值不返回默认值的注意事项有哪些,下面就是实战案例,一起来看一下. 代码如下: // 获 ...

  9. thinkphp实现动态下拉菜单(补充 设置默认值)

    在下拉菜单中的选项 用动态方式添加 提高项目可扩展性 HTML部分 <span style="font-family:KaiTi_GB2312;font-size:18px;" ...

最新文章

  1. STM32使用另外两种方法使LED灯闪烁
  2. Linux内核--各种宏定义
  3. Keras框架训练模型保存及载入继续训练
  4. 推荐15款响应式的 jQuery Lightbox 插件
  5. linux usb3.0改2.0,TX1入门教程硬件篇-切换USB2.0与USB3.0
  6. Express全系列教程之(五):Express的中间件
  7. 1024程序员:算法仓鼠创业
  8. 揭秘鲜为人知的酒店管理“黑洞”
  9. CMR(IF=50.129)重磅综述|肠-脑轴新疗法:肠道菌群如何影响人类神经系统疾病
  10. Unity 性能优化 之 非常酷的SRP Batcher!
  11. 随机访问介质访问控制 —— ALOHA协议
  12. 丛书【数据库面试笔试宝典】已在京东、淘宝、天猫等各大电子商城销售
  13. Python开发【模块】:Urllib(二)
  14. jy-12-SPRINGMYBATIS02——云笔记04-刘苍松
  15. 282.软件体系结构的风格与模式
  16. iOS-推送自定义提示音
  17. Google blockly简介(二)Blockly Developer Tools使用
  18. electron+vue3全家桶+vite项目搭建【九】集成vite-plugin-mock-server 模拟后端请求
  19. 计算机驱动空间不够,为何我的电脑在安装显卡驱动的时候就是安装不成功,提示是磁盘空间不足,但是其余的磁盘都有130GB左右...
  20. Kubernetes(十一)Kubernetes ingress的实现原理

热门文章

  1. 七夕节送给女友的10个经典网站
  2. 推荐个程序员找女朋友的网站
  3. 《我的早更女友》影评—珍惜身边人
  4. 用户名和计算机名命名规范
  5. 解决,vlc播放虎牙url只有画面没声音的问题。
  6. Joomla!开发中数据库相关知识和应用 【转】
  7. HTML期末作业-仿美食菜谱网站模板(HTML+CSS+JavaScript)
  8. Python+selenium自动化-js处理日历控件(修改readonly属性)
  9. Intellij IDEA 快捷键【清晰整理】
  10. 一个23跨考计算机的自叙