누군가가 왜 C# 언어를 만든 위대한 Microsoft와 이제는 C# 4.0에있는 에 C++ \ CLI에있는 중요한 기능이 없다고 말할 수 있습니까? 이것은 직접 컴파일하고 링크하는 것입니다. un-managed C++와 함께 ??닷넷의 비 관리 C++
답변
C#은 다른 언어입니다. 사용자 커뮤니티에 유용하기 위해 다른 언어의 모든 기능을 포함 할 필요는 없습니다. 특히 C# 4.0은 동적 (스크립팅) 언어에서 피처를 흡수하여 C++의 반대 방향으로 이동하는 것이 중요했습니다. 또한 C#이 C/C++ (예 : 포인터)와 기능을 공유하는 경우 특수한 "안전하지 않은"모드로 구분되어 대개 바람직하지 않음을 나타냅니다.
또한 .NET은 다중 언어 플랫폼이므로 모든 언어가 다른 언어의 모든 기능을 포함 할 필요는 없습니다. 그들은 어쨌든 쉽게 서로를 부를 수 있습니다.
C++과 C#은 근본적으로 많은 키워드와 연산자의 의미에서 서로 동의하지 않습니다. (.이 통합하기 힘들하려고 세미콜론 (임의로 변수 선언 쉼표로 구분 앞에) 그 후 여부를 가질 것인지 여부 차치)
class C { }
예 :
C는 관리되지 않는 메모리로 할당되어 GC에 고정 될 필요없이 다른 네이티브 코드로 전달 될 수있는 네이티브 C++ 클래스 여야합니까? 또는 다른 .NET 라이브러리로 전달 될 수있는 .NET 클래스 여야합니까? C
에 대한 참조를 선언하거나 C
의 인스턴스를 생성
C c;
해야합니다
또는 방법에 대한
?또는 방법에 대한 : 네이티브 C++ 힙 또는 GC의 .NET 힙에 할당
new C()
해야합니까?
C++/CLI에서이 모든 질문을 해결해야합니다. 이전 버전에서 발생한 혼란으로부터 배우면 Microsoft는 new
대신 gcnew
과 같은 다른 키워드를 사용하여 C++/CLI 내에서 두 세계를 명확하게 구분했습니다.
C#에서 오늘과 같이 C++을 컴파일 할 수있게하려는 경우 기존 C# 프로그램과의 호환성을 깨고 C#의 기본 기능인 많은 작업의 이름을 변경해야합니다.
요점은 무엇입니까?
관리되는 코드와 분리되지 않은 코드가 분리되어 있기 때문입니다. 망가 코드는 CLR에서 실행되지만 관리되지 않는 코드는 CLR에서 실행됩니다. P/Invoke를 사용하여 관리 코드와 비 관리 코드를 연결할 수 있습니다.
이것은 잠재적으로 관리되는 세계와 정보를 마샬링하는 데 도움이됩니다.
예 : 예 : 그렇다면 C++/CLI를 통해 C++ Interop의 필수 항목이 아닌 관리되는 버전의 모든 일치하는 구조체를 구현해야합니다. – Robocide
왜 mC++를 사용하지 않는 것이 좋을까요? –
- 1. 비 관리 C++ 코드를 C#
- 2. C# 비 관리 코드 호출
- 3. 관리 코드에서 비 관리 코드 사용
- 4. C에서 비 관리 C++ 함수 가져 오기
- 5. C# 스레드에서 비 관리 코드 호출
- 6. C#의 비 관리 코드를위한 포인터 포인터
- 7. 비 관리 C++ 프로젝트에서 vb.net dll 사용
- 8. 비 관리 C++에서 WCF 프록시 생성
- 9. 관리 코드에서 비 관리 코드 호출 성능
- 10. 닷넷의 MCRYPT
- 11. 원격 디버그 비 관리 코드
- 12. 비 관리 함수 호출 char *
- 13. 비 관리 코드의 세마포어
- 14. 비 관리 코드에서 DLR 사용
- 15. 닷넷의 도트는 얼마나 비쌉니까?
- 16. .NET에서 비 관리 코드 호출
- 17. 닷넷의 비동기 파일
- 18. 관리 코드가 오류를 반환하거나 비 관리 코드에 예외를 발생시켜야합니까?
- 19. MEF 및 비 관리 코드
- 20. 닷넷의 커뮤니티 프로젝트의 미래
- 21. 닷넷의 httpHandler와 같은 서블릿입니까?
- 22. 닷넷의 디스플레이 스먼트
- 23. 닷넷의 스마트 배포
- 24. 닷넷의 유용한 병렬 기술
- 25. 닷넷의 데이터 액세스 레이어
- 26. // VS 닷넷의 TODO 플래그
- 27. 닷넷의 OpenGL 래퍼
- 28. 관리 코드와 비 관리 코드를 통합/혼합하는 방법
- 29. 핸들 앱에 핸들 전달 또는 관리/비 관리 도움말
- 30. 비 관리 코드에서 COM 개체 가져 오기
예. .NET은 다국어 플랫폼이지만 C#은 모두 앞에 있으므로 C#에서 기대할 수 있습니다. C#에서 기본 매개 변수를 얻었습니다. VB에서는 VB 기능 (C++에서 가져온 것)이있었습니다. .. – Robocide
"우리"는 누구입니까? 나 자신을 위해 말하면 .NET은 다국 언어 플랫폼이므로 여러 언어를 자신의 틈새에서 지원할 것으로 기대합니다. C#의 틈새 시장에는 "C++의 수퍼 셋"이 포함되어 있지 않습니다. –