来自Microsoft的新功能-c-7-0:
public void PrintStars(object o)
{
if (o is null) return; // constant pattern "null"
if (!(o is int i)) return; // type pattern "int i"
WriteLine(new string('*', i));
}
Run Code Online (Sandbox Code Playgroud)
什么是o == null和o is null?的不同?
我通常使用 JavaScript,但我的任务是梳理一些编写了几年的 C# 代码来替换它。
我遇到了一个例子,我正试图绕过我的头。根据我的理解ReferenceEquals()是用来比较两个对象以确定它们是否是同一个实例。但在代码中,我看到传入的第二个参数不是对象,而是null:
string type = ReferenceEquals(employee.wage_type, null)
? "W2"
: employee.wage_type.Replace(".", string.Empty);
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,这在这里做什么?是否有效地说,如果employee.wage_type等于null则分配“W2”。如果没有,获取找到的值.并将其替换为空字符串?这听起来正确吗?
如果是这样,仅仅检查值是否是null直接的而不是使用ReferenceEquals()which 来比较对象不是更简单吗?还是我误解了ReferenceEquals()可以/用于什么?