Latihan - Mengembalikan nilai dan parameter metode

Selesai

Di unit sebelumnya, Anda menggunakan skenario pengodean "roll dice" untuk mengilustrasikan perbedaan antara metode stateful (instans) dan stateless (statis). Skenario yang sama dapat membantu Anda memahami konsep penting lainnya tentang metode panggilan. Contohnya:

  • menangani nilai pengembalian metode.
  • parameter metode dan meneruskan argumen ke metode .
  • memilih versi metode yang kelebihan beban.

Mengembalikan nilai

Beberapa metode dirancang untuk menyelesaikan fungsinya dan mengakhiri "diam-diam". Dengan kata lain, nilai tersebut tidak mengembalikan nilai saat selesai. Metode disebut sebagai metode kosong.

Metode lain dirancang untuk mengembalikan nilai setelah selesai. Nilai yang dikembalikan biasanya merupakan hasil dari operasi. Nilai pengembalian adalah cara utama bagi metode untuk berkomunikasi kembali ke kode yang memanggil metode .

Anda melihat bahwa Random.Next() metode mengembalikan jenis yang int berisi nilai angka yang dihasilkan secara acak. Namun, metode dapat dirancang untuk mengembalikan jenis data apa pun, bahkan kelas lain. Misalnya, String kelas memiliki beberapa metode yang mengembalikan string, beberapa yang mengembalikan bilangan bulat, dan beberapa yang mengembalikan Boolean.

Saat memanggil metode yang mengembalikan nilai, Anda akan sering menetapkan nilai pengembalian ke variabel. Dengan begitu, Anda dapat menggunakan nilainya nanti dalam kode Anda. Dalam skenario dadu, Anda menetapkan nilai Random.Next() pengembalian ke roll variabel:

int roll = dice.Next(1, 7);

Dalam beberapa kasus, Anda mungkin ingin menggunakan nilai pengembalian secara langsung, tanpa menetapkannya ke variabel. Misalnya, Anda mungkin ingin mencetak nilai pengembalian ke konsol sebagai berikut:

Console.WriteLine(dice.Next(1, 7));

Meskipun metode mengembalikan nilai, dimungkinkan untuk memanggil metode tanpa menggunakan nilai yang dikembalikan. Misalnya, Anda dapat mengabaikan nilai pengembalian dengan memanggil metode sebagai berikut:

dice.Next(1, 7);

Namun, mengabaikan nilai pengembalian akan sia-sia. Alasan Anda memanggil Next() metode ini adalah agar Anda dapat mengambil nilai acak berikutnya.

Parameter metode dan argumen dalam pernyataan panggilan

Saat Anda memanggil metode, Anda dapat meneruskan nilai yang akan digunakan metode untuk menyelesaikan tugasnya. Nilai-nilai ini disebut argumen. Metode ini menggunakan argumen untuk menetapkan nilai ke parameter yang ditentukan dalam tanda tangan metode. Metode dapat memerlukan satu atau beberapa parameter untuk menyelesaikan tugasnya, atau tidak sama sekali.

Catatan

Sering kali, istilah 'parameter' dan 'argumen' digunakan secara bergantian. Namun, 'parameter' mengacu pada variabel yang digunakan di dalam metode . 'Argumen' adalah nilai yang diteruskan saat metode dipanggil.

Sebagian besar metode dirancang untuk menerima satu atau beberapa parameter. Parameter dapat digunakan untuk mengonfigurasi bagaimana metode melakukan pekerjaannya, atau mungkin dioperasikan secara langsung. Misalnya, Random.Next() metode ini menggunakan parameter untuk mengonfigurasi batas atas dan bawah dari nilai yang dikembalikan. Namun, Console.WriteLine() menggunakan parameter secara langsung dengan mencetak nilai ke konsol.

Metode menggunakan tanda tangan metode untuk menentukan jumlah parameter yang akan diterima metode, serta jenis data setiap parameter. Pernyataan pengodean yang memanggil metode harus mematuhi persyaratan yang ditentukan oleh tanda tangan metode. Beberapa metode menyediakan opsi untuk jumlah dan jenis parameter yang diterima metode.

Ketika memanggil metode, pemanggil menyediakan nilai konkret, yang disebut argumen, untuk setiap parameter. Argumen harus kompatibel dengan jenis parameter. Namun, nama argumen, jika seseorang digunakan dalam kode panggilan, tidak harus sama dengan nama parameter yang ditentukan dalam metode .

Pertimbangkan gambar berikut:

Random dice = new Random();
int roll = dice.Next(1, 7);
Console.WriteLine(roll);

Baris kode pertama membuat instans Random kelas bernama dice. Baris kode kedua menggunakan dice.Next(1, 7) metode untuk menetapkan nilai acak ke bilangan bulat bernama roll. Perhatikan bahwa pernyataan panggilan menyediakan dua argumen yang dipisahkan oleh , simbol. Metode ini Next() mencakup tanda tangan metode yang menerima dua parameter jenis int. Parameter ini digunakan untuk mengonfigurasi batas bawah dan atas untuk angka acak yang dikembalikan. Baris kode akhir menggunakan Console.WriteLine() metode untuk mencetak nilai roll ke konsol.

Argumen yang diteruskan ke metode harus jenis data yang sama dengan parameter terkait yang ditentukan oleh metode . Jika Anda mencoba meneruskan argumen yang salah ditik ke metode, pengkompilasi C# akan menangkap kesalahan Anda dan memaksa Anda untuk memperbarui pernyataan panggilan Anda sebelum kode Anda akan dikompilasi dan dijalankan. Pemeriksaan jenis adalah salah satu cara yang digunakan C# dan .NET untuk mencegah pengguna akhir mengalami kesalahan saat runtime.

Catatan

Meskipun parameter sering digunakan, tidak semua metode memerlukan parameter untuk menyelesaikan tugas mereka. Misalnya, Console kelas menyertakan Console.Clear() metode yang tidak menggunakan parameter. Karena metode ini digunakan untuk menghapus informasi apa pun yang ditampilkan di konsol, metode ini tidak memerlukan parameter untuk menyelesaikan tugasnya.

Metode yang kelebihan beban

Banyak metode di Pustaka Kelas .NET memiliki tanda tangan metode yang kelebihan beban. Antara lain, ini memungkinkan Anda untuk memanggil metode dengan atau tanpa argumen yang ditentukan dalam pernyataan panggilan.

Metode yang kelebihan beban ditentukan dengan beberapa tanda tangan metode. Metode yang kelebihan beban menyediakan cara berbeda untuk memanggil metode atau menyediakan tipe data yang berbeda.

Dalam beberapa kasus, versi metode yang kelebihan beban digunakan untuk menentukan parameter menggunakan jenis data yang berbeda. Misalnya, metode Console.WriteLine() memiliki 19 versi yang kelebihan beban yang berbeda. Sebagian besar kelebihan beban tersebut memungkinkan metode untuk menerima berbagai jenis dan kemudian menulis informasi yang ditentukan ke konsol. Pertimbangkan gambar berikut:

int number = 7;
string text = "seven";

Console.WriteLine(number);
Console.WriteLine();
Console.WriteLine(text);

Dalam contoh ini, Anda menggunakan tiga versi yang kelebihan beban yang terpisah dari metode WriteLine().

  • Metode pertama WriteLine() menggunakan tanda tangan metode yang menentukan int parameter.
  • Metode kedua WriteLine() menggunakan tanda tangan metode yang menentukan parameter nol.
  • Metode ketiga WriteLine() menggunakan tanda tangan metode yang menentukan string parameter.

Dalam kasus lain, versi metode yang kelebihan beban menentukan jumlah parameter yang berbeda. Parameter alternatif dapat digunakan untuk memberikan kontrol lebih atas hasil yang diinginkan. Misalnya, Random.Next() metode ini memiliki versi kelebihan beban yang memungkinkan Anda mengatur berbagai tingkat batasan pada angka yang dihasilkan secara acak.

Latihan berikut memanggil Random.Next() metode untuk menghasilkan nilai bilangan bulat acak dengan tingkat batasan yang berbeda:

  1. Pastikan Anda memiliki file Program.cs kosong yang terbuka di Visual Studio Code.

    Jika perlu, buka Visual Studio Code, lalu selesaikan langkah-langkah berikut untuk menyiapkan file Program.cs di Editor:

    1. Pada menu File, pilih Buka Folder.

    2. Gunakan dialog Buka Folder untuk menavigasi, lalu buka, folder CsharpProjects .

    3. Di panel Visual Studio Code EXPLORER, pilih Program.cs.

    4. Pada menu Pilihan Visual Studio Code, pilih Pilih Semua, lalu tekan tombol Hapus.

  2. Untuk memeriksa versi Random.Next() metode yang kelebihan beban, masukkan kode berikut:

    Random dice = new Random();
    int roll1 = dice.Next();
    int roll2 = dice.Next(101);
    int roll3 = dice.Next(50, 101);
    
    Console.WriteLine($"First roll: {roll1}");
    Console.WriteLine($"Second roll: {roll2}");
    Console.WriteLine($"Third roll: {roll3}");
    
    
  3. Pada menu File Visual Studio Code, klik Simpan.

  4. Di panel EXPLORER, untuk membuka Terminal di lokasi folder TestProject Anda, klik kanan TestProject, lalu pilih Buka di Terminal Terintegrasi.

    Pastikan jalur folder ditampilkan di prompt perintah menunjuk ke folder yang berisi file Program.cs Anda.

  5. Pada perintah Terminal, untuk menjalankan kode Anda, ketik dotnet run lalu tekan Enter.

    Perhatikan bahwa hasil Anda mirip dengan output berikut:

    First roll: 342585470
    Second roll: 43
    Third roll: 89
    

    Angka yang dihasilkan acak, sehingga hasil Anda akan berbeda. Namun, contoh ini menunjukkan rentang hasil yang mungkin Anda lihat.

  6. Luangkan waktu satu menit untuk memeriksa kode.

    Versi pertama metode Next() tidak menetapkan batas atas dan bawah, sehingga metode akan mengembalikan nilai mulai dari 0 hingga 2,147,483,647, yang merupakan nilai maksimum yang dapat disimpan int.

    Versi kedua metode Next() menentukan nilai maksimum sebagai batas atas, jadi dalam hal ini, Anda dapat mengharapkan nilai acak antara 0 dan 100.

    Versi ketiga metode Next() menentukan nilai minimum dan maksimum, jadi dalam hal ini, Anda dapat mengharapkan nilai acak antara 50 dan 100.

  7. Tutup panel Terminal.

Anda telah memeriksa beberapa topik di unit ini. Berikut adalah daftar singkat apa yang telah Anda bahas:

  • Anda telah memeriksa cara menggunakan nilai pengembalian metode (saat metode memberikan nilai pengembalian).
  • Anda telah memeriksa bagaimana metode dapat menggunakan parameter yang didefinisikan sebagai jenis data tertentu.
  • Anda telah memeriksa versi yang kelebihan beban dari beberapa metode yang menyertakan parameter atau jenis parameter yang berbeda.

Menggunakan IntelliSense

Visual Studio Code menyertakan fitur IntelliSense yang didukung oleh layanan bahasa. Misalnya, layanan bahasa C# menyediakan penyelesaian kode cerdas berdasarkan semantik bahasa dan analisis kode sumber Anda. Di bagian ini, Anda akan menggunakan IntelliSense untuk membantu Anda menerapkan metode .Random.Next()

Karena IntelliSense diekspos dalam editor kode, Anda dapat belajar banyak tentang metode tanpa meninggalkan lingkungan pengodean. IntelliSense menyediakan petunjuk dan informasi referensi di jendela popup di bawah lokasi kursor saat Anda memasukkan kode Anda. Saat Anda mengetik kode, jendela popup IntelliSense akan mengubah kontennya tergantung pada konteksnya.

Misalnya, saat Anda memasukkan kata dice secara perlahan, IntelliSense akan menampilkan semua kata kunci C#, pengidentifikasi (atau lebih tepatnya, nama variabel dalam kode), dan kelas di Pustaka Kelas .NET yang cocok dengan huruf yang dimasukkan. Fitur pelengkapan otomatis editor kode dapat digunakan untuk menyelesaikan pengetikan kata yang merupakan kecocokan teratas dalam popup IntelliSense. Coba.

  1. Pastikan File Program.cs Anda terbuka di Visual Studio Code.

    Aplikasi Anda harus berisi kode berikut:

    Random dice = new Random();
    int roll1 = dice.Next();
    int roll2 = dice.Next(101);
    int roll3 = dice.Next(50, 101);
    
    Console.WriteLine($"First roll: {roll1}");
    Console.WriteLine($"Second roll: {roll2}");
    Console.WriteLine($"Third roll: {roll3}");
    
    
  2. Di bagian bawah file kode Anda, untuk bereksperimen dengan IntelliSense, masukkan huruf secara perlahan d, i lalu c.

  3. Perhatikan jendela popup IntelliSense yang muncul saat Anda mulai mengetik.

    Ketika IntelliSense muncul, daftar saran akan muncul. Pada saat Anda memasukkan dic, pengidentifikasi dice harus berada di bagian atas daftar.

  4. Tekan tombol Tab pada keyboard.

    Perhatikan bahwa seluruh kata dice selesai di editor. Anda bisa menggunakan tombol panah atas dan bawah untuk mengubah pilihan sebelum menekan tombol Tab.

    Catatan

    Jika jendela IntelliSense menghilang, jendela tersebut dapat dipilih dengan menggunakan backspace tombol pada keyboard, lalu masukkan kembali simbol terakhir untuk membuka kembali IntelliSense.

  5. Untuk menentukan operator akses anggota, masukkan . karakter.

    Perhatikan bahwa popup IntelliSense muncul kembali saat Anda memasukkan . dan menunjukkan daftar semua metode yang tidak difilter (dan anggota kelas lainnya) yang tersedia.

  6. Masukkan N

    Daftar akan difilter, dan kata Next harus menjadi pilihan teratas.

  7. Untuk melengkapi seluruh kata secara otomatis, tekan tombol Tab.

  8. Untuk menentukan operator pemanggilan metode, masukkan (

    Perhatikan bahwa tanda kurung penutup secara otomatis ditambahkan untuk Anda.

    Operator pemanggilan metode adalah kumpulan tanda kurung yang terletak di sebelah kanan nama metode. Bagian pernyataan panggilan ini adalah tempat Anda menentukan argumen yang akan diteruskan ke metode . Operator pemanggilan metode diperlukan saat memanggil metode .

  9. Perhatikan bahwa popup IntelliSense sekarang menampilkan informasi terperinci tentang metode .Random.Next()

  10. Luangkan waktu satu menit untuk memeriksa popup IntelliSense untuk metode tersebut Random.Next() .

    Catatan

    Jika popup IntelliSense ditutup sebelum Anda memiliki kesempatan untuk memeriksanya, hapus operator ()pemanggilan , lalu masukkan ( untuk menampilkan popup IntelliSense.

    Perhatikan bahwa jendela popup mencakup tiga bagian, satu di sebelah kiri dan dua di sebelah kanan.

    Di sisi kanan, Anda akan melihat int Random.Next(int minValue, int maxValue) di bagian atas, dan Returns a non-negative random integer. di bagian bawah. int menentukan jenis pengembalian untuk metode . Dengan kata lain, ketika versi metode ini dijalankan, itu akan mengembalikan nilai jenis int.

    Di sisi kiri popup IntelliSense, muncul 1/3.

    menunjukkan 1/3 bahwa Anda melihat tanda tangan metode pertama dari tiga metode untuk metode tersebut Next() . Perhatikan bahwa versi tanda tangan metode ini memungkinkan metode untuk bekerja tanpa parameter (tidak ada argumen yang diteruskan ke metode dalam pernyataan panggilan).

    Perhatikan bahwa ada juga panah kecil di atas dan di bawah 1/3.

  11. Untuk memeriksa versi metode kedua yang kelebihan beban, tekan tombol Panah Bawah pada keyboard.

    Perhatikan bahwa Anda dapat menggunakan tombol panah atas dan bawah untuk menavigasi antara berbagai versi yang kelebihan beban. Saat melakukannya, Anda akan melihat 1/3, , 2/3dan 3/3 muncul di sisi kiri popup IntelliSense, dan penjelasan bermanfaat di sebelah kanan.

  12. Luangkan waktu satu menit untuk memeriksa masing-masing versi yang kelebihan beban untuk metode tersebut Random.Next() .

    Versi metode kedua yang kelebihan beban, 2/3, memberi tahu Anda bahwa Next() metode dapat menerima parameter int maxValue. Deskripsi memberi tahu Anda bahwa maxValue adalah batas atas eksklusif untuk angka yang Anda inginkan Next() untuk dihasilkan metode. Eksklusif menunjukkan bahwa angka pengembalian akan kurang dari maxValue. Jadi, ketika Anda menentukan dice.Next(1,7); putaran dadu maks akan menjadi 6. Perhatikan bahwa pesan di bagian bawah bagian telah diperbarui ke: Returns a non-negative random integer that is less than the specified maximum.

    Versi ketiga dari metode ini, 3/3, memberi tahu Anda bahwa Next() metode dapat menerima keduanya int minValue dan int maxValue sebagai parameter. Parameter baru, minValue, adalah batas yang lebih rendah untuk jumlah yang Anda inginkan Next() untuk dihasilkan metode. Karena batas bawah inklusif daripada eksklusif, nilai pengembalian dapat sama dengan minValue. Pesan di bagian bawah sekarang menyatakan: Returns a random integer that is within a specified range.

    Dalam hal ini, IntelliSense menyediakan semua informasi yang Anda butuhkan untuk memilih kelebihan beban yang sesuai, termasuk penjelasan terperinci tentang maxValue dan minValue. Namun, Anda mungkin mengalami situasi di mana Anda perlu berkonsultasi dengan dokumentasi metode.

Gunakan learn.microsoft.com untuk informasi tentang metode yang kelebihan beban

Cara kedua untuk mempelajari tentang versi metode yang kelebihan beban adalah dengan membaca dokumentasi untuk metode tersebut. Dokumentasi ini juga akan membantu Anda memahami dengan tepat apa yang dimaksudkan oleh setiap parameter.

  1. Untuk memulai, buka browser Web dan mesin pencari pilihan Anda.

  2. Melakukan pencarian untuk C# Random.Next()

    Pencarian Anda harus menyertakan nama kelas dan nama metode. Anda mungkin juga ingin menyertakan istilah C# untuk memastikan untuk tidak secara tidak sengaja mendapatkan hasil untuk bahasa pemrograman lainnya.

  3. Pilih hasil pencarian teratas dengan URL yang dimulai dengan https://learn.microsoft.com.

    Salah satu hasil pencarian teratas harus mengarah ke URL yang diawali dengan https://learn.microsoft.com. Dalam hal ini, judul tautan akan muncul sebagai Random.Next Method.

    Berikut tautannya jika terjadi masalah saat mencarinya menggunakan mesin cari:

    Metode Random.Next

  4. Buka tautan untuk C# Random.Next().

  5. Pindai dokumentasi dengan cepat.

    Gulir ke bawah melalui konten halaman untuk melihat berbagai sampel kode. Perhatikan bahwa Anda dapat menjalankan sampel di jendela browser.

    Dokumentasi learn.microsoft.com mengikuti format standar untuk setiap kelas dan metode di Pustaka Kelas .NET.

  6. Di dekat bagian atas halaman web, temukan bagian berlabel Overloads.

    Perhatikan bahwa ada tiga versi metode yang kelebihan beban yang tercantum. Setiap versi kelebihan beban yang tercantum menyertakan hyperlink ke lokasi lebih jauh ke bawah di halaman.

  7. Untuk menavigasi "on-page" ke deskripsi versi kedua yang kelebihan beban, pilih Berikutnya(Int32).

    Dokumentasi untuk setiap versi metode meliputi:

    • Deskripsi singkat tentang fungsionalitas metode
    • Definisi metode
    • Parameter yang diterima metode
    • Mengembalikan nilai
    • Pengecualian yang dapat dimunculkan
    • Contoh metode yang digunakan
    • Komentar lain tentang metode
  8. Luangkan waktu semenit untuk meninjau bagian Parameter .

    Di bagian Parameter , Anda dapat membaca bahwa maxValue parameter adalah "batas atas eksklusif dari angka acak yang akan dihasilkan." Batas atas eksklusif berarti bahwa jika Anda ingin angka tidak lebih besar dari 10, Anda harus meneruskan nilai 11.

    Anda juga dapat membaca di baris berikutnya: "maxValue harus lebih besar dari atau sama dengan 0." Apa yang terjadi jika Anda mengabaikan pernyataan ini? Anda dapat melihat di bagian Pengecualian bahwa metode akan mengembalikan ArgumentOutOfRangeException ketika maxValue kurang dari 0.

    Catatan

    Konten di learn.microsoft.com adalah "sumber kebenaran" untuk Pustaka Kelas .NET. Penting untuk meluangkan waktu membaca dokumentasi untuk memahami cara metode tertentu akan bekerja.

Rekap

  • Metode mungkin tidak menerima parameter atau beberapa parameter, tergantung pada bagaimana parameter dirancang dan diimplementasikan. Saat meneruskan beberapa parameter, pisahkan dengan , simbol.
  • Metode mungkin mengembalikan nilai ketika mereka menyelesaikan tugas mereka, atau mungkin tidak mengembalikan apa-apa (batal).
  • Metode yang kelebihan beban mendukung beberapa implementasi metode, masing-masing dengan tanda tangan metode unik (jumlah parameter dan jenis data setiap parameter).
  • IntelliSense dapat membantu menulis kode dengan lebih cepat. Ini memberikan referensi cepat ke metode, nilai pengembaliannya, versi kelebihan bebannya, dan jenis parameternya.
  • learn.microsoft.com adalah "sumber kebenaran" ketika Anda ingin mempelajari cara kerja metode dalam Pustaka Kelas .NET.

Uji pengetahuan Anda

1.

Apa itu nilai pengembalian?

2.

Apa itu parameter metode?

3.

Apa itu metode kelebihan beban?

4.

Bagaimana IntelliSense membantu pengembang?