如何从`Object?`nullable中取出一个对象?

时间:2012-10-23 02:15:42

标签: c# nullable

我正在尝试使用可选参数SpriteFont = myFont创建一个方法。因为spritefont不是编译时常量,所以我不能使用它,所以我决定尝试SpriteFont? = null

void MyMethod(int x, SpriteFont? font = null)
{
    SpriteFont f;
    if (font == null) f = defaultFont; else f = font; // Cannot convert type 'Microsoft.Xna.Framework.Graphics.SpriteFont?' to 'Microsoft.Xna.Framework.Graphics.SpriteFont'
}

如何从SpriteFont中取出SpriteFont?

UPD:可能是默认情况下无法从可空转换为基本类型的类型的问题。 (SpriteFont)font仍导致“无法转换”。

UPD2:结果SpriteFont默认为可为空。不过,我现在知道如何使用nonNullable?

3 个答案:

答案 0 :(得分:7)

您还可以使用??运算符:

f = font ?? defaultFont;

答案 1 :(得分:4)

使用.Value

f = font.HasValue ? font.Value : defaultFont;

答案 2 :(得分:2)

Nullable可以通过以下方式转换为非可空类型:

  • (Type)variable;
  • variable.Value