저희가 매거를 어떻게 설정해야 돼요?
4685 단어 매거
public enum Test
{
/// <summary>
///
/// </summary>
Deny = 0,
/// <summary>
///
/// </summary>
Del = 1,
/// <summary>
///
/// </summary>
Modify = 2,
/// <summary>
///
/// </summary>
Add = 3,
/// <summary>
///
/// </summary>
Search = 4
}
우리는 위의 코드를 보았는데, 이러한 설정은 확실히 틀림없지만, 확실히 복용적인 효과를 고려하지 못했다.
많은 경우에 우리는 WINDOW의 일괄적인 사용을 볼 수 있다. 예를 들어 Test t=Test.Add|Test.Del, 등등
그러면 저희가 어떻게 해야 이런 매거진을 설정할 수 있을까요?다음은 열거 코드를 살펴보겠습니다.
[Flags]
public enum Popendom : int
{
/// <summary>
///
/// </summary>
Deny = 1,
/// <summary>
///
/// </summary>
Del = 2,
/// <summary>
///
/// </summary>
Modify = 4,
/// <summary>
///
/// </summary>
Add = 8,
/// <summary>
///
/// </summary>
Search = 16
}
1、[Flags]
C#의 열거에서: Flags 속성은 매우 중요합니다. 왜냐하면 그녀는 당신의 열거 유형을 문자열로 바꿀 수 있기 때문입니다.
2. public enum Popendom: int라는 매거진 계승의 int 유형은 제약의 역할을 한다.
3. 매거 설정 값, 많은 사람들이 안의 값을 마음대로 설정할 수 있다고 생각하지만 그 안에 설정 기교가 있어 프로젝트의 수요에 따라 다르다.
병용할 수 있는 매거진을 설정하려면 누적값이 매거진 설정값에 나타나지 않는다는 원칙이 필요합니다.
Deny = 1, Del = 2, Modify = 4 등
(0)+1=1,
1+2=(3)
1+2+4=(7)
(값)은 열거에 나타날 수 없습니다.즉 I*2
이렇게 하면 저희가 이룰 수 있어요.
Popendom p=Popendom.Del|Popendom.Add|Popendom.Modify 잠깐만요.
public MainPage()
{
InitializeComponent();
Popendom ps = Popendom.Add | Popendom.Del | Popendom.Modify | Popendom.Search | Popendom.Deny;
IList<Popendom> list = GetPopendomList(ps.ToString());
bool b = HasThisPopendom(ps.ToString(), Popendom.Del);
}
[Flags]
public enum Popendom : int
{
/// <summary>
///
/// </summary>
Deny = 1,
/// <summary>
///
/// </summary>
Del = 2,
/// <summary>
///
/// </summary>
Modify = 4,
/// <summary>
///
/// </summary>
Add = 8,
/// <summary>
///
/// </summary>
Search = 16
}
public enum Test
{
/// <summary>
///
/// </summary>
Deny = 0,
/// <summary>
///
/// </summary>
Del = 1,
/// <summary>
///
/// </summary>
Modify = 2,
/// <summary>
///
/// </summary>
Add = 3,
/// <summary>
///
/// </summary>
Search = 4
}
public IList<Popendom> GetPopendomList(string popendoms)
{
List<Popendom> list = new List<Popendom>();
string[] ps = GetPopendoms(popendoms);
foreach (string p in ps)
{
switch (p)
{
case "Deny": list.Add(Popendom.Deny); break;
case "Del": list.Add(Popendom.Del); break;
case "Modify": list.Add(Popendom.Modify); break;
case "Add": list.Add(Popendom.Add); break;
case "Search": list.Add(Popendom.Search); break;
}
}
return list;
}
public bool HasThisPopendom(string popendoms, Popendom p)
{
return GetPopendoms(popendoms).Contains(p.ToString());
}
public string[] GetPopendoms(string popendoms)
{
return popendoms.Replace(" ", "").Split(',');
}