有谁知道如何处理这个错误?
cannot convert from 'System.Guid?' to 'System.Guid'
答案 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");
}