Rumah >hujung hadapan web >tutorial js >Pandangan pertama pada C# dari perspektif JS
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.
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.
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).
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
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
Jenis rujukan C#: objek, kelas, perwakilan, tatasusunan.
Jenis rujukan JavaScript: objek, tatasusunan, fungsi.
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]
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.
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!