c Resumen # aprendizaje

tipos de datos básicos

tipo lugar bit de signo el valor El valor por defecto explicación
bool 8 no Verdadero Falso hablar
byte 8 no 0
sbyte 8 Tienes 0
carbonizarse dieciséis no '\ 0' unicode
corto dieciséis Tienes 0
ushort dieciséis no 0
En t 32 Tienes 0
uint 32 no 0
largo 64 Tienes 0
ulong 64 no 0
flotador 32 Tienes 0 número de coma flotante de precisión simple
doble 64 Tienes 0 número de coma flotante de doble precisión

Prioridad de los operadores

De arriba a abajo, de izquierda a derecha
() []. ->
+ (Positivo) - (negativo) ++ - (Tipo) * Y ~ sizeof
* /%
+ -
<< >>
<<=>> =
==! =
Y (Y)
^ (O exclusivo)
(O)
&& (y)
(O)
?:
= + = - = * = / =% =
,

palabras claves comunes

  • sizeof(type):Obtener el tamaño de letra.
  • typeof(type):Obtener tipo System.Reflection.MemberInfo.
  • const:Constante.
  • as:Tipo de conversión, el fracaso no produce una excepción.
  • is:La determinación de si el objeto es un cierto tipo.
  • ??:{A = b ?? c;} b si no se se devuelve nulo b, la devuelve ningún c. b puede ser de tipo nulo o un tipo de referencia.

Tipo de valor

  • Los tipos de datos básicos.
  • 结构体:No definir un constructor sin argumentos vacía, no heredan los miembros de la estructura no pueden ser protegidos, abstracta
    , vertual.
  • Enumeración.
  • Los tipos anulables: con {int? un = null;} tipos definidos en esta forma, el rango original de la gama más un nulo.

tipos de referencia

  • objeto
  • dinámica
  • cuerda
    • string str = “abc”;
    • string str = @ "abc"; ignorar el carácter de escape puede ser saltos de línea.
  • clase
  • interfaz
  • delegar

categoría

  • definición de clase
[abstract][sealed][internal\public] class [类名] : [类、接口]{

	[internal\public\protected\private(默认)] [type] [变量名];
	
	public [类名](参数):base(参数){}
	
	[internal\public\protected\private] [abstract] [返回值类型] [函数名]();
	
	[public\protected\private] [virtual] [返回值类型] [函数名](){}

	[public\protected\private] override [返回值类型] [父类虚函数名](){}
}
  • definición de clase abstracta
abstract class A{
	public abstract void func();
}

public class B : A{
	public override void func(){}
}
  • función virtual se define
public class A{
	public virtual void func(){}
}

public class B : A{
	public override void func(){}
}

interfaz

interface [类名] : [接口1,接口2 ...]{
	void func();
}

//例子
interface A{
	void func();
}

public class B : A{
	public void func(){}
}

confiar

  • La definición: delegado pública [tipo de retorno] [Nombre del delegado] (lista de parámetros);
  • Encuadernación:
    • Unicast: [nombre principal] [Nombre de la variable] = new [nombre principal] (nombre de la función);
    • multicast:
      • Añadir: [nombre principal] [Nombre de la variable] + = new [nombre principal] (nombre de función);
      • Eliminar: [Nombre del delegado] [nombre de la variable] - = new [nombre delegada] (nombre de función);
  • Llamar: [nombre de la variable] (lista de parámetros);
    Nota: Multicast convoco a todas las funciones ligadas, si hay un valor de retorno, el valor de retorno de una función después de la vuelta.
  • delegados anónimos: delegado (parámetros) {};
public class A{
	public delegate int Handler();

	public A(){
		Handler handler = func1;
		handler += func2;
		handler += delegate(){ return 3; };
		int r = handler ();//r等于3
	}
	
	public int func1(){
		return 1;
	}
	
	public int func2(){
		return 2;
	}
}

evento

  • Definiciones: evento [nombre de delegado] [nombre de la variable]
  • Añadir: [Nombre de la variable] + = [nombre de la función]
  • Eliminar: [nombre de la variable] - = [nombre de la función]
  • Llamar: [nombre de la variable] (lista de parámetros)
public class A{
	public delegate int Handler();

	public event Handler m_event;

	public A(){
		m_event += func1;
		m_event += func2;
		m_event += delegate(){ return 4; };
		int r = m_event ();//r等于4
	}
	
	public int func1(){
		return 1;
	}
	
	public int func2(){
		return 2;
	}
}

Los genéricos

  • Clasificación genérica:
tipo genérico definiciones
estructura genérica Nombre struct <T>
clase genérica Nombre de la clase <T>
Interfaz genérica Nombre de interfaz <T>
función genérica Tipo de retorno Func <T> (T)
delegado genérico Tipo de retorno director Nombre delegado <T> (T)
  • restricciones genéricas
Tipo de restricción explicación
donde T: struct T debe ser una estructura
donde T: Clase T debe ser una clase
donde T: interfaz T debe interactuar
donde T: clase-il T debe ser un Chengzi Ji siguiente clase de clase o grupo
donde T: new () T debe ser constructor sin argumentos
donde T: T parámetro de tipo T para proporcionar los parámetros o parámetros derivados se debe proporcionar de la U a U proporcionado
  • Inversor, covariante (IN, OUT)
//逆变
class A : IList<in T>{}
A<int> a1 = new A<int>();
A<object> a2 = new A<object>();
a1 = a2;

//协变
class A : IList<out T>{}
A<int> a1 = new A<int>();
A<object> a2 = new A<object>();
a2 = a1;

Parte de la clase

  • clase de pieza: clase puede ser dividida en una pluralidad de secciones definidas en un archivo diferente.
public partial class A{
	public void func1(){}
}

public partial class A{
	public void func2(){}
}

static void Main(string[] args){
	A a = new A();
	a.func1();
	a.func2();
}

propiedad

  • [AttributeUsage (AttributeTarget, allowMultiple,)] para la clase modificada.
    • AttributeTarget: gama.
    • AllowMultiple: polivalente.
    • si la herencia.
  • [El condicional ( "macros")] para la compilación condicional.
  • [El obsoleto ( "output", si el error)] utiliza para modificar el método obsoleto.
  • Definida por el usuario
[AttributeUsage(AttributeTarget.class | AttributeTarget.Method, true, true)]
public class A : System.Attribute{

	int m_a;
	string m_b;
	
	public A(int a, string b){
		m_a = a;
		m_b = b;
	}
}

[A(1, "abc")]
class B{
	[A(2, "asdgf")]
	public void func(){}
}

hilo

  • El uso de hilos:
Thread t = new Thread([函数名]); //定义线程
t.Start();//启动线程
t.Sleep();//线程休眠
t.Abort();//抛出ThreadAbortException异常,不能被捕获,可以进入finally块。
  • Bloqueo:
A a = new A();

static void Main(string[] args){
	lock(a){
		...
	}
}
  • Monitor:
    • Monitor.Enter (objeto);
    • Monitor.TryEnter (objeto); interbloqueo se puede prevenir.
    • Monitor.Exit (objeto);
  • mutex:
readonly Mutex m = new Mutex();

static void Main(string[] args){
	m.WaitOne();
	...
	m.ReleaseMutex();
}
  • 读写锁:
    读读不互斥,读写互斥,写写互斥。
ReaderWriteLockSlim a = new ReaderWriteLockSlim ();

static void Main(string[] args){
	a.EnterReadLock();
	...
	a.ExitReadLock();

	a.EnterWirteLock();
	...
	a.ExitWriteLock();
}
主义:不要用ReaderWriteLock,有BUG。
  • 信号量:
Semaphore a = new Semaphore(0,5);//初始0,最大5

static void Main(string[] args){
	a.WaitOne();//每一个线程进来就减1,减到0后,后面的线程就阻塞了。
	...
	a.Release();//每次调用加1,也可以a.Release(n)加n。
}
发布了41 篇原创文章 · 获赞 4 · 访问量 3905

Supongo que te gusta

Origin blog.csdn.net/weixin_42487874/article/details/103028842
Recomendado
Clasificación