.net 无法从“System.Guid?”转换为“System.Guid”

vx6bjr1n  于 2022-11-26  发布在  .NET
关注(0)|答案(5)|浏览(475)

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

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

yiytaume1#

请参阅MSDN
在这种情况下,只需使用myNullableVariable.Value(如果您确定它有值),如果没有,则使用(myNullableVariable.HasValue)?myNullableVariable.Value:somedefaulthere
如果在nullable真的为null时,不关心默认值是否为特定值,也可以使用GetValueOrDefault()
最后一种方法是:myNullableVariable.Value ?? defaultvalue .
请看,从技术上讲,MyType?变量实际上是Nullable<MyType>。两者之间没有隐式或显式的强制转换,因此您需要做的是手动从Nullable中提取值。我列出的第三种方法是最简洁(也是最好的?)的方法,在大多数情况下可能是最好的。

htrmnn0y

htrmnn0y2#

使用Guid?.Value属性将“System.Guid?”转换为“System.Guid”。如下例所示

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

mrwjdhj33#

首先初始化guid变量。

Guid yourGuid= Guid.NewGuid()

然后设置所需值,例如:

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

5jdjgkvh4#

无法从“System.Guid?”转换为“System.Guid”
您正尝试将类型System.Guid?保存到模型中的类型System.Guid,您可以通过删除问号将System.Guid?编辑为System.Guid。
或上述RCIX答案

puruo6ea

puruo6ea5#

只需在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");
}

相关问题