[C#] 범용 방법의 묘용

2341 단어 C#
범형은 유형을 유연하게 만들고 한 가지 또는 여러 가지 특정한 유형의 대상을 처리할 수 있다. 이런 유형은 실례화할 때 확정된 것이기 때문에 이 범형 대상이 어떤 유형을 제공했는지 가정할 수 없다.
여기에 실례를 통해 범형이 가져온 좋은 점을 예시한다.
프로젝트는 중국어와 영어가 서로 번역되는 상황을 만났지만 인터페이스가 호출된 관계로 백엔드에서 되돌아오는 결과는 매거로 정의되고 매거의 종류와 수량이 많다.예를 들어 역할 열거, 실행 모드 열거, 사용자 권한 열거, 사용자 사용 열거 등 예를 들면 다음과 같다.
    /// 
    ///  
    /// 
    [Serializable]
    [DataContract]
    public enum UserEnable
    {
        [EnumMember]   = 0,
        [EnumMember]   = 1,
    }

그러면 대응하는 것은 바로 영어의 매거이다.
    /// 
    ///  
    /// 
    [Serializable]
    [DataContract]
    public enum UserEnable
    {
        [EnumMember] User_Disable = 0,
        [EnumMember] User_Enabled = 1,
    }

최초의 해결 방식은 switch를 사용하고 모든 중국어를 하나하나 열거하면case로 그 중의 영문 문자열에 대응하여 간단하고 직관적이다.다음과 같이 나타납니다.
 
    public static string UserEnableToEnglish(UserEnable para)
    {
        string result;
        switch(para){
            case UserEnable. :
                 result = "Enale";break; 
            case UserEnable. :
                 result = "Disale";break;
        }
        return result;
    }

이렇게 하나하나 이런 방법을 써야 하니 코드가 매우 비대해질 것이다.모두 매거적인 전환이기 때문에 다태적인 사상을 참조하면 유사한 코드 논리는 틀림없이 간소화할 수 있을 것이다.따라서 다음과 같은 일반적인 방법 처리 방식이 생겼다.
    /// 
    ///    
    /// 
    /// 
    /// 
    /// 
    /// 
    public static string ConvertChineseToEnglish(string result)
    {
        string englishStr = "The_result_does_not_exist";
        string[] array = Enum.GetNames(typeof(T1));
        int i = 0;
        while (i < array.Length)
        {
            if (array[i] == result)
            {
                string[] engStr = Enum.GetNames(typeof(T2));
                englishStr = engStr[i];
                break;
            }
            i++;
        }
        return englishStr.Replace("_"," ");
    }

 
마지막으로 호출 방식은 다음과 같다.
 
String result = " ";
string value = ConvertChineseToEnglish(result);

마지막으로, 이 일반적인 방법은 프로젝트에서 적어도 이삼백 줄의 코드를 절약했다.

좋은 웹페이지 즐겨찾기