我有一些麻烦将字符串"SΨZΣ"转换为小写字母.
在C#中,.ToLower()和.ToLowerInvariant()给出了"sψzσ"作为结果.虽然javascript返回"sψzς".
经过一些研究后,我认为已经明白字符'Σ'只有在它不在一个单词的末尾时才应翻译成'σ',在这种情况下它应该变成'ζ' - 所以javascript版本是精细.事实上,我在使用C#字符串调用外部API时遇到错误,而js字符串工作正常.
有关如何使C#正确降低字符串的任何想法?
我正在将一行代码从.NET 4.0折射到3.5,实际的代码是
if(bar?.foo == "outdated")
bar = new Bar();
Run Code Online (Sandbox Code Playgroud)
我能以这种方式折射这些线并保持相同的逻辑吗?
if(bar == null || bar.foo == "outdated")
bar = new Bar();
Run Code Online (Sandbox Code Playgroud)
if评估是否在bar == null(因为表达式为真,无论其他部分是返回true还是false)之后停止,或者bar.foo即使第一部分已经返回true 也继续检查,因此抛出空异常?
让我们假设我有这三个类
class A {
protected List<T> MakeList<T>() {
return new List<T>
}
}
class B : A {
protected void MyFunction() {
List<B> = MakeList<B>();
}
}
class C : A {
protected void MyFunction() {
List<C> = MakeList<C>();
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我永远不需要MakeList()函数返回与调用者类不同的类类型.是否可以更改A中的MakeList函数以允许B和C调用它而不指定Type?(例如,简单地使用List = MakeList() - 省略调用函数时)