>웹 프론트엔드 >JS 튜토리얼 >JS 관점에서 C#을 한눈에 살펴보기

JS 관점에서 C#을 한눈에 살펴보기

Barbara Streisand
Barbara Streisand원래의
2024-12-05 01:58:13949검색

First glance at C# from JS perspective

나의 여행은 다음과 같이 시작되었습니다.

프로젝트 제작에 착수했을 때 제 목표는 잠재적으로 3D 요소를 포함하고 상호작용이 가능하며 특히 모바일 플랫폼에서 플레이할 수 있는 게임을 만드는 것이었습니다. 또한 AI를 게임에 통합하여 깊이와 복잡성을 추가하고 싶었습니다. 자연스럽게 저는 Unity 게임 엔진에서 일반적으로 사용되는 언어인 C#을 탐구하게 되었습니다. 이 게시물에서 Unity 자체의 세부 사항을 자세히 다루지는 않겠지만, 제가 C#을 선택한 이유와 JavaScript 경력자로서 제 관점에서 C#이 JavaScript와 어떻게 비교되는지에 초점을 맞추고 싶습니다.

왜 C#인가...

제가 C#을 사용하기로 결정한 주된 이유는 제가 선택한 게임 엔진인 Unity가 주요 프로그래밍 언어로 C#에 크게 의존하기 때문입니다. Unity에서 사용할 수 있는 다른 언어도 있지만 C#이 가장 널리 지원되고 권장됩니다. Microsoft에서 개발한 현대적인 객체 지향 프로그래밍 언어로, 일반적으로 데스크톱 소프트웨어, 웹 애플리케이션(ASP.NET을 통해) 등 다양한 애플리케이션에서 사용됩니다. 물론이죠. Unity를 사용한 게임입니다.
C#은 소규모 유틸리티부터 대규모 엔터프라이즈 애플리케이션까지 모든 것을 구축하기 위한 방대한 리소스 및 프레임워크 라이브러리를 제공하는 더 큰 .NET 생태계의 일부입니다. 언어 자체는 단순성, 강력함, 유형 안전성을 염두에 두고 설계되었습니다. 따라서 다양한 종류의 프로젝트에 다양한 선택이 가능합니다. 하지만 이번 게시물에서는 특히 형식 안전성이라는 측면과 이것이 특히 JavaScript와 비교하여 C#을 돋보이게 하는 이유에 초점을 맞추고 싶습니다.

C# 데이터 유형이 필요한 이유

C#은 정적 유형 언어입니다. 즉, 변수 유형(예: int, bool, string)이 컴파일 타임에 정의됩니다. C#은 정적으로 형식이 지정되므로 컴파일러는 더 많은 최적화 작업을 미리 수행할 수 있습니다. 변수 유형이 엄격하게 정의된 유형 안전성 기능을 사용하면 컴파일러는 코드가 실행되기도 전에 다양한 유형의 오류를 포착할 수 있으며 코드를 더 쉽게 유지 관리할 수 있습니다. 동적으로 유형이 지정되는 JavaScript는 유형 강제라는 프로세스로 인해 더 많은 런타임 검사가 필요하며, 이는 특히 규모가 크거나 복잡한 애플리케이션에서 오버헤드를 추가합니다. 이것이 C#이 더 빠른 이유 중 하나입니다. 그러나 C#의 주요 성능 이점은 계산 집약적멀티스레드 작업(게임의 여러 부분을 병렬로 실행하는 것과 같은)에 있습니다.

JS 유형 강제:
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
값 데이터 유형의 일반적인 C# 선언:
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와 같은 컬렉션을 사용하지 않는 한 배열의 크기는 고정된 반면 JavaScript 배열은 더 유연하고 동적입니다.
C# 참조 유형: 개체, 클래스, 대리자, 배열.
JavaScript 참조 유형: 객체, 배열, 함수.

C# 배열(고정 크기):
int[] numbers = new int[] { 1, 2, 3 };
numbers[3] = 4;  // Error: Index out of bounds because the array size is fixed
JS 배열(동적 크기):
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# 데이터 변환…

C#에서 데이터 변환은 한 데이터 유형을 다른 데이터 유형으로 변환하는 프로세스를 의미하며 암시적명시적 전환.

  • 암시적 변환은 더 작은 유형에서 더 큰 유형으로 변환하거나 데이터 손실 위험이 없는 경우 자동으로 수행됩니다.
  • 명시적 변환은 데이터 손실 위험이 있는 경우 수동으로 수행됩니다(일반적으로 캐스팅을 통해).
C#은 특히 자동으로 캐스팅되지 않을 수 있는 유형 간에 변환할 때 안전한 유형 변환을 위한 내장 메서드도 제공합니다. 또한 null 허용 유형에는 null 값을 처리하기 위한 추가 처리가 필요합니다. C#에서 다양한 데이터 유형으로 작업할 때 데이터 무결성을 보장하고, 런타임 오류를 방지하고, 성능을 유지하려면 적절한 데이터 변환이 중요합니다.

대체로 JavaScript의 유연성과 동적 특성은 빠른 프로토타입 제작과 웹 개발에 적합하지만 C#은 더 복잡하거나 컴퓨팅 집약적인 작업에 있어서는 확실한 성능 우위를 제공합니다. 이는 3D 그래픽, AI, 물리 시뮬레이션 및 기타 고성능 작업을 처리해야 하는 게임 개발에서 특히 그렇습니다.
C#의 모든 코드 줄을 끝내려면 세미콜론(;)을 추가하는 것을 잊지 마세요! 자꾸 잊어버리는데 C#에서는 꼭 필요한 항목입니다.
다음은 예약어에 대한 공식 문서에 대한 빠른 링크입니다. 예약어는 언어에서 사용하는 단어이므로 다시 작성해서는 안 되는 특정 정의가 이미 있습니다

다음: C# 오류 분석 및 이해 가이드(곧 제공 예정…)

위 내용은 JS 관점에서 C#을 한눈에 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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