C# 참조

PHPz
PHPz원래의
2024-09-03 15:26:23379검색

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#에서 참조 매개변수 작업

덧셈과 뺄셈의 두 가지 메소드로 구성된 다음 프로그램을 생각해 보세요. add 메소드는 값으로 전달된 매개변수를 승인하고, 빼기 메소드는 참조로 전달된 매개변수를 승인합니다. 처음에는 두 개의 변수가 선언되고 두 개의 값으로 초기화됩니다. 그런 다음 값을 매개변수로 전달하여 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# 참조 유형 중 하나이며 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. 위임

대리자 유형 선언은 메서드 선언과 같습니다. 값을 반환하며 모든 유형의 인수를 매개변수로 사용할 수 있습니다. 기본적으로 함수에 대한 포인터 역할을 하는 메서드를 캡슐화하는 데 사용됩니다. 대리자는 대리자 키워드를 사용하여 선언할 수 있습니다. 대리자를 선언하는 구문은 다음과 같습니다.

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:C#의 다형성다음 기사:C#의 다형성