산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 구조체

C# 구조체

이 자습서에서는 예제를 통해 C#의 구조체에 대해 알아봅니다.

구조체(구조체)는 데이터를 저장하는 데 사용되는 C#의 클래스와 같습니다. 그러나 클래스와 달리 구조체는 값 유형입니다.

사람의 이름과 나이를 저장하고 싶다고 가정해 봅시다. 두 개의 변수를 만들 수 있습니다. name나이 가치를 저장합니다.

그러나 여러 사람의 동일한 정보를 저장하고 싶다고 가정해 보겠습니다.

이 경우 개인에 대한 변수를 생성하는 것은 지루한 작업일 수 있습니다. 이를 극복하기 위해 name을 저장하는 구조체를 만들 수 있습니다. 및 나이 . 이제 이 구조체는 모든 사람이 사용할 수 있습니다.

<시간>

C#에서 구조체 정의

C#에서는 struct를 사용합니다. 구조체를 정의하는 키워드. 예를 들어,

struct Employee  {
  public int id;
}

여기서 id 구조체 내부의 필드입니다. 구조체에는 메서드, 인덱서 등도 포함될 수 있습니다.

<시간>

구조체 변수 선언

구조체를 사용하기 전에 먼저 구조체 변수를 생성해야 합니다. 구조체 이름을 변수와 함께 사용하여 구조체 변수를 선언합니다. 예를 들어,

struct Employee {
  public int id;
}
...

// declare emp of struct Employee
Employee emp;

위의 예에서 Employee라는 구조체를 만들었습니다. . 여기에서 변수 emp를 선언했습니다. Employee 구조체의 .

<시간>

C# 구조체 액세스

.와 함께 구조체 변수를 사용합니다. 구조체의 멤버에 액세스하는 연산자입니다. 예를 들어,

struct Employee {
  public int id;
}
... 
// declare emp of struct Employee
Employee emp;

// access member of struct      
emp.id = 1;

여기서는 emp 변수를 사용했습니다. Employee 구조체의 . 포함 Employee 멤버에 액세스하는 연산자 .

emp.id = 1;

이것은 id에 액세스합니다. Employee 구조체의 필드 .

참고 :int과 같은 기본 데이터 유형 , bool , float C#에서 미리 정의된 구조체입니다.

<시간>

예:C# 구조체

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public int id;

    public void getId(int id) {
      Console.WriteLine("Employee Id: " + id);
    }
  }
 
  class Program {
    static void Main(string[] args) {
 
      // declare emp of struct Employee
      Employee emp;
      
      // accesses and sets struct field
      emp.id = 1;

      // accesses struct methods
      emp.getId(emp.id);

      Console.ReadLine();
    }
  }
}

출력

Employee Id: 1

위의 프로그램에서 Employee라는 구조체를 만들었습니다. . id 필드가 포함되어 있습니다. 및 메소드 getId() .

프로그램 내부 클래스에서 emp 변수를 선언했습니다. 직원 구조체 . 그런 다음 emp를 사용했습니다. 클래스의 필드와 메소드에 접근하기 위한 변수.

참고 :new을 사용하여 구조체를 인스턴스화할 수도 있습니다. 예어. 예를 들어,

Employee emp = new Employee();

여기에서 이 줄은 구조체의 매개변수 없는 생성자를 호출하고 모든 멤버를 기본값으로 초기화합니다.

<시간>

C# 구조체의 생성자

C#에서 구조체는 생성자를 포함할 수도 있습니다. 예를 들어,

struct Employee {

  public int id;

  // constructor 
  public Employee(int employeeId) {
   id = employeeId
  }
}

여기에서 매개변수화된 생성자 Employee()를 만들었습니다. 매개변수 employeeId 사용 .

참고 :C# 버전 9.0 이하에서는 매개변수 없는 생성자를 생성할 수 없습니다.

<시간>

예:C# 구조체의 생성자

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public int id;
    
    public string name;

    // parameterized constructor
    public Employee(int employeeId, string employeeName) {
   
      id = employeeId;
      name = employeeName;
    }
  }
 
  class Program {
    static void Main(string[] args) {
 
      // calls constructor of struct
      Employee emp = new Employee(1, "Brian");

      Console.WriteLine("Employee Name: " + emp.name);
      Console.WriteLine("Employee Id: " + emp.id);

      Console.ReadLine();
    }
  }
}

출력

Employee Name: Brian
Employee Id: 1

위의 예에서는 Employee 내부에 매개변수화된 생성자를 만들었습니다. 구조 생성자 내에서 id 필드 값을 할당했습니다. 및 이름 .

줄을 주목하십시오.

Employee emp = new Employee(1, "Brian");

C# 클래스와 마찬가지로 new을 사용합니다. 생성자를 호출하는 키워드입니다. 여기 1"브라이언" 매개변수 employeeID에 할당되는 생성자에 전달된 인수입니다. 및 직원 이름 각각."

참고 :매개변수화된 생성자 내부의 모든 구조체 필드에 값을 할당해야 합니다. 예를 들어,

// error code
public Employee(int employeeID, employeeName) {
  id = employeeID;
}

여기에서는 name에 대한 값을 할당하지 않았습니다. 필드. 따라서 코드는 오류를 생성합니다.

<시간>

C# 구조체의 속성

C# 구조체 내에서 속성을 사용할 수도 있습니다. 예를 들어,

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public int id;
    
    // creates property
    public int Id {

      // returns id field
      get {
        return id;
      }

      // sets id field
      set {
        id = value;
      }
    }
  }
 
  class Program {
    static void Main(string[] args) {
 
      // calls the constructor of struct
      Employee emp = new Employee();

      emp.Id = 1;
      Console.WriteLine("Employee Id: " + emp.Id);

      Console.ReadLine();

    }
  }
}

출력

Employee Id: 1

위의 예에서는 Id가 있습니다. Employee 내부의 속성 구조

얻기 메소드는 id를 반환합니다. 필드 및 set 메소드는 id에 값을 할당합니다. 필드.

<시간>

C#에서 클래스와 구조체의 차이점

C#에서 클래스와 구조체는 비슷하게 보입니다. 그러나 그들 사이에는 몇 가지 차이점이 있습니다.

클래스는 참조 유형이고 구조체는 값 유형입니다. 예를 들어,

using System;
namespace CsharpStruct {
 
  // defining class
  class Employee {
    public string name;

  }
 
  class Program {
    static void Main(string[] args) {

      Employee emp1 = new Employee();
      emp1.name = "John";

      // assign emp1 to emp2
      Employee emp2 = emp1;
      emp2.name = "Ed";
      Console.WriteLine("Employee1 name: " + emp1.name);

      Console.ReadLine();
    }
  }
}

출력

Employee1 name: Ed

위의 예에서 emp1 값을 할당했습니다. emp2로 . emp2 개체가 emp1과 동일한 개체를 참조합니다. . 따라서 emp2의 업데이트 emp1의 값을 업데이트합니다. 자동으로.

이것이 클래스가 참조 유형인 이유입니다. .

클래스와 달리 하나의 구조체 변수를 다른 구조체에 할당하면 구조체의 값이 할당된 변수에 복사됩니다. 따라서 하나의 구조체 변수를 업데이트해도 다른 변수에는 영향을 미치지 않습니다. 예를 들어,

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public string name;

  }
 
  class Program {
    static void Main(string[] args) {

      Employee emp1 = new Employee();
      emp1.name = "John";

      // assign emp1 to emp2
      Employee emp2 = emp1;
      emp2.name = "Ed";
      Console.WriteLine("Employee1 name: " + emp1.name);
      
      Console.ReadLine();
    }
  }
}

출력

Employee1 name: John

emp1 값을 할당할 때 emp2로 , 새 값 emp2 생성됩니다. 여기서 emp1의 값은 emp2에 복사됩니다. . 따라서 emp2에서 변경 emp1에 영향을 미치지 않습니다. .

이것이 구조체가 값 유형인 이유입니다. .

또한 구조체에서는 상속이 불가능하지만 C# 클래스의 중요한 기능입니다.


C 언어

  1. C 구조체
  2. C 구조체와 포인터
  3. C 구조 및 기능
  4. 경쟁적인 "업무의 미래"에서 지지 않는 방법
  5. 예제가 있는 C++ 구조체
  6. 직원 일정을 개선해야 하는 이유
  7. 위험을 줄이려면 직원 배경 재확인을 고려하십시오
  8. COVID-19 속에서 직원 참여를 강화하는 4가지 방법
  9. DVIRC는 신입 사원을 환영하고 소중한 직원을 승진시킵니다
  10. 흥미로운 신기술 카테고리:직원 생산성 분석