如果您有三個關聯值,請將它們封裝在一個類型中。它不需要是一個特別複雜的類型,儘管我可能會使它不可變 - 只有三個從構造函數初始化的屬性。最棘手的位被命名它,因爲FileInfo
已經是System.IO
一部分......但是,假設你的FileData
的(蘇茨基)名定居:
public sealed class FileData
{
// Or use private readonly string variables and getter-only properties
public string FileName { get; private set; }
public string Path { get; private set; }
public string DirectoryName { get; private set; }
public FileData(string fileName, string path, string directoryName)
{
FileName = fileName;
Path = path;
DirectoryName = directoryName;
}
// Optional: override methods from System.Object.
// ToString might be really handy; Equals/GetHashCode less likely.
}
這會不會是相當有效率(在以下方面內存)作爲三個獨立的陣列,但這將是一個更加實際的使用,尤其是對於LINQ而言。花費時間,你從不處理單獨的數組優化比特真正重要。字符串佔用的內存很可能會使容器對象的開銷變得更小。
你可能使這個結構,而不是一個類,這將在某些方面稍微更有效率,而在其他方面效率稍低。除非我有充分的理由不這樣做,否則我通常會使用課程。
是的,我通常會用一個List
而非陣列 - Eric Lippert has some good reasons why ......
一件事困擾我稍微:這些三條信息真正正交,或者你可以從構建完整路徑目錄名稱和文件名?如果是這樣,你應該大概只存儲前兩個,並在需要時構建第三個。
取決於您的解決方案也許是值得看一看內置的FileInfo類 – sll