Herramientas de usuario

Herramientas del sitio


highlevel:csharp

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
highlevel:csharp [2008/12/27 11:27]
alfred
highlevel:csharp [2020/05/09 09:25] (actual)
Línea 27: Línea 27:
 VariableChar = (char)VariableInt;​ VariableChar = (char)VariableInt;​
 </​code>​ </​code>​
 +
 +
 ==== Trabajar con strings ==== ==== Trabajar con strings ====
 Si en medio de una cadena ponemos estos carácteres de escape.... Si en medio de una cadena ponemos estos carácteres de escape....
Línea 55: Línea 57:
 string b = System.String.Format("​La variable a, es: {0}", a.ToString());​ string b = System.String.Format("​La variable a, es: {0}", a.ToString());​
 </​code>​ </​code>​
 +
 +Otros Métodos:
 +  * ''​Replace''​ Éste método recibe como parámetros dos strings, y devuelve uno. Lo que hace es coger el string con el que se ha llamado este método y se le pasa una cadena que es la que sustituirá por la segunda en todo el string y el nuevo estring ya sustituido es el que devuelve.
 +  * ''​Split''​ Se le pasa un char o un vector de chars (por lo tanto irá entre comillas simples, no dobles), ​ y devuelve un vector de strings. Lo que hace es coger el string donde se ha invocado a este método y corta (hacia la derecha) y el resultado lo guarda en un array de strings que será lo que devuelva.
 +
 +
  
  
Línea 279: Línea 287:
  
 Puede ocurrir que la base clase tenga un método que nosotros queramos implementar,​ pero sta no esté implementada como virtual, para sustituir ese método por el nuevo sólo deberemos incluir el modificador new en la declaración de la función de la clase derivada: ''​new public void Print() { ... }''​ Puede ocurrir que la base clase tenga un método que nosotros queramos implementar,​ pero sta no esté implementada como virtual, para sustituir ese método por el nuevo sólo deberemos incluir el modificador new en la declaración de la función de la clase derivada: ''​new public void Print() { ... }''​
 +
  
 ==== Ámbito de una variable según su declaración ==== ==== Ámbito de una variable según su declaración ====
Línea 285: Línea 294:
   * **protected**:​ Visibles en la clase donde se definen y en las derivadas.   * **protected**:​ Visibles en la clase donde se definen y en las derivadas.
   * **internal**:​ Sólo visibles dentro del archivo binario (compilado) donde se han declarado.   * **internal**:​ Sólo visibles dentro del archivo binario (compilado) donde se han declarado.
-  * **protected internal**: +  * **protected internal**: Una clase pública podrá verse desde otro archivo, si no lo es no.
-Una clase pública podrá verse desde otro archivo, si no lo es no.+
  
 ==== Object en .NET ==== ==== Object en .NET ====
Línea 339: Línea 347:
 throw new ApplicationException();​ throw new ApplicationException();​
 </​code>​ </​code>​
 +
 +
 +
  
 ==== Espacios de nombre (namespaces) ==== ==== Espacios de nombre (namespaces) ====
Línea 362: Línea 373:
 } }
 </​code>​ </​code>​
 +=== Otros usos de using ===
 +Podemos declarar un termino que englobe namespaces:
 +<code csharp>
 +using Terminal = System.Console;​
 +...
 +Terminal.WriteLine("​Hola!"​);​
 +</​code>​
 +=== using como instrucción ===
 +Podemos usar el comando using para crear una variable por un corto perido de tiempo. Cuando hacemos:
 +<code csharp>
 +using (Form frm = new Form()) {
 +...
 +}
 +</​code>​
 +Dentro podemos usar frm como una variable normal. Al salir de este se le llamará al método ''​IDisposable''​.
  
 ==== Enumeraciones ==== ==== Enumeraciones ====
Línea 408: Línea 434:
 } }
 </​code>​ </​code>​
 +
  
  
Línea 440: Línea 467:
 Para crear una propiedad debemos definir si aceptará get o set: ''​int r { get; set; }''​ \\  Para crear una propiedad debemos definir si aceptará get o set: ''​int r { get; set; }''​ \\ 
 Una interface puede heredar de varias interfaces. Una interface puede heredar de varias interfaces.
 +==== Dispose y Destructores ====
 +
 +=== Interfaz IDispose ===
 +Al crear una clase que implemente esta interfaz se le añadirá el método "​Dispose",​ éste método es llamado cuando el recolector de basura elimina el objeto y, por lo tanto, este método debería de eliminar de memoria otros objetos que este contenga.
 +
 +=== Método Dispose ===
 +Un método Dispose ha de eliminar todos los objetos que tiene, llamando así, a su vez a sus métodos Dispose. Es importante que un método Dispose pueda ser llamado varias veces sin que provoque ningua excepción. Al llevar un parámetro bool, éste nos sirve para indicar si ha sido llamado por el sistema o por nosotros.
 +
 +=== Destructores ===
 +En .NET si quisiesemos que el recolector de basura hiciese algo justo al eliminar un objeto, deberíamos sobreescribir en este el método Finalize, excepto en C#  que tiene su propia sintaxis de destructor. El uso indebido de estos destructores puede ser perjudicial para el programa, ya que el recolector de basura va sondeando los objetos para eliminarlos y si cuando se van a eliminar aun no se ha lanzado el método finalize lo pone en una cola de objetos que lo han de llamar, por lo que el objeto estaría más tiempo rondando en memoria. \\ 
 +El método Finalize debería ser protected, no deberíamos de dar acceso a él a código de fuera de la clase donde esté, y debería usarse como última instancia, ya que es preferible. \\ 
 +En C# no podemos llamar a Finalize, pero sí crear un destructor así:
 +<code csharp>
 +~nombreClase { ... }
 +</​code>​
  
 ===== Conceptos del lenguaje ===== ===== Conceptos del lenguaje =====
Línea 483: Línea 525:
 ==== Operador as ==== ==== Operador as ====
 Es un molde para la conversión de tipos, pero si existe un error en la conversión,​ proporciona el valor null en vez de producir una excepción. Más formalmente,​ una expresión de la forma: ''​expression as type'',​ que equivale a: ''​expression is type ? (type)expression : (type)null''​ Es un molde para la conversión de tipos, pero si existe un error en la conversión,​ proporciona el valor null en vez de producir una excepción. Más formalmente,​ una expresión de la forma: ''​expression as type'',​ que equivale a: ''​expression is type ? (type)expression : (type)null''​
 +
  
  
Línea 527: Línea 570:
 El c: Hola C. Adios C. El c: Hola C. Adios C.
 El d: Adios D. El d: Adios D.
-<//code>+</​code>​ 
  
 ==== Añadir un nuevo evento a una clase ==== ==== Añadir un nuevo evento a una clase ====
Línea 538: Línea 582:
  public void Ejecuta() {  public void Ejecuta() {
  for (int i = 0; i <= 100; i++) {  for (int i = 0; i <= 100; i++) {
- DarNumero(this,​ i);+ if (DarNumero != null) 
 + DarNumero(this,​ i);
  }  }
  }  }
highlevel/csharp.1230377274.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)