머리말
이 글은 C#의 기본 지식에 관한 글로, C언어나 C++에 대한 일정한 지식을 바탕으로 요약한 글이므로 C언어에 대한 많은 기초 지식은 생략하겠지만, C#에 고유한 지식이나 C에서 상대적으로 드물거나 중요한 지식도 일부 기술하겠습니다. 언어도 블로그 게시물에 요약되어 있습니다.
위의 C# 입문 지식을 상속받습니다 https://blog.csdn.net/danielxinhj/article/details/130401403
목차
1. 복잡한 데이터 유형
두 가지 유형:
- 데이터 수집: 여러 개의 데이터(변수)가 모여서 구성된 데이터입니다.
- 사용자 정의: 자신만의 이름과 사용자 정의 데이터(변수)를 선택할 수 있습니다.
포함: 열거, 배열, 구조
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;
}