Resumen de conocimientos básicos de C# (basado en lenguaje C)

Prefacio

Este artículo trata sobre los conocimientos básicos de C#. Es un resumen basado en un cierto conocimiento del lenguaje C o C++. Por lo tanto, se omitirán muchos conocimientos básicos del lenguaje C. Sin embargo, algunos conocimientos exclusivos de C# o relativamente raros o importantes en El lenguaje C también se resumirá en la publicación del blog.

Herede el conocimiento introductorio de C# anterior https://blog.csdn.net/danielxinhj/article/details/130401403

Tabla de contenido

1. Tipos de datos complejos

1. Enumeración

una definicion

b.Declaración

C. Conversión de tipo de enumeración (no se usa comúnmente)

2.matriz

a. Matriz entrelazada (casi requiere interés para comprenderla)

2. Valores y Referencias

1. Cadena de tipo de referencia especial

3. Función

1. Funciones con parámetros y múltiples valores de retorno.

4. árbitro y fuera

1.ref es un modificador de parámetros de función

2.out también es un modificador de parámetros de función

5. Parámetros de longitud variable y valores predeterminados de los parámetros

1.Palabra clave de parámetro de longitud variable 

2. Valores predeterminados de los parámetros

6. Sobrecarga de funciones

7. Estructura

1. Modificadores de acceso

2. Constructor de estructuras


1. Tipos de datos complejos

Dos tipos:

  1. Recopilación de datos: datos compuestos por múltiples datos (variables) reunidos.
  2. Personalización: Podrás elegir tu propio nombre y datos personalizados (variables).

Incluyendo: enumeración, matriz, estructura.

1. Enumeración

una definicion

Es una colección de constantes enteras con nombre, generalmente estado y tipo.

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

Si asigna un valor a uno de los elementos de la enumeración, los elementos siguientes se incrementarán sobre esta base a menos que se cambie nuevamente de forma artificial.

b.Declaración

  • Generalmente declarado en el bloque de declaración del espacio de nombres. 
  • Se puede utilizar en el bloque de declaración de clase.
  • Se puede utilizar en el bloque de declaración de estructura.
  • ¡No se puede declarar en una función! ! !

Fórmula: nombre de variable de tipo de enumeración personalizado = valor predeterminado (tipo de enumeración personalizado. Elemento de enumeración)

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

Las enumeraciones y declaraciones de cambio son muy adecuadas. Escriba constantes entre corchetes de cambio y se completarán automáticamente más adelante.

C. Conversión de tipo de enumeración (no se usa comúnmente)

// 枚举和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.matriz

El mismo principio que las matrices en lenguaje C.

a. Matriz entrelazada (casi requiere interés para comprenderla)

2. Valores y Referencias

Los tipos de referencia incluyen: cadena, matriz, clase

Tipo de valor: además de los tipos de referencia, como char, int, short, bool y estructura, etc.

1. Cadena de tipo de referencia especial

Cada asignación y empalme reasignará espacio en el montón.

3. Función

Básicamente similar al lenguaje C.

1. Funciones con parámetros y múltiples valores de retorno.

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. árbitro y fuera

1.ref es un modificador de parámetros de función

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

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

2.out también es un modificador de parámetros de función

Utilice exactamente lo mismo que ref.

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

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

Pero también existen diferencias entre ref y out, que son:

  • La variable pasada por ref debe inicializarse y out no la utiliza.
  • La variable pasada de entrada a salida debe asignarse internamente, no se utiliza ref
int a;
ChangeValueRef(ref a);//会报错!必须初始化
ChangeValueOut(out a);//不会报错

5. Parámetros de longitud variable y valores predeterminados de los parámetros

1.Palabra clave de parámetro de longitud variable 

params int[] significa que se pueden pasar n parámetros int. n puede ser igual a 0. Los parámetros pasados ​​se almacenarán en la matriz arr.

Aviso:

  • La palabra clave params debe ir seguida de una matriz.
  • El tipo de matriz puede ser cualquier tipo.
  • Los parámetros de función pueden tener otros parámetros y parámetros modificados por params
  • Como máximo puede aparecer un parámetro en un parámetro de función y debe ser el último parámetro.
//求n个整数和的函数
static int Sum(params int[] arr)
{
    //利用for循环求数组内的数字和即可
}

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

2. Valores predeterminados de los parámetros

Los parámetros con valores predeterminados de parámetros generalmente se denominan parámetros opcionales.

Al llamar a una función, no se pueden pasar parámetros. De lo contrario, se utilizará el valor predeterminado.

Si desea mezclarlos, los parámetros opcionales deben escribirse después de los parámetros ordinarios.

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

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

6. Sobrecarga de funciones

Requerir:

  • El mismo bloque de declaración (clase o estructura)
  • Los nombres de las funciones son los mismos.
  • El número de parámetros es diferente.
  • Mismo número de parámetros pero diferentes tipos u orden
static int CalSum(int a,int b)
{

}

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

}

7. Estructura

Las estructuras generalmente se escriben en bloques de declaraciones de espacio de nombres.

La palabra clave es estructura.

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

    //构造函数(可选)

    //函数
}

Escribe un ejemplo de estructura estudiantil.

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

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

}

1. Modificadores de acceso

¿Se pueden utilizar externamente las variables y métodos de la estructura modificada?

público significa público y privado significa privado (el valor predeterminado es privado)

2. Constructor de estructuras

  • sin valor de retorno
  • El nombre de la función es el mismo que el nombre de la estructura.
  • Debe haber parámetros
  • Después de declarar un constructor, todos los datos variables deben inicializarse en él.
//student结构体内要写的构造函数
public student(int age, bool sex, int number, string name)
{
    this.age=age;
    this.sex=sex;
    this.number=number;
    this.name=name;
}

Supongo que te gusta

Origin blog.csdn.net/danielxinhj/article/details/130485361
Recomendado
Clasificación