【问题标题】:Watch Icons and Items in Visual Studio 2015在 Visual Studio 2015 中观看图标和项目
【发布时间】:2017-02-07 00:33:47
【问题描述】:

当我将鼠标悬停在 C# 代码中的 JObject 变量上时,我看到一个监视窗口弹出。当我展开它时,我会看到以下图像:

问题

  1. ChildrenTokens 旁边的蓝色符号/图标表示什么?

  2. 此类符号/图标的完整列表在哪里?

  3. 我们都在观察窗口中看到了 ChildrenTokens。但是,当我在代码中并尝试访问 ChildrenTokens 属性时,智能感知不会显示它。为什么?

谢谢。

【问题讨论】:

  • 它是protected,这就是为什么您在智能感知中看不到它的原因。但它是一个属性(扳手),这就是为什么它与所有其他属性一起显示的原因。蓝丝带 (?) 表示 protected。我不确定哪里有完整的列表。
  • msdn.microsoft.com/en-us/library/y47ychfe(v=vs.140) 有主图标,但不显示受保护的覆盖(它在底部有,但不同)
  • 我可以理解为什么智能感知可能会列出受保护的属性,但我不明白为什么它会列出该属性并允许访问其值,而运行代码却无法访问其值。正在运行的代码不应该有权访问手表中列出的任何属性吗?
  • 请注意,您也可以单击Non-Public 成员旁边的展开箭头。您也可以在其中看到私有字段...
  • 另请注意,您也看到了动态视图,因为JObjectIDynamicMetaObjectProvider(通过JToken),因此您可以看到它的dynamic 方面。

标签: c# visual-studio-2015 visual-studio-debugging


【解决方案1】:

JObject Documentation 可以看出,ChildrenTokens 是一个protected override property。带有扳手的图标显示属性;蓝色图标(可能是锁)表示该属性受到保护。这可以解释为什么您无法通过 Intellisense 访问它。

您可以在此处找到 VS2015 的图标和叠加层列表: https://msdn.microsoft.com/en-us/library/y47ychfe(v=vs.140)

请注意,图标会根据您查看它们的位置而有所不同。

【讨论】:

  • 对微软感到羞耻,不仅因为改变了图标,而且因为没有正确记录变化......
【解决方案2】:

带有扳手的图标表示它是一个属性

显示蓝砖的图标表示变量或其他任何东西,受受保护

粉红色的立方体图标表明它是某种子例程或函数或方法

带有那个黄色东西的图标表明它是某种

【讨论】:

  • 我其实不知道那个黄色的东西叫什么……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多