C #에서 is
와 as
키워드 의 차이점을 알려주세요 .
답변
이다
is
운영자 점검 목적은 특정 형태로 전송할 수있는 경우.
예:
if (someObject is StringBuilder) ...
같이
as
운영자 시도는 특정 유형에 개체를 캐스팅하고, 실패하면 NULL을 반환합니다.
예:
StringBuilder b = someObject as StringBuilder;
if (b != null) ...
관련 항목 :
주조
캐스트 연산자의 시도는 특정 유형에 개체를 캐스팅하고 실패 할 경우 exeption를 throw합니다.
예:
StringBuilder b = (StringBuilder)someObject.
답변
IS 와 As 의 차이점은 ..
IS -Is 연산자는 지정된 유형을 가진 객체의 호환성을 확인하는 데 사용되며 결과를 부울 (True 또는 False)로 반환합니다.
AS -As 연산자는 객체를 주어진 유형 또는 클래스로 캐스팅하는 데 사용됩니다.
전의.
Student s = obj as Student;
다음과 같습니다.
Student s = obj is Student ? (Student)obj : (Student)null;
답변
is
및 as
키워드는 모두 C #의 형식 캐스팅에 사용됩니다.
두 키워드의 IL 코드를 살펴보면 쉽게 차이를 알 수 있습니다.
C # 코드 :
BaseClass baseclassInstance = new DerivedClass();
DerivedClass derivedclassInstance;
if (baseclassInstance is DerivedClass)
{
derivedclassInstance = (DerivedClass)baseclassInstance;
// do something on derivedclassInstance
}
derivedclassInstance = baseclassInstance as DerivedClass;
if (derivedclassInstance != null)
{
// do something on derivedclassInstance
}
IL 코드 (위의 C # 코드는 첨부 된 이미지에 있음) :
is
키워드 사용을
위한 IL 코드 에는 isinsta
및 castclass
.
그러나 as
키워드 사용을 위한 IL 코드 에는 isinsta
.
위에서 언급 한 사용법에서 is
키워드가 사용되는 곳에서는 두 번의 타입 캐스트가 발생하고 키워드가 사용되는 곳에서는 하나의 타입 캐스트 만 발생 as
합니다.
참고 : is
키워드를 사용하여 일부 조건을 확인하고 typecast 결과에 관심이없는 경우 typecast가 하나만 있습니다.
if (baseclassInstance is DerivedClass)
{
// do something based on the condition check.
}
is
그리고 as
키워드는 필요에 따라 사용됩니다.
답변
is 키워드는 왼쪽에있는 값이 오른쪽에있는 유형의 인스턴스인지 확인합니다. 예를 들면 :
if(obj is string)
{
...
}
이 경우 obj를 문자열로 가져 오려면 추가 명시 적 캐스트를 사용해야합니다.
as 키워드는 nullable 형식을 캐스팅하는 데 사용됩니다. 지정된 값이 지정된 유형의 인스턴스가 아닌 경우 null이 반환됩니다. 예를 들면 :
string str = obj as string;
if(str != null)
{
...
}
답변
나는 말하고 싶다 : MSDN 온라인을 읽으십시오.
is 연산자는 객체가 주어진 유형과 호환되는지 여부를 확인하고 평가 결과는 부울 (true 또는 false)입니다.
as 연산자는 예외를 발생시키지 않습니다.
답변
캐스트 인 Is operator는 성공하면 true를 반환합니다. 캐스트가 실패하면 false를 반환합니다. 그것으로 변환 된 변수를 캡처 할 수 없습니다. 이 연산자는 if 문과 표현식에서 유형을 확인할 때 가장 유용합니다. is-cast는 결과 변수가 더 이상 사용되지 않는 경우에만 이상적입니다.
캐스트 그대로입니다. 이를 통해 성능을 얻고 캐스트가 유효하지 않을 때 예외를 피할 수 있습니다. 캐스트가 불가능한 경우 Null이 반환됩니다. 참조 유형의 경우 캐스트가 권장됩니다. 빠르고 안전하며 결과 변수를 null에 대해 테스트 한 다음 사용할 수 있습니다. 이것은 여분의 캐스트를 제거합니다
답변
- is 연산자는 객체가 주어진 유형과 호환되는지 여부를 확인합니다. 결과는 true 또는 false입니다.
- 한 유형을 다른 유형으로 캐스트하는 데 사용되며 변환 실패시 예외 발생을 제외하고는 null이 발생합니다. 잘 이해하려면 링크를 참조하십시오 https://blogs.msdn.microsoft.com/prakasht/2013/04/23/difference-between-direct-casting-is-and-as-operator-in-c/