在“添加监视”窗口中选中时,以下代码显示正确的值(100),但该值未分配给变量_countVar,该值是0,这是不正确的。

有人可以告诉我代码中的错误吗:

string _strVariable = "New York";

var _countVar = nestList
  .SelectMany((List<object> w) => w)
  .Count(w => w == _strVariable);

最佳答案

好吧,如果w

...
.SelectMany((List<object> w) => w) // w is object
.Count(w => w == _strVariable);    // if w has the same reference as _strVariable


您实际上是比较参考,而不是object的值。如果string不共享相同的引用(未引用),则将它们视为不同的引用:

object x = "abc";

// some manipulations to prevent the compiler to intern x and y strings
string y = ("abc" + " ").Trim(); // "abc", note that y has the same value as x

Console.Write(x == y ? "equals" : $"{x} <> {y}");


结果:

abc <> abc


要比较string的值,请输入Intern

string _strVariable = "New York";

var _countVar = nestList
  .SelectMany(list => list)
  .Count(city => string.Equals(city, _strVariable));

关于c# - 添加监视窗口显示值,但该值未分配给变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60501147/

10-11 04:40