任何人都可以解释下面的代码

时间:2011-02-25 17:10:30

标签: asp.net-mvc-2

`其中client.name.ToLower()。包含(name.ToLower())

4 个答案:

答案 0 :(得分:3)

现在它更清楚了。对name中的client.name进行了(不完整的)不区分大小写的搜索。如果name中包含client.name,则为True。做得很糟糕,因为使用国际字母(显然不是“国际字母”。我的意思是来自不同于你自己的文化的字母。经典的例子是土耳其文化。请阅读:http://www.i18nguy.com/unicode/turkish-i18n.html,标题为{{{{3}} 1}}),你可以打破它。 “正确”的方式是:Turkish Has An Important Difference。您可以使用client.name.IndexOf(name, StringComparison.CurrentCultureIgnoreCase) != -1代替StringComparison.CurrentCultureIgnoreCase。如果你必须使用像StringComparison.InvariantCultureIgnoreCase这样的技巧,有人建议比较两边的ToLower更好(但最好使用ToUpper

答案 1 :(得分:1)

对我来说看起来像LINQ

这些天我对.NET不是最新的,但我读过这个,因为正在寻找clientname属性不区分大小写的对象ToString {1}}变量的{1}}属性,允许在之前或之后添加其他字符,非常类似于SQL中的client。如果我是对的,顺便说一下,WHERE foo is like '%:some_value%'在这个例子中是一个可怕的变量名。

答案 2 :(得分:1)

这是一段奇怪的代码。了解客户端对象会更好。本质上,它检查客户端对象上的不区分大小写的名称值是否包含客户端对象的不区分大小写的值(作为字符串)。因此,如果客户端名称本身包含类本身的字符串名称。

答案 3 :(得分:1)

.ToLower()以全小写字母返回您调用它的相同字符串。基本上,如果name.ToLower()嵌入在client.name.ToLower()中的任何位置,则此语句返回true。

//If:<br/>
client.name = "nick, bob, jason";
name = "nick";
//Then:<br/>
client.name.ToLower().Contains(name.ToLower());
//would return true