프로젝트 제작에 착수했을 때 제 목표는 잠재적으로 3D 요소를 포함하고 상호작용이 가능하며 특히 모바일 플랫폼에서 플레이할 수 있는 게임을 만드는 것이었습니다. 또한 AI를 게임에 통합하여 깊이와 복잡성을 추가하고 싶었습니다. 자연스럽게 저는 Unity 게임 엔진에서 일반적으로 사용되는 언어인 C#을 탐구하게 되었습니다. 이 게시물에서 Unity 자체의 세부 사항을 자세히 다루지는 않겠지만, 제가 C#을 선택한 이유와 JavaScript 경력자로서 제 관점에서 C#이 JavaScript와 어떻게 비교되는지에 초점을 맞추고 싶습니다.
제가 C#을 사용하기로 결정한 주된 이유는 제가 선택한 게임 엔진인 Unity가 주요 프로그래밍 언어로 C#에 크게 의존하기 때문입니다. Unity에서 사용할 수 있는 다른 언어도 있지만 C#이 가장 널리 지원되고 권장됩니다. Microsoft에서 개발한 현대적인 객체 지향 프로그래밍 언어로, 일반적으로 데스크톱 소프트웨어, 웹 애플리케이션(ASP.NET을 통해) 등 다양한 애플리케이션에서 사용됩니다. 물론이죠. Unity를 사용한 게임입니다.
C#은 소규모 유틸리티부터 대규모 엔터프라이즈 애플리케이션까지 모든 것을 구축하기 위한 방대한 리소스 및 프레임워크 라이브러리를 제공하는 더 큰 .NET 생태계의 일부입니다. 언어 자체는 단순성, 강력함, 유형 안전성을 염두에 두고 설계되었습니다. 따라서 다양한 종류의 프로젝트에 다양한 선택이 가능합니다. 하지만 이번 게시물에서는 특히 형식 안전성이라는 측면과 이것이 특히 JavaScript와 비교하여 C#을 돋보이게 하는 이유에 초점을 맞추고 싶습니다.
C#은 정적 유형 언어입니다. 즉, 변수 유형(예: int, bool, string)이 컴파일 타임에 정의됩니다. C#은 정적으로 형식이 지정되므로 컴파일러는 더 많은 최적화 작업을 미리 수행할 수 있습니다. 변수 유형이 엄격하게 정의된 유형 안전성 기능을 사용하면 컴파일러는 코드가 실행되기도 전에 다양한 유형의 오류를 포착할 수 있으며 코드를 더 쉽게 유지 관리할 수 있습니다. 동적으로 유형이 지정되는 JavaScript는 유형 강제라는 프로세스로 인해 더 많은 런타임 검사가 필요하며, 이는 특히 규모가 크거나 복잡한 애플리케이션에서 오버헤드를 추가합니다. 이것이 C#이 더 빠른 이유 중 하나입니다. 그러나 C#의 주요 성능 이점은 계산 집약적 및 멀티스레드 작업(게임의 여러 부분을 병렬로 실행하는 것과 같은)에 있습니다.
let num = 5; let str = "10"; console.log(num + str); // Outputs "510" (string concatenation instead of numeric addition) str = 10; // Assign a string to a variable and later assign a number to the same variable
int x = 10; // Whole integer number double pi = 3.14159; // Decimals 64-bit floating point, end with d but not necessary float y = 10.2f; // Decimals 32-bit floating point, have to end with f decimal price = 19.99m; // 128-bit decimal, have to end with m, for precise monetary calculations or any financial stuff bool isValid = true; //Boolean true or false char grade = 'A'; //A single character, of 16-bit Unicode character string name = "John"; //special case, is actually a reference type
아시다시피 JavaScript에서는 var, const, let으로 변수를 선언합니다. 또한 JavaScript에서는 int와 float를 구분하지 않습니다. 그것은 단지 숫자일 뿐입니다. 따라서 C#에는 NaN이 없습니다. 또한 JavaScript에서 문자열은 기본 유형(C#의 값 유형과 유사)이지만 C#에서는 참조 유형입니다.
C#에서는 값 유형이 기본적으로 null일 수 없지만 null 허용 유형을 사용하면 값 유형에 null을 할당할 수 있습니다. null은 참조 유형(예: 문자열, 객체 및 사용자 정의 클래스)에만 허용됩니다. 기본적으로 참조 유형은 null로 초기화됩니다. 값 유형이 null을 허용하도록 설정하려면 ? 구문(예: int?, double?, bool?)
string name = null; // This is valid. Person person = null; // This is also valid if 'Person' is a class. int? number = null; // Explicitly allows null since nullable type is enabled int number = null; // Error: Cannot assign null to a non-nullable value type
JavaScript에는 C#과 같은 null 허용 유형 개념이 없습니다. 모든 것은 기술적으로 null이거나 정의되지 않을 수 있습니다.
두 언어 모두에서 참조 유형을 처리할 때 하나의 참조를 통해 데이터에 대한 변경 사항이 메모리의 동일한 데이터를 가리키는 다른 모든 참조에 영향을 미칩니다. 그러나 C#은 강력한 형식에 가깝고 List
C# 참조 유형: 개체, 클래스, 대리자, 배열.
JavaScript 참조 유형: 객체, 배열, 함수.
int[] numbers = new int[] { 1, 2, 3 }; numbers[3] = 4; // Error: Index out of bounds because the array size is fixed
let numbers = [1, 2, 3]; numbers.push(4); // Adds 4 to the end of the array, dynamically resizing it console.log(numbers); // [1, 2, 3, 4]
C#에서 데이터 변환은 한 데이터 유형을 다른 데이터 유형으로 변환하는 프로세스를 의미하며 암시적 및 명시적 전환.
대체로 JavaScript의 유연성과 동적 특성은 빠른 프로토타입 제작과 웹 개발에 적합하지만 C#은 더 복잡하거나 컴퓨팅 집약적인 작업에 있어서는 확실한 성능 우위를 제공합니다. 이는 3D 그래픽, AI, 물리 시뮬레이션 및 기타 고성능 작업을 처리해야 하는 게임 개발에서 특히 그렇습니다.
C#의 모든 코드 줄을 끝내려면 세미콜론(;)을 추가하는 것을 잊지 마세요! 자꾸 잊어버리는데 C#에서는 꼭 필요한 항목입니다.
다음은 예약어에 대한 공식 문서에 대한 빠른 링크입니다. 예약어는 언어에서 사용하는 단어이므로 다시 작성해서는 안 되는 특정 정의가 이미 있습니다
다음: C# 오류 분석 및 이해 가이드(곧 제공 예정…)
위 내용은 JS 관점에서 C#을 한눈에 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!