Rumah >hujung hadapan web >tutorial js >Pandangan pertama pada C# dari perspektif JS

Pandangan pertama pada C# dari perspektif JS

Barbara Streisand
Barbara Streisandasal
2024-12-05 01:58:13946semak imbas

First glance at C# from JS perspective

Perjalanan saya bermula dengan…

Apabila saya mula membuat projek, matlamat saya adalah untuk membina permainan yang berpotensi menampilkan elemen 3D, interaktif dan terutamanya dimainkan pada platform mudah alih. Saya juga mahu mengintegrasikan AI ke dalam permainan untuk menambah kedalaman dan kerumitan. Sememangnya, ini membawa saya untuk meneroka C#—bahasa yang biasa digunakan dalam enjin permainan Unity. Walaupun saya tidak akan menyelami spesifik Unity itu sendiri dalam siaran ini, saya ingin menumpukan pada sebab saya memilih C# dan bagaimana ia dibandingkan dengan JavaScript dari perspektif saya sebagai seseorang yang datang dari latar belakang JavaScript.

Mengapa C#...

Sebab utama saya memutuskan untuk menggunakan C# ialah Unity, enjin permainan yang saya pilih, sangat bergantung pada C# sebagai bahasa pengaturcaraan utamanya. Walaupun terdapat bahasa lain yang berpotensi anda gunakan dalam Unity, C# adalah yang paling banyak disokong dan disyorkan. Ia merupakan bahasa moden, pengaturcaraan berorientasikan objek yang dibangunkan oleh Microsoft, dan ia biasanya digunakan dalam pelbagai aplikasi, termasuk perisian desktop, aplikasi web (melalui ASP.NET), dan— sudah tentu—permainan menggunakan Unity.
C# ialah sebahagian daripada ekosistem .NET yang lebih besar, yang menawarkan perpustakaan sumber dan rangka kerja yang besar untuk membina segala-galanya daripada utiliti kecil kepada aplikasi perusahaan berskala besar. Bahasa itu sendiri telah direka bentuk dengan kesederhanaan, kuasa dan keselamatan jenis dalam fikiran. Ini menjadikannya pilihan serba boleh untuk pelbagai jenis projek. Tetapi dalam siaran ini, saya ingin memberi tumpuan terutamanya pada aspek keselamatan jenis dan sebab ia menjadikan C# menonjol, terutamanya berbanding JavaScript.

Mengapa jenis data C#…

C# ialah bahasa ditaip statik, bermakna jenis pembolehubah (seperti int, bool, rentetan) ditakrifkan pada masa penyusunan. Memandangkan C# ditaip secara statik, pengkompil boleh melakukan lebih banyak kerja pengoptimuman lebih awal daripada masa. Ciri jenis keselamatannya, dengan jenis pembolehubah ditakrifkan dengan ketat, membolehkan pengkompil menangkap banyak jenis ralat sebelum kod dijalankan dan membantu kod menjadi lebih boleh diselenggara. JavaScript, yang ditaip secara dinamik, memerlukan lebih banyak semakan masa jalan disebabkan oleh proses yang dipanggil paksaan jenis, yang menambah overhed, terutamanya dalam aplikasi yang besar atau kompleks. Ini adalah sebahagian daripada sebab C# boleh menjadi lebih pantas. Walau bagaimanapun, kelebihan prestasi utama C# terletak pada tugasan intensif pengiraan dan berbilang benang (seperti menjalankan bahagian permainan yang berlainan secara selari).

Paksaan jenis 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
Pengisytiharan C# biasa bagi jenis data nilai:
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

Seperti yang kita ketahui, dalam JavaScript, pembolehubah diisytiharkan dengan var, const dan let. Juga, JavaScript tidak mempunyai perbezaan antara int dan float; ia hanya nombor. Oleh itu, C# tidak mempunyai NaN. Selain itu, dalam JavaScript, rentetan ialah jenis primitif (serupa dengan jenis nilai dalam C#), tetapi dalam C#, ia adalah jenis rujukan.

Dalam C#, jenis nilai tidak boleh menjadi batal secara lalai, tetapi anda boleh menggunakan jenis boleh batal untuk membenarkan jenis nilai diperuntukkan batal. null hanya dibenarkan untuk jenis rujukan (seperti rentetan, objek dan kelas tersuai). Secara lalai, jenis rujukan dimulakan kepada null. Untuk membolehkan jenis nilai menjadi nullable, anda menggunakan ? sintaks (seperti 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 tidak mempunyai konsep jenis nullable seperti C#; semuanya secara teknikal boleh menjadi batal atau tidak ditentukan.

Dalam kedua-dua bahasa, apabila berurusan dengan jenis rujukan, sebarang perubahan yang dibuat pada data melalui satu rujukan akan menjejaskan semua rujukan lain yang menunjuk kepada data yang sama dalam ingatan. Walau bagaimanapun, C# lebih ditaip kuat dan tatasusunan adalah saiz tetap melainkan anda menggunakan koleksi seperti Senarai, manakala tatasusunan JavaScript lebih fleksibel dan dinamik.
Jenis rujukan C#: objek, kelas, perwakilan, tatasusunan.
Jenis rujukan JavaScript: objek, tatasusunan, fungsi.

C# Array (saiz tetap):
int[] numbers = new int[] { 1, 2, 3 };
numbers[3] = 4;  // Error: Index out of bounds because the array size is fixed
JS Array (saiz dinamik):
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]

Penukaran data C#…

Dalam C#, penukaran data merujuk kepada proses menukar satu jenis data kepada yang lain, dan ia boleh dilakukan dalam dua cara utama: tersirat dan eksplisit penukaran.

  • Penukaran tersirat adalah automatik apabila menukar daripada jenis yang lebih kecil kepada yang lebih besar atau apabila tiada risiko kehilangan data.
  • Penukaran eksplisit dilakukan secara manual apabila terdapat risiko kehilangan data (biasanya melalui penghantaran).

C# juga menyediakan Kaedah terbina dalam untuk penukaran jenis selamat, terutamanya apabila menukar antara jenis yang mungkin tidak dihantar secara automatik. Selain itu, jenis nullable memerlukan pengendalian tambahan untuk menangani nilai null. Penukaran data yang betul adalah penting untuk memastikan integriti data, mengelakkan ralat masa jalan dan mengekalkan prestasi apabila bekerja dengan jenis data yang berbeza dalam C#.

Secara keseluruhannya, manakala fleksibiliti JavaScript dan sifat dinamik menjadikannya hebat untuk prototaip pantas dan pembangunan web, C# mempunyai kelebihan prestasi yang jelas apabila ia melibatkan tugas yang lebih kompleks atau intensif pengiraan. Ini benar terutamanya dalam pembangunan permainan, di mana anda mungkin perlu mengendalikan grafik 3D, AI, simulasi fizik dan operasi berprestasi tinggi yang lain.
Ingat untuk menambah koma bertitik(;) anda untuk menamatkan setiap baris kod dalam C#! Saya terus terlupa, tetapi ia sangat diperlukan dalam C#.
Berikut ialah pautan pantas kepada dokumentasi rasmi tentang Kata kunci yang disimpan ialah perkataan yang digunakan oleh bahasa, jadi kata kunci itu sudah mempunyai takrifan khusus yang tidak boleh ditulis semula

Seterusnya: Panduan untuk memecahkan dan memahami ralat C#(akan datang…)

Atas ialah kandungan terperinci Pandangan pertama pada C# dari perspektif JS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn