변수 타입을 사용하여 변수를 선언 :이 코드를
Type leftType = workItem[LeftFieldName].GetType();
내가 그 유형의 변수를 선언 할
:
leftType someVar;
가 가능합니까?
변수 타입을 사용하여 변수를 선언 :이 코드를
Type leftType = workItem[LeftFieldName].GetType();
내가 그 유형의 변수를 선언 할
:
leftType someVar;
가 가능합니까?
이러한 작업을 수행하여 알려진 인터페이스로 전송할 수 있습니다.
var someVar = Convert.ChangeType(someOriginalValue, workItem[LeftFieldName].GetType());
var someVar = Activator.CreateInstance(workItem[LeftFieldName].GetType());
당신이 dynamic
와 var
를 교체하는 경우 (그리고 닷넷 4를 사용하는), 당신은 당신이의 somevar 객체에 기대 메소드를 호출 할 수 있습니다. 존재하지 않으면 MissingMethodException이 발생합니다.
감사합니다. 내가 필요한 것. –
그것은 약간의 작업으로 보입니다. 일을하는 것이 최선의 방법인가요? 동적 유형의 변수를 만드는 또 다른 (더 나은) 방법은 없습니까? –
@MoheTheDreamy 변수를 생성하는 가장 쉬운 방법은 ** var someVar = workItem [LeftFieldName]입니다. ** 그럼에도 불구하고 ** 안전하지 않습니다 ** 실수로 ** 변경 될 수 있습니다 ** (* 참조 유형의 경우 *) ** 원래 객체의 ** 값 **. [Austin] (https://stackoverflow.com/questions/4800446/declare-a-variable-using-a-type-variable/4800501#4800501)의 대답에 설명 된 전략을 고수 할 것을 권합니다. (예 : var someVar = Activator.CreateInstance (workItem [LeftFieldName] .GetType());) –
당신은 그렇게 할 수 없습니다.
당신은 닷넷 4,뿐만 이전 닷넷 버전의 dynamic 유형을 사용할 수 있습니다, 맞는 유일한 유형 object
, 당신은 수동으로 다시는 object
에 할당 된 내용에 .GetType()
을 테스트하여 나중에 캐스팅 할 필요가있는 형식화 된 변수.
독서 : SO link: whats-the-difference-between-dynamicc-4-and-var
어떻게 적용되는지 잘 모르겠습니다. 여기서 'var'의 사용은 중요하지 않습니다. – Joe
'var someVar;'를'var someVar ='로 변경 한 다음 암시 적으로'someVar'를 입력하는 것을 볼 수 있습니다. 이것은'someVar'를 입력하는 것입니다. 이것은 OP가 무엇이 었는지입니다. db 컬럼 유형을 알아내는 것 같이. – RichardTheKiwi
* var * 항상 컴파일 타임에 특정 유형으로 해결된다는 것을 알기를 바랍니다. –
이 불가능합니다.
가변 유형은 컴파일 타임 개념입니다. 런타임까지 알 수없는 유형 의 변수를 선언하는 것은 의미가 없습니다.
변수가 무엇인지 알 수 없으므로 변수를 사용하여 아무 것도 할 수 없습니다.
아마도 dynamic
키워드를 찾고있을 것입니다.
가능한 사용 사례 : 내 MVC 프로젝트에서'Form' 개체가 있고'new EditField
아니요, 불가능합니다. 변수의 유형은 컴파일시 알려 져야합니다.
object
유형의 변수를 선언 할 수 있으며 모든 데이터 유형을 저장할 수 있습니다.
GetType
은 런타임에 평가되며 비 -dynamic
선언은 컴파일시입니다 (예보다 구체적입니다). var
조차도 모호하지 않은 유형의 값을 지정해야합니다.
개체 x = Activator.CreateInstance (Type)를 사용하면 개체를 만들 수 있습니다. 그 시점을 넘어서 많은 일을 할 수 있는지 여부는 확실하지 않습니다.
그러면 해당 유형의 인스턴스가 만들어지며 해당 유형의 변수는 생성되지 않습니다. – Guffa
아니요, 그렇지 않습니다. 신중하게 그것에 대해 생각하면, 그러한 변수가 전혀 쓸모가 없다는 것을 알게 될 것입니다. – SLaks
성취하려는 것은 무엇입니까? 실제 문제를 해결할 다른 방법이있을 수 있습니다. – Trinidad