C\#의 매 거 진 이해(간단명료 하고 알 기 쉽다)
1.매 거 진 코드 를 더욱 선명 하 게 할 수 있 고 설명 적 인 이름 으로 전체 수 치 를 표시 할 수 있 습 니 다.
2.매 거 진 코드 를 쉽게 유지 하고 변수 에 합 법 적 이 고 기대 하 는 값 을 지정 하 는 데 도움 이 됩 니 다.
3.매 거 진 코드 를 쉽게 입력 합 니 다.
매 거 설명
1.간단 한 매 거
●enum 키 워드 를 사용 하여 클래스 와 같은 등급 으로 설명 합 니 다.매 거 진 자 체 는 수정자 가 있 을 수 있 지만 매 거 진 구성원 은 항상 공공 이 므 로 방문 수정자 가 있 을 수 없다.매 거 진 자체 의 장식 부 호 는 Public 와 internal 만 사용 할 수 있 습 니 다.
●매 거 진 값 형식 입 니 다.System.Enum 에서 암시 적 으로 계승 되 어 수 동 으로 수정 할 수 없습니다.System.Enum 자 체 는 인용 형식 으로 System.ValueType 에서 계승 합 니 다.
●매 거 진 은 모두 암시 적 으로 밀봉 되 어 있 으 며,기류 파 생 자 류 로 서 는 안 된다.
●매 거 진 형식의 매 거 진 구성원 은 모두 정적 이 고 기본 값 은 int 32 형식 입 니 다.
●매 거 진 구성원 마다 관련 된 상수 치 를 가지 고 있다.이 값 의 유형 은 매 거 진 바 텀 데이터 형식 입 니 다.모든 매 거 진 구성원 의 상수 치 는 매 거 진 바 텀 데이터 형식의 범위 안에 있어 야 한다.바 텀 데이터 형식 을 명확 하 게 지정 하지 않 으 면 기본 데이터 형식 은 int 형식 입 니 다.
●매 거 진 멤버 는 같 을 수 없 지만 매 거 진 값 은 같 을 수 있다.
●마지막 멤버 의 쉼표 와 대괄호 뒤의 점 수 는 생략 할 수 있다.
C\#클래스 하 나 를 제공 하여 매 거 진 작업 을 편리 하 게 할 수 있 습 니 다.다음은 이러한 일반적인 방법 을 알려 드 립 니 다.
지정 한 바 텀 데이터 형식 을 표시 하 는 것 은 간단 합 니 다.설명 을 할 때 콜론 을 추가 하고 그 다음 에 지정 할 데이터 형식 을 따라 가 야 합 니 다.
enum sex : byte //
{
male,
female, //
}; // '
명시 적 으로 매 거 진 구성원 상수 값 을 설정 합 니 다.기본 값 은 0 부터 하나씩 증가 합 니 다.그러나 다음 예 는 1,2,3,4,5,6,7,0 으로 설정 됐다.그리고 멤버 값 은 똑 같 을 수 있어.
enum Week
{
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Sunday = 0,
Everyday = 1 // ,
}
Console.WriteLine((int)Week.Monday); //
예제,매 거 진 값 으로 매 거 진 이름과 매 거 진 이름 으로 매 거 진 값 을 가 져 옵 니 다.
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Enum.GetName(typeof(Man),1)); // ( )
string[] array1 = Enum.GetNames(typeof(Man));
Console.WriteLine(array1[1]); //
Array array2 = Enum.GetValues(typeof(Man));
Console.WriteLine(array2.GetValue(1)); //
Type t = Enum.GetUnderlyingType(typeof(Man));
Console.WriteLine(t); // Int32
//
int i = 1;
string Name = Enum.Parse(typeof(Man), i.ToString()).ToString(); // Name=" "
Console.WriteLine(Name);
//
string Name2 = " ";
int j = Convert.ToInt32(Enum.Parse(typeof(Man), Name2)); // j=2
Console.WriteLine(j);
Console.ReadKey();
}
}
enum Man
{
= 1,
= 2,
= 3
}
2.표지 매 거표지 매 거 는 상단 에[System.Flags]특성 을 추가 하여 성명 해 야 합 니 다.그리고 조합 연산 을 일일이 지원 합 니 다.먼저 예 를 들 어 보 겠 습 니 다.
class Program
{
static void Main(string[] args)
{
var man = Week. | Week. ; // 101 001 100, 101
Console.WriteLine((int)man);
if ((man & Week. ) == Week. ) //101 man
{ //001 ,
Console.WriteLine(" "); //001 , man
}
else
{
Console.WriteLine(" ");
}
Console.ReadKey();
}
}
[System.Flags]
public enum Week
{
= 1, //001
= 2, //010
= 4, //100
}
이러한 비트 연산 은 매우 유용 하 며,sql 구문 에서 도 비트 연산 을 지원 합 니 다.즉,매 거 운 연산 후의 결 과 를 데이터베이스 에 저장 한 후에 도 당신 의 요구 에 따라 읽 을 수 있다 는 것 이다.예 를 들 면:데이터베이스 와 같은'백미'를 데이터베이스 에 저장 하면 전체 5 에 저장 합 니 다.
그럼 모든'화이트'데이터 목록 을 읽 고 싶 은 데 어떻게 읽 을까요?백,순백'1'일 수도 있 고 백부 3 일 수도 있 고 백미 5 일 수도 있 고 백부 미 7 일 수도 있 습 니 다.인 으로 읽 을 수 있 지만 더 좋 은 방법 은 sql 구문 에서 똑 같이 비트 연산 을 사용 하 는 것 입 니 다.
select * from Table1 where Tag & 1 = 1 //Tag
select * from Table1 where Tag | 1 = Tag
3.매 거 진 사용 건의매개 변수,반환 값,변수 등 유형 이 매 거 될 때 매 거 진 을 사용 할 수 있 습 니 다(분류의 안정성 을 고려 해 야 합 니 다)
대부분의 경우 int 형식 을 사용 하여 매 거 할 수 있 으 며,아래 의 경 우 는 제외 합 니 다.
매 거 진 은 대량으로 자주 사 용 될 수 있 습 니 다.이 때 는 공간 을 절약 하기 위해 int 보다 작은 매 거 진 을 사용 할 수 있 습 니 다.
표지 가 매 거 되 고 표지 가 32 개 보다 많다.
다음은 다음 과 같 습 니 다.MVC 3 드 롭 다운 목록 을 연결 하 는 예제 입 니 다.
컨트롤 러 코드:
namespace MvcStart.Controllers
{
public class HomeController : Controller
{
public ActionResult GetSexList()
{
Dictionary<string, int> Sexlist = new Dictionary<string, int>();
string[] keys = Enum.GetNames(typeof(sex));
Array values = Enum.GetValues(typeof(sex));
for (int i = 0; i < keys.Length; i++)
{
Sexlist.Add(keys[i], (int)values.GetValue(i));
}
return View(Sexlist);
}
}
public enum sex
{
male = 1,
female = 2,
other = 3
}
}
보기 코드:
@model Dictionary<string, int>
<select>
@foreach(var item in @Model)
{
<option value="@item.Value">@item.Key</option>
}
</select>
생 성 된 HTML 코드:
<select>
<option value="1">male</option>
<option value="2">female</option>
<option value="3">other</option>
</select>
예 를 들 어 매 거 진 설명 을 가 져 옵 니 다.
public static class GetDescription
{
/// <summary>
///
/// </summary>
/// <param name="en"></param>
/// <returns></returns>
public static string description(this Enum en)
{
Type type = en.GetType();
MemberInfo[] memInfo = type.GetMember(en.ToString());
if (memInfo != null && memInfo.Length > 0)
{
object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
if (attrs != null && attrs.Length > 0)
return ((DescriptionAttribute)attrs[0]).Description;
}
return en.ToString();
}
}
public enum Sex
{
[Description(" ")]
man = 1,
[Description(" ")]
woman = 2,
[Description(" ")]
other = 3
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.