0

我正在尝试使用可选参数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'
}

我如何取出我SpriteFontSpriteFont?

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

UPD2:默认情况下可以SpriteFont为空。不过,我现在知道如何使用nonNullable?.

4

3 回答 3

7

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

f = font ?? defaultFont;
于 2012-10-23T02:18:31.503 回答
4

使用.Value

f = font.HasValue ? font.Value : defaultFont;
于 2012-10-23T02:18:01.153 回答
2

可以通过以下方式将 Nullable 转换为不可为空的类型:

  • (Type)variable;
  • variable.Value
于 2012-10-23T02:18:46.890 回答