Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
highlevel:csharp:xtra [2008/12/28 10:27] alfred |
highlevel:csharp:xtra [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 229: | Línea 229: | ||
| ''.Extension'' nos dará la extensión del archivo. \\ | ''.Extension'' nos dará la extensión del archivo. \\ | ||
| Y ''Attributes'' sus atributos. \\ | Y ''Attributes'' sus atributos. \\ | ||
| + | |||
| + | |||
| ==== Flujos de datos ==== | ==== Flujos de datos ==== | ||
| Línea 311: | Línea 313: | ||
| } | } | ||
| </code> | </code> | ||
| + | |||
| + | |||
| + | |||
| + | |||
| ===== El framework de .NET ===== | ===== El framework de .NET ===== | ||
| Línea 545: | Línea 551: | ||
| } | } | ||
| </code> | </code> | ||
| + | |||
| + | |||
| ==== Threads ==== | ==== Threads ==== | ||
| Línea 595: | Línea 603: | ||
| } | } | ||
| } | } | ||
| + | </code> | ||
| + | Para hacer un ''lock'' en un método estático crearemos un objeto de la siguiente forma ''private static readonly object signalObject = null;'' y este será el que utilicemos. \\ | ||
| + | En las últimas versiones de C# podemos hacer: | ||
| + | <code csharp> | ||
| + | System.Threading.Thread thread1 = new System.Threading.Thread(delegate() | ||
| + | { | ||
| + | routes = AtmDataExpress.Route.getRoutesBySProvider(idOper); | ||
| + | }); | ||
| </code> | </code> | ||
| Línea 787: | Línea 803: | ||
| - | ==== Difencia entre new metodo y override método ==== | ||
| - | Cuando hacemos un override de un método lo sobreescribimos tanto en la clase base como en la actual, y por mucho que convirtamos el objeto en el que tenemos el override en un objeto del que hereda, el método al que se llama es al del override y para acceder al de la clase base lo podremos hacer desde esa clase indicando base.metodo, pero no desde fuera. Si en la clase base se llama al método virtual, el que tiene el override, desde un objeto heredado, se llamará al método sobreescrito. | + | |
| + | ==== Difencia entre new metodo y override método ==== | ||
| + | Cuando hacemos un override de un método lo sobreescribimos tanto en la clase base como en la actual, y por mucho que convirtamos el objeto en el que tenemos el override en un objeto del que hereda, el método al que se llama es al del override y para acceder al de la clase base lo podremos hacer desde esa clase indicando base.metodo, pero no desde fuera. Si en la clase base se llama al método virtual, el que tiene el override, desde un objeto heredado, se llamará al método sobreescrito. \\ \\ | ||
| Al sobreescribir con new únicamente lo hacemos en la clase heredada, luego, convirtiendo el objeto en un tipo de la clase de la que hereda podremos acceder al método de su clase base. | Al sobreescribir con new únicamente lo hacemos en la clase heredada, luego, convirtiendo el objeto en un tipo de la clase de la que hereda podremos acceder al método de su clase base. | ||
| + | ==== General ==== | ||
| + | * La diferencia entre el int.Parse (string) y el System.Convert.ToInt32(string) es que en el primero si el estring es nulo lanza una excepción, y el segundo devuelve 0. | ||
| ===== Trucos del Visual Studio ===== | ===== Trucos del Visual Studio ===== | ||
| Línea 797: | Línea 816: | ||
| * Desde el modo diseño, para pasar al código podemos hacer F7. | * Desde el modo diseño, para pasar al código podemos hacer F7. | ||
| - | ===== Tools & APIs ===== | + | |
| - | * Herramienta para la generación de código: ''ndoc''. | + | |
| - | * Librería para el uso de ficheros .ini: ''nini'' | + | |