C#의 기본 지식 요약(C 언어 기반)

머리말

이 글은 C#의 기본 지식에 관한 글로, C언어나 C++에 대한 일정한 지식을 바탕으로 요약한 글이므로 C언어에 대한 많은 기초 지식은 생략하겠지만, C#에 고유한 지식이나 C에서 상대적으로 드물거나 중요한 지식도 일부 기술하겠습니다. 언어도 블로그 게시물에 요약되어 있습니다.

위의 C# 입문 지식을 상속받습니다 https://blog.csdn.net/danielxinhj/article/details/130401403

목차

1. 복잡한 데이터 유형

1. 열거

a.정의

b.진술

c. 열거형의 유형 변환(일반적으로 사용되지 않음)

2.어레이

a. 인터리브 배열(이해하려면 거의 관심이 필요함)

2. 값 및 참고자료

1. 특수 참조 유형 문자열

3. 기능

1. 매개변수와 다중 반환값을 갖는 함수

4. 참조 및 출력

1.ref는 함수 매개변수의 수정자입니다.

2.out은 함수 매개변수 수정자이기도 합니다.

5. 가변 길이 매개변수 및 매개변수 기본값

1.가변 길이 매개변수 키워드 

2. 매개변수 기본값

6. 함수 오버로딩

7. 구조

1. 접근 수정자

2. 구조 생성자


1. 복잡한 데이터 유형

두 가지 유형:

  1. 데이터 수집: 여러 개의 데이터(변수)가 모여서 구성된 데이터입니다.
  2. 사용자 정의: 자신만의 이름과 사용자 정의 데이터(변수)를 선택할 수 있습니다.

포함: 열거, 배열, 구조

1. 열거

a.정의

일반적으로 상태 및 유형으로 명명된 정수 상수의 모음입니다.

//枚举名 以E或者E_开头,作为我们的命名规范
enum E_自定义枚举名
{
    自定义枚举项名字1, //默认第一个值是0 下面依次累加
    自定义枚举项名字2,
    自定义枚举项名字3,
}

열거 항목 중 하나에 값을 할당하면 인위적으로 다시 변경하지 않는 한 후속 항목은 이 기준으로 증가됩니다.

b.진술

  • 일반적으로 네임스페이스 문 블록에서 선언됩니다. 
  • 클래스 문 블록에서 사용할 수 있습니다.
  • 구조체 명령문 블록에서 사용할 수 있습니다.
  • 함수에서는 선언할 수 없습니다! ! !

수식: 사용자 정의 열거형 변수명 = 기본값; (사용자 정의 열거형. 열거 항목)

enum E_PlayerType
{
    Main, //默认第一个值是0 下面依次累加
    Other,
}
E_PlayerType playerType = E_PlayerType.Main;

열거형과 스위치문이 매우 적합하며 스위치 괄호 안에 상수를 쓰면 나중에 자동으로 완성됩니다.

c. 열거형의 유형 변환(일반적으로 사용되지 않음)

// 枚举和int互转
int i = (int)playerType;
Console.WriteLine(i);

// 枚举和string相互转换
string str = playerType.ToString();
Console.WriteLine(str);

// string转为枚举
// Parse后 第一个参数:你要转为的是哪个 枚举类型 第二个参数:用于转换的对应枚举项的字符串
playerType = (E_PlayerType)Enum.Parse(typeof(E_PlayerType),"other");

2.어레이

C 언어의 배열과 동일한 원리

a. 인터리브 배열(이해하려면 거의 관심이 필요함)

2. 값 및 참고자료

참조 유형에는 문자열, 배열, 클래스가 포함됩니다.

값 유형: char, int, short, bool, 구조체 등 참조 유형 외에

1. 특수 참조 유형 문자열

각 할당 및 접합은 힙의 공간을 재할당합니다.

3. 기능

기본적으로 C언어와 유사

1. 매개변수와 다중 반환값을 갖는 함수

static int[] Calc(int a,int b)
{
    int sum = a + b;
    int avg = sum / 2;
    int[] arr = {sum, avg};
    return arr;
    //return new int[] {sum, avg}; //也可直接在return中新建数组返回
}

4. 참조 및 출력

1.ref는 함수 매개변수의 수정자입니다.

static void ChangeValue(ref int value)
{
    value = 3;
}

//调用函数时
int a = 2;
ChangeValue(ref a);

2.out은 함수 매개변수 수정자이기도 합니다.

ref와 정확히 동일하게 사용

// 如果不加out或ref 函数内的赋值便无法影响到外部
static void ChangeValue(out int[] arr)
{
    arr = new int[] {1,2,3};
}

int[] arr1 = {10,20,30};
ChangeValue(out arr1);

그러나 ref와 out 사이에는 다음과 같은 차이점도 있습니다.

  • ref로 전달된 변수는 초기화되어야 하며, out에서는 사용되지 않습니다.
  • out으로 전달된 변수는 내부적으로 할당되어야 하며 ref는 사용되지 않습니다.
int a;
ChangeValueRef(ref a);//会报错!必须初始化
ChangeValueOut(out a);//不会报错

5. 가변 길이 매개변수 및 매개변수 기본값

1.가변 길이 매개변수 키워드 

params int[]는 n int 매개변수가 전달될 수 있음을 의미합니다. n은 0과 같을 수 있습니다. 전달된 매개변수는 arr 배열에 저장됩니다.

알아채다:

  • params 키워드 뒤에는 배열이 와야 합니다.
  • 배열의 유형은 모든 유형일 수 있습니다.
  • 함수 매개변수에는 다른 매개변수와 params로 수정된 매개변수가 있을 수 있습니다.
  • 함수 매개변수에는 최대 하나의 매개변수가 나타날 수 있으며 마지막 매개변수여야 합니다.
//求n个整数和的函数
static int Sum(params int[] arr)
{
    //利用for循环求数组内的数字和即可
}

//调用时
Sum(1,2,3,4,5,6);//可以传任意多个参数

2. 매개변수 기본값

매개변수 기본값이 있는 매개변수를 일반적으로 선택적 매개변수라고 합니다.

함수를 호출할 때 매개변수를 전달할 수 없습니다. 그렇지 않은 경우 기본값이 사용됩니다.

이들을 혼합하려면 일반 매개변수 뒤에 선택적 매개변수를 작성해야 합니다.

static void Speak(string str = "还没有话语")
{
    console.WriteLine(str);
}

//调用时可以不传入参数
Speak();

6. 함수 오버로딩

필요하다:

  • 동일한 명령문 블록(클래스 또는 구조체)
  • 함수 이름은 동일합니다.
  • 매개변수 개수가 다릅니다.
  • 매개변수 수는 같지만 유형이나 순서가 다릅니다.
static int CalSum(int a,int b)
{

}

//这两个函数也不不能同时出现,即使其中一个用的是可选参数
static int CalSum(int a , int b = 1)
{

}

7. 구조

구조는 일반적으로 네임스페이스 명령문 블록으로 작성됩니다.

키워드는 구조체

struct 自定义结构体名
    //变量

    //构造函数(可选)

    //函数
}

학생 구조의 예를 작성하세요

struct Student
{
    string name;
    int age;
    bool sex;
    int id;

    // 注意结构体中的方法 目前不需要加static
    void Speak()
    {
        //可以使用前面声明的变量
    }

}

1. 접근 수정자

수정된 구조체의 변수와 메소드를 외부에서 사용할 수 있나요?

공개는 공개를 의미하고 비공개는 비공개를 의미합니다(기본값은 비공개입니다).

2. 구조 생성자

  • 반환 값 없음
  • 함수 이름은 구조체 이름과 동일합니다.
  • 매개변수가 있어야 합니다.
  • 생성자를 선언한 후에는 모든 변수 데이터가 생성자에서 초기화되어야 합니다.
//student结构体内要写的构造函数
public student(int age, bool sex, int number, string name)
{
    this.age=age;
    this.sex=sex;
    this.number=number;
    this.name=name;
}

おすすめ

転載: blog.csdn.net/danielxinhj/article/details/130485361