丟擲表示式
C#7.0 允許在某些地方作為表示式投擲:
class Person
{
public string Name { get; }
public Person(string name) => Name = name ?? throw new ArgumentNullException(nameof(name));
public string GetFirstName()
{
var parts = Name.Split(' ');
return (parts.Length > 0) ? parts[0] : throw new InvalidOperationException("No name!");
}
public string GetLastName() => throw new NotImplementedException();
}
在 C#7.0 之前,如果要從表示式主體中丟擲異常,則必須:
var spoons = "dinner,desert,soup".Split(',');
var spoonsArray = spoons.Length > 0 ? spoons : null;
if (spoonsArray == null)
{
throw new Exception("There are no spoons");
}
要麼
var spoonsArray = spoons.Length > 0
? spoons
: new Func<string[]>(() =>
{
throw new Exception("There are no spoons");
})();
在 C#7.0 中,上面現在簡化為:
var spoonsArray = spoons.Length > 0 ? spoons : throw new Exception("There are no spoons");