2

我正在用 C# 编写一个使用数学数字集的程序。我已经定义了 Conjunto 类(在西班牙语中的意思是“设置”)。Conjunto 有一个 ArrayList,其中包含集合的所有数字。它还有一个名为“ID”的字符串,听起来很像;Conjunto 实例的名称。该程序具有在集合之间应用并集、交集等操作的方法。一切都很好,但现在我有一个文本文件,其中包含以下句子:

  • A={1,2,3}
  • B={2,4,5}
  • A 路口 B
  • B 联合 A

等等。问题是,我不知道文本文件包含多少组,也不知道如何在这些句子之后命名变量。例如,命名 Conjunto A 的一个实例,并命名另一个实例 B。

对不起语法,英语不是我的母语。

谢谢!

4

3 回答 3

4

动态创建变量非常复杂,而且非常无用,除非您有一些已经存在的代码需要某些变量。

使用 aDictionary<string, Conjunto>来保存类的实例。这样您就可以按名称访问它们。

于 2012-06-24T21:57:23.340 回答
3

First off, If you don't target lower version than .Net 2.0 use List instead of ArrayList. If I were you I wouldn't reinvent the wheel. Use HashSet or SortedSet to store the numbers and then you can use defined union and intersection.

Secondly, what is your goal? Do want to have just the output set after all operations? Do you want to read and store all actions and them process it on some event?

于 2012-06-24T22:02:33.733 回答
-1

首先,您的程序是从坏的方面采取的。我建议开始制作新的。动态命名“变量”的一种方法是创建类对象并编辑它们的属性。

这是我作为起始平台所做的:

首先,我创建了一个名为 set 的类

class set
    {
        public string ID { get; set; }
        public List<int> numbers { get; set; }
    }

然后我编写了将整个文本文件排序到这些类列表中的代码:

            List<set> Sets = new List<set>();
            string textfile = "your text file";
            char[] spliter = new char[] { ',' };  //switch that , to whatever you want but this will split whole textfile into fragments of sets
            List<string> files = textfile.Split(spliter).ToList<string>();
            int i = 1;
            foreach (string file in files)
            {
                set set = new set();
                set.ID = i.ToString();

                char[] secondspliter = new char[] { ',' };  //switch that , to whatever you want but this will split one set into lone numbers
                List<string> data = textfile.Split(secondspliter).ToList<string>();
                foreach (string number in data)
                {
                    bool success = Int32.TryParse(number, out int outcome);
                    if (success)
                    {
                        set.numbers.Add(outcome);
                    }

                }
                i++;
                Sets.Add(set);
            }

希望它可以帮助某人。

于 2020-02-10T18:07:58.823 回答