【问题标题】:cannot convert from 'System.Guid?' to 'System.Guid'无法从“System.Guid”转换?到“System.Guid”
【发布时间】:2010-01-01 11:51:44
【问题描述】:

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

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

【问题讨论】:

    标签: .net guid


    【解决方案1】:

    MSDN

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

    如果不关心默认值是否为特定值而可空对象确实为空,也可以使用GetValueOrDefault()

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        首先初始化 guid 变量。

        Guid yourGuid= Guid.NewGuid()
        

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

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

        【讨论】:

          【解决方案4】:

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

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

          或 上面的RCIX回答

          【讨论】:

          • 这个答案在7年前就被接受了,这会带来什么新价值?
          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多