Tutorial de C #: los fundamentos que necesita para dominar C #



Este artículo sobre el tutorial de C # lo ayudará con un conocimiento detallado de los fundamentos de C # junto con ejemplos en tiempo real para una mejor comprensión.

C # es un lenguaje de programación robusto y de uso múltiple desarrollado por Microsoft Corporation en el año 2000 como un competidor mortal de Java. Es el lenguaje de programación más popular y dominante cuando se trata tanto del desarrollo web como del desarrollo de aplicaciones de escritorio.

En este tutorial de C #, aprenderemos los siguientes conceptos.





Conceptos básicos de C #

Introducción al lenguaje de programación C #

A principios de los 90, Java era el lenguaje de programación líder para el desarrollo web, el desarrollo de aplicaciones de escritorio y muchos otros campos. Microsoft quería encontrar un competidor con muchas características avanzadas que pudieran dejar a Java muy atrás.



C#-Tutorial-hejlsberg_bio

Fue en el año 2000, Anders Hejlsberg ya su equipo de Microsoft se le ocurrió la idea de C # popularmente llamado C-Sharp. Esta iniciativa fue aprobada por la Organización Internacional de Normalización (MAYOR) y la Asociación Europea de Fabricantes de Computadoras (ECMA). y finalmente, The C # ingresa al mundo del desarrollo de software.

Características del lenguaje de programación C #



  • Lenguaje de programación orientado a objetos

El enfoque de programación orientada a objetos es lo que hace que C # sharp sea el lenguaje de programación más amigable para los programadores y fácil de desarrollar y mantener.

  • Lenguaje de tipo seguro

El significado de Type-Safe es que al compilador se le dará acceso solo a la ubicación de la memoria que tiene permiso para ejecutarse. Esta característica mejora la seguridad del código a un nivel exponencial.

  • Interoperabilidad

La característica de interoperabilidad hace que C # sea lo suficientemente capaz de hacer todo lo que es nativo de C ++ de una manera más eficiente que puede superar al propio C ++.

  • Biblioteca rica

C # proporciona acceso a varios números de bibliotecas integradas que brindan funcionalidades preprogramadas para disminuir el tiempo dedicado al proceso de desarrollo.

  • Escalable y actualizable

C # fue diseñado para ser superior a otros lenguajes de programación. Por lo tanto, siempre está abierto a actualizaciones y se mantiene altamente escalable con sus características.

  • Orientado a componentes

Los desarrolladores de Microsoft utilizaron el enfoque basado en componentes para desarrollar C #. Esta es la metodología de desarrollo más predominante para mantener C # altamente escalable y actualizado.

  • Lenguaje estructurado

Se prefiere el enfoque de programación estructurada durante el ciclo de vida del desarrollo de software, ya que resulta fácil desarrollar, compilar e implementar el software en comparación con el enfoque de programación orientada a procedimientos.

  • Rápido

La programación en C # resulta ser más rápida en compilación y ejecución en comparación con C ++ y otros lenguajes de programación.

Instalación

Está comprobado que Microsoft Visual Studio es el mejor editor de su clase para programación en C #. Instalaremos y configuraremos Microsoft Visual Studio para ejecutar nuestros programas C # siguiendo los pasos que se mencionan a continuación:

Paso 1 : Descarga Microsoft Visual Studio

Google para última versión de Visual Studio y descarga el Instalar en pc archivo en su sistema local y luego correr el archivo de instalación como un administrador.

Paso 2: seleccione el paquete de desarrollo de escritorio .NET

Una vez que ejecute el instalador, el editor de Visual Studio se descargará con éxito en su sistema local, más tarde se mostrará un cuadro de diálogo en la pantalla de su escritorio preguntando paquete particular que necesita en su sistema. Aquí, debe seleccionar el Desarrollo de escritorio .NET paquete.

Paso 3: Establecer el entorno C #

Una vez que sus paquetes para Desarrollo .NET se descargan, luego se mostrará otro cuadro de diálogo en su pantalla solicitando el entorno de desarrollo que está buscando. Aquí, necesitas seleccione el entorno para C #.

Paso 4: crea tu primer proyecto

Una vez que se establece el entorno, todo está listo para comenzar. Inicie su Visual Studio y seleccione crear nuevo proyecto opción en el cuadro de diálogo mostrado.

Será redirigido al siguiente cuadro de diálogo y allí deberá seleccionar Biblioteca de clases como .NET estándar Como se muestra abajo.

cómo finalizar un programa en java

En el siguiente cuadro de diálogo, se le pedirá que Configura tu proyecto . Configúrelo y ya está en el Editor. Escribe tu primer programa y correr eso. La salida se mostrará correctamente en el Símbolo del sistema.

usando la clase del sistema Edureka {static void Main (string [] args) {Console.WriteLine ('¡Bienvenido a Edureka !, ¡Feliz aprendizaje ...!')}}

//Salida:

Ejecutemos nuestro primer programa C #.

Estructura del programa C #

Ahora que hemos ejecutado nuestro primer programa C #, comprendamos su estructura en detalle. Un programa simple de C # tiene las siguientes partes.

usando el espacio de nombres del sistema ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('¡Bienvenido a Edureka !, ¡Feliz aprendizaje ...!')}}}

//Salida:

¡Bienvenido a Edureka !, ¡Feliz aprendizaje ..!

  • clase: La clase se puede definir generalmente como palabra clave que se utiliza para definir una clase en el programa C #.
  • Edureka: Es el nombre del Clase. La clase a menudo se considera como un modelo que almacena los miembros y métodos relacionados con la clase.
  • Principal: Básicamente es el método primario de todo el Programa C #, actúa como puerta de enlace para que el control ingrese al programa. Se ejecuta antes de que se ejecute cualquier otro método del programa.
  • vacío: Este segmento del código está designado al tipo de retorno del método. Puede ser cualquier tipo de datos que no sea nulo. Void significa que el método no tiene ningún dato que se devuelva.
  • estático: Esto es un palabra clave que dice que los miembros de datos declarados son estáticos y se ha asignado una memoria dedicada a los miembros declarados.
  • Cadena [] argumentos: Se parece a los argumentos de la línea de comandos que usamos en nuestro programa. Mientras ejecutamos nuestro programa, básicamente pasamos algunos argumentos, que será aceptado por el programa debido a esta declaración.
  • System.Console.WriteLine ('¡Bienvenido a Edureka !, ¡Feliz aprendizaje ...!') Aquí, Sistema es el espacio de nombres. La consolaes que la categoría descritaen el espacio de nombres del sistema. los Línea de escritura() es que elestáticotécnicade consolacategoría que se emplea para anotarel texto en la consola.

Ahora, aprendamos los tipos de datos disponibles en C #.

Tipos de datos

Los tipos de datos en C # se dividen en tres categorías que se describen a continuación.

Tipos de datos de valor

los Tipos de datos de valor están ubicados en el System.ValueType Biblioteca y siempre están listos para ser accedidos directamente y las variables se pueden asignar directamente a un valor particular. Los tipos de datos de valor se clasifican además en dos tipos, como se muestra a continuación:

  • Tipos de datos predefinidos
  • Tipos de datos definidos por el usuario

Tipos de datos predefinidos: Estos son los que solemos utilizar en nuestra programación del día a día. Estos tipos de datos están predefinidos por los desarrolladores del lenguaje y están listos para ser utilizados por los programadores.

Ejemplo:

int, float, char, short double, etc.

Tipos de datos definidos por el usuario: Hay situaciones en las que podríamos necesitar almacenar diferentes valores de tipos de datos en una sola variable. En estos casos, el Tipos de datos predefinidos no son suficientes. Usuario definido Los tipos de datos son como tipos de datos personalizables para el usuario.

Ejemplo: estructura, enumeración

Tipo de datos Rango de la memoria asignada Tamaño de la memoria
char firmado -128 hasta 127 1 byte
char sin firmar 0 hasta 127 1 byte
carbonizarse -128 hasta 127 1 byte
firmado corto -32.768 hasta 32.767 2 Bytes
corto sin firmar 0 hasta 65.535 2 Bytes
corto -32.768 hasta 32.767 2 Bytes
firmado int -2,147,483,648 a -2,147,483,647 4 Bytes
int sin firmar 0 a 4.294.967.295 4 Bytes
En t -2,147,483,648 a -2,147,483,647 4 Bytes
firmado largo -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 8 Bytes
largo sin firmar 0 a 18,446,744,073,709,551,615 8 Bytes
largo -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 8 Bytes
flotador 1,5 * 10-45 - 3,4 * 1038, (precisión de 7 dígitos) 4 Bytes
doble 5.0 * 10-324 - 1.7 * 10308, (precisión de 15 dígitos) 8 Bytes
decimal -7,9 * 10-28 - 7,9 * 1028, (precisión de 28 dígitos) 16 Bytes


Tipo de datos de puntero

El tipo de puntero es un tipo de datos simple. Su funcionalidad es completamente similar a los Punteros en C. Están diseñados para almacenar la dirección de otro puntero.

flotar * ptr

Tipos de datos de referencia

El nombre se explica por sí mismo. los Tipos de datos de referencia en realidad, no almacenan las variables, sino que almacenan el valor de referencia de esa variable en particular. En otras palabras, almacenan la dirección de la variable real.

Las variables de referencia se clasifican en tres tipos diferentes como se menciona a continuación:

  • Tipo de objeto

El tipo de datos de objeto está disponible en la System.Object Clase.El objetotipospuede serasignado alvalores delos otros tipos,referenciatipos, predefinido, definido por el usuariotipos. Pero antesasignaciónvalores, requiere tipo conversión.

object abc abc = 50 // esto se llama boxeo
  • Tipo dinámico

Las variables de tipo dinámico están diseñadas para almacenar casi todos los tipos de valores. Se llama tipo dinámico porque la verificación de tipo de valores se realiza en tiempo de ejecución

dinámico x = 10
  • Tipo de cadena

El tipo de cadena está disponible en System.String clase. El tipo de cadena está diseñado para almacenar literales de cadena. Los literales de cadena se almacenan en dos formas endos formas

    • cotizado
    • @citado.
Cadena S = 'Edureka'
  • los @citado literal de cadena parece
@ 'Edureka'

Ahora entendamos las variables.

Variables

Las variables son los nombres asignados para la ubicación de la memoria que almacenan ciertos datos proporcionados por el usuario y esos datos son fácilmente accesibles mediante el nombre de la variable. Hay cinco tipos de variables disponibles en C #

Tipo Ejemplo
Nulo Datos nulos
Booleano Verdadero y falso
Entero Int, Char, Byte, Corto, Largo
Flotador Flotar y Doble
Decimal Decimal

Ejemplo:

int a, b doble x float p char abc

Reglas a seguir para declarar variables en C #

  • Una variable puede incluir alfabetos, dígitos y guiones bajos.
  • El nombre de una variable solo puede comenzar con un alfabeto o un guión bajo.
  • Las variables no pueden comenzar con un dígito o carácter especial.
  • No se permiten espacios en blanco entre el nombre de la variable.
  • Las palabras clave reservadas no pueden utilizarse como nombres de variables.

Operadores

Un operador se puede definir como un símbolo especial que explica que la computadora realice una operación matemática en particular, una operación lógica sobre un conjunto de variables. C # incluye una variedad de operadores que se mencionan a continuación.

  • Operadores aritméticos
  • Operadores relacionales
  • Operadores logicos
  • Operadores bit a bit
  • Operadores de Asignación

Operadores aritméticos

Operador Ejemplo Descripción
+ A + B Agrega dos operandos
A - B Resta dos operandos
* A * B Múltiplos de dos operandos
/ A / B Divide dos operandos
% A% B El resto de dos operandos
++ A++ Operación de incremento
A– Operación de decremento

Operadores relacionales

Operador Ejemplo Descripción
== A == B Verdadero, si ambos operandos son iguales, Else Falso
!= A! = B Es cierto, si ambos operandos no son iguales, Else False
> A> B Verdadero, si A es mayor, de lo contrario falso
< A Verdadero, si B es mayor, de lo contrario falso
>= A> = B Verdadero, si A es mayor o igual, si no es falso
<= A<= B Verdadero, id B es mayor igual, de lo contrario falso

Operadores logicos

Operador Ejemplo Descripción
&& A && B Verdadero, si ambos operandos son verdaderos, Else Falso
|| A || segundo Verdadero, si uno de los operandos es verdadero, Else Falso
! UN ! segundo Invierte el estado lógico del operando

Operadores bit a bit

A B A y B A | segundo A ^ B
1 1 1 1 0
1 0 0 1 1
0 1 0 1 1
0 0 0 0 0
Operador Ejemplo Descripción
~ (~A) El operador de complemento de Binary One es unario y tiene el efecto de 'voltear' bits.
<< A<<2 Operador binario de cambio a la izquierda. El valor de los operandos de la izquierda se mueve a la izquierda el número de bits especificado por el operando de la derecha.
>> A>>2 Operador de cambio a la derecha binario. El valor de los operandos de la izquierda se mueve hacia la derecha el número de bits especificado por el operando de la derecha.

Operadores de Asignación

Operador Ejemplo Descripción
= A = B + C A = B + C, B + C se asigna a A
+= A + = B A = A + B, A + B se asigna a A
-= A - = B A = A-B, A-B se asigna a A
*= A - = B A = A * B, A * B se asigna a A
/= A / = B A = A / B, A / B se asigna a A
%= A% = B A = A% B, A% B se asigna a A
<<= A<<= 2 Operador de asignación y cambio a la izquierda
>>= A >>= 2 Operador de asignación y desplazamiento a la derecha
&= A &= 2 Operador de asignación y bit a bit
^= A ^= 2 Operador exclusivo y de asignación bit a bit
|= A != 2 Operador de asignación e inclusión bit a bit

Bucles

A lazo declaración se utiliza para ejecutar un bloque de declaraciones repetidamente hasta que se satisface una condición particular. El lenguaje C # consta de las siguientes instrucciones de bucle.

  • En bucle
  • Mientras bucle
  • Hacer mientras bucle

En bucle

los en bucle se utiliza para ejecutar un segmento de código particular varias veces hasta que se cumpla la condición dada.

Sintaxis

para (incremento / disminución de la condición de inicialización) {// segmento de código}

FlowChart:

Ejemplo:

usando System public class ForExample {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

//Salida:

1
2
3
4
5

Mientras bucle

los Mientras bucle se utiliza para ejecutar un segmento de código varias veces hasta que se cumple una condición específica.

Sintaxis

while (condición) {// código a ejecutar}

FlowChart:

Ejemplo:

usando bucles de espacio de nombres del sistema {class Program {static void Main (string [] args) {int x = 5 while (x<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } } 

//Salida:

El valor de a: 5
El valor de a: 6
El valor de a: 7
El valor de a: 8
El valor de a: 9
El valor de a: 10

Hacer mientras bucle

El ciclo Do while es completamente similar al ciclo While, pero la única diferencia es que la condición se coloca al final del ciclo. Por tanto, el bucle se ejecuta al menos una vez.

Sintaxis

do {// código a ejecutar} while (condición)

FlowChart:

Ejemplo:

usando el espacio de nombres del sistema Edureka {class DoWhileLoop {public static void Main (string [] args) {int i = 1, n = 5, product do {product = n * i Console.WriteLine ('{0} * {1} = { 2} ', n, i, producto) i ++} mientras que (i<= 10) } } } 

//Salida:

5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50

Condicional

Declaraciones condicionales se utilizan para ejecutar declaración o grupo de declaraciones basado en alguna condición. Si el condición es verdad entonces Declaraciones de C # se ejecutan de lo contrario el siguiente declaración será ejecutado.

Los diferentes tipos de declaraciones condicionales en lenguaje C ++ son los siguientes:

  1. Si declaración
  2. Declaración If-Else
  3. Sentencia If-else anidada
  4. If-Else If escalera
  5. Declaración de cambio

Si declaración

El soltero Si La declaración en lenguaje C # se usa para ejecutar el código si una condición es verdadera. También se denomina declaración de selección unidireccional.

Sintaxis

if (expresión-booleana) {// sentencias ejecutadas si expresión-booleana es verdadera}

FlowChart:

Ejemplo:

usando el espacio de nombres del sistema Condicional {class IfStatement {public static void Main (string [] args) {int number = 2 if (number<5) { Console.WriteLine('{0} is less than 5', number) } Console.WriteLine('This statement is always executed.') } } } 

//Salida:

2 es menor que 5
Esta declaración siempre se ejecuta.

Declaración If-Else

los si-si no La declaración en lenguaje C se usa para ejecutar el código si la condición es verdadera o falsa. También se denomina declaración de selección bidireccional.

Sintaxis

if (expresión-booleana) {// declaraciones ejecutadas si expresión-booleana es verdadera} else {// declaraciones ejecutadas si expresión-booleana es falsa}

FlowChart:

Ejemplo:

usando el espacio de nombres del sistema Condicional {class IfElseStatement {public static void Main (string [] args) {int number = 12 if (number<5) { Console.WriteLine('{0} is less than 5', number) } else { Console.WriteLine('{0} is greater than or equal to 5', number) } Console.WriteLine('This statement is always executed.') } } } 

//Salida:

12 es mayor o igual que 5
Esta declaración siempre se ejecuta.

Sentencia If-else anidada

El anidado si-si no La sentencia se utiliza cuando un programa requiere más de una expresión de prueba. También se denomina declaración de selección multidireccional. Cuando una serie de decisiones están involucradas en una declaración, usamos si-si no declaración en forma anidada.

Sintaxis

if (expresión-booleana) {if (expresión-anidada-1) {// código que se ejecutará} else {// código que se ejecutará}} else {if (expresión-anidada-2) {// código que se ejecutará } else {// código a ejecutar}}

FlowChart:

Ejemplo:

usando el espacio de nombres del sistema Condicional {clase Anidada {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first

//Salida:

13 es el más grande

Else-if escalera

los if-else-if La declaración se usa para ejecutar un código de múltiples condiciones. También se denomina declaración de decisión de trayectos múltiples. Es una cadena de sentencias if..else en la que cada sentencia if está asociada con una sentencia else if y last sería una sentencia else.

Sintaxis

if (condición1) {// código que se ejecutará si condición1 es verdadera} else if (condición2) {// código que se ejecutará si condición2 es verdadera} else if (condición3) {// código que se ejecutará si condición3 es verdadera} ... else {// código que se ejecutará si todas las condiciones son falsas}

FlowChart:

Ejemplo:

usando la clase del sistema Edureka {public static void Main (String [] args) {int i = 20 if (i == 10) Console.WriteLine ('i is 10') else if (i == 15) Console.WriteLine (' i es 15 ') else if (i == 20) Console.WriteLine (' i is 20 ') else Console.WriteLine (' i no está presente ')}}

//Salida:

tengo 20

Declaración de cambio

Cambiar La sentencia actúa como un sustituto de una escalera if-else-if larga que se utiliza para probar una lista de casos. Una declaración de cambio contiene una o más etiquetas de caso que se prueban con la expresión de cambio. Cuando la expresión coincide con un caso, se ejecutarán las declaraciones asociadas con ese caso.

Sintaxis

switch (variable / expresión) {caso valor1: // Declaraciones ejecutadas si expresión (o variable) = valor1 ruptura caso valor2: // Declaraciones ejecutadas si expresión (o variable) = valor1 ruptura ... ... ... .. . ... ... default: // Declaraciones ejecutadas si ningún caso coincide}

FlowChart:

Ejemplo:

usando el espacio de nombres del sistema Condicional {class SwitchCase {public static void Main (string [] args) {char ch Console.WriteLine ('Enter an alphabet') ch = Convert.ToChar (Console.ReadLine ()) switch (Char.ToLower (ch )) {case 'a': Console.WriteLine ('Vowel') break case 'e': Console.WriteLine ('Vowel') break case 'i': Console.WriteLine ('Vowel') break case 'o': Console.WriteLine ('Vowel') break case 'u': Console.WriteLine ('Vowel') break default: Console.WriteLine ('Not a vocal') break}}}}

//Salida:

Ingrese un alfabeto
es
Vocal

Instrumentos de cuerda

Cuerda Datatype es miembro de System.String Clase. Es capaz de almacenar datos de tipo carácter. Podemos realizar diversas operaciones sobre picaduras comoconcatenación, comparación, obtención de subcadenas, búsqueda, recorte, reemplazo y muchos más.

La analogía de cuerda y cuerda

C ª# Cuerda y cuerda son equivalentes. La palabra cadena es una palabra clave y actúa como el System.String clase. Podemos usar cualquiera de las versiones para declarar cadenas.

Sintaxis:

string s1 = 'Edureka' // creando una cadena usando la palabra clave de cadena String s2 = 'Happy Learning' // creando una cadena usando la clase String

Ejemplo:

usando System public class StringExample {public static void Main (string [] args) {string s1 = 'Edureka' char [] ch = {'C', 's', 'h', 'a', 'r', ' p ',' ',' T ',' u ',' t ',' o ',' r ',' i ',' a ',' l '} cadena s2 = nueva cadena (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}

//Salida:

Edureka
Tutorial de Csharp

Métodos de cadena en C #

Método Descripción
Clon() Se usa para devolver una referencia a esta instancia de String.
Comparar (cadena, cadena) Se utiliza para comparar dos objetos String especificados.
Concat (cadena, cadena) Concatenar dos instancias especificadas de String.
Contiene (cadena) Devuelve un valor que indica una subcadena especificada
Copiar (cadena) Se usa para crear una nueva instancia de String con el mismo valor
Copiar a (Int, Char [], Int, Int) Copia caracteres de una posición especificada
Es igual a (cadena, cadena) Determina que dos objetos String tienen el mismo valor.
Formato (cadena, objeto) Reemplazar uno o más elementos de formato en una cadena especificada
IndexOf (cadena) Informa el índice de base cero de la primera aparición.
Insertar (Int32, cadena) Devuelve una nueva cadena en la que se inserta una cadena en un índice.
IsInterned (cadena) Indica que esta cadena está en forma de normalización Unicode C.
IsNullOrEmpty (cadena) Indica que la cadena especificada es nula o una cadena vacía.
IsNullOrWhiteSpace (cadena) Se usa para indicar si una cadena especificada es nula, vacía,
Unir (Cadena, Cadena []) Se utiliza para concatenar todos los elementos de una matriz de cadenas.
LastIndexOf (Char) Informa la posición del índice de base cero del último carácter
LastIndexOfAny (Char []) Informa la posición del índice de base cero del último carácter
Eliminar (Int32) Devuelve una nueva cadena en la que todos los caracteres
Reemplazar (cadena, cadena) Devuelve una nueva cadena en la que todas las apariciones de una cadena
Dividir (Char []) Se utiliza para dividir una cadena en subcadenas.
StartsWith (cadena) Se usa para verificar si el comienzo de esta cadena
Subcadena (Int32) Se utiliza para recuperar una subcadena de esta instancia.
ToCharArray () Copia los caracteres de esta instancia en una matriz Unicode.
Encadenar() Se utiliza para devolver la instancia de String.
Podar() Recorta la cuerda


Matrices

Al igual que otros lenguajes de programación, C # tiene matrices. Las matrices son estructuras de datos simples que están diseñadas para almacenar el mismo tipo de datos de elementos en una ubicación de memoria contigua.

C # admite los siguientes tipos de matrices.

  • Matriz unidimensional
  • Matriz multidimensional
  • Matriz irregular

Matriz unidimensional

Single Dimensional Array almacena elementos en forma de una sola fila.

Sintaxis

int [] arr = new int [5] // creando una matriz

Ejemplo:

usando la clase pública del sistema ArrayExample {public static void Main (string [] args) {int [] arr = new int [5] arr [0] = 10 arr [1] = 20 arr [2] = 30 arr [3] = 40 arr [4] = 50 para (int i = 0 i 

//Salida:

10
20
30
40
50

Matriz multidimensional

Multidimensional Array almacena elementos en forma de múltiples dimensiones como una matriz y un cubo, etc.

Sintaxis

int val = a [2,3]

Ejemplo:

usando el espacio de nombres del sistema ArrayApplication {class MyArray {static void Main (string [] args) {int [,] a = new int [5, 2] {{0, 0}, {1, 2}, {2, 4}, {3, 6}, {4, 8}} int i, j para (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } } 

//Salida:

a[0,0] = 0
a[0,1] = 0
a[1,0] = 1
a[1,1] = 2
a[2,0] = 2
a[2,1] = 4
a[3,0] = 3
a[3,1] = 6
a[4,0] = 4
a[4,1] = 8

Matriz irregular

Jagged Array es simplemente una matriz de matrices.

Ejemplo:

usando el espacio de nombres del sistema ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, new int [] {2,4}, new int [] {3, 6}, new int [] {4, 8}} int i, j para (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } } 

//Salida:

a[0][0] = 0
a[0][1] = 0
a[1][0] = 1
a[1][1] = 2
a[2][0] = 2
a[2][1] = 4
a[3][0] = 3
a[3][1] = 6
a[4][0] = 4
a[4][1] = 8

Colecciones

La recopilación se puede considerar simplemente como un grupo de objetos recopilados juntos para aplicar algunas funciones a los datos recopilados. Las operaciones que una vez pueden realizar posiblemente en una colección son,

  • almacenar objeto
  • actualizar objeto
  • eliminar objeto
  • recuperar objeto
  • objeto de búsqueda, y
  • ordenar objeto

Tipos de colecciones

Hay tres posibilidades diferentes para trabajar con colecciones. Los tres espacios de nombres se mencionan a continuación:

  • System.Collections.Generic clases
  • Colecciones del sistema clases
  • System.Collections.Concurrent clases

La clase System.Collections.Generic tiene las siguientes variedades de clases:

  • Lista
  • Apilar
  • Cola
  • Lista enlazada
  • HashSet
  • SortedSet
  • Diccionario
  • OrdenarDiccionario
  • SortedList

los Colecciones del sistema las clases se consideran clases heredadas. incluyen las siguientes clases.

  • Lista de arreglo
  • Apilar
  • Cola
  • Tabla de picadillo

los System.Collections.Concurrent clasesel espacio de nombres proporciona clases para operaciones seguras para subprocesos. Ahora, varios subprocesos no crearán un problema para acceder a los elementos de la colección. las clases disponibles en esto son,

  • Bloqueo de colección
  • ConcurrentBag
  • ConcurrentStack
  • ConcurrentQueue
  • ConcurrentDictionary
  • Particiones
  • Particiones
  • Particionador ordenable

Lista

los lista se considera como una estructura de datos disponible en System.Collection.Generics espacio de nombres. Puede almacenar y recuperar elementos. La lista es capaz de almacenar elementos duplicados.

Ejemplo:

usando System usando System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new List () names.Add ('Sandhya') names.Add ('Arun') names.Add ( 'Prashanth') names.Add ('Kiran') foreach (var nombre en nombres) {Console.WriteLine (name)}}}

//Salida:

Sandhya
Arun
Prashanth
Kiran

Conjunto de hash

C # HashSetla categoría a menudo está acostumbradaTienda,para llevaroleer componentes. Esonoalmacenar duplicadocomponentes.es urgenteusar HashSet categoríaSitienespara almacenarsolamente distintivo componentes . sus que se encuentra en System.Collections.Generic namespace.

Ejemplo:

usando System usando System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new HashSet () names.Add ('Sunil') names.Add ('Amar') names.Add ( 'Pujari') nombres.Agregue ('Imran') nombres.Agregue ('karan') foreach (nombre var en nombres) {Console.WriteLine (nombre)}}}

//Salida:

Sunil
Amar
Pujari
Imran
karan

Conjunto ordenado

C # SortedSetla clase suele estar acostumbradaTienda, eliminar o leer elementos . Mantiene el orden ascendente ynoalmacenar duplicadoelementos.es rápidoutilizar SortedSetcategoríaSitienespara almacenar distintivo componentes y mantener el orden ascendente.susque se encuentra en System.Collections.Generic namespace.

Ejemplo:

usando System usando System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new SortedSet () names.Add ('Sanjay') names.Add ('Anuradha') names.Add ( 'Praveen') nombres.Agregue ('Ravi') nombres.Agregue ('Kajol') foreach (nombre var en nombres) {Console.WriteLine (nombre)}}}

//Salida:

Anuradha
Kajol
Praveen
Ravi
Sanjay

Apilar

los apilar es una colección simple que sigue FILO o procedimiento primero en entrar, último en salir mientras se procesan los elementos almacenados en él.

Ejemplo:

usando System usando System.Collections.Generic public class Edureka {public static void Main (string [] args) {Stack names = new Stack () names.Push ('Chandan') names.Push ('Pooja') names.Push ( 'James') nombres.Push ('Rajesh') nombres.Push ('kumar') foreach (nombre de cadena en nombres) {Console.WriteLine (nombre)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Pop:' + names.Pop ()) Console.WriteLine ('After Pop, elemento Peek:' + names.Peek ())}}

//Salida:

Kumar
Rajesh
James
Pooja
Chandan
Elemento de vista: kumar
Pop: kumar
Después de Pop, elemento Peek: Rajesh

Cola

La cola es completamente similar a Stack, pero la única diferencia es que la cola sigue FIFO o principio de primero en entrar y primero en salir mientras procesa los elementos almacenados en él.

Ejemplo:

usando System usando System.Collections.Generic public class Edureka {public static void Main (string [] args) {Queue names = new Queue () names.Enqueue ('Srujan') names.Enqueue ('Prajat') names.Enqueue ( 'John') nombres.Enqueue ('Raju') nombres.Enqueue ('Hari') foreach (nombre de cadena en nombres) {Console.WriteLine (nombre)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Dequeue:' + names.Dequeue ()) Console.WriteLine ('After Dequeue, Peek element:' + names.Peek ())}}

//Salida:

Srujan
Prajat
John
Feroz
Día
Elemento Peek: Srujan
Dequeue: Srujan
Después de Dequeue, elemento Peek: Prajat

Lista enlazada

La lista vinculada es una colección de memoria dinámica. Los elementos de la lista vinculada se almacenan accediendo a la memoria desde el montón y almacenando los elementos en un orden continuo vinculando sus direcciones.

Ejemplo:

usando System usando System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new LinkedList () names.AddLast ('Rajat') names.AddLast ('Arun') names.AddLast ( 'Prakash') nombres.AddLast ('jay') nombres.AddFirst ('sai') foreach (nombre var en nombres) {Console.WriteLine (nombre)}}}

//Salida:

sai
Límites
Arun
Prakash
arrendajo

Diccionario

Diccionario categoríausa elideade la tabla hash. Almacena valores enla premisade la llave. Contienedistintivollavessolamente. Porla asistenciade clave,nosotros simplementebuscar oquitar elementos.susque se encuentra en System.Collections.Generic namespace.

Ejemplo:

usando System usando System.Collections.Generic public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', 'Prasad') nombres.Añadir ('3', 'Preetam') nombres.Añadir ('4', 'Roy') nombres.Añadir ('5', 'Akash') foreach (KeyValuePair kv en nombres) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Salida:

1 Shiva
2 prasad
3 Preetam
4 Roy
5Akash

Diccionario ordenado

los OrdenarDiccionario categoríausa eldiseñode la tabla hash. Almacena valores enla ideade la llave. Contienedistintivoclaves y mantiene el orden ascendente enla ideade la llave. Porla asistenciade clave,nosotros simplementebuscar oquitar elementos.susque se encuentra en System.Collections.Generic namespace.

Ejemplo:

usando System usando System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') nombres.Agregue ('5', 'Ramesh') nombres.Agregue ('3', 'Vidya') nombres.Agregue ('2', 'Pallavi') foreach (KeyValuePair kv en nombres) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Salida:

1 Shiva
2 prasad
3 Preetam
4 Roy
5Akash

Lista ordenada

los SortedList esunmatriz de pares clave / valor. Almacena valores enla premisade la llave. La SortedListcategoríacontienedistintivoclaves y mantiene el orden ascendente enla premisade la llave. Porla asistenciade clave,somos capaces de simplementebuscar o eliminarelementos.susencontrado en System.Collections.Generic espacio de nombres.

clase __init__ python

Ejemplo:

usando System usando System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') nombres.Agregue ('5', 'Ramesh') nombres.Agregue ('3', 'Vidya') nombres.Agregue ('2', 'Pallavi') foreach (KeyValuePair kv en nombres) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Salida:

1 Arun
2 Pallavi
3 Vidya
4 Vishal
5Ramesh

Estructura

La estructura es un tipo de datos definido por el usuario diseñado para almacenar múltiples elementos de diferentes tipos de datos. La estructura se declara usando la palabra clave estructura

Ejemplo:

usando la estructura del sistema Libros {título de la cadena pública autor de la cadena pública autor de la cadena pública asunto público int book_id} clase pública Edureka {vacío estático público Principal (cadena [] args) {Libros Libro1 Libros Libro2 Libro1.title = 'Programación C #' Libro1.autor = ' Ramchandra Kumar 'Book1.subject =' Tutorial de programación en C ++ 'Book1.book_id = 95908978 Book2.title =' Telecom Billing 'Book2.author =' Karan 'Book2.subject =' Telecom Billing Tutorial 'Book2.book_id = 18674900 Console.WriteLine ( 'Título del libro 1: {0}', Book1.title) Console.WriteLine ('Autor del libro 1: {0}', Book1.author) Console.WriteLine ('Asunto del libro 1: {0}', Book1.subject) Console.WriteLine ('Libro 1 book_id: {0}', Book1.book_id) Console.WriteLine ('Título del libro 2: {0}', Book2.title) Console.WriteLine ('Autor del libro 2: {0}', Book2.author) Console.WriteLine ('Asunto del libro 2: {0}', Book2.subject) Console.WriteLine ('Book 2 book_id: {0}', Book2.book_id) Console.ReadKey ()}}

//Salida:

Título del libro 1: Programación en C #
Libro 1 Autor: Ramchandra Kumar
Tema del libro 1: Tutorial de programación en C ++
Libro 1 book_id: 95908978
Título del libro 2: Facturación de telecomunicaciones
Libro 2 Autor: Karan
Tema del libro 2: Tutorial de facturación de telecomunicaciones
Libro 2 book_id: 18674900

Funciones

La función se define como un bloque de código del código principal. La función se utiliza para ejecutar declaraciones especificadas en el bloque de código. Una función consta de los siguientes componentes.

  • Nombre de la función: Es un nombre distintivo que se utiliza para realizar una llamada de función.
  • Tipo de retorno: Especifica el tipo de datos del valor de retorno de la función.
  • Cuerpo: Contiene declaraciones ejecutables.
  • Especificador de acceso: Especifica la accesibilidad de la función en la aplicación.
  • Parámetros: Es una lista de argumentos que podemos pasar a la función durante la llamada.

Sintaxis

FunctionName () {// cuerpo de la función // declaración de retorno}

Ejemplo:

usando el espacio de nombres del sistema FunctionExample {class Edureka {public string Show (string message) {Console.WriteLine ('Inside Show Function') return message} static void Main (string [] args) {Edureka program = new Edureka () string message = program .Show ('A Edureka') Console.WriteLine ('Bienvenido' + mensaje)}}}

//Salida:

Función Inside Show
Bienvenidos a Edureka

Las funciones se pueden ejecutar de 3 formas diferentes:

  • Llamar por valor
  • Llamar por referencia
  • Parámetro de salida

Llamar por valor

C ª#, valor -tipo parámetrossonque paseuna réplicade valor original alfunción en lugar dereferencia. Esonomodificarel primer valor. Unenmienda creadaen pasadoel valor noAñosel valor particular.dentro desiguiente ejemplo,tenemospasarvalor en todolallamada.

Ejemplo:

usando el espacio de nombres del sistema CallByValue {class Edureka {public void Show (int val) {val * = val Console.WriteLine ('El valor dentro de la función show' + val)} static void Main (string [] args) {int val = 50 Programa Edureka = new Edureka () Console.WriteLine ('Valor antes de llamar a la función' + val) program.Show (val) Console.WriteLine ('Valor después de llamar a la función' + val)}}}

//Salida:

Valor antes de llamar a la función 50
El valor dentro de la función show 2500
Valor después de llamar a la función 50

Llamar por referencia

En el método de llamada por referencia,a ref palabra clave para pasar el argumento como tipo de referencia. Pasa la referencia de los argumentos a la función en lugar de una copia del valor original. Los cambios en los valores pasados ​​son permanentes y modificar el valor de la variable original.

Ejemplo:

usando el espacio de nombres del sistema CallByReference {class Edureka {public void Show (ref int val) {val * = val Console.WriteLine ('El valor dentro de la función show' + val)} static void Main (string [] args) {int val = 50 Programa Edureka = new Edureka () Console.WriteLine ('Valor antes de llamar a la función' + val) program.Show (ref val) Console.WriteLine ('Valor después de llamar a la función' + val)}}}

//Salida:

Valor antes de llamar a la función 50
El valor dentro de la función show 2500
Valor después de llamar a la función 2500

Parámetro de salida

El parámetro de salidaproporciona fuera palabra clave para pasar argumentos como fuera de tipo. Es como tipo de referencia, excepto que no requiere que la variable se inicialice antes de pasar. Debemos usar fuera palabra clave para pasar el argumento como fuera de tipo. Es útil cuando queremos que una función devuelva varios valores.

Ejemplo:

usando el espacio de nombres del sistema OutParameter {class Edureka {public void Show (out int val) {int square = 5 val = square val * = val} static void Main (string [] args) {int val = 50 programa Edureka = new Edureka () Console.WriteLine ('Valor antes de pasar la variable' + val) program.Show (out val) Console.WriteLine ('Valor después de recibir la variable de salida' + val)}}}

//Salida:

Valor antes de pasar la variable 50

Valordespués de recibir la variable de salida 25

Ahora pasemos a la programación orientada a objetos

Programación orientada a objetos

Programación orientada a objetos Sistemaes un paradigma de programación basado en el concepto de objetos que contienen miembros de datos y métodos relacionado con ellos. El propósito principal de la programación orientada a objetos es aumentar la flexibilidad y la capacidad de mantenimiento de los programas.

Características de la programación orientada a objetos:

  • Hace más hincapié en los datos que en el procedimiento.
  • Los programas están divididos en objetos, lo que facilita el trabajo.
  • Las estructuras de datos están diseñadas de tal manera que caracterizan los objetos.
  • Funciones que funcionan enlos datos de un objeto se colocan juntos en la estructura de datos.
  • Los datos están ocultos y funciones externas no pueden acceder a ellos sin permiso.
  • La comunicación entre objetos puede tener lugar con la ayuda de funciones.
  • Agregar nuevos datos y funciones se ha vuelto fácil.
  • Sigue el enfoque de abajo hacia arriba en el diseño de programas.

Los paradigmas orientados a objetos en C # son los siguientes

Enumeración en C #

Enum o también llamado como enumeración en C # se usa para almacenar valores constantes sin tener que alterarlos durante toda la ejecución de un programa C #. Esose utiliza para almacenar un conjunto de constantes nombradas como temporada, días, mes, tamaño, etc.

Ejemplo:

using System public class EnumExample {public enum week {lunes, martes, miércoles, jueves, viernes, sábado, domingo} public static void Main () {int x = (int) week.Monday int y = (int) week.Friday Consola .WriteLine ('Lunes = {0}', x) Console.WriteLine ('Viernes = {0}', y)}}

//Salida:

Lunes = 0
Viernes = 4

Enfoque de programación orientada a objetos

El estilo de programación orientado a objetos se puede lograr siguiendo los métodos que se describen a continuación.

Encapsulamiento

Encapsulamiento es un método para combinar el métodos junto con su miembros de datos.

Ejemplo:

usando el espacio de nombres del sistema Edureka {class Rectangle {public double length public double width public double GetArea () {return length * width} public void Display () {Console.WriteLine ('Length: {0}', length) Console.WriteLine (' Width: {0} ', width) Console.WriteLine (' Area: {0} ', GetArea ())}} class ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.width = 35 r.Display () Console.ReadLine ()}}}

//Salida:

Longitud: 50
Ancho: 35
Superficie: 1750

Abstracción

Abstracción es un método para esconder la parte de codificación compleja del usuario al proporcionarle solo la información requerida que necesita.

Ejemplo:

usando el sistema public abstract class Shape {public abstract void draw ()} public class Rectangle: Shape {public override void draw () {Console.WriteLine ('dibujando rectángulo ...')}} public class Circle: Shape {public override void draw () {Console.WriteLine ('dibujando círculo ...')}} public class TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

//Salida:

dibujo rectángulo ...
dibujo círculo ...

Interfaz

los interfaz es completamente similar a la abstracción. La funcionalidad de una interfaz es ocultar los datos sin importancia del usuario y proporcionarle los únicos datos importantes que necesita.

Ejemplo:

usando la interfaz pública del sistema Drawable {void draw ()} public class Rectangle: Drawable {public void draw () {Console.WriteLine ('dibujando rectángulo ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('dibujando círculo ...')}} public class TestInterface {public static void Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}

//Salida:

dibujo rectángulo ...
dibujo círculo ...

Polimorfismo

Polimorfismoes la combinación de 'escuela politécnica' + 'Morfos' lo que significa muchas formas. Es una palabra griega. Significa que el segmento de código puede tomar varias formas. Tenemos dos tipos de polimorfismo.

  • Compilar polimorfismo de tiempo
  • Polimorfismo en tiempo de ejecución

Ejemplo:

usando System public class Animal {public string color = 'white'} public class Dog: Animal {public string color = 'black'} public class TestSealed {public static void Main () {Animal d = new Dog () Console.WriteLine ( d.color)}}

//Salida:

blanco

Herencia

Herencia es un proceso en el que un objeto adquiere todas las propiedades y comportamientos de su objeto padre automáticamente. Puede reutilizar, ampliar o modificar los atributos y comportamientos que se definen en otra clase. la clase que hereda los miembros de otra clase se llama clase derivada y la clase cuyos miembros se heredan se llama base clase. La clase derivada es la clase especializada para la clase base.

Ejemplo de herencia de un solo nivel

usando el espacio de nombres del sistema RectangleApplication {class Rectangle {protegido doble largo protegido doble ancho público Rectángulo (doble l, doble w) {largo = l ancho = w} público doble GetArea () {retorno largo * ancho} public void Display () {Consola. WriteLine ('Length: {0}', length) Console.WriteLine ('Width: {0}', width) Console.WriteLine ('Area: {0}', GetArea ())}} class Tabletop: Rectangle {private Tablero público de doble costo (doble l, doble w): base (l, w) {} public double GetCost () {double cost cost = GetArea () * 70 return cost} public void Display () {base.Display () Console .WriteLine ('Costo: {0}', GetCost ())}} class ExecuteRectangle {static void Main (string [] args) {Tabletop t = new Tabletop (4.5, 7.5) t.Display () Console.ReadLine () }}}

//Salida:

Longitud: 4.5
Ancho: 7.5
Superficie: 33,75
Coste: 2362,5

Ejemplo de herencia multinivel

usando el espacio de nombres del sistema InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} protected int width protected int height} public interface PaintCost {int getCost (int area)} class Rectangle: Shape, PaintCost {public int getArea () {return (ancho * alto)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = new Rectangle () int area Rect.setWidth (5) Rect.setHeight (7) area = Rect.getArea () Console.WriteLine ('Total area: {0}', Rect.getArea ()) Console.WriteLine ('Total costo de pintura: $ {0} ', Rect.getCost (área)) Console.ReadKey ()}}}

//Salida:

Superficie total: 35
Costo total de pintura: $ 2450

Sobrecarga

La sobrecarga es una situación en la que tenemos dos o miembros declarados con el mismo nombre. La sobrecarga también es posible cuando declaramos dos o más métodos con el mismo nombre. Veamos ejemplos de ambos.

Sobrecarga de miembros

Ejemplo:

usando el sistema public class Edureka {public static int add (int a, int b) {return a + b} public static int add (int a, int b, int c) {return a + b + c}} public class TestMemberOverloading { public static void Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}

//Salida:

35
60

Sobrecarga de métodos

Ejemplo:

usando System public class Edureka {public static int add (int a, int b) {return a + b} public static float add (float a, float b) {return a + b}} public class TestMemberOverloading {public static void Main ( ) {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12.4f, 21.3f))}}

//Salida:

35
33.699997

Primordial

La anulación es una situación en la que la clase secundaria define el mismo método que el padre también define. Entendamos esto con un pequeño ejemplo.

Ejemplo:

usando System public class Edureka {public virtual void eat () {Console.WriteLine ('Eating')}} public class Dog: Edureka {public override void eat () {Console.WriteLine ('Eating food')}} public class Overriding {public static void Main () {Dog d = new Dog () d.eat ()}}

//Salida:

Comiendo comida

Espacio de nombres

los espacio de nombres se usa básicamente para manejar múltiples clases presentes en el programa. El espacio de nombres está disponible de diferentes formas.

  • Consola del sistema: Aquí el Sistema se convierte en el espacio de nombres
  • Para acceder a la clase de un espacio de nombres, necesitamos usar namespacename.classname.
  • Podemos usar el utilizando también palabra clave.

Ejemplo:

usando el sistema usando Primero usando el segundo espacio de nombres Primero {public class Edureka {public void sayWelcome () {Console.WriteLine ('Bienvenido a Edureka')}}} espacio de nombres Segundo {public class Happy_Learning {public void sayWishes () {Console.WriteLine (' Happy Learning ')}}} espacio de nombres de clase pública {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

//Salida:

Bienvenidos a Edureka
Feliz aprendizaje

Operaciones de archivo

los operaciones de archivo disponibles en C # son los siguientes:

Operación Descripción
BinaryReader Lee datos primitivos de un flujo binario.
Escritor binario Escribe datos primitivos en formato binario.
BufferedStream Almacenamiento temporal para un flujo de bytes.
Directorio Ayuda a manipular la estructura de un directorio.
DirectoryInfo Se utiliza para realizar operaciones en directorios.
DriveInfo Proporciona información para las unidades.
Archivo Ayuda a manipular archivos.
Información del archivo Se utiliza para realizar operaciones en archivos.
FileStream Se utiliza para leer y escribir en cualquier ubicación de un archivo.
MemoryStream Se utiliza para el acceso aleatorio a los datos transmitidos almacenados en la memoria.
Camino Realiza operaciones sobre la información de la ruta.
StreamReader Se utiliza para leer caracteres de un flujo de bytes.
StreamWriter Se utiliza para escribir caracteres en una secuencia.
StringReader Se utiliza para leer desde un búfer de cadena.
StringWriter Se utiliza para escribir en un búfer de cadena.

FileMode

los FileMode es un enumerador que define múltiples métodos de apertura de archivos. Los miembros del FileMode Enumerator se describen a continuación:

  • Adjuntar: Abre un archivo existente y coloca el cursor al final del archivo, o crea el archivo si el archivo no existe.
  • Crear: Está diseñado para crear un nuevo archivo.
  • Crear nuevo: Está diseñado para especificar al sistema operativo que debe crear un nuevo archivo.
  • Abierto: Está diseñado para abrir un archivo existente.
  • OpenOrCreate: Está diseñado para especificar el sistema operativo que debería abrir un archivo si existe, de lo contrario debería crear un nuevo archivo.
  • Truncar: Truncar abre un archivo existente y trunca su tamaño a cero bytes.

FileAccess

FileAccess El enumerador se usa para obtener acceso a un archivo en particular. Tiene los siguientes miembros.

  • Leer
  • Escribir
  • Leer escribir

Recurso compartido de archivos

los Recurso compartido de archivos Enumerator se usa para compartir un archivo en particular. Tiene los siguientes miembros.

  • Heredable: Heredable permite que un identificador de archivo pase una herencia a los procesos secundarios.
  • Ninguna: Ninguno rechaza compartir el archivo actual
  • Leer: Leer permite abrir el archivo para su lectura.
  • Leer escribir: ReadWrite permite abrir el archivo para leer y escribir.
  • Escribir: Escribir permite abrir el archivo para escribir.

Eventos

Un evento generalmente se conoce como una acción generada por el usuario. Puede ser un clic del mouse e incluso una sola pulsación de tecla del teclado. Del mismo modo, los programas de C # también tienen eventos. El generador del evento se llama editor y el receptor del evento se llama abonado.

Editor

A editor contiene la definición del evento y el delegado. los delegado de evento La asociación se define en este objeto. UN editor El objeto de clase invoca el evento y se notifica a otros objetos.

Abonado

A abonado acepta el evento y proporciona un controlador de eventos. los delegar en la clase de editor invoca el método / evento manipulador de la clase de abonado.

Ejemplo:

usando el espacio de nombres del sistema Edureka {público delegado cadena Del (cadena str) clase EventBlock {evento Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} public string WelcomeUser (string username) {return 'Bienvenido a Edureka . '+ username} static void Main (string [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}

//Salida:

Bienvenido a Edureka. Feliz aprendizaje

Genéricos

Genéricos es un concepto de proporcionar a los miembros y métodos de una clase marcadores de posición en Tiempo de ejecución. Podemos definir Genéricos usando soportes. Veamos los siguientes ejemplos.

Genéricos en una clase

usando el espacio de nombres del sistema Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ('Este mensaje es de una clase genérica' ) GenericClass genI = new GenericClass (123) GenericClass getCh = new GenericClass ('E')}}}

//Salida:

Este mensaje es de clase genérica
123
ES

Genéricos en un método

usando el espacio de nombres del sistema Edureka {class GenericClass {public void Show (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass genC = new GenericClass () genC.Show ('This el mensaje es del método genérico ') genC.Show (321) genC.Show (' H ')}}}

//Salida:

Este mensaje es del método genérico
321
H

Delegados

los Delegar actúa como referencia al método. Básicamente es lo mismo que puntero de función en C y C ++ pero mucho mejor y con seguridad de tipos. El Delegado en método estático encapsula el método solamente. Mientras que el delegado en el ejemplo El método encapsula tanto el método como la instancia. El mejor uso de delegado es utilizarlo como evento.

Ejemplo:

usando System delegate int Calculator (int n) public class Edureka {static int number = 25 public static int add (int n) {number = number + n return number} public static int mul (int n) {number = number * n return number} public static int getNumber () {return number} public static void Main (string [] args) {Calculator c1 = new Calculator (add) Calculator c2 = new Calculator (mul) c1 (20) Console.WriteLine ('Después de la calculadora un delegado, el nuevo número es: '+ getNumber ()) c2 (3) Console.WriteLine (' Después de la calculadora dos delegados, el nuevo número es: '+ getNumber ())}}

//Salida:

Después de la calculadora un delegado, el nuevo número es: 45
Después de la calculadora dos delegados, el nuevo número es: 135

Reflexión

Se requiere Reflection para obtener los metadatos en tiempo de ejecución. La referencia está disponible en Sistema.Reflexión espacio de nombres. Requiere las siguientes clases para ejecutarse.

  • Tipo
  • MemberInfo
  • ConstructorInfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • Módulo
  • Montaje
  • AssemblyName
  • Puntero

Clase de tipo

La clase de tipo C # representa declaraciones de tipo para tipos de clase, tipos de interfaz, tipos de enumeración, tipos de matriz, tipos de valor

Propiedades de tipo

A continuación se menciona una lista de propiedades importantes de las clases de tipo.

Propiedad Descripción
Montaje Obtiene el ensamblado para este tipo.
AssemblyQualifiedName Obtiene el nombre calificado de ensamblado para este tipo.
Atributos Obtiene los atributos asociados con el tipo.
Tipo de base Obtiene el tipo base o principal.
Nombre completo Obtiene el nombre completo del tipo.
IsAbstract se utiliza para comprobar si el tipo es abstracto.
IsArray se utiliza para comprobar si el tipo es Array.
IsClass se utiliza para comprobar si el tipo es Class.
IsEnum se utiliza para comprobar si el tipo es Enum.
IsInterface se utiliza para comprobar si el tipo es Interfaz.
Está anidado se utiliza para comprobar si el tipo es anidado.
Es primitivo se utiliza para comprobar si el tipo es Primitivo.
IsPointer se utiliza para comprobar si el tipo es Pointer.
IsNotPublic se utiliza para comprobar si el tipo no es Público.
IsPublic se utiliza para comprobar si el tipo es Público.
Está sellado se utiliza para comprobar si el tipo está sellado.
IsSerializable se utiliza para comprobar si el tipo es serializable.
MemberType se utiliza para comprobar si el tipo es Tipo de miembro de tipo Anidado.
Módulo Obtiene el módulo del tipo.
Nombre Obtiene el nombre del tipo.
Espacio de nombres Obtiene el espacio de nombres del tipo.
Propiedad Descripción
GetConstructors () Devuelve todos los constructores públicos del tipo.
GetConstructors (BindingFlags) Devuelve todos los constructores del tipo con BindingFlags especificado.
GetFields () Devuelve todos los campos públicos para el Tipo.
GetFields (BindingFlags) Devuelve todos los constructores públicos para el tipo con BindingFlags especificado.
GetMembers () Devuelve todos los miembros públicos del tipo.
GetMembers (BindingFlags) Devuelve todos los miembros del tipo con BindingFlags especificado.
GetMethods () Devuelve todos los métodos públicos para el tipo.
GetMethods (BindingFlags) Devuelve todos los métodos para el tipo con BindingFlags especificado.
GetProperties () Devuelve todas las propiedades públicas del tipo.
GetProperties (BindingFlags) Devuelve todas las propiedades del tipo con BindingFlags especificadas.
GetType () Obtiene el tipo actual.
GetType (cadena) Obtiene el tipo del nombre de pila.

Ejemplos de reflexión:

Obtener tipo

Ejemplo:

usando System public class GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

//Salida:

System.Int32

Obtener montaje

Ejemplo:

usando System usando System.Reflection public class GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

//Salida:

System.Private.CoreLib, Versión = 4.0.0.0, Cultura = neutral, PublicKeyToken = 7cec85d7bea7798e

Información del tipo de impresión

Ejemplo:

usando System usando System.Reflection public class PrintType {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.FullName) Console.WriteLine (t.BaseType) Console.WriteLine (t.IsClass) Console.WriteLine (t.IsEnum) Console.WriteLine (t.IsInterface)}}

//Salida:

Cierto
Falso
Falso

Constructores de impresión

Ejemplo:

using System usando System.Reflection public class PrintConstructors {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Constructores de {0} type ...', t) ConstructorInfo [] ci = t .GetConstructors (BindingFlags.Public | BindingFlags.Instance) foreach (ConstructorInfo c en ci) {Console.WriteLine (c)}}}

//Salida:

Constructores de System.String tipo ...
.Ctor vacío (Char [])
.Ctor vacío (Char [], Int32, Int32)
.Ctor vacío (Char *)
.Ctor vacío (Char *, Int32, Int32)
.Ctor vacío (SByte *)
.Ctor vacío (SByte *, Int32, Int32)
Void .ctor (SByte *, Int32, Int32, System.Text.Encoding)
.Ctor vacío (Char, Int32)
.Ctor vacío (System.ReadOnlySpan`1 [System.Char])

Métodos de impresión

Ejemplo:

using System using System.Reflection public class PrintMethods {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Methods of {0} type ...', t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m en ci) {Console.WriteLine (m)}}}

//Salida:

Métodos de System.String tipo ...
Reemplazo de System.String (System.String, System.String)
System.String [] Split (Char, System.StringSplitOptions)
System.String [] Split (Char, Int32, System.StringSplitOptions)
System.String [] Split (Char [])
System.String [] Split (Char [], Int32)
System.String [] Split (Char [], System.StringSplitOptions)
System.String [] Split (Char [], Int32, System.StringSplitOptions)
System.String [] Split (System.String, System.StringSplitOptions)
System.String [] Split (System.String, Int32, System.StringSplitOptions)
System.String [] Split (System.String [], System.StringSplitOptions)
System.String [] Split (System.String [], Int32, System.StringSplitOptions) ......

Campos de impresión

Ejemplo:

using System using System.Reflection public class PrintFields {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Campos de {0} tipo ...', t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (FieldInfo f en ci) {Console.WriteLine (f)}}}

//Salida:

Campos de System.String tipo ...
System.String Empty

Ahora, pasemos a algunos conceptos avanzados de programación en C #

Conceptos avanzados de C #

Función anónima

La función que carece de un nombre específico se llama Anónimo Funciones. Hay dos tipos de funciones anónimas disponibles en C #

  • Expresiones lambda
  • Métodos anónimos

Ejemplo:

usando el espacio de nombres del sistema LambdaExpressions {class Edureka {delegate int Square (int num) static void Main (string [] args) {Square GetSquare = x => x * x int j = GetSquare (25) Console.WriteLine ('Square:' + j)}}}

//Salida:

Cuadrado: 625

Métodos anónimos

los método anónimo proporciona la misma funcionalidad que un expresión lambda, excepto que nos permite ignorar la lista de parámetros.

Ejemplo:

usando el espacio de nombres del sistema AnonymousMethods {class Program {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('Esta es una función anónima')} fun ()}}}

//Salida:

Esta es una función anónima

Multi-hilo

El subproceso múltiple es un proceso en el que se crean y asignan varios subprocesos para diferentes tareas. esto ahorra tiempo al ejecutar varios trabajos a la vez. La clase de subprocesos múltiples está disponible en Sistema.Threading espacio de nombres.

Espacio de nombres System.Threading

los Sistema.Threading el espacio de nombres contiene clases e interfaces para facilitar el multiproceso. Proporciona clases para sincronizar el recurso del hilo. A continuación, se proporciona una lista de clases de uso común:

  • Hilo
  • Mutex
  • Temporizador
  • Monitor
  • Semáforo
  • ThreadLocal
  • ThreadPool
  • Volátil

Proceso e hilo

El proceso es en realidad y solicitud y se considera un de peso pesado componente. Por otro lado, el hilo es un solo módulo de toda la aplicación. Es ligero comparado con el proceso

El ciclo de vida de un hilo

Cada hilo tiene un ciclo de vida. El ciclo de vida del hilo se define en la clase System.Threading.Thread. Las siguientes son las etapas del ciclo de vida de cualquier hilo.

  • Sin iniciar
  • Ejecutable (listo para funcionar)
  • Corriendo
  • No ejecutable
  • Muerto

La clase Thread proporciona las siguientes propiedades y métodos de la siguiente manera.

Propiedades del hilo

Propiedad Descripción
CurrentThread devuelve la instancia del hilo que se está ejecutando actualmente.
IsAlive comprueba si el hilo actual está vivo o no.
IsBackground Obtener / establecer el valor del hilo actual está en segundo plano o no.
ManagedThreadId se usa para obtener la identificación única del hilo administrado actualmente.
Nombre se utiliza para obtener o establecer el nombre del hilo actual.
Prioridad se utiliza para obtener o establecer la prioridad del hilo actual.
ThreadState se utiliza para devolver un valor que representa el estado del hilo.

Métodos de hilo

Método Descripción
Aborto() se utiliza para terminar el hilo. Genera ThreadAbortException.
Interrumpir() se usa para interrumpir un hilo que está en estado WaitSleepJoin.
Unirse() se utiliza para bloquear todos los hilos de llamada hasta que este hilo termine.
ResetAbort () se usa para cancelar la solicitud Abort para el hilo actual.
Currículum() se utiliza para reanudar el hilo suspendido. Es obsoleto.
Dormir (Int32) se usa para suspender el hilo actual durante los milisegundos especificados.
Comienzo() cambia el estado actual del hilo a Runnable.
Suspender() suspende el hilo actual si no está suspendido. Es obsoleto.
Rendimiento() se utiliza para ceder la ejecución del hilo actual a otro hilo.

Ejemplo de hilo principal

usando System usando System.Threading public class Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

//Salida:

Hilo principal

Manejo de excepciones

los excepción es un error arrojado por el programa en su tiempo de ejecución. Realizamos el manejo de excepciones para que nuestro programa sea gratuito.

Excepción Descripción
System.DivideByZeroException Error generado al dividir un número por cero.
System.NullReferenceException maneja el error generado al hacer referencia al objeto nulo.
System.InvalidCastException maneja el error generado por encasillamiento no válido.
System.IO.IOException maneja los errores de entrada / salida.
System.FieldAccessException Error generado por acceso privado / protegido inválido.

En C #, usamos 4 palabras clave para realizar manejo de excepciones:

  • tratar
  • captura
  • finalmente, y
  • lanzar
Ejemplo:
usando la clase pública del sistema EdurekExample {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} Console.WriteLine ('Este mensaje es del bloque catch')}}

//Salida:

System.DivideByZeroException: se intentó dividir por cero.
en ExExaEdurekample.Main (String [] args) en F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: línea 10
Este mensaje es del bloque catch

Ejemplo de excepción personalizado

usando System public class InvalidAgeException: Exception {public InvalidAgeException (String mensaje): base (mensaje) {}} public class Customized {static void validate (int age) {if (age<18) { throw new InvalidAgeException('Sorry, Age is expected to be greater than 18') } } public static void Main(string[] args) { try { validate(12) } catch (InvalidAgeException e) { Console.WriteLine(e) } Console.WriteLine('Catch block is being executed now.') } } 

//Salida:

InvalidAgeException: lo sentimos, se espera que la edad sea mayor de 18
en Customized.validate (Int32 age) en F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: línea 18
en Customized.Main (String [] args) en F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: línea 23
El bloque de captura se está ejecutando ahora.

Ejemplo de bloque finalmente

usando System public class FinalExecption {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} finalmente {Console .WriteLine ('Finalmente se ejecuta el bloque')} Console.WriteLine ('Se ejecuta el bloque de captura')}}

//Salida:

System.DivideByZeroException: se intentó dividir por cero.
en FinalExecption.Main (String [] args) en F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: línea 10
Finalmente se ejecuta el bloque
Se ejecuta el bloque de captura

Firma de excepción del sistema

[SerializableAttribute] [ComVisibleAttribute (true)] clase pública SystemException: Exception

Constructores de excepciones del sistema

Constructor Descripción
SystemException () Se utiliza para inicializar una nueva instancia de la clase SystemException.
SystemException

(SerializationInfo, StreamingContext)

Se utiliza para inicializar una nueva instancia de la clase SystemException con datos serializados.
SystemException (cadena) Se utiliza para inicializar una nueva instancia de la clase SystemException con un mensaje de error especificado.
SystemException (cadena, excepción) Se utiliza para inicializar una nueva instancia de la clase SystemException con un mensaje de error especificado y una referencia a la excepción interna que es la causa de esta excepción.

Propiedades de excepción del sistema

Propiedad Descripción
Datos Se utiliza para obtener una colección de pares clave / valor que proporcionan información adicional definida por el usuario sobre la excepción.
HelpLink Se utiliza para obtener o establecer un enlace al archivo de ayuda asociado con esta excepción.
HResultado Se utiliza para obtener o establecer HRESULT, un valor numérico codificado que se asigna a una excepción específica.
InnerException Se utiliza para obtener la instancia de excepción que provocó la excepción actual.
Mensaje Se utiliza para obtener un mensaje que describe la excepción actual.
Fuente Se utiliza para obtener o establecer el nombre de la aplicación que causa el error.
StackTrace Se utiliza para obtener una representación de cadena de los fotogramas inmediatos en la pila de llamadas.
Sitio de destino Se usa para obtener el método que lanza la excepción actual.

Métodos de excepción del sistema

Métodos Descripción
Es igual a (objeto) Se utiliza para comprobar que el objeto especificado es igual al objeto actual o no.
Finalizar() Se utiliza para liberar recursos y realizar operaciones de limpieza.
GetBaseException () Se utiliza para obtener una excepción de root.
GetHashCode () Se usa para obtener el código hash.
GetObjectData

(SerializationInfo, StreamingContext)

Se utiliza para obtener datos de objetos.
GetType () Se utiliza para obtener el tipo de tiempo de ejecución de la instancia actual.
MemberwiseClone () Se utiliza para crear una copia superficial del objeto actual.
Encadenar() Se utiliza para crear y devolver una representación de cadena de la excepción actual.

Ejemplo de excepción del sistema

usando el espacio de nombres del sistema CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

//Salida:

System.IndexOutOfRangeException: el índice estaba fuera de los límites de la matriz.
en CSharpProgram.SystemExceptionExample.Main (String [] args) in F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: línea 11

Sincronización

La sincronización puede ser una técnica que permite que solo 1 subproceso acceda al recurso durante un tiempo específico. Ningún subproceso alternativo se interrumpirá hasta que el subproceso designado finalice su tarea.

En el programa de subprocesos múltiples, se permiten subprocesospara acceder a cualquier recurso para elejecución especificadahora. Los subprocesos comparten recursos y se ejecutan de forma asincrónica. Acceder a recursos compartidos (datos)puede ser una tarea importanteque generalmentepodría detenerel sistema.tenemos una tendencia a influir en ellocreando hilos de manera síncrona.

Ejemplo sin sincronización

usando System usando System.Threading class Edureka {public void PrintTable () {for (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } } 

//Salida:

1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10

Ejemplo con sincronización

usando System usando System.Threading class Edureka {public void PrintTable () {lock (this) {for (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } } 

//Salida:

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10

Nuevas características

Microsoft ha agregado muchas características más recientes al lenguaje C #, algunas de ellas se mencionan a continuación.

C# 6.0

  • Usando directiva estática
  • Filtros de excepción
  • Espera en bloques de captura / finalmente
  • Inicializadores de propiedades automáticas
  • Valores predeterminados para propiedades de solo captador
  • Miembros con cuerpo de expresión
  • Propagador nulo
  • Interpolación de cadenas
  • Nombre del operador
  • Inicializador de diccionario
  • Compilador como servicio (Roslyn)

C# 7.0

  • La coincidencia de patrones
  • Tuplas
  • Deconstrucción
  • Funciones locales
  • Separador de dígitos
  • Literales binarios
  • Ref devoluciones y locales
  • Constructores y finalizadores con cuerpo de expresión
  • Getters y setters con cuerpo de expresión
  • Variables de salida
  • Tipos de retorno asíncronos generalizados

C# 7.1

  • Async principal
  • Expresiones predeterminadas

Preguntas de la entrevista basadas en C #

Las preguntas importantes de la entrevista basadas en el lenguaje de programación C # se pueden encontrar en este .

Con esto, llegamos al final de este artículo “Tutorial de C #”. Espero que haya entendido la importancia de las estructuras de datos, la sintaxis, la funcionalidad y las operaciones que se realizan con ellas. Ahora que ha entendido los conceptos básicos de la programación en C # a través de esteC# Tutorial, revisar la entrenamiento incluido por Edureka en muchas tecnologías como Java, Primavera Y muchosmás, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo obtuvo una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog “Tutorial de C #” y nos comunicaremos con usted lo antes posible.