この列挙型の値を比較するにはどうすればいいでしょうか
public enum AccountType
{
Retailer = 1,
Customer = 2,
Manager = 3,
Employee = 4
}
私は次のようにMVC4コントローラーでこの列挙型の値を比較しようとしています:
if (userProfile.AccountType.ToString() == "Retailer")
{
return RedirectToAction("Create", "Retailer");
}
return RedirectToAction("Index", "Home");
私もこれを試しました
if (userProfile.AccountType.Equals(1))
{
return RedirectToAction("Create", "Retailer");
}
return RedirectToAction("Index", "Home");
いずれの場合も、オブジェクトのインスタンスに設定されていないオブジェクト参照が取得されます。
ベストアンサー1
これを使って
if (userProfile.AccountType == AccountType.Retailer)
{
...
}
AccountType 列挙型から int を取得して比較する場合 (理由はわかりません)、次のようにします。
if((int)userProfile.AccountType == 1)
{
...
}
Objet reference not set to an instance of an object
例外はあなたのユーザープロファイルがヌルそして、null のプロパティが取得されます。なぜ設定されていないのかをデバッグで確認してください。
編集 (@Rik と @KonradMorawski に感謝) :
事前にいくつか確認しておくといいかもしれません:
if(userProfile!=null)
{
}
または
if(userProfile==null)
{
throw new ArgumentNullException(nameof(userProfile)); // or any other exception
}