我以为我已经看到了这一切,但是...... :)
我正在研究字符串类型的通用图,
Graph<string> graph = new Graph<string>();
Run Code Online (Sandbox Code Playgroud)
使用类约束声明图形,如下所示:
public class Graph<T> where T : class
Run Code Online (Sandbox Code Playgroud)
接下来,我用一些动态生成的字符串填充图表:
for (char t = 'A'; t < 'J'; t++)
{
GraphPrim.Add(t.ToString());
}
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,(Node是一个内部类,包含原始值和一个对其他节点的引用列表(因为它是一个图))
现在,当我尝试在不同节点之间创建关系时,我必须通过检查其值以及怪异开始的位置来查找正确的节点.
以下代码是执行某些测试后在immidiate窗口中找到的结果的直接副本:
Nodes.First().Value
"A"
Nodes.First().Value == "A"
false
Nodes.First().Value.ToString() == "A"
true
Run Code Online (Sandbox Code Playgroud)
我完全缺少一些东西或不应该Nodes.First().值=="A"使用字符串比较方法.(JIT编译器知道运行时使用的类型,以及它支持的方法,对吧?).在我看来,当没有明确指定字符串时,它会进行引用检查而不是字符串测试.
如果有人可以向我解释这一点,那就太好了,
提前致谢!