Latest web development tutorials

Metode C #

Salah satu cara adalah dengan menempatkan beberapa pernyataan yang relevan dikelompokkan bersama-sama untuk blok pernyataan untuk melakukan tugas tersebut. Setiap program memiliki setidaknya C # kelas dengan metode Utama.

Untuk menggunakan metode, Anda perlu:

  • metode definisi
  • Memanggil metode

Metode # C sebagaimana didefinisikan dalam

Ketika mendefinisikan sebuah metode, pada dasarnya berbicara, itu adalah pernyataan dari elemen struktur. Dalam C #, metode definisi sintaks adalah sebagai berikut:

<Access specifier> <Kembali Type> <Metode Nama> (Parameter Daftar)
{
   tubuh metode
}

Berikut ini adalah unsur-unsur individual dari:

  • Akses specifier: akses pengubah, variabel keputusan atau metode untuk visibilitas kelas lain.
  • Jenis pulang: jenis kembali, metode dapat mengembalikan nilai.Jenis kembali adalah tipe data dari nilai yang dikembalikan oleh metode ini. Jika metode ini tidak mengembalikan nilai-nilai apapun, jenis kembalibatal.
  • nama metode: nama metode, adalah sebuah identifikasi unik, dan kasus sensitif.Hal ini tidak bisa sama dengan deklarasi kelas pengenal lainnya.
  • daftar parameter: daftar parameter, tertutup dalam tanda kurung, parameter yang digunakan untuk transmisi data dan metode menerima.daftar jenis parameter parameter mengacu pada metode, pesanan dan kuantitas. Parameter adalah opsional, yang mengatakan, metode mungkin tidak mengandung parameter.
  • Metode tubuh: Metode tubuh, termasuk kebutuhan untuk menyelesaikan tugas-tugas set instruksi.

contoh

Fragmen kode berikut menunjukkan fungsiFindMax,yang menerima dua nilai integer, dan mengembalikan lebih besar dari dua nilai. Memiliki modifier akses publik, sehingga dapat diakses dengan menggunakan instance dari kelas dari luar kelas.

class NumberManipulator
{
   public int FindMax(int num1, int num2)
   {
      /* 局部变量声明 */
      int result;

      if (num1 > num2)
         result = num1;
      else
         result = num2;

      return result;
   }
   ...
}

Memanggil metode dalam C #

Anda dapat menggunakan nama metode panggilan. Contoh berikut menggambarkan hal ini:

menggunakan System;

namespace CalculatorApplication
{
   kelas NumberManipulator
   {
      public int FindMax (int num1, int num2)
      {
         / * Variabel lokal deklarasi * /
         int hasil;

         jika (num1> num2)
            Hasil = num1;
         lain
            Hasil = num2;

         Hasil kembali;
      }
      static void Main (string [] args)
      {
         / * Variabel definisi lokal * /
         int a = 100;
         int b = 200;
         int ret;
         NumberManipulator n = baru NumberManipulator ();

         // Panggil FindMax metode ret = n.FindMax (a, b);
         Console.WriteLine ( "Max adalah: {0}", ret);
         Console.ReadLine ();
      }
   }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Nilai maksimum adalah: 200

Anda juga dapat jenis lain dari metode umum contoh kelas yang disebut dari kelas lain. Misalnya, metodeFindMaxmilik kategoriNumberManipulator,Anda dapat menyebutnya dariUjikelas lain di.

menggunakan System;

namespace CalculatorApplication
{
    kelas NumberManipulator
    {
        public int FindMax (int num1, int num2)
        {
            / * Variabel lokal deklarasi * /
            int hasil;

            jika (num1> num2)
                Hasil = num1;
            lain
                Hasil = num2;

            Hasil kembali;
        }
    }
    Uji kelas
    {
        static void Main (string [] args)
        {
            / * Variabel definisi lokal * /
            int a = 100;
            int b = 200;
            int ret;
            NumberManipulator n = baru NumberManipulator ();
            // Panggil FindMax metode ret = n.FindMax (a, b);
            Console.WriteLine ( "Max adalah: {0}", ret);
            Console.ReadLine ();

        }
    }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

最大值是: 200

metode rekursif panggilan

Sebuah metode dapat memanggil diri. Ini disebutrekursi.Contoh berikut menggunakan fungsi rekursif untuk menghitung faktorial nomor:

menggunakan System;

namespace CalculatorApplication
{
    kelas NumberManipulator
    {
        public int faktorial (int num)
        {
            / * Variabel definisi lokal * /
            int hasil;

            jika (num == 1)
            {
                kembali 1;
            }
            lain
            {
                Hasil = faktorial (num - 1) * num;
                Hasil kembali;
            }
        }
    
        static void Main (string [] args)
        {
            NumberManipulator n = baru NumberManipulator ();
            // Panggil metode faktorial Console.WriteLine ( "6 faktorial adalah: {0}", n.factorial (6));
            Console.WriteLine ( "faktorial 7 adalah: {0}", n.factorial (7));
            Console.WriteLine ( "8 faktorial adalah: {0}", n.factorial (8));
            Console.ReadLine ();

        }
    }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

6 faktorial adalah: 720
7 faktorial adalah: 5040
8 faktorial adalah: 40320

parameter passing

Ketika Anda memanggil metode dengan parameter, Anda harus lulus parameter ke metode. Dalam C #, ada tiga cara untuk melewatkan parameter ke metode:

方式描述
值参数这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。
引用参数这种方式复制参数的内存位置的引用给形式参数。这意味着,当形参的值发生改变时,同时也改变实参的值。
输出参数这种方式可以返回多个值。

Passing parameter dengan nilai

Ini adalah lewat parameter default. Dengan cara ini, ketika Anda memanggil metode yang menciptakan lokasi penyimpanan baru untuk setiap parameter.

Nilai parameter yang sebenarnya disalin ke parameter, argumen dan parameter yang digunakan dalam dua nilai memori yang berbeda. Jadi, ketika perubahan nilai parameter tidak akan mempengaruhi nilai argumen, sehingga memastikan keamanan data parameter nyata. Contoh berikut menggambarkan konsep ini:

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void swap(int x, int y)
      {
         int temp;
         
         temp = x; /* 保存 x 的值 */
         x = y;    /* 把 y 赋值给 x */
         y = temp; /* 把 temp 赋值给 y */
      }
      
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         /* 局部变量定义 */
         int a = 100;
         int b = 200;
         
         Console.WriteLine("在交换之前,a 的值: {0}", a);
         Console.WriteLine("在交换之前,b 的值: {0}", b);
         
         /* 调用函数来交换值 */
         n.swap(a, b);
         
         Console.WriteLine("在交换之后,a 的值: {0}", a);
         Console.WriteLine("在交换之后,b 的值: {0}", b);
         
         Console.ReadLine();
      }
   }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

在交换之前,a 的值:100
在交换之前,b 的值:200
在交换之后,a 的值:100
在交换之后,b 的值:200

Hasil penelitian menunjukkan bahwa, bahkan di dalam fungsi perubahan nilai, nilai perubahan yang telah terjadi.

Melewati parameter dengan referensi

parameter acuanadalah referensi ke lokasi memori variabel.Ketika parameter dikirimkan dengan referensi, dengan nilai parameter yang berbeda dia adalah bahwa hal itu tidak membuat lokasi penyimpanan baru untuk argumen ini. parameter acuan merupakan parameter yang sebenarnya untuk metode ini memiliki lokasi memori yang sama.

Dalam C #, menggunakan kata kunciref untuk menyatakan parameter referensi.Contoh berikut menggambarkan hal ini:

menggunakan System;
namespace CalculatorApplication
{
   kelas NumberManipulator
   {
      public void swap (ref int x, ref int y)
      {
         int suhu;

         temp = x; / * menyimpan nilai x * /
         x = y; / * y ditugaskan ke x * /
         y = suhu; / * temp tugas untuk y * /
       }
   
      static void Main (string [] args)
      {
         NumberManipulator n = baru NumberManipulator ();
         / * Variabel definisi lokal * /
         int a = 100;
         int b = 200;

         Console.WriteLine ( "Sebelum bursa, nilai: {0}", a);
         Console.WriteLine ( "Sebelum bursa, b nilai: {0}", b);

         / * Panggil fungsi untuk nilai tukar * /
         n.swap (ref, ref b);

         Console.WriteLine ( "Setelah pertukaran, nilai: {0}", a);
         Console.WriteLine ( "Setelah pertukaran, b nilai: {0}", b);
 
         Console.ReadLine ();

      }
   }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

在交换之前,a 的值:100
在交换之前,b 的值:200
在交换之后,a 的值:200
在交换之后,b 的值:100

Hasil penelitian menunjukkan bahwa nilai fungsipertukarandalam perubahan, dan perubahan ini dapat tercermin dalamfungsi utama.

Melewati parameter dengan Output

pernyataan kembali hanya dapat digunakan untuk mengembalikan nilai dari fungsi. Namun, Anda dapat menggunakanparameter output untuk kembali dua nilai dari fungsi.Data output metode output parameter akan menetapkan mereka sendiri, dan parameter referensi lain yang sejenis.

Contoh berikut menggambarkan hal ini:

using System;

namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void getValue(out int x )
      {
         int temp = 5;
         x = temp;
      }
   
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         /* 局部变量定义 */
         int a = 100;
         
         Console.WriteLine("在方法调用之前,a 的值: {0}", a);
         
         /* 调用函数来获取值 */
         n.getValue(out a);

         Console.WriteLine("在方法调用之后,a 的值: {0}", a);
         Console.ReadLine();

      }
   }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

在方法调用之前,a 的值: 100
在方法调用之后,a 的值: 5

Disediakan untuk variabel parameter output tidak memerlukan tugas. Bila Anda perlu mengembalikan nilai dari nilai awal parameter tidak ditentukan dalam metode, parameter output sangat berguna. Perhatikan contoh berikut untuk memahami hal ini:

using System;

namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void getValues(out int x, out int y )
      {
          Console.WriteLine("请输入第一个值: ");
          x = Convert.ToInt32(Console.ReadLine());
          Console.WriteLine("请输入第二个值: ");
          y = Convert.ToInt32(Console.ReadLine());
      }
   
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         /* 局部变量定义 */
         int a , b;
         
         /* 调用函数来获取值 */
         n.getValues(out a, out b);

         Console.WriteLine("在方法调用之后,a 的值: {0}", a);
         Console.WriteLine("在方法调用之后,b 的值: {0}", b);
         Console.ReadLine();
      }
   }
}

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil berikut (tergantung pada input pengguna):

Masukkan nilai:
7
Masukkan nilai kedua:
8
Setelah pemanggilan metode, nilai: 7
Setelah pemanggilan metode, b nilai: 8