伙计我将一些参数传递给WPF应用程序的新窗口,如下所示
List<string[]> liststat = conf.getlistbytype(type);
if ((liststat == null) || (liststat.Count == 0))
{
MessageBox.Show("There is no stat of that type in this stat server");
}
else
{
CalculatedStat3 prompt = new CalculatedStat3(statwin, conf, liststat, this);
prompt.Show();
然而,目标页面的构造是
public CalculatedStat3(statwindow statwin, ConfigLayer conf, string[] statsname, CalculatedStat2 backscreen)
{
}
如果我收到错误
,我应该怎么做才能纠正这个问题'RCCV_Version_2.CalculatedStat3.CalculatedStat3(RCCV_Version_2.statwindow, rmad_wpf_lib.ConfigLayer, string[], RCCV_Version_2.CalculatedStat2)' has some invalid arguments
答案 0 :(得分:5)
第一个解决方案,只获取第一个数组
CalculatedStat3 prompt = new CalculatedStat3(statwin, conf, liststat.First(), this);
其次,展平你的收藏
var stats = liststat.SelectMany(x=>x).ToArray();
CalculatedStat3 prompt = new CalculatedStat3(statwin, conf, stats, this);
在第一个解决方案中,您将只获得第一组统计数据,在第二个解决方案中,您将获得大量连接的所有统计数据。我认为秒解决方案符合您的要求。
答案 1 :(得分:2)
目前还不清楚你想要为构造函数使用哪个string[]
,所以我只想采取第一个:
else
{
string[] firstStat = liststat.First();
CalculatedStat3 prompt = new CalculatedStat3(statwin, conf, firstStat, this);
如果您想创建多个CalculatedStat3
:
else
{
CalculatedStat3[] allCalculatedStat3 = liststat
.Select(s => new CalculatedStat3(statwin, conf, s, this))
.ToArray();
foreach(CalculatedStat3 stat in allCalculatedStat3)
stat.Show();
答案 2 :(得分:1)
您还可以按如下方式连接所有数组:
List<string> finalList = new List<string>();
foreach (string[] strings in liststat)
finalList.AddRange(strings);
string[] finalArray = finalList.ToArray();
然后将finalArray
传递给方法。
这与daryal
正在做的相同,只是没有LINQ。请随便。
答案 3 :(得分:0)
liststat
是字符串数组的列表,而不是CalculatedStat3
方法接受的单个字符串数组,这就是编译错误的原因。
传递列表的第一个元素
CalculatedStat3 prompt = new CalculatedStat3(statwin, conf, liststat[0], this);
或更改接受字符串数组列表的方法
public CalculatedStat3(statwindow statwin, ConfigLayer conf, List<string[]> statsname, CalculatedStat2 backscreen)
选择最适合您和您需求的解决方案。
答案 4 :(得分:0)
if ((liststat == null) || (liststat.Count == 0))
{
MessageBox.Show("There is no stat of that type in this stat server");
}
else
{
var list = new List<string>();
liststat.ForEach(q => list.AddRange(q));
CalculatedStat3 prompt = new CalculatedStat3(statwin, conf, list.ToArray(), this);
prompt.Show();