変数のメモリ位置は、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.
を使用してアクセスできます。加算と減算の 2 つのメソッドで構成される次のプログラムを考えてみましょう。 add メソッドは値によって渡されるパラメータを受け入れ、subtract メソッドは参照として渡されるパラメータを受け入れます。最初に、2 つの変数が宣言され、2 つの値で初期化されます。次に、値をパラメータとして渡して add メソッドを呼び出します。メソッドはパラメーターとして渡された値に対して操作を実行することになっていますが、これは値渡しであるため、値は変わりません。次の減算メソッドが呼び出され、参照パラメータが渡されます。参照として渡された値に対して、subtract メソッドで定義された演算が実行され、更新されます。
コード:
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# 参照型の 1 つであり、キーワード 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 中国語 Web サイトの他の関連記事を参照してください。