2

このコード スニペットで使用している文字列配列を初期化するためのより良い方法があるかどうかを調べようとしています。関数があるかどうか、またはおそらくnewそれを使用すると、コード内のすべての空の文字列の呼び出しと割り当てが不要になるのではないかと考えていました。したがって、配列を作成すると同時にそれらを初期化できます。

                    foreach (var unit in unitList)
                    {
                        //Sort units by each army
                        string unitName = unit.UnitName;
                        armyUnits.Add(unitName, unit);

                        //Sort unit properties by unit
                        List<string> properites = new List<string>();

                        string composition        ="";
                        string weaponSkill        ="";
                        string ballisticSkill     ="";
                        string strength           ="";
                        string initiative         ="";
                        string toughness          ="";
                        string wounds             ="";
                        string attacks            ="";
                        string leadership         ="";
                        string savingThrow        ="";
                        string specialRules       ="";
                        string dedicatedTransport ="";
                        string options            ="";
                        string armour             ="";
                        string weapons            ="";


                        properites.AddRange(new string[15]{

                        composition            = unit.Composition,
                        weaponSkill            = unit.WeaponSkill,
                        ballisticSkill         = unit.BallisticSkill,
                        strength               = unit.Strength,
                        initiative             = unit.Initiative,
                        toughness              = unit.Toughness,
                        wounds                 = unit.Wounds,
                        attacks                = unit.Attacks,
                        leadership             = unit.Leadership,
                        savingThrow            = unit.SaveThrow,
                        specialRules           = unit.SpecialRules,
                        dedicatedTransport     = unit.DedicatedTransport,
                        options                = unit.Options,
                        armour                 = unit.Armour,
                        weapons                = unit.Weapons
                        });


                    }

new String(unit.Composition.ToCharArray())編集:配列内でできるようです。私はそれがこれ以上読みやすく、書きやすいとは思いません。

  properites.AddRange(new string[1]{
  new String(unit.Composition.ToCharArray())}
4

2 に答える 2

4
                    foreach (var unit in unitList)
                    {
                        //Sort units by each army
                        string unitName = unit.UnitName;
                        armyUnits.Add(unitName, unit);

                        //Sort unit properties by unit
                        List<string> properites = new List<string>();

                        properites.AddRange(new string[15]{

                        unit.Composition,
                        unit.WeaponSkill,
                        unit.BallisticSkill,
                        unit.Strength,
                        unit.Initiative,
                        unit.Toughness,
                        unit.Wounds,
                        unit.Attacks,
                        unit.Leadership,
                        unit.SaveThrow,
                        unit.SpecialRules,
                        unit.DedicatedTransport,
                        unit.Options,
                        unit.Armour,
                        unit.Weapons
                        });


                    }

変数はまったく必要ありません。実際、リストは必要ありません。

                    var properties = new [] {
                        unit.Composition,
                        unit.WeaponSkill,
                        unit.BallisticSkill,
                        unit.Strength,
                        unit.Initiative,
                        unit.Toughness,
                        unit.Wounds,
                        unit.Attacks,
                        unit.Leadership,
                        unit.SaveThrow,
                        unit.SpecialRules,
                        unit.DedicatedTransport,
                        unit.Options,
                        unit.Armour,
                        unit.Weapons,
                    }

リストは、ここでは使用されていないように見えるアイテムの追加と削除をサポートしています。また、配列数 15 も必要ありません。これは、コンパイラが判断するためです。同じ理由で配列型も必要ありません。C# は非常に簡潔な言語です。

また、「unit.Weapons」の後に最後のコンマを追加して、すべてのリスト項目を対称にしました。これは問題なくコンパイルされ、コピー、貼り付け、並べ替えがより簡単になります。

于 2012-04-21T20:58:35.273 に答える
3

また、AddRangeメソッドを使用する必要はありません。コレクションの初期化構文を使用するだけです。

//Sort unit properties by unit
var properites = new List<string>
                     {
                         unit.Composition,
                         unit.WeaponSkill,
                         unit.BallisticSkill,
                         unit.Strength,
                         unit.Initiative,
                         unit.Toughness,
                         unit.Wounds,
                         unit.Attacks,
                         unit.Leadership,
                         unit.SaveThrow,
                         unit.SpecialRules,
                         unit.DedicatedTransport,
                         unit.Options,
                         unit.Armour,
                         unit.Weapons
                     };
于 2012-04-22T01:09:49.927 に答える