14
A
回答
17
如果您需要枚舉包含除枚舉常量的類型值布爾數據,你可以簡單的屬性添加到您的枚舉,取一個布爾值。然後,您可以爲您的枚舉添加一個擴展方法,以獲取該屬性並返回其布爾值。
public class MyBoolAttribute: Attribute
{
public MyBoolAttribute(bool val)
{
Passed = val;
}
public bool Passed
{
get;
set;
}
}
public enum MyEnum
{
[MyBoolAttribute(true)]
Passed,
[MyBoolAttribute(false)]
Failed,
[MyBoolAttribute(true)]
PassedUnderCertainCondition,
... and other enum values
}
/* the extension method */
public static bool DidPass(this Enum en)
{
MyBoolAttribute attrib = GetAttribute<MyBoolAttribute>(en);
return attrib.Passed;
}
/* general helper method to get attributes of enums */
public static T GetAttribute<T>(Enum en) where T : Attribute
{
Type type = en.GetType();
MemberInfo[] memInfo = type.GetMember(en.ToString());
if (memInfo != null && memInfo.Length > 0)
{
object[] attrs = memInfo[0].GetCustomAttributes(typeof(T),
false);
if (attrs != null && attrs.Length > 0)
return ((T)attrs[0]);
}
return null;
}
20
6
什麼:
class Result
{
private Result()
{
}
public static Result OK = new Result();
public static Result Error = new Result();
public static implicit operator bool(Result result)
{
return result == OK;
}
public static implicit operator Result(bool b)
{
return b ? OK : Error;
}
}
您可以使用它像枚舉或類似BOOL,例如 變種X = Result.OK; 結果y = true; 如果(X)... 或 如果(Y == Result.OK)
相關問題
- 1. 可能聲明枚舉類型的函數嗎?
- 2. 類C++中的枚舉聲明,在類中枚舉的問題
- 3. C++枚舉類可以有方法嗎?
- 4. C#語言枚舉聲明
- 5. 枚舉聲明中枚舉數的類型
- 6. 聲明枚舉
- 7. 如何聲明一個類屬性作爲枚舉類型
- 8. 我們可以在java中使用C++類型枚舉嗎?
- 9. 可以在枚舉聲明中修改實例變量嗎?
- 10. 枚舉聲明點
- 11. 我可以從泛型類型轉換爲C#中的枚舉嗎?
- 12. c#到C++/cli枚舉聲明
- 13. C#枚舉類型安全嗎?
- 14. 此枚舉聲明符合標準嗎?
- 15. 枚舉問題:重新聲明爲不同類型的符號
- 16. 爲枚舉類型
- 17. Perl有枚舉類型嗎?
- 18. 如何在C#聲明枚舉
- 19. 前向聲明枚舉Objective-C
- 20. 如何聲明「靜態」類/枚舉?
- 21. 強制子類聲明枚舉
- 22. 在派生類中聲明枚舉
- 23. 獲取聲明枚舉的類
- 24. 類似於使用枚舉的聲明?
- 25. 可以枚舉類型的接口
- 26. 是否有可能爲我的奇怪枚舉類型聲明FromJSON實例?
- 27. 是否有可能爲特定類型的枚舉聲明swift通用?
- 28. 什麼類型可以聲明爲const?
- 29. 你可以聲明一個可變長度的泛型類型聲明嗎?
- 30. SystemVerilog枚舉可以爲null嗎?
僅當您添加第三個值,FileNotFound – blu
即使有可能,我不認爲這爲任何東西,但令人困惑。 '如果(!IsFailed){...}'完全不可讀。 –
說'bool success = Result.Pass'而不是'bool success = true'有什麼好處?這是一個可讀性的東西嗎? –