惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Troy Hunt's Blog
P
Proofpoint News Feed
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
K
Kaspersky official blog
Cyberwarzone
Cyberwarzone
T
Tor Project blog
Cisco Talos Blog
Cisco Talos Blog
S
Securelist
L
Lohrmann on Cybersecurity
Security Latest
Security Latest
T
Threatpost
H
Heimdal Security Blog
W
WeLiveSecurity
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
IT之家
IT之家
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
TaoSecurity Blog
TaoSecurity Blog
A
About on SuperTechFans
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
量子位
Stack Overflow Blog
Stack Overflow Blog
Know Your Adversary
Know Your Adversary
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
AI
AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
Vercel News
Vercel News
C
Cyber Attacks, Cyber Crime and Cyber Security
Latest news
Latest news
D
Darknet – Hacking Tools, Hacker News & Cyber Security
大猫的无限游戏
大猫的无限游戏
Forbes - Security
Forbes - Security

博客园 - 随风逝去(叶进)

MySQL分表(Partition)学习研究报告 用WPF+MongoDB开发房产信息收集器(4)——房产信息采集器总体介绍附程序下载 用WPF+MongoDB开发房产信息收集器(3)——MongoDB入门 用WPF+MongoDB开发房产信息收集器(2)——后台线程 用WPF+MongoDB开发房产信息收集器(1) 解决FireFox不能Debug Silverlight程序的问题 - 随风逝去(叶进) - 博客园 终于可以继续往下了! 回首2008 另类的二级域名实现方法 【更新 2008.10.16】触发C#Button的双击事件 触发C#Button的双击事件 到底要不要去面试? 类和对象 【C#食谱】【杭帮菜】菜单2:写一个TCP客户端 C#Winform下用正则表达式限制TextBox只能输入数字 【C#食谱】【杭帮菜】菜单1:写一个TCP服务端 【C#食谱】【川菜】菜单1:列出被引用的程序集 实现需求工程的成功方法 实现需求工程的成功方法——难度:高;影响:低
【C#食谱】【面食】菜单7:用默认值初始化泛型变量
随风逝去(叶进) · 2008-07-23 · via 博客园 - 随风逝去(叶进)

问题: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。