Colección de citas famosas - Slogan de motivación - ¿C# es nuevo y solicita una dirección?

¿C# es nuevo y solicita una dirección?

Nuevo

Crea una instancia de una clase.

Por ejemplo, existe una clase llamada coche. Ahora desea comprar un automóvil en el programa, por lo que utiliza nuevo para comprar un automóvil. Debe encontrar un nombre para este automóvil, como BMW. Jaja, eso es todo

Coche BMW = coche nuevo

Tienes dinero, quieres otro

Coche Mercedes-Benz = coche nuevo

Pero todos tienen lo que debería tener un automóvil: cuatro ruedas, un volante, un motor y puertas. Entonces todas las cosas son como automóviles.

Parece que no has entendido la esencia de C#. Se puede decir que todo en C# es una clase, una hereda otra y las subclases heredan las clases principales.

Incluso la cuerda es una clase. Declarar una variable de cadena es crear una instancia de una clase de cadena.

El problema de crear instancias de clases no es exclusivo de C#, es un problema orientado a objetos.

Un bloque de código que envuelve funciones se puede utilizar como clase. Pero no se puede utilizar directamente, porque el concepto orientado a objetos no permite modificaciones casuales del contenido de la clase. Para usarlo tienes que crear una instancia. Al igual que la clase de coche. Tienes que usarlo, pero no puedes cambiar algunas de las propiedades básicas del motor. Por ejemplo, no se pueden convertir cuatro ruedas en sólo dos. No puedes simplemente apagar el volante. Pero usted no está dispuesto a ceder, así que lo crea una instancia y el sistema le dará un automóvil que es similar a un espejo de automóvil y tiene las cosas que tiene un automóvil. Asígnele un nombre usted mismo y en el futuro podrá conducir y detener el automóvil y modificar las decoraciones a voluntad. Si dice que quiero agregar una fila de luces, puede agregarla a su instancia, pero no la agregue. a la clase, porque una vez que lo agregas a la clase, el auto instanciado por otros también tendrá una fila de luces. ¿Qué debo hacer si no les gusta?

De hecho, cuando declaras una variable de cadena, generalmente no usas new porque este tipo de cosas es un poco diferente. El sistema te permite declararla sin new, pero usa directamente

.

nombre de variable de cadena

Eso es todo

Pero no hay nada de malo en usar new, aún es posible.

C# tiene una poderosa biblioteca de clases. ¿Qué significa? Básicamente, todos los programas que deseas completar pueden usar la biblioteca de clases de C# (hay muchas, muchas clases) para crear instancias de lo que deseas usar. Simplemente júntelo. La mayoría de las clases todavía usan new.

En C#, la nueva palabra clave se puede utilizar como operador o modificador.

El operador new se utiliza para crear objetos en el montón y llamar a constructores.

El nuevo modificador se utiliza para ocultar los miembros heredados de los miembros de la clase base.

nuevo operador

1. Se utiliza para crear objetos y llamar a constructores

Ejemplo: Class_Test MyClass = new Class_Test()

2. También se utiliza para llamar al constructor predeterminado para tipos de valores

Ejemplo: int myInt = new int()

myInt se inicializa en 0, que es el valor predeterminado del tipo int. . El efecto de esta declaración es equivalente a: int myInt = 0;

3. El nuevo operador no se puede sobrecargar.

4. Si el nuevo operador no puede asignar memoria, generará una excepción OutOfMemoryException.

nuevo modificador

Utilice el nuevo modificador para ocultar explícitamente los miembros heredados de una clase base. Para ocultar un miembro heredado, declare el miembro en una clase derivada con el mismo nombre y modifíquelo con el nuevo modificador.

Mira la siguiente clase:

public class MyClass

{

public int x

public; void Invoke() {}

}

Declarar miembros con el nombre Invoke en una clase derivada ocultará el método Invoke en la clase base, es decir:

clase pública MyDerivedC : MyClass

{

new public void Invoke() {}

}

Sin embargo, debido a que el campo x es No se pasó un nombre similar Oculto, por lo que este campo no se verá afectado.

La ocultación de nombres mediante herencia adopta una de las siguientes formas:

1. La introducción de una constante, designación, propiedad o tipo en una clase o estructura oculta todos los miembros de la clase base con la misma. nombre.

2. Introducir métodos en una clase o estructura para ocultar atributos, campos y tipos con el mismo nombre en la clase base. También oculta todos los métodos de la clase base con la misma firma.

3.Introducir un indexador en una clase o estructura ocultará todos los indexadores de clase base con el mismo nombre.

4. Está mal usar new y override al mismo tiempo en el mismo miembro.

Nota: El uso del nuevo modificador en una declaración que no oculta los miembros heredados generará una advertencia.

Ejemplo

En este ejemplo, la clase base MyBaseC y la clase derivada MyDerivedC usan el mismo nombre de campo x, ocultando así el valor del campo heredado. Este ejemplo ilustra el uso del nuevo modificador. También muestra cómo acceder a miembros ocultos de una clase base utilizando nombres completos.

usando System;

clase pública MyBaseC

{

public static int x = 55

public; static int y = 22;

}

clase pública MyDerivedC : MyBaseC

{

nueva public static int x = 100; / Ocultación de nombre

public static void Main()

{

// Muestra el valor superpuesto de x:

Console.WriteLine (x);

// Acceder al valor oculto de x:

Console.WriteLine(MyBaseC.x

// Mostrar el miembro no oculto y :

Console.WriteLine(y

}

}

Salida

100

55

22

Si eliminas el nuevo modificador, el programa continuará compilando y ejecutándose, pero recibirás la siguiente advertencia:

La palabra clave new es obligatoria en 'MyDerivedC.x' porque oculta el miembro heredado 'MyBaseC.x'.

También puede utilizar el modificador new si un tipo anidado oculta otro tipo, como se muestra a continuación. ejemplo Modificar este tipo anidado.

Ejemplo

En este ejemplo, la clase anidada MyClass oculta una clase con el mismo nombre en la clase base.

Este ejemplo no solo ilustra cómo usar nombres completos para acceder a miembros de clase ocultos, sino que también ilustra cómo usar el nuevo modificador para suprimir mensajes de advertencia.

usando Sistema

clase pública MyBaseC

{

clase pública MyClass

{

público int x = 200;

público int y

}

}

clase pública MyDerivedC : MyBaseC p>

{

nueva clase pública MiClase // tipo anidado que oculta los miembros del tipo base

{

public int x = 100; /p >

public int y

public int z;

}

público estático void Main()

{

// Creando objeto a partir de la clase superpuesta:

MyClass S1 = new MyClass();

// Creando objeto a partir de la clase oculta:

MyBaseC.MyClass S2 = nuevo MyBaseC.MyClass();

Console.WriteLine(S1.x);

Console.WriteLine(S2.x); p>

}

}

Salida

100

200