變數的記憶體位置可以透過使用C# 中稱為引用參數的參數來引用,它們與稱為值參數的參數不同,在值參數中,值作為參數傳遞,並為這些值建立一個新的內存位置,而在引用參數中,不會為這些參數分配記憶體位置,因為僅傳遞這些參數的引用,並且可以使用關鍵字ref 來聲明引用參數。
C# 中宣告引用參數的語法如下:
return type Method name(ref arg1, ref arg2) Declare local variables, for example a, b Calling the method, Method name(ref a, ref b)
以上語法表示在 C# 中宣告引用參數。 引用參數可以使用關鍵字 ref 來聲明,並且可以使用關鍵字 ref 來存取它們。
考慮以下程序,其中包含兩個方法加法和減法。 add 方法接受以值傳遞的參數,subtract 方法接受作為參考傳遞的參數。最初,聲明兩個變數並用兩個值初始化。然後透過將值作為參數傳遞來呼叫 add 方法。即使該方法應該對作為參數傳遞的值執行操作,該值也不會發生變化,因為這是按值傳遞的。呼叫下一個減法方法,將引用參數傳遞到該方法。對作為引用傳遞的值執行減法方法中定義的操作並更新它。
代碼:
using System; namespace refer { public class check { // Calling the main method public void Main(string[] args) { // The values of a and b are initialized int a = 15, b = 20; // The values of a and b are displayed before making changes to the values Console.WriteLine("value of a before changing is {0}", a); Console.WriteLine("value of b before changing is {0}", b); Console.WriteLine(); // The add method is called by passing the value add(a); // After calling the method by value, the changes value is displyed Console.WriteLine("After calling the add function"+ " value of a is {0}", a); // The sub method is called by passing the reference subtract(ref b); // Display modified value of b Console.WriteLine("Value of b after "+ "subtration operation is {0}", b); } // Defining the add method which accepts value as parameters public static void add(int a) { a += 5; } // Defining the subtract method which accepts reference as parameters public static void subtract(ref int b) { b -= 5; } } }
輸出:
以下是 C# 中的以下引用型別
類別是 C# 參考類型之一,可以使用關鍵字 class 來聲明它們。 C# 中宣告類別的語法如下所示:
Class classname { }
該類別支援繼承。也就是說一個類別可以繼承基底類別的實作。類別可以是公共的、私有的、受保護的。下面的程式演示了類別的創建。
代碼:
using System; namespace check { class children { private int height; private string names; // This is the consturctor class which is default public children() { names = "nobody"; } // Defining a constructor with arguments public children(string names, int height) { this.names = names; this.height = height; } // The method to print the values public void Print() { Console.WriteLine("{0} is {1} inches tall.", names, height); } } class Test { static void Main() { // New operator is used to create the objects on the class children child1 = new children("Shobha", 5); children child2 = new children("Ravi", 6); // An object is created using default constructor children child3 = new children(); // The results are displayed Console.Write("The first child: "); child1.Print(); Console.Write("The second child: "); child2.Print(); Console.Write("The third child: "); child3.Print(); } } }
輸出:
合約是使用介面定義的。任何類別的成員都有介面提供的明確實作。下面的程式示範了介面的建立和實作。
代碼:
using System; //An interface is defined interface Point { int A { get; set; } int B { get; set; } double Dist { get; } } //A class is implementing the interface class Pointed : Point { // Constructor of the class public Pointed(int a, int b) { A = a; B = b; } public int A { get; set; } public int B { get; set; } public double Dist => Math.Sqrt(A * A + B * B); } class Maincl { static void PrintPointed(Point r) { Console.WriteLine("a={0}, b={1}", r.A, r.B); } static void Main() { Point r = new Pointed(2, 3); Console.Write("the points are: "); PrintPointed(r); } }
輸出:
委託類型的聲明就像方法的聲明。它傳回一個值,並且可以採用任意數量、任意類型的參數作為參數。它主要用於封裝方法,並充當函數指標。可以使用 delegate 關鍵字聲明委託。聲明委託的語法如下:
<access modifier> delegate <return type> <delegate_name>(<parameters>)
考慮下面的程式來示範委託的創建
代碼:
using System; class Program { // Creating delegates public delegate void Printdel(int values); static void Main(string[] args) { // We are printing a number using delegates Printdel print = PrintNum; print(100); print(20); //We are printing money using printmon delegate print = PrintMon; print(10); print(20); } public static void PrintNum(int number) { Console.WriteLine("The Number is: {0,-12:N0}",number); } public static void PrintMon(int mon) { Console.WriteLine("The Money is: {0:C}", mon); } }
輸出:
在本教程中,我們透過定義來了解 C# 中引用的概念,然後透過範例程式了解 C# 中引用的語法和類型。
以上是C# 參考資料的詳細內容。更多資訊請關注PHP中文網其他相關文章!