namespace ValueObject { public class User { public UserId Id { get; set; } public UserName Name { get; set; } public User(UserId id, UserName name) { if (id == null) throw new ArgumentException(nameof(id)); if (name == null) throw new ArgumentException(nameof(name)); Id = id; Name = name; } } }
というC#のコードを書いていたのですが、Riderがサジェストしてきたのです。
適用してみると
using System; namespace ValueObject { public class User { public UserId Id { get; set; } public UserName Name { get; set; } public User(UserId id, UserName name) { Id = id ?? throw new ArgumentException(nameof(id)); Name = name ?? throw new ArgumentException(nameof(name)); } } }
確かに ?? でnullだったら〜の値を指定できるのですが、値ではなく例外もできるんかと。