.net - operativa - utilidad neta estado de resultados
La mayorÃa de los desarrolladores de clases de utilidad.NET tienden a reinventar en lugar de reutilizar (25)
Recientemente leí esta publicación de Phil Haack ( Los desarrolladores de clases de utilidades .NET más útiles tienden a reinventar en lugar de reutilizar ) del año pasado, y pensé que vería si alguien tiene alguna adición a la lista.
Environment.NewLine
A muchas personas les gusta avanzar manualmente por un archivo XML para encontrar algo en lugar de usar XPathNaviagator.
Archivar cosas
using System.IO;
File.Exists(FileNamePath)
Directory.Exists(strDirPath)
File.Move(currentLocation, newLocation);
File.Delete(fileToDelete);
Directory.CreateDirectory(directory)
System.IO.FileStream file = System.IO.File.Create(fullFilePath);
En lugar de generar un nombre de archivo con un Guid, simplemente use:
Path.GetRandomFileName()
Enum.Parse ()
Hard coding a / en una cadena de manipulación de directorio versus usar:
IO.Path.DirectorySeparatorChar
La clase StringBuilder y especialmente el Método AppendFormat .
PD: si está buscando la medición de rendimiento de operaciones de String: StringBuilder vs. String / Fast String Operations con .NET 2.0
La mayoría de las personas se olvidan de que Directory.CreateDirectory () se degrada graciosamente si la carpeta ya existe y la envuelve con una llamada inútil, if (! Directory.Exists (....)).
Necesitaba descargar algunos archivos recientemente en una aplicación de Windows. Encontré el método DownloadFile en el objeto WebClient:
WebClient wc = new WebClient();
wc.DownloadFile(sourceURLAddress, destFileName);
Path.Append siempre se olvida en cosas que he visto.
String.Format.
La cantidad de veces que he visto
return "£" & iSomeValue
más bien que
return String.Format ("{0:c}", iSomeValue)
o personas que añaden signos de porcentaje, cosas así.
String.Join () (sin embargo, casi todo el mundo sabe acerca de la cadena. Se dividen y parece usarlo cada vez que lo consiguen ...)
System.Text.RegularExpressions.Regex
Tratando de averiguar dónde viven mis documentos en la computadora de un usuario. Solo usa lo siguiente:
string directory =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Path.GetFileNameWithoutExtension(string path)
Devuelve el nombre de archivo de la cadena de ruta especificada sin la extensión.
Path.GetTempFileName()
Crea un archivo temporal de cero bytes con nombre exclusivo en el disco y devuelve la ruta completa de ese archivo.
- Utilizar el atributo DebuggerDisplay en lugar de ToString () para simplificar la depuración.
- Enumerable.Range
- Tuplas de FSharp.Core!
Muchas de las nuevas características de Linq parecen bastante desconocidas:
Any<T>() & All<T>()
if( myCollection.Any( x => x.IsSomething ) )
//...
bool allValid = myCollection.All(
x => x.IsValid );
ToList<T>(), ToArray<T>(), ToDictionary<T>()
var newDict = myCollection.ToDictionary(
x => x.Name,
x => x.Value );
First<T>(), FirstOrDefault<T>()
return dbAccessor.GetFromTable( id ).
FirstOrDefault();
Where<T>()
//instead of
foreach( Type item in myCollection )
if( item.IsValid )
//do stuff
//you can also do
foreach( var item in myCollection.Where( x => x.IsValid ) )
//do stuff
//note only a simple sample - the logic could be a lot more complex
Todas las pequeñas funciones realmente útiles que puede usar fuera de la sintaxis de Linq.
myString.Equals (anotherString)
y opciones que incluyen específicas de cultura.
Apuesto a que al menos el 50% de los desarrolladores escriben algo como: if (s == "id") {...}
La clase System.Diagnostics.Stopwatch
.
Por todo lo que está escondido bajo el espacio de nombres Microsoft.VisualBasic, TextFieldParser es en realidad un muy buen analizador csv. Veo a mucha gente hacer su propio (mal) o usar algo como la buena biblioteca de Fast CSV en Code Plex, sin saber que esto ya está incluido en el framework.
String.IsNullOrEmpty()
System.IO.File.ReadAllText
vs lógica de escritura utilizando un StreamReader para archivos pequeños.
System.IO.File.WriteAllText
versus lógica de escritura usando StreamWriter para archivos pequeños.
input.StartsWith("stuff")
lugar de Regex.IsMatch(input, @"^stuff")
Consulte las clases de biblioteca de clases base ocultas de .NET
La gente tiende a usar lo siguiente que es feo y está destinado a fallar:
string path = basePath + "//" + fileName;
Manera mejor y más segura:
string path = Path.Combine(basePath, fileName);
También he visto gente escribiendo un método personalizado para leer todos los bytes del archivo. Este es bastante útil:
byte[] fileData = File.ReadAllBytes(path); // use path from Path.Combine
Como señaló TheXenocide , lo mismo se aplica a File.ReadAllText()
y File.ReadAllLines()