C#-具有不同签名的代表数组?

问题描述

提前道歉很长时间。我遇到的问题超出了我的薪水等级(我这样做主要是为了娱乐!),我们将不胜感激。我会尝试将其精简到本质,但是我什至不确定我是否能够正确地做到这一点。

基本上,我想从Excel电子表格中读取数据表并将其存储在数组中。

该表格将具有多个维度,例如性别(M,F),年龄(0,1,2,…)和受教育程度(带有类似P1,P2,P3的代码)以及与之相关的数值尺寸。 对于特定的组合,例如只有一个条目。 M 23 P1只会出现一次。

问题在于表格可以以各种格式存储,例如

Sex Age Education Count
M   23  P1        90125
F   23  P1        67232

Education Sex Age Count
P1        M   23  90125
P1        F   23  67232

甚至

Age  Education  Male   Female
23   P1         90125  67232
24   P1         92456  68259

(但现在,我认为我们可以忽略这一点,而只关注维度/关键字段出现在不同列中的情况)

在读取任何特定表时,我会知道它的存储结构,但是我当然希望将它们全部存储在代码中的相同结构中。

在存储已读内容之前,我需要做两件事。

  • 读取实际的尺寸值,该值可以是字符串(性别或教育程度)或整数(年龄)
  • 检查尺寸值是否允许,并将其转换为索引值。例如。如果性别字段包含Q,则将返回错误,但是如果包含F,则将返回0,如果包含M,则将返回1(因为我将存储索引值为0的女性和索引值为1的男性)

我的想法是创建代表大小为3的数组。根据字段顺序,委托实例将读取该值并返回一个字符串(用于性别或教育)或一个整数(用于年龄) 然后,我将有第二个委托数组,它将进行适当的检查。 例如如果关键领域的顺序是性别,年龄和受教育程度,那么我会选择类似

public delegate int Check(...)
…
Check[] ArrayOfChecks[] = new Check[3]();
ArrayOfChecks[0] = CheckSex(sex);              //public int CheckSex(string sex)
ArrayOfChecks[1] = CheckAge(age);              //public int CheckAge(int age)
ArrayOfChecks[2] = CheckEducation(education);  //public int CheckSex(string education)

方法的问题在于,用于检查的委托人的签名是不同的,因为某些委托要求传入字符串,而其他委托则需要int。 对于读入,我有一个类似的问题,除了它们都将传入相同的参数(要读取的单元格位置),但将返回字符串或整数(取决于字段值)

那么,有没有一种方法可以解决我的问题,即可以通过一系列具有不同签名的代表来解决这个问题?

再次道歉。我不精通C#,希望我已经解释了这个问题 我也对完全不同的解决方案持开放态度(尽管我仍然有兴趣了解我是否/如何做我打算做的事情:-)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)