在Visual Studio 2015中观察图标和项目

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

enter image description here

问题

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

  2. 哪里有这样的符号/图标的全面列表?

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

谢谢。


1
它是 protected 的,这就是为什么你在智能感知中看不到它的原因。但它是一个属性(扳手图标),这就是为什么它会和其他所有属性一起显示。蓝色丝带 (?) 表示它是 protected 的。我不确定是否有一个全面的列表。 - pinkfloydx33
3
https://msdn.microsoft.com/en-us/library/y47ychfe(v=vs.140) 包含主要图标,但未显示受保护的叠加图标(底部有显示,但是不同)。 - pinkfloydx33
1
我可以理解为什么智能感知会列出一个受保护的属性,但我不明白为什么它会列出该属性并允许访问其值,而运行中的代码却不能访问其值。难道运行中的代码不应该对在观察中列出的任何属性都有访问权限吗? - Jazimov
2
请注意,您还可以单击“非公共”成员旁边的展开箭头。 您也可以在其中看到私有字段... - pinkfloydx33
是的,这解释清楚了。谢谢。 - Jazimov
1
还要注意,因为JObject是一个IDynamicMetaObjectProvider(通过JToken),所以您也可以看到它的dynamic方面,同时查看动态视图。 - pinkfloydx33
2个回答

7
如您从JObject文档中所见,ChildrenTokens是一个protected overrideproperty。扳手图标表示属性;蓝色图标(可能是锁)表示该属性受保护。这就解释了为什么您无法通过Intellisense访问它。
您可以在此处找到VS2015的图标和覆盖层列表: https://msdn.microsoft.com/en-us/library/y47ychfe(v=vs.140) 请注意,图标因您查看它们的位置而异。

2
微软不仅在图标上做出了变化,而且没有正确记录这些变化,这是可耻的。 - Jazimov

1

扳手图标表示这是一个属性

显示蓝色砖块的图标表示变量或其他内容是受保护的

粉色立方体图标显示这是某种子程序、函数或方法

那个黄色东西的图标表示它是某种


我其实不知道那个黄色的东西叫什么... - AyProductions

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接