C# default(T)关键字
C#关键词default函数,default(T)可以得到该类型的默认值.
C#在类初始化时,会给未显示赋值的字段、属性赋上默认值,但是值变量却不会。
值变量可以使用默认构造函数赋值,或者使用default(T)赋值。
默认构造函数是通过 new 运算符来调用的,如下所示:
int myInt = new int();
default(T)如下所示:
int myInt = default(int);
以上语句同下列语句效果相同:
int myInt = 0;
请记住:在 C# 中不允许使用未初始化的变量。
default(T)得到的默认值参考表:
值类型	默认值
bool	false
byte	0
char	‘\0’
decimal	0.0M
double	0.0D
enum	表达式 (E)0 产生的值,其中 E 为 enum 标识符。
float	0.0F
int	0
long	0L
sbyte	0
short	0
struct	将所有的值类型字段设置为默认值并将所有的引用类型字段设置为 null 时产生的值。
uint	0
ulong	0
ushort	0
引用类型	null
之所以会用到default关键字,是因为需要在不知道类型参数为值类型还是引用类型的情况下,为对象实例赋初值。考虑以下代码:
class TestDefault<T>
    {
        public T foo()
        {
            T t = null; //???
            return t;
        }
    }
如果我们用int型来绑定泛型参数,那么T就是int型,那么注释的那一行就变成了 int t = null;显然这是无意义的。为了解决这一问题,引入了default关键字:
class TestDefault<T>
    {
        public T foo()
        {
                return default(T);
        }
    }
---------------------
C# default(T)关键字的更多相关文章
- C# 关键字【转】
		
C#中的关键字 关键字是对编译器具有特殊意义的预定义保留标识符.它们不能在程序中用作标识符,除非它们有一个 @ 前缀.例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字. 下面是列 ...
 - T-SQL中default值的使用
		
今天介绍一下通过T-SQL语句来创建表时使用default的关键字来自动使用默认值,这个关键字和其它的如:identity,primary key ,not null ,unique等不是相同,这里简 ...
 - 【C#学习笔记之一】C#中的关键字
		
C#中的关键字 关键字是对编译器具有特殊意义的预定义保留标识符.它们不能在程序中用作标识符,除非它们有一个 @ 前缀.例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字. 下面是列出的 ...
 - 命名空间出错 namespace Web.Skin.@default
		
namespace Web.Skin.default会报错 因为default是关键字/保留字,所以需要在前面加@符号; namespace Web.Skin.@default
 - PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库
		
最近准备下PostgreSQL数据库开发的相关知识,本文把总结的PPT内容通过博客记录分享,本随笔的主要内容是介绍PostgreSQL数据库的基础信息,以及如何在我们的开发框架中使用PostgreSQ ...
 - spring annotation简述
		
一.Annotation基本概念 Annotation是jdk5以后出现的新特性,在jdk中,其内置了许多自己的Annotation,例如@Override,@SuppresWarning,@Depr ...
 - ORacle初级题
		
一. 选择(每题1分,共15分) 1.在linux系统中,可以通过以下命令查看内核版本(). * A.who B.hostname C.uname -r D.release 2.登入linux系统后, ...
 - sql插入删除表内字段基础操作
		
1 取得表格资讯 1.1 DESCRIBE指令 「DESCRIBE」是MySQL资料库提供的指令,它只能在MySQL资料库中使用,这个指令可以取得某个表格的结构资讯,它的语法是这样的: 你在MySQL ...
 - LINQ标准查询操作符(四)   —AsEnumerable,Cast,OfType,ToArray,ToDictionary,ToList,ToLookup,First,Last,ElementAt
		
十.转换操作符 转换操作符是用来实现将输入对象的类型转变为序列的功能.名称以“As”开头的转换方法可更改源集合的静态类型但不枚举(延迟加载)此源集合.名称以“To”开头的方法可枚举(即时加载)源集合并 ...
 
随机推荐
- php 弹窗案例
			
<?php // 弹出对话框并且返回原来的页面 echo "<script language=\"JavaScript\">\r\n"; ec ...
 - MySQL DataType--定点数(Fixed-Point Types)学习
			
DECIMAL和NUMERIC MySQL支持两种定点数类型:DECIMAL和NUMERIC,而NUMERIC实现为DECIMAL,因此MySQL中DECIMAL和NUMERIC等价相同. 如使用下面 ...
 - 离线安装Kubernetes
			
离线安装Kubernetes 环境准备: systemctl stop firewalld systemctl disable firewalld  关闭selinux  sed -i 's/^S ...
 - Linux命令——chgrp、chown、chmod
			
简介 这三个命令都用于更改文件permission(权限).即下图红框位置 除此之外还有个“连结”,那个指的是硬链接,不是软连接.FS使用inode区分不同文件,而目录树使用文件名区分不同文件,因此可 ...
 - jquery 内容筛选选择器
			
基本筛选选择器针对的都是元素DOM节点,如果我们要通过内容来过滤,jQuery也提供了一组内容筛选选择器,当然其规则也会体现在它所包含的子元素或者文本内容上 注意事项: :contains与:has都 ...
 - YES, There is No such thing as a free lunch
			
软件行业本身就建立在copy的基础上的,据说视窗both Windows and Mac OS都借鉴了施乐的. 国内的很多的软件质量真的好差呀. https://queue.acm.org/detai ...
 - MySQL与安全
			
说到MySQL数据库的安全性,可能有大量的相关话题,下面将对几个关键问题进行概括性描述. (1)安全的一般性因素.包括使用强密码,禁止给用户分配不必要的权限,防止SQL注入攻击. (2)安装步骤的安全 ...
 - Git的工作流程
			
git的工作流程为: 克隆Git资源作为工作目录 在克隆的资源上添加或者修改文件 如果别人修改了,你可以更新资源 在提交前查看修改 提交修改 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交 ...
 - 怎样把txt文档转换成csv文件?
			
其实csv就是逗号隔开的一行一行的数据, 如果每行数据中都是用逗号分隔的,直接把文件后缀txt改成csv就行了. 用python搞定: import numpy as np import pandas ...
 - Django 中使用redis
			
Django使用redis 方式一,使用Django-redis模块 #安装: pip3 install django-redis CACHES = { "default": ...