Недавно я прочитал этот пост Фила Хаака (Наиболее полезные .NET-классы, разработчики классов склонны к повторному использованию, а не повторному использованию) с прошлого года, и подумал, что я увижу, есть ли у кого-нибудь дополнения к списку.
Большинство полезных разработчиков .NET-классов, как правило, изобретают, а не повторно используют
Ответ 1
Люди склонны использовать следующее, которое является уродливым и связано с отказом:
string path = basePath + "\\" + fileName;
Лучше и безопаснее:
string path = Path.Combine(basePath, fileName);
Также я видел, как люди пишут собственный метод для чтения всех байтов из файла. Это очень удобно:
byte[] fileData = File.ReadAllBytes(path); // use path from Path.Combine
Как отметил TheXenocide, то же самое относится к File.ReadAllText()
и File.ReadAllLines()
Ответ 2
String.IsNullOrEmpty()
Ответ 3
Path.GetFileNameWithoutExtension(string path)
Возвращает имя файла указанной строки пути без расширения.
Path.GetTempFileName()
Создает одноименный, нулевой байтовый временный файл на диске и возвращает полный путь к этому файлу.
Ответ 4
Класс System.Diagnostics.Stopwatch
.
Ответ 5
String.Format.
Сколько раз я видел
return "£" & iSomeValue
а не
return String.Format ("{0:c}", iSomeValue)
или люди, добавляющие процентные знаки - такие вещи.
Ответ 6
Enum.Parse()
Ответ 7
Попытка выяснить, где находятся Мои документы на компьютере пользователя. Просто используйте следующее:
string directory =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Ответ 8
Мне нужно было скачать некоторые файлы в последнее время в приложении Windows. Я нашел метод DownloadFile для объекта WebClient:
WebClient wc = new WebClient();
wc.DownloadFile(sourceURLAddress, destFileName);
Ответ 9
String.Join() (однако почти все знают о string.Split и, кажется, используют его каждый шанс, который они получают...)
Ответ 10
Жесткое кодирование a/в строку манипулирования каталогом по сравнению с использованием:
IO.Path.DirectorySeparatorChar
Ответ 11
Класс StringBuilder и особенно метод AppendFormat.
P.S.: Если вы ищете измерение производительности строковых операций: StringBuilder vs. String/Fast String Операции с .NET 2.0
Ответ 12
Environment.NewLine
Ответ 13
Вместо генерации имени файла с помощью Guid просто используйте:
Path.GetRandomFileName()
Ответ 14
Множество новых функций Linq кажется довольно неизвестным:
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
Все очень полезные функции, которые можно использовать вне синтаксиса Linq.
Ответ 15
- Использование атрибут DebuggerDisplay вместо ToString() для упрощения отладки.
- Enumerable.Range
- Tuples от FSharp.Core!
Ответ 16
System.Text.RegularExpressions.Regex
Ответ 17
input.StartsWith("stuff")
вместо Regex.IsMatch(input, @"^stuff")
Ответ 18
Ответ 19
Для всего, что скрывается в пространстве имен Microsoft.VisualBasic, TextFieldParser на самом деле является очень приятным парсером csv. Я вижу, что многие люди либо откатывают свои собственные (плохо), либо используют что-то вроде красивой библиотеки Fast CSV на Code Plex, даже не зная, что это уже запеченные в рамках.
Ответ 20
Файл.
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);
Ответ 21
System.IO.File.ReadAllText
против написания логики с использованием StreamReader для небольших файлов.
System.IO.File.WriteAllText
против написания логики с использованием StreamWriter для небольших файлов.
Ответ 22
Кажется, что многим нравится переходить через XML файл вручную, чтобы найти что-то, а не использовать XPathNaviagator.
Ответ 23
Большинство людей забывают, что Directory.CreateDirectory() изящно деградирует, если папка уже существует, и оберните ее бессмысленным вызовом if (! Directory.Exists(....)).
Ответ 24
myString.Equals(anotherString)
и варианты, включая специфические для культуры.
Я уверен, что по крайней мере 50% разработчиков пишут что-то вроде: if (s == "id" ) {...}
Ответ 25
Path.Append всегда забывается в том, что я видел.