【问题标题】:Update project to Framework 3.5将项目更新到 Framework 3.5
【发布时间】:2010-10-04 21:33:17
【问题描述】:

您好,我有一个项目是在 3.5 之前的版本中创建的。从那以后,我运行向导将其升级到 3.5。在我这样做之后,我构建了项目,但它有一个错误。错误是 Guid 正在尝试访问属性 HasValue 和 Value:

if(theGuid.HasValue)
{
    id = theGuid.Value
}

错误是“System.Guid”不包含“HasValue”的定义,并且找不到接受“System.Guid”类型的第一个参数的扩展方法“HasValue”(您是否缺少 using 指令或汇编参考?)

Value 属性的错误与此类似。

谁能告诉我发生了什么事?它是从框架中取出的属性吗?如果可以,我可以用什么代替它?

谢谢!

【问题讨论】:

  • 你能告诉我们Guid是在哪里定义/初始化的吗?

标签: c# guid


【解决方案1】:

听起来“theGuid”应该被定义为:

Guid? theGuid;

现在,由于某种原因,它没有在其定义中使用Nullable<T>,而是定义为:

Guid theGuid;

【讨论】:

  • 谢谢,就是这样。我检查了转换前包含的源代码控制,它是一个可为空的类型。转换后,似乎很多可为空的类型都变成了不可为空的。我不知道为什么会发生这种情况。
  • @Mr Cricket:作为转换的一部分,它不应该真的发生。这是一个相当奇怪的转换问题。
【解决方案2】:

在 3.5 中仍然可以为 Nullable 类型。

您确定theGuidGuid? 类型而不仅仅是Guid

【讨论】:

    【解决方案3】:

    HasValueValueNullable<T> 结构的属性。

    因此,如果 theGuid 被声明为 nullable Guid,您的代码应该可以工作:

    Guid? theGuid = //...
    Guid id;
    
    if (theGuid.HasValue)
    {
        id = theGuid.Value;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-03
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 2020-02-14
      • 2022-07-15
      相关资源
      最近更新 更多