小编Pol*_*ity的帖子

C#Generics,比较2个字符串失败,除非明确指定

我以为我已经看到了这一切,但是...... :)

我正在研究字符串类型的通用图,

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编译器知道运行时使用的类型,以及它支持的方法,对吧?).在我看来,当没有明确指定字符串时,它会进行引用检查而不是字符串测试.

如果有人可以向我解释这一点,那就太好了,

提前致谢!

c# generics

7
推荐指数
3
解决办法
511
查看次数

标签 统计

c# ×1

generics ×1