Получение и возвращение неопределенной коллекции - C#
Формулировка задачи:
Для начала, если кто то придумает название более информативное буду благодарен.
Мне надо два метода, они оба будут работать с файлами txt, первый будет считывать и возвращать все содержимое файла в виде коллекции (каждая строка - новый элемент), второй принимать коллекцию и записывать ее в файл (не дописывать в конец а перезаписывать если файл существует)
Загвоздка в том что коллекция может быть List или HashSet или SortedSet или Queue или Stack, если во все перечисленное нельзя впихнуть Queue или Stack, то я от них откажусь.
на данный момент это выглядит так (но тут все через List работает, мне надо уйти от этого):
Первый вопрос, можно ли как-нибудь что бы метод работал со всеми 5 коллекциями?
Второй, как лучше это сделать? Как вариант:
но мне внутри но внутри метода я не могу сделать:
если я к перечислению добавляю
получаю ошибку что все кроме
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; public static class FileManager2 { public static List<string> GetAllFileLines(string FilePath, bool IgnoreEmptyString) { List<string> list = new List<string>(); try { StreamReader file = new StreamReader(FilePath); string temp; while ((temp = file.ReadLine()) != null) { if (IgnoreEmptyString && temp != "") list.Add(temp); else list.Add(temp); } file.Close(); return list; } catch { return list; } } public static bool CreateAndAddList(string FilePath, List<string> list) { if (File.Exists(FilePath) == false) { string dir = Path.GetDirectoryName(FilePath); if (string.IsNullOrEmpty(dir) == false) Directory.CreateDirectory(dir); File.CreateText(FilePath).Close(); } try { StreamWriter file = new StreamWriter(FilePath); foreach (string temp in list) file.WriteLine(temp); file.Close(); return true; } catch { return false; } } }
public static bool CreateAndAddList(string FilePath, ICollection<string> list); // тут в list будут записаны все данные из файла public static void GetAllFileLines(string FilePath, ref ICollection<string> list, bool IgnoreEmptyString);
GetAllFileLines
надо обнулитьlist
причем не черезClear
, а через= new ...
, только new что. по этому как то не очень мне этот вариант, а до вызова метода очищать список мне не хочется. Может как то можно через обобщения, только как мне перечислить все эти варианты списков, я делаю так:where C : HashSet<string> where C : SortedSet<string> where C : List<string>
C list = new C(); // или C<string> list = new C<string>();
where C: new()
new
лишнее.Решение задачи: «Получение и возвращение неопределенной коллекции»
textual
Листинг программы
var data1 = new List<string>(File.ReadLines(@"M:\test.txt")); var data2 = new HashSet<string>(File.ReadLines(@"M:\test.txt")); var data3 = new SortedSet<string>(File.ReadLines(@"M:\test.txt"));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д