以下是我的代码:
class Phrase
{
public String Name { get; private set; }
public Head Head { get; private set; }
public Phrase? Complement { get; private set; }
public Phrase(String Name, Head Head, Phrase? Complement)
{
this.Name = Name;
this.Head = Head;
this.Complement = Complement;
}
}
Run Code Online (Sandbox Code Playgroud)
这导致编译时错误说明
"类型'短语'必须是不可为空的值类型,才能在泛型类型或方法'System.Nullable'中将其用作参数'T'
我正在试图做的是有一个可为空类变量Complement,并允许它在构造函数中进行设置.我该如何做到最好?
根据错误,Phrase已经是可以为空的类型了.这是因为它是一个类:
class Phrase
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
作为引用类型的类始终可以为空.为了使用Nullable<T>(及其?简写语法),类型必须是非可空的.哪个是原始类型还是struct:
struct Phrase
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
请注意,类和结构之间存在相当大的差异,除了它们是否可以为空.如果您想使类型为a struct,那么很容易对代码进行非常重要的更改.另一方面,如果您只是想null在该构造函数中允许,那么默认情况下,只需删除?构造.
| 归档时间: |
|
| 查看次数: |
544 次 |
| 最近记录: |