C# リファレンス

PHPz
リリース: 2024-09-03 15:26:23
オリジナル
348 人が閲覧しました

変数のメモリ位置は、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.

を使用してアクセスできます。

C# での参照パラメータの仕組み

加算と減算の 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# における参照の種類

C# の参照のタイプは次のとおりです

1.クラス

クラスは 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();
}
}
}
ログイン後にコピー

出力:

C# リファレンス

2.インターフェース

コントラクトはインターフェースを使用して定義されます。どのクラスのメンバーも、インターフェイスによって提供される明確な実装を持っています。次のプログラムは、インターフェイスの作成と実装を示しています。

コード:

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);
}
}
ログイン後にコピー

出力:

C# リファレンス

3.デリゲート

デリゲート型の宣言はメソッドの宣言に似ています。これは値を返し、任意の型の任意の数の引数をパラメータとして受け取ることができます。これは基本的に、関数へのポインタとして機能するメソッドのカプセル化に使用されます。デリゲートは、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# の参照の構文と種類を理解します。

以上がC# リファレンスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート