gpt4 book ai didi

c# - 是否有任何用于 VS 或程序的插件来显示 C# 代码选择的类型和值等?

转载 作者:行者123 更新时间:2023-11-30 15:47:17 24 4
gpt4 key购买 nike

我想做的是被告知表达式选择的类型、值(如果在编译时有)和其他信息(我不知道我现在需要什么)。

例如,如果我有这样的表达式

int i = unchecked((short)0xFF);

选择 0xFF 会得到 (Int32, 255),而选择 ((short)0xFF) 会得到 (Int16, 255),选择 i 会得到 (Int32, 255)。

我想要这样一个功能的原因是能够验证我的假设。很容易假设 0xFF 是一个字节,但它实际上是一个 int。我当然可以一直引用 C# 语言规范,但我认为每次我想检查某些东西时都必须引用它是低效的。我也可以使用 ANTLR 之类的东西,但学习曲线很高。

我确实打算阅读整个规范并学习 ANTLR 和编译器,但那是以后的事。现在我希望有工具来帮助我快速准确地完成工作。

另一个例子:

int? i = 0x10;
int? j = null;
int x;
x = (i >> 4) ?? -1;//x=1
x = (j >> 4) ?? -1;//x=-1

上面代码的最后两行对您来说似乎很容易甚至很自然。 (也许应该避免这样的代码,但那是另一回事了)但是,msdn 对 null-coalescing operator 的看法缺少信息告诉我上面的代码 ((i>>4)??) 是合法的(但确实如此)。我必须深入研究规范中的语法才能知道发生了什么:

  • 空合并表达式
  • 条件或表达式
  • 条件表达式
  • 异或表达式
  • 和表达式
  • 平等表达
  • 关系表达
  • 移位表达式
  • shift-expression 右移加法表达式...(以及更多)

只有读了这么多,我才能满意地确认它是有效的代码,并且做了我认为它做的事情。普通程序员应该有一种更简单的方法来验证(不是关于有效性,而是它是否按照想法行事,也为了满足我的好奇心)这样的代码,而不必深入研究 that 规范手动的。它不一定是 VS 插件。任何直观易用的替代方法都可以。

最佳答案

好吧,我不知道有任何加载项可以执行您所描述的操作 - 但是,您可以使用一个技巧来确定表达式的类型(但不是编译时值):

  • 将表达式分配给 var 变量,并将鼠标悬停在关键字 var 上。

例如,当你写:

var i = unchecked((short)0xFF); 

然后将鼠标悬停在关键字 var 上,您会看到一个工具提示,内容如下:

Struct System.Int16

Represents a 16-bit signed integer.

这肯定有点尴尬——因为您可能必须更改代码才能使其工作。但在紧要关头,它可以让编译器为您找出表达式的类型。

请记住,一旦您开始将类型转换投入图片中,这种方法并不能真正帮助您。例如:

object a = 0xFF;
var z = (string)a; // compiles but fails at runtime!

在上面的示例中,IDE 会尽职地报告 var z 的类型是 System.String - 当然,这是完全错误的。

关于c# - 是否有任何用于 VS 或程序的插件来显示 C# 代码选择的类型和值等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3727515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com