[자바 대 .NET] 무효
2016년 8월 24일 from blog.hazard.kr
자바
void
글자형이 있다.뇌는
Void
클래스까지 있다. java.lang.Void
로.Void
클래스를 통해 가능하며, constructor
도 private
라 접근할 수 없습니다.확대는 왜
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에서도
void
는 System.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는 트릭렉션용으로 반환 반환을 인식하기 때문에 만 존재하는 유형인 것이다.
뜻.
Reference
이 문제에 관하여([자바 대 .NET] 무효), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/composite/java-vs-net-void-3673텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)