![]() |
1
232
实际上只有两种可能性:
(因为值类型总是有一个默认的构造函数,所以对activator.createInstance的调用永远不会失败)。 |
![]() |
2
29
也可以将其作为扩展方法添加到System.Type:
|
![]() |
3
18
在我自己的系统中解决了这个问题,下面是一个在运行时正确确定任意类型的默认值的方法,该方法已经针对数千种类型进行了测试:
在这些示例中,getdefault方法在静态类defaultvalue中实现。使用如下语句调用此方法:
要将getDefault方法用作类型的扩展方法,请按如下方式调用它:
第二,类型扩展方法是一种更简单的客户机代码语法,因为它消除了在调用中引用包含defaultvalue类限定符的需要。 上述getdefault的运行时形式与原语c“default”关键字具有相同的语义,并产生相同的结果。 要使用getdefault的通用形式,可以访问以下函数:
对泛型窗体的调用可以是如下所示:
当然,上述getdefault的通用形式对于c来说是不必要的,因为它的工作方式与default(t)相同。它只对不支持“default”关键字但支持泛型类型的.NET语言有用。在大多数情况下,一般形式是不必要的。 一个有用的推论方法是确定一个对象是否包含其类型的默认值。为此,我还依赖以下IsObjectSettodeFault方法:
以上
|
![]() |
4
10
比如……
它产生以下输出:
|
![]() |
5
2
“默认值”是什么意思?所有引用类型(“类”)的默认值都为空,而所有值类型的默认值都将根据 this table . |
![]() |
6
1
这是一个函数,它将返回可为空类型的默认值(换句话说,它为两种类型都返回0
|
![]() |
Terio · Typescript:使用变量的值创建自定义类型 2 年前 |
![]() |
Kareem Adel · 创建函数类型(TypeScript接口) 2 年前 |
![]() |
MatÄj VondráÄek · 如何在c#方法中传递类型? 2 年前 |
![]() |
kreo · 为什么&[T]参数也接受&Vec? 6 年前 |
![]() |
Jiji · 将简单对象强制转换为简单的通用接口 6 年前 |