无法从'System.Guid?'转换?到'System.Guid'

时间:2010-01-01 11:51:45

标签: .net guid

有谁知道如何处理这个错误?

cannot convert from 'System.Guid?' to 'System.Guid'

5 个答案:

答案 0 :(得分:39)

请参阅MSDN

在这种情况下,只需使用myNullableVariable.Value(如果您确定它有值),或(myNullableVariable.HasValue)?myNullableVariable.Value:somedefaulthere,如果不是。

如果在可空值为空时默认值是特定值,那么也可以使用GetValueOrDefault()

最后一种方法是:myNullableVariable.Value ?? defaultvalue

从技术上讲,MyType?变量是一个Nullable<MyType>。两者之间没有隐式或显式转换,因此您需要手动从Nullable中提取值。我列出的第三种方式是最简洁(也是最好的)方式,在大多数情况下这可能是最好的。

答案 1 :(得分:4)

使用Guid?.Value属性来转换&#39; System.Guid?&#39;到&#39; System.Guid&#39;。如下例

 Obj GetValue(Guid yourID)
{
return FetchObject(yourID)
}
Void main()
{
Guid? passvalue;
Obj test = GetValue(passvalue.Value);
}

答案 2 :(得分:1)

首先初始化guid变量。

Guid yourGuid= Guid.NewGuid()

然后将值设置为您想要的值,例如:

 Guid defaultId = Guid.NewGuid();
 if (customerRow.GuardianState.Length > 2) {
 Guid StateId = record.StateId ?? defaultId;}

答案 3 :(得分:0)

无法转换为'System.Guid?'到'System.Guid'

你试图保存类型System.Guid?到类型系统.Guid 在你的模型中你可以编辑System.Guid?删除问号到System.Guid。

或 RCIX回答上面

答案 4 :(得分:0)

只需在 if 语句中使用 Nullable<T>.HasValue 来检查值是否为 null,然后您可以使用 Nullable<T>.Value 获取底层类型的值。

int? a = null;
if(a.HasValue){
  Console.WriteLine($"a has value {a.Value}");
} else {
  Console.WriteLine("No value found in a");
}