Получение и возвращение неопределенной коллекции - C#

Узнай цену своей работы

Формулировка задачи:

Для начала, если кто то придумает название более информативное буду благодарен. Мне надо два метода, они оба будут работать с файлами txt, первый будет считывать и возвращать все содержимое файла в виде коллекции (каждая строка - новый элемент), второй принимать коллекцию и записывать ее в файл (не дописывать в конец а перезаписывать если файл существует) Загвоздка в том что коллекция может быть List или HashSet или SortedSet или Queue или Stack, если во все перечисленное нельзя впихнуть Queue или Stack, то я от них откажусь. на данный момент это выглядит так (но тут все через List работает, мне надо уйти от этого):
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;
        }
    }
}
Первый вопрос, можно ли как-нибудь что бы метод работал со всеми 5 коллекциями? Второй, как лучше это сделать? Как вариант:
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"));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.5 из 5
Похожие ответы