无法从“System.Guid”转换?到“系统.Guid”

问题描述 投票:0回答:6

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

cannot convert from 'System.Guid?' to 'System.Guid'
.net guid
6个回答
57
投票

请参阅 MSDN

在这种情况下,只需使用

myNullableVariable.Value
(如果您确定它有值),或者如果您不确定,则使用
(myNullableVariable.HasValue)?myNullableVariable.Value:somedefaulthere

如果可空值确实为 null 时不关心默认值是否为特定值,也可以使用

GetValueOrDefault()

最后一种方法是这样的:

myNullableVariable.Value ?? defaultvalue

看,从技术上讲,

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


6
投票

使用 Guid?.Value 属性转换 'System.Guid?'到“系统.Guid”。如下例

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

2
投票

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

1
投票

首先初始化guid变量。

Guid yourGuid= Guid.NewGuid()

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

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

1
投票

无法从“System.Guid”转换?到“系统.Guid”

您正在尝试保存类型 System.Guid?到类型系统.Guid 在你的模型中你可以编辑System.Guid吗?通过删除问号到 System.Guid。

或 RCIX 答案如上


0
投票

如果您确定值不为空,那么您可以将值转换为(Guid)

var identifier = (Guid)myOtherIdentifier!;

或者你可以使用

var identifier = myOtherIdentifier.HasValue ? myOtherIdentifier : Guid.Empty;

或者另一种用法是

var identifier = myOtherIdentifier ?? Guid.Empty;
© www.soinside.com 2019 - 2024. All rights reserved.