C # 타입의 멤버, 작업의 종류, 형식 변환, 유형 분류에 대해

첫째, 유형의 멤버

클래스 멤버 정의 (공공, 민간, 내부 보호)이있다.

모든 클래스 멤버의 Public-- 공개 및 제한이 있습니다

Private--는 개인 및 클래스 내에서 코드를 통해서만 액세스, 지정되지 않은 경우, 디폴트는이 키워드를 사용

Internal-- 내부 액세스 만 네임 스페이스에 속하는

클래스 또는 파생 클래스 코드에 액세스 할 수 있습니다 Protected--

클래스 멤버 - 필드, 메소드, 속성

공공 MyClass 클래스

    {

        공공 INT의 민트 = 2019; // 필드

        공공 정적 문자열 MyMain ()

        {

            "이것은 방법이다"를 반환;

        }

        공공 INT의 MyProperty {얻을; 설정;} // 속성

}

필드 - 읽기 전용 / 쓰기 데이터 값을 읽어

방법 - 프로세스 데이터의 종류 나 개체의 구현의 동작 상태

속성 -이 이미지 또는 개체 데이터의 클래스 상태와 동일한 방식으로 작동 할 수 있지만 같은 필드를 작성하는 방법처럼 보인다

둘째, 작업 유형 (암시 적 변환, 디스플레이 컨버터, 패킹, 언 패킹)

암시 적 변환이 - 값을 저장 또는 절단없이 소형 정밀 데이터 전송의 정확도를 가변 할 수있다 암시 적 변환을 수용하도록 반올림 될 경우를 위해 내장 된 숫자 형 대형 암시 적 변환 할 수있다

INT는 민 = 100;

긴 Bignum이 = 민;

디스플레이 변환 - 디스플레이 전환, 또한 명시 적으로 변환하려는 컴파일러에게 주조, 주조로 알려진 그리고 당신은 발생할 수있는 데이터 손실의 방법을 알고있다.

더블 민 = 100.1;

에서 INT;

int.Parse = (수)에;

오류가 예외를 던지거나 전체 결과의 정확성에 영향을 미칠 수 있어야 디스플레이 변환 특정 위험이있다. 유형을 모르고 디스플레이 컨버터가 있지만, 발생할 경우 프로그램에서 변환이 발생되지 않습니다.

var에 A = "이순신";

B = INT int.Parse (a);

그것은 TryParse를 사용하려고 할 수 있습니다, 여기 반환 BOOL이 변환이 진정한 성공

var에 A = "이순신";

INT의 B;

int.TryParse (a 밖으로 b);

컨버터 타입의 동작 - 포장 풀기

공공 무효 시험 ()

        {

            // 포장

            INT의 A = 1;

            obj가 = 개체;

            // 언 박싱

            객체가 obj2 = 2;

            B = INT (INT)가 obj2;

}

먼저 우리가 이해해야 값 형식은 가비지 컬렉션 관리에서, 스레드 스택에 할당됩니다. 관리 힙에 할당 된 참조 유형.

포장 - 간단하게 변환 된 값 유형이 박스입니다 참조 형, 세부 예. 관리되는 메모리에서 메모리를 할당하고 메모리 힙의 형식으로 값을 복사하고, 새 개체의 주소, 포장의 과정을 반환합니다.

풀기 - 풀기 포장 간단히 박싱 부분의 값을 복사 한 다음, 세부 사항은 포장 섹션에 대한 포인터를 얻는 것이다 풀기 및 입력 형 풀기 값으로 변환되고, 참조 역 과정이 아니다 스택에.

셋째, 전환의 유형 (IS,로)

변환 연산자로서 --is

변환이 반환 그것은 이러한 유형의 성공하면 as--는 그렇지 않은 경우는 null를 돌려, 다른 타입으로 한 유형에서 개체입니다

새로운 A A = A ();

B로서 B를 B = A // 정상 복귀 형 B 변환 전환 실패는 null

변환이 성공적 복귀는 true, 그렇지 않은 경우는 false 인 경우 is--는 다른 유형 전환의 유형을 결정하는 것입니다.

새로운 A A = A ();

(B가 A) 경우 //는 참 거짓을 반환

{

}

안전 판단이 먼저 수행 될 수 있고, 그 전환 유형은 유형 변환 용으로 사용된다. 물론,이 경우는 업데이트 된 성능 소비 될 수 있습니다.

검증 및 안전한 작동을 한 번에 쉽게 :

새로운 A A = A ();

B로서 B를 B = A;

경우 (B! = NULL) {}

그밖에{}

넷째, 유형 분류

모든 모든 클래스는 기본 클래스 --Object-하는 System.Object를 가지고, 각 개체 클래스에 해당 객체

이는 그 값 타입 (기본 데이터 형식) 참조 형으로 나눌 수있다.

값 종류 : 정수, 부동 소수점, 문자, 부울, 구조, 열거

참조 유형 : 배열, 문자열, 클래스, 인터페이스, 위임

세부 유형에 대한 의견은 다음 섹션에서 알려드립니다.

V. 확장 확장 (추상 클래스)

여기에서 우리는 구체적으로 낮은 클래스와 추상 클래스를 설명합니다. 동일한과 직접 인터페이스 차이있다.

클래스 - 추상 클래스 :

1 상속 될 수있다

2, 인스턴스화 할 수 없지만, 상속 일반적으로 클래스를 인스턴스화 할 수있는 추상 클래스

3, 추상 클래스는 메소드 선언, 그 어떤 방법을 포함하고 있습니다. 그리고의 추상 클래스에있을 수 있습니다

4, 서브 클래스는 서브 클래스가 추상 클래스가 아닌 추상 클래스는 추상 메소드를 구현해야 상속

5, 추상 추상 클래스 및 인스턴스 방법에 포함될 수있다

인터페이스 - 추상 클래스 :

같은

1 상속 될 수있다

2는 메소드 선언의 더 실현있을 수 없다

3, 인스턴스화 할 수없는

방법 4, 서브 클래스는 명시된를 구현해야합니다

다른 :

1, 다중 상속 할 수있는 추상 클래스 인터페이스를 단일 상속

도 2를 참조하면, 예시적인 방법이 추상 클래스를 포함 할 수있는 인터페이스를 포함 할 수

3, 인터페이스는 콜백, 추상 클래스는 지원되지 않습니다 지원

이 클래스, 추상 클래스, 인터페이스, 그래서 그들은에서 이었기 때문에 때를 사용 하는가?

마찬가지로 당신이 일반적인 상황에서 사용할 수 있습니다, 그것을 말을하지 않습니다.

추상 클래스 - 기능 단위가 큰 설계해야하는 경우, 추상 클래스의 사용. 추상 클래스는 주로 가까운 물체에 사용됩니다.

인터페이스는 - 작고 간결한 기능 블록의 설계는 다음 인터페이스를 사용할 수있는 경우, 인터페이스는 해제하지 않으려는 일반적인 기능 클래스를 제공하도록되어있다

예를 들면 다음과 울타리 사이의 작은 동물, 돼지, 개, 닭, 고양이 많이 있습니다. 큰 디자인 기능 단위 -이를 위해 우리는 프로그램을 설계했다, 돼지, 개, 닭, 고양이는 동물은, 추상 클래스에 따라 있습니다. 우리는 추상 클래스 동물을 디자인 할 수 있습니다. 그런 다음 각 사람이 자신의 특정 상속 클래스를 적어 (돼지 같은, 개, 닭, 고양이). 그래서 우리는 그들의 소리를 연구하기 위해 필요로하는 곳에 작은 기능 모듈의 설계. 우리는 외침을 설계하기 위해 인터페이스를 사용할 수 있습니다. 그런 다음 각각의 모든 것은 다른 소리 (라는 돼지, 개 짖는 소리, 닭이 까마귀라는 고양이)을 달성했다. 우리는 인터페이스 함수 블록을 사용하기로 결정했습니다 작고 간결을 달성하기 위해 설계 우리가 추상 클래스를 선택하는 큰 기능 단위를 달성하기 위해 설계되었습니다.

추천

출처www.linuxidc.com/Linux/2019-07/159425.htm