[英]C# Static class with Enum
我有一個棘手的問題,一直困擾着我。 我有以下代碼聲明......
namespace ESEGURCI.WEB.BusinessLogicLayer.Commons
{
public static class ParameterUtilities
{
public enum ParameterEnum
{
MAX_LOGIN_ATTEMPTS,
AUDIT_MODIFICATIONS
}
}
}
我調用這樣的代碼“ ParameterUtilities.ParameterEnum.MAX_LOGIN_ATTEMPTS ”問題是每次滿月時我得到錯誤“對象引用沒有設置為對象的實例”這一行......就像代碼只能工作99.9%的時間...
我發現的唯一事情是,因為枚舉是一個值類型,當調用靜態類時,枚舉可能有空......但我找不到有關此行為的任何文檔...
有人可以告訴我為什么會這樣嗎? 我知道我應該從靜態類中刪除枚舉,並將枚舉聲明為獨立但我想知道為什么這首先發生...
謝謝,S
更新
好的,對於要求更多代碼的每個人,以下是發生錯誤的完整功能...
public static int GetPageSize(int companyId)
{
int pageSize = 0;
// error happens bellow this line
ESEGURCI.WEB.BusinessLogicLayer.Entities.Parameter parameter = ESEGURCI.WEB.BusinessLogicLayer.Entities.Parameter.GetParameter(ParameterUtilities.ParameterEnum.AUDIT_MODIFICATIONS.ToString(), companyId);
// error happens above this line
int.TryParse(parameter.Value, out pageSize);
return pageSize;
}
無論月亮是什么樣的, ParameterUtilities.ParameterEnum.MAX_LOGIN_ATTEMPTS
都不會拋出空引用異常。 錯誤可能是由同一行上的其他指令觸發的(賦值給變量?)。
enum
不能為null
。
將該行拆分為下面的清單,並查看哪個語句拋出異常。 我打賭它發生在Parameter.GetParameter()
某個地方:
using ESEGURCI.WEB.BusinessLogicLayer.Entities;
// ...
var auditModifications =
ParameterUtilities.ParameterEnum.AUDIT_MODIFICATIONS.ToString();
var parameter = Parameter.GetParameter(auditModifications, companyId);
枚舉(和任何其他類型)不能具有空值,因為它不是值,它是一種類型。
其他東西拋出異常。
如前所述,您的enum
不會出現錯誤。 根據您的更新,我會說NRE最有可能來自您的GetParameter
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.