기본 문법 002
c \ # 기본 문법 http://blog.csdn.net/u012085988/article/details/19981161
1. class 와 struct
c \ # 에서 구조 와 클래스 의 차 이 는 메모리 에 저 장 된 저장 방식, 접근 방식 (class 는 더미 에 저 장 된 참조 형식, struct 는 창고 에 저 장 된 값 형식) 과 그들의 일부 특성 (예 를 들 어 struct 는 계승 을 지원 하지 않 음) 에 있다.작은 데이터 형식 에 struct 를 사용 하면 성능 을 향상 시 킬 수 있 습 니 다.문법 적 으로 struct 는 class 와 매우 비슷 하 다.그들 은 모두 new 로 실례 를 성명 한다!
2. 전 삼: 직접 전 삼, ref 전 삼, out 전 삼
c + + 와 마찬가지 로 c \ # 기본 적 인 전송 방식 은 전송 값 (주의, 인용 유형 에 대해 실제 전달 하 는 것 은 참조 하 는 복사 이지 가리 키 는 대상 의 복사 가 아 닙 니 다) 입 니 다. c + 중의 '&' 와 같이 매개 변 수 를 전달 하려 면 키워드 ref, ref 가 나타 내 는 의 미 는 인용 기호 '&' 와 같 지만 문법 적 으로 는 다 릅 니 다. '&'함 수 를 정의 할 때 만 표시 합 니 다. ref 는 정의 할 때 드 롭 을 표시 할 뿐만 아니 라 호출 할 때 도 드 롭 표 시 를 표시 해 야 합 니 다. 예 를 들 어:
public void test(ref int i)
{
// ...
}
public void func()
{
int i = 8;
test(ref i);
}
앞에서 말 했 듯 이 c \ # 에서 변수 가 초기 화 되 지 않 으 면 실제 정의 되 지 않 은 변수 로 간 주 됩 니 다! 이때 이 변 수 를 오른쪽 값 으로 사용 하면 컴 파일 러 가 잘못 보 고 됩 니 다! 키워드 out 은 이 규칙 을 깨 뜨 렸 습 니 다! 초기 화 되 지 않 은 변 수 를 사용 할 수 있 습 니 다!! 코드 는 다음 과 같 습 니 다.
public void test(out int i)
{
i = 111;
}
public void func()
{
int a;
test(out a);
}
키워드 out 을 사용 하지 않 으 면 이 코드 는 컴 파일 할 수 없습니다.
3. 인자 가 부족 합 니 다. c + + 와 일치 합 니 다.
4. 매개 변 수 를 명명 합 니 다. 매개 변 수 를 사용 하면 매개 변수 정의 에 따라 순조롭게 매개 변 수 를 가 져 오지 않 을 수 있 습 니 다.
public void test(string first, string second)
{
// .....
}
//
test(second:"haha", first: "hehe");
5. 속성
c + + 에는 이 개념 이 없습니다. 실제로 그 는 필드 입 니 다. 그리고 get, set 로 접근 권한 을 설정 합 니 다.
private int age;
public int Age
{
get
{
return age;
}
private set
{
age = value;
}
}
주의해 야 할 것 은 get 과 set 중 하 나 는 Public 이 어야 합 니 다. 그렇지 않 으 면 컴 파일 오류 가 발생 할 수 있 습 니 다.
만약 우리 가 아래 와 같이 쓰 면 시스템 은 자동 으로 우 리 를 위해 속성 을 실현 할 것 이다.
private int Age{get; private set}
6、inline
c \ # 에는 inline 이라는 키워드 가 없습니다. 즉, 우리 가 C \ # 에서 어떤 함수 가 inline 인지 아 닌 지 를 표시 할 수 없다 는 뜻 입 니 다. 반대로 컴 파일 러 는 자동 으로 inline 최적화 를 완성 합 니 다. 속성 과 같은 간단 한 조작 은 컴 파일 러 가 자동 으로 inline 으로 최적화 시 켜 줍 니 다.
7. 정적 구조 함수
정적 구조 함수 에 수정자 (public, private...) 권한 이 없습니다. 예 를 들 어:
static Name()
{
}
그것 의 가장 큰 특징 은 한 번 만 호출 하 는 것 이다. 그러나 언제 조정 할 지 는 모른다.
8. 구조 함수 초기 화 기
구조 함수 초기 화 기 는 구조 함수 에서 다른 구조 함 수 를 호출 하 는 것 이다.
class Car
{
public Car(string arg1, uint arg2)
{
//....
}
public Car(string arg) : this(arg, 4)
{
}
}
물론 기본 클래스 의 구조 함 수 를 호출 하고 기본 클래스 구조 함 수 를 호출 할 수 있 습 니 다. this 를 base 로 바 꾸 기만 하면 됩 니 다.
이 점 은 c + 11 의 프 록 시 구조 함수 와 비슷 합 니 다.
readonly 는 불 변수 입 니 다. 초기 화 되면 수정 되 지 않 는 양 이기 때문에 c \ # 는 읽 기 전용 변수 라 고 합 니 다. 다른 필드 와 같 지만 구조 함수 에 만 값 을 부여 할 수 있 습 니 다!
10. 익명 유형
var test1 = new { FirstName = "fn", LastName = "ln"}
var test2 = new { FirstName = "ffn", LastName = "lln"}
test 1 과 test 2 의 유형 이 같 으 며, test 1 = test 2 를 사용 하여 할당 할 수 있 습 니 다.
FirstName 과 LastName 두 필드 가 있 으 면 다음 과 같이 정의 할 수 있 습 니 다.
var test new{obj.FirstName, obj.LastName};
이렇게 하면 obj 의 First Name 과 LastName 두 필드 를 익명 클래스 에 자동 으로 표시 합 니 다.11、struct
struct 를 사용 하려 면 내용 을 주의해 야 합 니 다.
① 상속 불가
② 컴 파일 러 는 항상 기본 구조 함 수 를 제공 합 니 다. 대체 할 수 없습니다.
③ 메모리 에 있 는 필드 의 레이아웃 을 지정 할 수 있 습 니 다.
struct 대상 이 new 를 호출 할 때 메모리 가 쌓 여 있 는 것 이 아니 라 해당 하 는 구조 함 수 를 호출 합 니 다. struct 에 대해 new 를 호출 하지 않 아 도 됩 니 다. 예 를 들 어:
struct Test {};
Test t = new Test();
//
Test t;
t.x = ... // , struct, , class,
12. partial 부분 류
c \ # parial 을 사용 하여 class, struct, 인 터 페 이 스 를 다른 파일 로 나 누 어 쓸 수 있 습 니 다.
13. 정적 클래스
14. 확장 방법
확장 방법 이 많 습 니 다. 원본 코드 가 있 으 면 계승 할 수 있 습 니 다. 하지만 원본 코드 가 없 으 면 어떻게 합 니까? c \ # 확장 방법 을 제공 합 니 다. 확장 방법 이 라 고 합 니 다.
확장 방법 은 정적 입 니 다. 그 관건 적 인 부분 은 방법 을 정의 할 때 첫 번 째 매개 변 수 는 다음 과 같 습 니 다.
this className name;
예:
public static class Test
{
public static void add001(this Money money, decimal amount)
{
money.Amount += amount;
}
}
방법 add 001 은 바로 Money 의 확장 방법 입 니 다. 그 후에 다른 멤버 함수 처럼 add 001 함 수 를 호출 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Unity 최적화1. 프레임마다 처리하는 것을 최대한 피한다. 예를 들면: 5프레임당 한 번 처리로 변경할 수 있습니다. 2. 정시 반복 처리는 InvokeRepeating 함수로 이루어집니다. 예를 들어 0.5초 동안 시작한 후 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.