>  기사  >  백엔드 개발  >  C# 기본 지식 편집: .NET 지식

C# 기본 지식 편집: .NET 지식

黄舟
黄舟원래의
2017-02-10 15:06:041239검색

1. .NET Framework란 무엇입니까
소위 .NET FrameworkWork는 플랫폼이며, 그 목적은 교차 운영 체제 프로그래밍을 위한 것입니다. 여기에는 Windows 응용 프로그램 구성 요소, 웹 개발 모듈 등과 같은 많은 모듈이 포함되어 있습니다. 다양한 운영 체제는 고유한 특성에 따라 이러한 모듈 중 일부를 지원합니다. NET 프레임워크는 가상 머신에서 실행되는 프로그래밍 플랫폼으로 Common Language Runtime을 기반으로 하며 다양한 언어(C#, VB.NET, C++ 등) 개발을 지원합니다. 데스크톱 애플리케이션(WinForm, WPF, SilverLight, Office), 웹 애플리케이션(Asp.NET, ASP.NET) 개발 가능 MVC, SilverLight), Windows 서비스 및 모바일 임베디드 개발. 현재 일반적으로 사용되는 버전은 2.0, 3.0, 3.5, 4.0입니다.
2. .NET의 여러 개념
(1), CLR 개념?
세부정보: CLR은 공용 언어 런타임(Common Language Runtime)이기도 하며 Java 가상 머신과 같은 런타임 환경이기도 하며 리소스 관리(메모리 할당 및 가비지 수집)를 담당합니다. 기본 운영 체제를 분리해야 합니다.
(2) 관리코드의 장점은 무엇인가요?
상세보기: http://www.php.cn/
(3) 언어 상호 운용성의 진정한 의미와 표현은 무엇입니까?
세부정보: 한 언어로 작성된 클래스는 다른 언어로 작성된 클래스에서 상속될 수 있어야 합니다.
클래스는 작성된 언어에 관계없이 다른 클래스의 인스턴스를 포함할 수 있습니다. A 객체는 다음과 같습니다. 다른 언어로 작성된 객체의 메소드를 직접 호출할 수 있어야 함 ​​
메소드 간에 객체(또는 객체 참조)가 전달되어야 함
서로 다른 언어 간 메소드를 호출할 때 디버거에서 사용할 수 있어야 함 이러한 메서드 호출, 즉
다른 언어로 작성된 디버깅 코드 ​​

(4) .NET에서는 프로그램 컴파일 과정이 어떻게 되나요?
상세보기: http://www.php.cn/

(5) 중급언어의 주요 특징은 무엇인가요?
은 다양한 컴파일러에 의해 실시간으로 컴파일되고 다양한 구조에서 실행될 수 있으므로 언어 ​​분쟁이 제거됩니다. 중급언어 또는 고급언어.

(6) 동적 언어와 정적 언어, 강형 정의 언어와 약형 정의 언어의 개념적 차이는 무엇인가요?
동적 유형 언어: 런타임 중에 데이터 유형을 확인하는 언어
정적 유형 언어: 컴파일 중에 데이터 유형을 확인합니다.
강력한 유형 정의 언어: 데이터 유형 정의를 강제하는 언어입니다.
약한 유형의 정의 언어: 데이터 유형을 무시할 수 있는 언어입니다. 이는 변수에 다양한 데이터 유형의 값을 할당할 수 있는 강력한 유형의 정의 언어와 반대입니다.

(7) 컴파일 및 해석형(블로그 참조)
먼저 컴파일형을 살펴보겠습니다. 사실 어셈블리 언어와 동일합니다. 담당하는 프로그램도 있습니다. 번역을 위해 소스 코드가 변환되어 해당 실행 코드가 생성됩니다. 좀 더 전문적으로 말하면 이 과정을 컴파일이라고 하고, 컴파일을 담당하는 프로그램을 당연히 컴파일러라고 부릅니다. 우리가 작성하는 프로그램 코드가 소스 파일에 포함되어 있는 경우 일반적으로 실행 파일은 컴파일 직후 생성되며 직접 실행할 수 있습니다. 그러나 보다 복잡한 프로젝트의 경우 관리를 용이하게 하기 위해 일반적으로 코드를 다양한 소스 파일에 분산시키고 다른 모듈로 구성합니다. 이때, 각 파일을 컴파일하면 앞서 언급한 실행 파일 대신 목적 파일이 생성된다. 일반적으로 소스 파일의 컴파일은 대상 파일에 해당합니다. 이러한 대상 파일의 내용은 기본적으로 실행 가능한 코드이지만 전체 프로젝트에만 적용되므로 부분이므로 아직 직접 실행할 수는 없습니다. 모든 소스 파일이 컴파일된 후 마침내 이러한 반제품 대상 파일을 실행 파일로 "패키지"할 수 있습니다. 이 프로세스는 대상 파일이 연결되고 어셈블되는 것처럼 보이기 때문에 다른 프로그램에 의해 완료됩니다. , 그래서 링크라고도 하고, 링크를 담당하는 프로그램을...링커라고 부르기도 합니다. 링커는 대상 파일을 연결하는 것 외에도 아이콘 파일, 사운드 파일 등 다양한 리소스를 가질 수 있으며 대상 파일 간의 중복된 중복 코드를 제거하는 역할도 담당합니다. 링크가 완료되면 일반적으로 원하는 실행 파일을 얻을 수 있습니다.
설명 유형을 다시 살펴보세요. '편집'과 '통역'은 모두 '번역'을 의미하지만 번역 시점에 차이가 있습니다. 예를 들어, 외국 책을 읽을 계획인데 외국어를 모른다면 번역가를 찾아 그에게 책 전체를 처음부터 끝까지 번역할 수 있는 충분한 시간을 준 다음 책을 번역할 수 있습니다. 또는 번역자에게 즉시 읽기 지원을 요청할 수 있으며, 특정 장으로 돌아가려면 번역자가 번역해야 합니다. 다시 당신을 위해.
두 가지 방법 중 전자는 방금 언급한 컴파일된 유형과 동일합니다. 모든 코드를 한 번에 기계어로 변환한 다음 실행 파일에 작성하는 것은 우리가 말하는 해석된 유형과 동일합니다. 프로그램이 실행되기 전에는 소스 프로그램만 있고 실행 가능한 프로그램은 없으며 프로그램이 소스 프로그램의 특정 명령을 실행할 때마다 소스 코드를 바이너리 코드로 변환하는 인터프리터라는 쉘 프로그램이 있습니다. 실행이란 한마디로 끊임없는 해석, 실행, 해석, 실행... 따라서 해석된 프로그램은 프로그램 해석과 분리될 수 없습니다. 예를 들어 초기 BASIC은 고전적인 해석 언어입니다. BASIC 프로그램을 실행하려면 BASIC 환경에 들어가야 프로그램 소스 파일을 로드하여 실행할 수 있습니다. 해석된 프로그램에서는 프로그램이 항상 소스코드의 형태로 나타나기 때문에 해당 해석기가 있으면 이식에는 거의 문제가 없습니다. 컴파일된 프로그램의 소스 코드도 이식할 수 있지만 전제 조건은 서로 다른 시스템에 대해 별도로 컴파일해야 한다는 것입니다. 복잡한 프로젝트의 경우 실제로 시간이 많이 소요되며 소스 코드에서 일부 세부 사항을 수정해야 할 가능성이 매우 높습니다. 또한, 해석된 프로그램은 컴파일 단계를 저장하고 수정 및 디버깅에 매우 편리합니다. 컴파일된 프로그램과 달리 오랜 시간 동안 컴파일...링크...컴파일을 기다릴 필요가 없습니다. 작은 변경이 있을 때마다 프로세스를 진행하세요. 그러나 모든 것에는 장단점이 있습니다. 해석된 프로그램은 컴파일 프로세스를 실행 프로세스에 포함시키기 때문에, 이는 해석된 프로그램이 컴파일된 프로그램보다 훨씬 느리다고 판단합니다. 속도 차이가 수백 배나 된다는 것은 놀라운 일이 아닙니다.
컴파일형과 해석형은 모두 장점과 단점이 있습니다. 전자는 동일한 조건에서 프로그램 실행 속도가 빠르고 시스템 요구 사항이 낮기 때문에 C/C++, Pascal/Object Pascal(Delphi) 등 운영 체제, 대규모 응용 프로그램, 데이터베이스 시스템 등을 개발할 때 사용됩니다. , VB 및 기타 기본 프로그램은 모두 컴파일된 언어로 간주될 수 있지만 고속 요구 사항이 없고 서로 다른 시스템 플랫폼 간의 호환성을 위한 특정 요구 사항이 있는 프로그램과 같은 일부 웹 스크립트, 서버 스크립트 및 보조 개발 인터페이스는 일반적으로 사용됩니다. Java 및 JavaScript, VBScript, Perl, Python 등과 같은 해석 언어.
그러나 컴파일된 언어와 해석된 언어는 각각의 장점과 단점이 있고 서로 반대되기 때문에 많은 신흥 언어는 두 가지 특성에 더 가깝지만 예를 들어 Java 언어가 두 가지를 절충하는 경향이 있습니다. 인터프리터 언어의 경우, 실행되기 전에는 인터프리트 언어의 특성을 가지지 않고 미리 컴파일되어 생성되며, 생성된 코드는 기계어 코드와 자바 소스 코드 사이의 중간 코드로 실행 시 인터프리터되어 실행된다. JVM(인터프리터로 간주될 수 있는 Java의 가상 머신 플랫폼)에 의해 실행됩니다. 이는 소스 코드의 높은 추상화 및 이식성 특성을 유지할 뿐만 아니라 소스 코드의 사전 컴파일 대부분을 완료했기 때문에 "순수하게 해석된" 프로그램보다 훨씬 빠르게 실행됩니다. VB6(또는 이전 버전) 및 C#과 같은 언어의 경우 표면적으로는 .exe 실행 프로그램 파일을 생성하지만 VB6이 컴파일된 후 실제로 생성되는 것도 중간 코드이지만 컴파일러는 그 앞에 단락을 삽입합니다. .자동으로 외부인에게 전화를 겁니다. 내부 인터프리터의 코드(이 인터프리터는 사용자가 작성한 프로그램과 독립적이며 시스템의 DLL 파일에 저장됩니다. VB6으로 컴파일된 모든 실행 프로그램이 이를 사용합니다)는 실제 프로그램 본문을 해석하고 실행합니다. C#(및 기타 .net 언어 컴파일러)은 .net 해석 시스템(JVM과 마찬가지로 가상 머신 플랫폼이기도 함)에 의해 실제로 실행되는 .net 대상 코드를 생성합니다. 물론 .net 대상 코드는 이미 상당히 "낮은 수준"이고 기계어에 가깝기 때문에 여전히 컴파일된 언어로 간주되며 Java가 주장하는 "컴파일"만큼 이식성이 강력하지 않습니다. 한 번이면 어디에서나 실행됩니다. 그리고 .net은 "한 번 인코딩하면 어디서나 컴파일됩니다"입니다. 요컨대, 디자인 기술과 하드웨어의 지속적인 발전으로 컴파일되고 해석된 유형이 생겨났습니다. 접근 방식 간의 경계가 점점 흐려지고 있습니다.

위 내용은 C# 기본 지식: .NET 지식을 모아놓은 것입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.