首页 > 解决方案 > C#方法将一行刮入一个数组 - 返回时不传递数组

问题描述

我对 C# 还是很陌生,我一直在通过具有我想要实现的目标的项目来取得进展。

我陷入了一些相当笼统和简单的事情,它将帮助我理解和前进。

public Array ExtractRakeFromHand(string theline)
    {
        int rri = 0;


        var rakeandpot = theline.Split().Where(x => x.StartsWith("("))
                 .Select(x => x.Replace("(", string.Empty).Replace(")", string.Empty))
                 .ToList();
        var playerssplit = theline.Substring(theline.IndexOf("ers ("));
        var pbreakdown = playerssplit.Substring(theline.IndexOf("("));
        pbreakdown = pbreakdown.Remove(pbreakdown.Length - 1, 1);
        var numofplayers = pbreakdown.Split(',');
        (string player, double player_portion, double potsize, double rakesize, string hand)[] myar = new (string player, double player_portion, double potsize, double rakesize, string hand)[numofplayers.Length];
        for (int iii = 0; iii < myar.Length; iii++)
        {
            myar[iii].rakesize = Double.Parse(rakeandpot[0]);
            myar[iii].potsize = Double.Parse(rakeandpot[1]);
        }

        var values = pbreakdown.Split(',');
        (string name, double value)[] result = new (string, double)[values.Length];
        for (int ii = 0; ii < values.Length; ii++)
        {
            var splittedValue = values[ii].Split(':');
            result[ii] = (splittedValue[0], Double.Parse(splittedValue[1], CultureInfo.InvariantCulture));
            myar[rri].player = result[rri].name;

            var ppot = (result[rri].value / myar[rri].potsize);
            var ppotr = ppot * myar[rri].rakesize;
            myar[rri].player_portion = ppotr;
            rri++;
        }

        return myar;
    }

我通过 var thedata = ExtractRakeFromHand(d) 调用此方法;

return 是一个不包含“Name”和“Rake”字段的对象。

我怎样才能让它以与创建相同的方式返回数组?

我试图添加这个类:

 public class RakeHandParse
    {
        public string player { get; set; }
        public double player_portion { get; set; }
        public double potsize { get; set; }
        public double rakesize { get; set; }
        public string hand { get; set; }

    }

但我不确定如何在代码中使用它来取回完整的细节。

非常感谢 !

标签: c#arrays

解决方案


代替public Array ExtractRakeFromHand(string theline)

public (string player, double player_portion, double potsize, double rakesize, string hand)[] ExtractRakeFromHand(string theline)

并调用:

(string player, double player_portion, double potsize, double rakesize, string hand)[] myar = ExtractRakeFromHand(d);

推荐阅读