c # : 문자열 상수를 저장하기 위해 열거 형을 사용하는 방법?
중복 가능성 :
문자열이있는 열거 형
열거 형에 문자열 상수를 가질 수 있습니다.
enum{name1="hmmm" name2="bdidwe"}
그렇지 않은 경우 가장 좋은 방법은 무엇입니까?
나는 그것을 문자열에서 작동하지 않기 때문에 지금은 모든 관련 상수를 하나의 클래스로 그룹화하고 있습니다.
class operation
{
public const string name1="hmmm";
public const string name2="bdidwe"
}
열거 형 상수는 서수 유형 ( int
기본적으로) 만 가능 하므로 열거 형에 문자열 상수를 사용할 수 없습니다.
"문자열 기반 열거 형"과 같은 것을 원할 때 원치 않는 인스턴스화와 원치 않는 하위 클래스 화를 방지하기 위해 정적 클래스로 만드는 것을 제외하고는 여러분이했던 것처럼 상수를 보유 할 클래스를 만듭니다.
그러나 메서드 시그니처의 유형으로 문자열을 사용하지 않고 더 안전하고 제한적인 유형 (예 :)을 선호하는 Operation
경우 안전한 열거 형 패턴을 사용할 수 있습니다.
public sealed class Operation
{
public static readonly Operation Name1 = new Operation("Name1");
public static readonly Operation Name2 = new Operation("Name2");
private Operation(string value)
{
Value = value;
}
public string Value { get; private set; }
}
을 사용하여이 작업을 수행 할 수 DescriptionAttribute
있지만 속성에서 문자열을 가져 오려면 코드를 작성해야합니다.
public enum YourEnum
{
[Description("YourName1")]
Name1,
[Description("YourName2")]
Name2
}
열거 형의 요점은 서수 상수입니다.
그러나 확장 방법을 사용하여 원하는 것을 얻을 수 있습니다.
enum Operation
{
name1,
name2
}
static class OperationTextExtender
{
public static String AsText(this Operation operation)
{
switch(operation)
{
case Operation.name1: return "hmmm";
case Operation.name2: return "bdidwe";
...
}
}
}
...
var test1 = Operation.name1;
var test2 = test1.AsText();
귀하 operation
와 같은 컴파일되지 않습니다 클래스입니다 ... 당신이 NAME1 및 NAME2의 유형을 선언하지 않았다 ...
하지만 그게 제가 취할 접근법입니다 ... 예.
구조체로 만들면 원하는 값일 수도 있고 아닐 수도있는 값 유형이됩니다.
참조 URL : https://stackoverflow.com/questions/1851567/chow-to-use-enum-for-storing-string-constants
'Nice programing' 카테고리의 다른 글
아틀라스에서 로컬로 방랑 상자 파일을 다운로드하고 구성 (0) | 2021.01.09 |
---|---|
corecrt.h를 찾을 수 없음 : $ (UniversalCRT_IncludePath)가 잘못되었습니다. (0) | 2021.01.09 |
메서드 숨기기와 재정의 (0) | 2021.01.09 |
Ruby on Rails-정적 메서드 (0) | 2021.01.09 |
Android의 기본 경고음에 액세스하려면 어떻게해야합니까? (0) | 2021.01.09 |