-1
CLR을 사용하면 Castclass
조작이 수행되었는지 여부에 관계없이 개체 참조가있는 필드를 설정할 수 있습니다. 스택 맨 위에있는 객체 참조가 approperiate 유형인지 확실하다면 필드를 설정하는 것이 좋습니까? 그렇다면 Castclass
은 컴파일러에서 사용하는 안전 기능입니까?Castclass OpCode가 필요합니까?
CLR을 사용하면 Castclass
조작이 수행되었는지 여부에 관계없이 개체 참조가있는 필드를 설정할 수 있습니다. 스택 맨 위에있는 객체 참조가 approperiate 유형인지 확실하다면 필드를 설정하는 것이 좋습니까? 그렇다면 Castclass
은 컴파일러에서 사용하는 안전 기능입니까?Castclass OpCode가 필요합니까?
CIL을 작성할 때 OOP 언어가 아닌 가상 스택 기본 언어로 작성합니다.
Castclass는 CIL에서 모든 것이 쉽게 엉망이 될 수 있기 때문에 참조 주소가 원하는 클래스인지 확인하기 위해 사용할 선택적 opcode입니다.
이것은 변형 A를 CA 유형에서 CB 유형으로, 재고 인스턴스 CB를 B에서 A (모두 사용자가 http://pastebin.com/U1fuH5vC에서 수행)로 변경하는 예입니다.
.method public static void Swap(class TestOOP.Module1/CA& A,
class TestOOP.Module1/CB& B) cil managed
{
.maxstack 2
ldarg.0
ldarg.1
ldind.ref
stind.ref
ret
}
[OpCodes.Castclass. 필요한가요?] (http://stackoverflow.com/questions/6265453/opcodes-castclass-is-it-necessary) –
@Asad - 정확하지만 불행히도 그 질문에는 확실한 답이 없습니다. – toplel32
캐스트 (및 따라서 캐스팅 연산 코드)가 필요 없다는 대답이 나와 있습니다. –