C 列舉與特性,及相關應用封裝

2021-10-14 03:57:43 字數 1869 閱讀 9976

公司專案用到列舉封裝的幫助類,加上列舉確實很方便直觀,管理一些特定值,但有時候就是想知道具體列舉值,如果用傳統if else或是swtich就太low,這裡採用更優雅,逼格更高的一種方式,直接獲取列舉,或是列舉值等等,甚至可以獲取列舉上面特性描述字串等等

關鍵點:

第一:可以給列舉擴充套件方法,獲取特性,靜態類,靜態方法,通過列舉type獲取fieldinfo,來獲取上面的特性例項

第二: 通過特定列舉獲取對應列舉值,或是通過對應列舉值獲取列舉enum.getvalues()還有方法enum.format(enumtype,enum,format)

第三:通過描述獲取列舉值,呼叫以上方法

using system;

using system.collections.generic;

using system.componentmodel;

using system.linq;

using system.reflection;

using system.text;

using system.threading.tasks;

namespace testattributeenum

}public enum statusenum

public class remarkattribute : attribute

public remarkattribute(string remark)

}//給列舉增加乙個擴充套件方法,

public static class enumextension

descriptionattribute descriptionattribute=(descriptionattribute)fieldinfo.getcustomattributes(typeof(descriptionattribute), false)[0];

return descriptionattribute?.description ?? string.empty;

}public static string getremark(this statusenum statusenum)

remarkattribute remarkattribute = (remarkattribute)fieldinfo.getcustomattributes(typeof(remarkattribute), false)[0];

return remarkattribute?._remark ?? string.empty;

}//從給定的列舉型別type中,通過列舉描述找到對應的列舉值,

public static enum getenumbydescription(type enumtype,string description)

array values = enum.getvalues(enumtype);

foreach (statusenum item in values)

}return null;

}//獲取給定列舉型別所有的int值的和

public static int getenumsum(type enumtype)

return defaultvalue;

}/// /// 根據傳入的int返回對應列舉屬性名稱

///

///

/// 進製

///

public static string getenumname(int value)

/// /// 根據傳入的列舉屬性獲得對應值

///

///

///

///

public static int getenumvalue(string value)

}}

參考

C 中的列舉及相關例項

長遠來看,建立列舉可以節省大量的時間,減少許多麻煩。使用列舉比使用無格式的整數至少有如下三個優勢 列舉可以使 更易於維護,有助於確保給變數指定合法的 期望的值。列舉使 更清晰,允許用描述性的名稱表示整數值,而不是用含義模糊的數來表示。列舉使 更易於鍵入。在給列舉型別的例項賦值時,vs.net ide...

LINQ系列 C 中與LINQ相關特性

1.匿名型別 通過關鍵字var定義匿名型別,編譯器將根據運算子右側表示式的值來發出乙個強型別。使用匿名型別時要遵守的一些基本規則 匿名型別必須有乙個初始化值,而且這個值不能是空值 null 因為型別是根據初始化器推斷出來的 匿名型別可以用於簡單型別,也可以用於複雜型別。用於定義簡單型別時,其價值不大...

迴圈語句及字串的特性與應用

1.迴圈語句 c語言 sum 0 for int i 1 i 100 i sum sum i 0 1 2 3 100 此演算法求的是1加到100的總和 python sum 0 for i in range 1,101 i 1,2,3.100 sum sum i print sum python求前...