2016-06-01 1 views
1

C#에서 사용자 정의 유형 클래스로 배열을 채울 때 배열은 네임 스페이스의 클래스 위치로 채워집니다. 그러나 배열에 해당 유형으로 지정된 값을 채울 필요가 있습니다.C#의 사용자 정의 정의로 채우기 배열

내가 같은 결과 이러한 구현의 각 사용하여 내 배열을 정의하는 시도 : 두 경우 모두

List<FieldName> fieldNames = new List<FieldName>() { "event_ref", "user_id", "sys_time" }; 

FieldName[] fieldNames = { "event_ref", "user_id", "sys_time" }; 

은 낮은 함수 호출에 구현 얻을 값 (아무것도 공상)의 세 가지에 대한 ElectronicSJP.DatabaseIF.FieldName입니다 구역.

은 중단 점을 설정하면, 나는 fieldNames가 너무로 채워지는 것을 볼 수 있습니다 : 해당 테이블이 전개되고있는 경우 나 지정된

enter image description here

값은, 다음 단계 아래에있다.

class FieldName 
{ 
    private string name = ""; 
    public static implicit operator string(FieldName fn) 
    { 
     return (fn == null) ? null : fn.name; 
    } 
    public static implicit operator FieldName(string fn) 
    { 
     return new FieldName { name = fn }; 
    } 
} 

가 나는 또 다른 암시 운영자, 또는 두 가지를 추가해야 할 수도 있다고 의심, 그래서 그 또는이 문제를 해결할 수 있다고 생각 다른 아이디어와 도움을 사용할 수 FieldName에 대한 나의 클래스는로 정의됩니다. 감사.

+1

저는 일종의 잃어버린 것입니다. 배열에'Fields'가 아닌'string's을 채우기를 원하십니까? –

+2

intellisense 디버거에서 보려는 문자열로 객체의 toString을 구현합니다. – Jeremy

+1

이 질문은 영어로되어 있습니까, 아니면 영어가 나쁘나요? –

답변

2

디버거가 개체 또는 개체 목록을 표시하면 특정 필드가 아닌 형식이 표시됩니다.

"사용자에게 친숙한 가치"를 보려면 Object 클래스에있는 toString 메서드를 재정의하거나 DebuggerDisplay 특성으로 표시하려는 속성을 꾸밀 수 있습니다 (위의 Adam V 크레딧 참조). 코멘트)

예 :!하는 방법을 재정의하는 방법에

public override string ToString() 
    { 
     return name; 
    } 

연결합니다. https://msdn.microsoft.com/en-us/library/ms173154.aspx