【问题标题】:C# Discover Implicit Type of variable declared with the var keywordC# 发现使用 var 关键字声明的变量的隐式类型
【发布时间】:2015-08-19 17:57:54
【问题描述】:

假设我有以下代码:

var longValue = 2147483650; // Three more than the max int size
var intValue = 10;
var variableOfUnknownType = longValue - intValue;

我想知道variableOfUnkownType 是什么类型。 (即是variableOfUnknownType.GetType() == System.Int64 还是variableOfUnkownType.GetType() == System.Int32?)

当然,我可以去仔细阅读关于算术类型转换的 C# 文档,或者在我的代码中添加 Console.WriteLine(variableOfUnknownType.GetType()); 语句来了解这个问题的答案。但是,根据C#'s var documentation

var 关键字指示编译器从初始化语句右侧的表达式推断变量的类型。

这意味着 MS Visual Studio 应该能够在编译代码之前告诉我变量的类型。

我的问题是: 如何使用 MS Visual Studio 告诉我这个特定的 var 变量的值?

【问题讨论】:

  • 只需将鼠标悬停在“var”关键字上,它就会告诉您推断出的类型
  • 没错。我的直觉是将鼠标悬停在没有产生预期结果的变量名上。
  • @JacobHorbulyk 它显示了什么,它与您提到的其他选项有何冲突?
  • 将鼠标悬停在var 关键字上会生成System.Int64,这与调用Console.WriteLine(variableOfUnknownType.GetType()); 时发生的情况相匹配。悬停在变量名称上会突出显示该变量的用途,但不提供有关该变量类型的信息。
  • David Sherret 这不是我用 MS VS 2013 和 .Net 4.5 得到的

标签: c# visual-studio var


【解决方案1】:

只需将鼠标悬停在“var”关键字上,它就会告诉您推断出的类型

【讨论】:

    【解决方案2】:

    tl;博士;回答 将鼠标悬停在“var”上,您会看到类型(提示它是 Int64/long)

    长答案: 只需获取您的代码并将其替换为 var 所代表的类型,您就会得到以下代码:

    uint longValue = 2147483650; // Three more than the max int size
    int intValue = 10;
    long variableOfUnknownType = longValue - intValue;
    

    如您所见,这是三种不同的类型,但为什么呢? uint 是有道理的。没有必要占用 64 位,如果你可以用 32 位做同样的事情,因为这是一个正数,我们可以使用无符号整数。 int 是不言自明的,但 long 起初有点令人困惑。

    作为程序员,我们知道int.MaxValue + 3 - 10 再次适合int,但编译器不知道这一点。毕竟,他怎么知道intVariable是10?很简单:他没有。因此,他推断出他知道的类型可以处理该值。由于我们这里是减法,可能会导致负值,所以他取有符号类型,可以拟合值,也就是Int64/long

    顺便说一句:这出乎我的意料。我必须再次检查 c# 中的整数运算才能完全验证这一点。

    【讨论】:

      猜你喜欢
      • 2011-10-16
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      相关资源
      最近更新 更多