C #을 몇 가지 사용의 새로운 키워드

종종 자신의 일상 프로그래밍이 작은 사람을 사용하지만 얼마 전에 친구가, 새로운 키워드가 여러 용도를 가진 C 번호에 대해 질문,하지만 지금은 마음에 인터넷에서 정보를 요약합니다 정말, 이전에주의를 지불하지 않습니다 결국 여러 용도로 사용 연구중인 동료.
 
(1) 새로운 오퍼레이터 생성자 객체를 생성하고 호출하는 데 사용된다.
 
상속 회원 (2) 새로운 수정은 기본 클래스 멤버를 숨 깁니다.
 
구속 타입 파라미터 (3) 새로운 구속 조건은 일반적인 유형 선언에서 변수로서 사용될 수있다.
 
새로운 오퍼레이터
 
1 객체 생성자를 생성하는데 사용된다가 호출
 
예 : Class_Test Class_Test MyClass에 = 새 ();
 
(2)는 디폴트 값 유형 생성자 전화를 사용하는
 
예 : 민트의 INT 새로운 지능 (=),
 
민트 0으로 초기화의 그것은 int 형의 기본값입니다. 효과는 문에 상당 : INT의 민트 = 0;
 
3. 새로운 연산자 과부하되지.
 
new 연산자는 메모리 할당에 실패하는 경우 4., 그것은에서 OutOfMemoryException에서 발생합니다.
 
새로운 수정은
 
명시 적으로 기본 클래스에서 상속 된 멤버를 숨기기 위해 새로운 수식을 사용합니다. 상속 된 멤버를 숨기려면 파생 클래스에서 같은 이름의 멤버, 그리고 새로운 수정에 수정을 선언.
 
다음과 같은 범주를 고려 :

 1 public class MyClass
 2  
 3  {
 4  
 5      public int x;
 6   
 7      public void Invoke() {}
 8   
 9  }
10

회원 파생 클래스 선언에 이름을 호출하는 것은 즉 기본 클래스에서 호출 방법을 숨 깁니다

1 public class MyDerivedC : MyClass
2 {
3 
4    new public void Invoke() {}
5 
6 }

필드 X는 유사한 이름으로 숨겨져되지 않기 때문에, 그래서 필드에 영향을 미치지 않습니다.
 
다음 양식 중 하나에 의해 이름 상속을 숨기기 :
 
1. 클래스 또는 구조 상수, 지정된 속성 유형을 소개하거나 이름이 같은 모든 기본 클래스 멤버를 숨 깁니다.
 
2. 클래스 또는 같은 이름을 가진 방법 숨겨진 속성 구조의 기본 클래스 및 유형 필드의 도입. 동일한 서명을 가진 기본 클래스 방법을 숨긴다.
 
3. 클래스 또는 구조 인덱서의 도입은 같은 이름을 가진 모든 기본 클래스 인덱서를 숨 깁니다.
 
같은 멤버 4. 신규를 사용하고 재정은 잘못된 것입니다.
 
참고 : 상속 된 멤버 선언을 숨기지 않습니다 경고를 생성 할 새 수식을 사용합니다.
 

 
이 예에서, 하위 클래스 MyClass에 동일한 이름을 가진 기본 클래스를 숨긴다. 이 예는 숨겨진 액세스 반원의 완전한 이름을 사용하는 방법을뿐만 아니라 설명뿐만 아니라 제거 새로운 수식을 사용하는 방법에 대한 경고 메시지를 보여줍니다.

 1 using System;
 2 public class MyBaseC
 3 {
 4     public class MyClass
 5     {
 6         public int x = 200;
 7         public int y;
 8     }
 9 }
10 public class MyDerivedC : MyBaseC
11 {
12     new public class MyClass // nested type hiding the base type members    
13     {
14         public int x = 100;
15         public int y;
16         public int z;
17     }
18     public static void Main()
19     {
20         // Creating object from the overlapping class:    
21         MyClass S1 = new MyClass();
22         // Creating object from the hidden class:    
23         MyBaseC.MyClass S2 = new MyBaseC.MyClass();
24         Console.WriteLine(S1.x);
25         Console.WriteLine(S2.x);
26     }
27 }

 

 

 

 

HTTPS : //my.oschina.net/weisenz/blog/200612 재현

추천

출처blog.csdn.net/weixin_34128501/article/details/91920889