빠른 질문 : C #의 다른 유형과 유형 유형을 비교하는 방법은 무엇입니까? 내 말은, 나는를했습니다 Type typeField하고 있는지 내가 알고 싶은 System.String, System.DateTime등,하지만 typeField.Equals(System.String)작동하지 않습니다.
실마리?
답변
다음을 시도하십시오
typeField == typeof(string)
typeField == typeof(DateTime)typeofC # 의 연산자 Type는 명명 된 형식 의 개체를 제공합니다 .  Type인스턴스는 ==연산자 와 비교할 수 있으므로이를 비교하는 좋은 방법입니다.
참고 : 올바르게 기억한다면 관련 유형이 NoPIA를 통해 어셈블리에 포함 된 COM 인터페이스 일 때이 문제가 발생하는 경우가 있습니다. 이 경우처럼 들리지 않습니다.
답변
is 연산자로 사용할 수 있습니다 . 그런 다음 다음을 작성하여 객체가 특정 유형인지 확인할 수 있습니다.
if (myObject is string)
{
  DoSomething()
}답변
다음을 사용하여 정확히 동일한 유형을 비교할 수 있습니다.
class A {
}
var a = new A();
var typeOfa = a.GetType();
if (typeOfa == typeof(A)) {
}typeof는 주어진 클래스에서 Type 객체를 반환합니다.
그러나 A에서 상속받은 B 유형이 있으면이 비교는 거짓입니다. 그리고 당신은 IsAssignableFrom을 찾고 있습니다.
class B : A {
}
var b = new B();
var typeOfb = b.GetType();
if (typeOfb == typeof(A)) { // false
}
if (typeof(A).IsAssignableFrom(typeOfb)) { // true
}답변
인스턴스가 Type:
Type typeFiled;
if (typeField == typeof(string))
{
    ...
}그러나 인스턴스가 object아닌 연산자를 Type사용하는 경우 as:
object value;
string text = value as string;
if (text != null)
{
    // value is a string and you can do your work here
}value한 번만 지정된 유형으로 변환 할 수 있다는 이점이 있습니다 .
답변
http://msdn.microsoft.com/en-us/library/system.type.gettype.aspx
Console.WriteLine("typeField is a {0}", typeField.GetType());그것은 당신에게 뭔가를 줄 것입니다
typeField is a String
typeField is a DateTime또는
http://msdn.microsoft.com/en-us/library/58918ffs(v=vs.71).aspx
답변
