【发布时间】:2010-01-01 11:51:44
【问题描述】:
有谁知道如何处理这个错误?
cannot convert from 'System.Guid?' to 'System.Guid'
【问题讨论】:
有谁知道如何处理这个错误?
cannot convert from 'System.Guid?' to 'System.Guid'
【问题讨论】:
见MSDN。
在这种情况下,只需使用myNullableVariable.Value(如果您确定它有值),或者使用(myNullableVariable.HasValue)?myNullableVariable.Value:somedefaulthere(如果不是)。
如果不关心默认值是否为特定值而可空对象确实为空,也可以使用GetValueOrDefault()。
最后一种方法是:myNullableVariable.Value ?? defaultvalue。
看,从技术上讲,MyType? 变量实际上是 Nullable<MyType>。两者之间没有隐式或显式转换,因此您需要做的是手动从Nullable 中提取值。我列出的第三种方式是最简洁(也是最好?)的方式,在大多数情况下可能是最好的。
【讨论】:
使用 Guid?.Value 属性转换 'System.Guid?'到“System.Guid”。如下例
Obj GetValue(Guid yourID)
{
return FetchObject(yourID)
}
Void main()
{
Guid? passvalue;
Obj test = GetValue(passvalue.Value);
}
【讨论】:
首先初始化 guid 变量。
Guid yourGuid= Guid.NewGuid()
然后设置你想要的值,例如:
Guid defaultId = Guid.NewGuid();
if (customerRow.GuardianState.Length > 2) {
Guid StateId = record.StateId ?? defaultId;}
【讨论】:
无法从“System.Guid”转换?到'System.Guid'
您正在尝试保存类型 System.Guid?到类型 system.Guid 在您的模型中,您可以编辑 System.Guid?通过删除问号转到 System.Guid。
或 上面的RCIX回答
【讨论】:
只需在 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");
}
【讨论】: