[자바 대 .NET] 무효

2016년 8월 24일 from blog.hazard.kr



자바


void 글자형이 있다.
뇌는 Void 클래스까지 있다. java.lang.Void 로.Void 클래스를 통해 가능하며, constructorprivate 라 접근할 수 없습니다.
확대는 왜void를 유형으로 만들었냐, 바로 색소폰 때문이다.

public class Test {
 public static void main(String[] args) throws SecurityException, NoSuchMethodException {
  Class c1 = Test1.class.getMethod("Testt",null).getReturnType();
  System.out.println(c1 == Void.TYPE);
  System.out.println(c1 == Void.class);
 }
}

class Test1{
 public void Testt(){}
}


여기서 눈여겨 볼 부분이 바로getMethod에서 발생하는 정보를 촉구하는 다음getReturnType에 대한 긴급 요청 시,
만약 voi d가 키워드로 끝났을 경우엔 얘가 void 와 닿아서 판가름하기 어려워진다.
이러한 디자인으로 인해 연장에서는 Void 소위 클래스를 구성했습니다.
그럼 void는 원시 타입인가? 맞다. 단지 다른 원시 유형처럼, 일반적으로 (컴파일러가 막는다)
거의 제네릭은 웃기게 먹게 됩니다. 즉, Future<Void> 가 혀를 먹어서 void 람다식을 쓸 수 있다. 오 시발…

.그물



.NET Framework에서도 voidSystem.Void 구조체의 별칭으로, 엄밀히 말해 유형은 맞다.
하지만, 과도하게 달리게 해서 제네릭으로도 못쓴다. MSDN에서는 Void 우주를 탐사할 수 있도록 설명한다.

The Void structure is used in the System.Reflection namespace, but is rarely useful in a typical application. The Void structure has no members other than the ones all types inherit from the Object class.



이 구조물은 입체정합용 구조라는 것이다. 그는 쓸 수 있는 곳도 아닙니다. 지연과 용도는 게 없습니다.
이면void 만일의 복귀형을 어떻게 가져오나, 연장과 동적으로 고속렉션을 사용하는 것이 보겠다.

public class Test {
 public static void Main(string[] args) {
  Type c1 = typeof(Test1).GetMethod("Testt").ReturnType;
  Console.WriteLine(c1 == typeof(void));
  //Console.WriteLine(c1 == typeof(System.Void)); //CS0673 오류
 }
}

class Test1{
 public void Testt(){}
}


아날로그와 핀하다.

오히려 희한하게 typeof(System.Void) 식이 안먹게. 원격에서 Void.class 식으로 유형을 나눌 수 있는 단락이다.
게다가 연장과 제네릭을 못쓴다. 이렇게 막힌 이유는 ECMA 335 Standard에 있었기 때문에,
Partition II, Section 9.4에서 제네릭에서 사용하지 못한 말을 할 수 있는 유형을 연구 유사 기술로 했다.

참조형 형식 (예: System.Generic.Collection.List 1<string&> 이렇게 하면 안 됨.)
값 형식 중 필드에 CIL 평가 영역(어셈블리 상 평가식)을 가리키는 유형 (예:List<System.RuntimeArgumentHandle>)
void (예: List<System.Void> 이렇게 하면 안 됨.)
즉, 이 표준으로 인해 컴파일러에서 Void 구조체 사용을 아예 막은 것이다. 물론 자바도 닷넷에 비해 느슨하지만 막힌 건 마찬가지이다.
만약 List<System.Void> 이런 식으로 제네릭이나 할당 식으로 사용하려 하면 컴파일러는 아래와 같은 오류를 내뱉을 것이다.



System.Void cannot be used from C# — use typeof(void) to get the void type object
System.Void는 C#에서 사용할 수 없습니다. void 형식 개체를 가져오려면 typeof(void)를 사용하세요.


따라서 void 유형을 가져오려면 typeof(void) 오래 가는 방법이 없습니다.
C/C++ 처럼 void* 포인터도 가질 수 있는 이 글 범주에서 외부고 관련도 없기 때문에 설명은 할 수 없습니다.

아마도. 결론적으로 대화하면 닷넷이나 void는 트릭렉션용으로 반환 반환을 인식하기 때문에 만 존재하는 유형인 것이다.
뜻.

좋은 웹페이지 즐겨찾기