面试题答案
一键面试以下以C#代码为例:
class Person
{
public string Name { get; set; }
}
class Program
{
static void Main()
{
Person person = null;
string name = person?.Name?? "Unknown";
Console.WriteLine(name);
}
}
在上述代码中,首先定义了Person
类包含Name
属性。在Main
方法中,声明了一个Person
类型的变量person
并初始化为null
。然后使用null
条件运算符?.
检查person
是否为null
,如果不为null
则获取Name
属性值,若为null
则返回null
,之后使用空合并运算符??
,当person?.Name
返回null
时,返回默认字符串"Unknown"
。
不同编程语言的实现方式略有差异,比如在Java中,虽然没有直接类似C#这样简洁的写法,但可以通过Optional
类来实现类似功能:
import java.util.Optional;
class Person {
private String name;
public String getName() {
return name;
}
}
public class Main {
public static void main(String[] args) {
Person person = null;
String name = Optional.ofNullable(person)
.map(Person::getName)
.orElse("Unknown");
System.out.println(name);
}
}
在Java代码中,使用Optional.ofNullable
方法来包装可能为null
的person
对象,然后通过map
方法获取name
,如果person
为null
,则使用orElse
方法返回默认值"Unknown"
。