Unity 매개변수 유형의 값 유형 매개변수 사용

여기에 이미지 설명을 삽입하세요.

값 유형 매개변수에 관해 이야기할 때 기본 데이터 유형과 구조라는 두 가지 측면에서 자세히 설명할 수 있습니다. 값 유형 매개변수는 참조가 아닌 값으로 함수나 메소드에 전달된 데이터를 참조합니다.

기본 데이터 유형

기본 데이터 유형의 값 유형 매개변수:

C#에서 기본 데이터 유형은 정수, 부동 소수점 숫자, 문자 등과 같은 내장 데이터 유형입니다. 이러한 데이터 유형은 값 유형이며 함수에 전달될 때 값별로 복사됩니다. 즉, 함수 내부의 매개변수를 수정해도 함수 외부의 원래 값에는 영향을 미치지 않습니다.

예:

void ModifyInt(int x)
{
    
    
    x = 20; // 修改函数内的副本
}

int number = 10;
ModifyInt(number);
Console.WriteLine(number); // 输出:10,因为函数内的修改不影响原始值

구조

구조의 값 유형 매개변수:

구조는 여러 필드를 포함할 수 있는 사용자 정의 값 유형입니다. 구조를 함수에 매개변수로 전달하면 전체 구조의 복사본이 함수에 전달됩니다. 이는 함수 내부의 작업이 원래 구조 인스턴스에 영향을 미치지 않음을 의미합니다.

예:

struct Point
{
    
    
    public int X;
    public int Y;
}

void ModifyPoint(Point p)
{
    
    
    p.X = 20; // 修改函数内的副本
}

Point point = new Point {
    
     X = 10, Y = 15 };
ModifyPoint(point);
Console.WriteLine(point.X); // 输出:10,因为函数内的修改不影响原始结构体实例

구조에 대한 추가 추가 사항

C#에서는 구조체의 인스턴스를 생성할 때만 키워드를 사용해야 하며 , 기존 구조체 인스턴스를 할당하기 위해 new사용할 필요는 없습니다 . new이는 키워드를 사용하여 new인스턴스를 생성하는 참조 유형(예: 클래스)과 다르며 =연산자를 사용하여 한 인스턴스를 다른 인스턴스에 할당하여 두 변수가 동일한 인스턴스를 공유할 수 있습니다.

그러나 구조의 경우 =연산자를 사용하면 동일한 인스턴스를 공유하는 대신 실제로 구조 값을 복사합니다. 따라서 대부분의 경우 new하나의 구조체 인스턴스를 다른 구조체 인스턴스에 할당하지 않고 키워드를 사용하여 새 구조체 인스턴스를 생성하기만 하면 됩니다.

new다음은 키워드를 사용하여 구조체의 인스턴스를 만드는 방법을 보여주는 간단한 예입니다 .

public struct Point
{
    
    
    public int X;
    public int Y;

    public Point(int x, int y)
    {
    
    
        X = x;
        Y = y;
    }
}

class Program
{
    
    
    static void Main(string[] args)
    {
    
    
        Point point1 = new Point(10, 20); // 创建并初始化结构体实例
        Point point2 = new Point(30, 40); // 创建并初始化另一个结构体实例

        Console.WriteLine($"point1: X = {
      
      point1.X}, Y = {
      
      point1.Y}"); // 输出:point1: X = 10, Y = 20
        Console.WriteLine($"point2: X = {
      
      point2.X}, Y = {
      
      point2.Y}"); // 输出:point2: X = 30, Y = 40
    }
}

new Point(10, 20)위의 예에서는 및 구조의 new Point(30, 40)서로 다른 두 인스턴스를 각각 생성하는 데 사용되었습니다 .Point

요약하다:

값 유형 매개변수가 함수 내에서 조작되면 원래 값이나 인스턴스가 아닌 함수에 전달된 복사본에만 영향을 미칩니다. 이는 기본 데이터 유형 및 구조에 적용되며 정수, 부동 소수점 숫자 또는 사용자 정의 구조가 전달되는지 여부에 관계없이 함수 내부의 값 유형 매개변수 수정은 함수 외부로 전달되지 않습니다. 이는 참조 유형 매개변수가 참조로 전달되고 함수 내의 매개변수에 대한 수정사항이 원래 객체에 영향을 미치는 참조 유형(예: 클래스)과 다릅니다.

рекомендация

отblog.csdn.net/weixin_74850661/article/details/132597517