1. 구조적, 기능적 특성? 코드를 구현하시겠습니까?
구조체는 클래스와 유사하지만 본질적인 차이점이 있는 struct 키워드를 사용하여 정의됩니다. 구조는 본질적으로 값 유형이므로 할당이 필요하지 않습니다.
구조체의 특징:
(1) 구조가 매개변수로 전달되면 값으로 전달됩니다.
(2) 구조체의 생성자는 매개변수를 취해야 합니다.
(3) 구조 인스턴스화에는 새로운 것이 필요하지 않습니다.
(4) 구조는 상속될 수 없지만 인터페이스는 구현될 수 있습니다.
(5). 인스턴스 필드는 구조에서 초기화될 수 없습니다.
예:
2. 위임이란 무엇입니까? 특징? 인터페이스 대신 대리자를 언제 사용해야 합니까? 대리자를 선언하고 인스턴스화하고 사용하는 방법은 무엇입니까?
(1) 대리자는 메소드의 유형을 정의하는 클래스입니다. 메소드는 다른 메소드의 매개변수로 사용될 수 있습니다. 프로그램에서 브랜치를 사용하지 마세요.
프로그램의 확장성이 향상됩니다.
예:
using System; using System.Collections.Generic; using System.Text; namespace TestStruct { class Program { public struct Circle //定义一个圆 { private const double pi = 3.1415926; public double radius; //半径 /// <summary> /// 构造函数 /// </summary> public Circle(double r) { radius = r; } /// <summary> /// 面积 /// </summary> public double CArea() { return 3.14 * radius * radius; } } static void Main(string[] args) { Circle circle1; //不用new实例化 circle1.radius = 5; Console.WriteLine("圆面积为:" + circle1.CArea()); Circle circle2 = new Circle(1); //用new实例化 Console.WriteLine("圆面积为:" + circle2.CArea()); Console.ReadLine(); } } }
(2) 대리자는 C++ 함수 포인터와 유사하지만 형식이 안전합니다.
델리게이트를 사용하면 메서드를 매개변수로 전달할 수 있습니다.
델리게이트를 사용하여 콜백 메서드를 정의할 수 있습니다.
델리게이트는 서로 연결될 수 있습니다. 예를 들어 이벤트에서 여러 메서드를 호출할 수 있습니다.
메서드가 대리자 서명과 정확하게 일치할 필요는 없습니다. 자세한 내용은 공분산 및 반공분산을 참조하세요.
C# 버전 2.0에는 개별적으로 정의된 메서드 대신 코드 블록을 인수로 전달할 수 있는 무명 메서드 개념이 도입되었습니다.
델리게이트를 사용하세요. 다른 메소드를 호출하기 위해 분기해야 할 때 사용하면 좋다고 생각합니다. 하지만 예를 들어 팩토리 패턴에서는
클래스가 브랜치에 따라 인스턴스화됩니다. 이 경우 인터페이스가 사용됩니다.
델리게이트는 메소드가 다른 메소드의 매개변수로 전달될 수 있도록 메소드의 유형을 정의하는 클래스입니다. 이는 메소드를 동적으로 할당합니다.
매개변수를 사용하면 프로그램에서 많은 수의 If-Else(스위치) 문을 사용하지 않고 동시에 프로그램의 확장성을 높일 수 있습니다.
3. 부분 카테고리/하위 카테고리란 무엇인가요? 어떤 기능이 있나요? 코드를 구현하시겠습니까? 적용 가능한 경우? 얼마나 많은 규칙을 따라야 합니까?
부분 클래스는 부분 키워드를 사용하여 클래스를 여러 개의 독립된 파일로 나누는 것이지만 본질적으로는 여전히 하나의 클래스입니다. 일반적으로 부분 클래스는 클래스에 행이 너무 많거나 일부 기능이 상대적으로 독립적인 경우 사용할 수 있습니다. 가장 일반적인 클래스는 Form.cs 및 Form.designer.cs입니다.일반적으로 다음 규칙을 따라야 합니다.
(1) 부분 키워드를 사용해야 합니다
(2) 서로 다른 부분이 있지만 각 부분은 동일한 접근성을 가져야 합니다. public , private 등
(3) 어느 부분이라도 abstract, Sealed로 선언하면 전체 타입이 abstract, Sealed로 간주됩니다.
(4) 어느 부분이라도 상속을 선언할 때 기본 클래스인 경우 전체 유형은
클래스를 상속합니다(5). 각 부분은 서로 다른 기본 인터페이스를 지정할 수 있으며 최종 유형은 모든 부분 선언에 나열된 모든 인터페이스를 구현합니다
(6 ). 부분 정의에 선언된 모든 클래스, 구조 또는 인터페이스 멤버는 다른 모든 부분에서 사용할 수 있습니다.
(7) 중첩 유형은 부분적일 수 있습니다. 이는 해당 유형이 포함된 경우에도 마찬가지입니다. 중첩 자체는 부분적이지 않습니다.
위 내용은 C#의 기본 지식입니다: C# 클래스 및 구조(1) 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!