如何通过检查第一个值来存储多维数组的一维值?

时间:2019-03-02 15:27:03

标签: c#

在我的代码中,我创建了一个名为Combatant的类,然后创建了该类的两个实例,分别名为“ swastik”和“ ankit”,所有这些实例都有一个名为“ index”的整数。现在,我想初始化一个随机变量,根据我的代码,该变量将返回0或1作为值。然后我要检查该索引值属于哪个实例,这意味着如果该值为0,则控制台将返回swastik.firstName,如果该值为1,则它将返回ankit.firstName。
你们中的大多数人可能会说使用if / else方法,但是如果我假设有1000个Combatant Class实例,那么我是否必须编写if / else函数1000次?
谁能提供给我一个不太复杂的代码来做到这一点。

我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Combat
{
    class Program
    {
        static void Main(string[] args)
        {
            Combatant swastik = new Combatant();
            swastik.CombatantInitialize("Swastik", "Bhattacharyya", 0);

            Combatant ankit = new Combatant();
            ankit.CombatantInitialize("Ankit", "Gupta", 1);

            Random rndIndex = new Random();

            var idxGet = rndIndex.Next(0, 2);

            Object[,] combatants = new Object[,] { { 0, swastik.index }, { 0, 1 } };
            Console.WriteLine(combatants[0,1]);
        }
    }

    class Combatant
    {
        public string firstName;
        public string lastName;
        public string fullName;

        public int index;

        public void CombatantInitialize(string fName, string lName, int ind)
        {
            firstName = fName;
            lastName = lName;
            index = ind;
            fullName = firstName + " " + lastName;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

只需将它们放入数组或列表中,然后使用索引来访问它们。

List<Combatant> list = new List<Combatant>();
list.Add(swastik);
list.Add(ankit);

由于idxGet具有所需的随机值,因此请使用这样的列表

array[idxGet]

因此您的完整代码应为

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Combat
{
    class Program
    {
        static void Main(string[] args)
        {
            Combatant swastik = new Combatant();
            swastik.CombatantInitialize("Swastik", "Bhattacharyya", 0);

            Combatant ankit = new Combatant();
            ankit.CombatantInitialize("Ankit", "Gupta", 1);

            List<Combatant> list = new List<Combatant>();
            list.Add(swastik);
            list.Add(ankit);

            Random rndIndex = new Random();

            var idxGet = rndIndex.Next(0, list.Count);

            Console.WriteLine( array[idxGet].fullName );
        }
    }

    class Combatant
    {
        public string firstName;
        public string lastName;
        public string fullName;

        public int index;

        public void CombatantInitialize(string fName, string lName, int ind)
        {
            firstName = fName;
            lastName = lName;
            index = ind;
            fullName = firstName + " " + lastName;
        }
    }
}

答案 1 :(得分:1)

创建新项目时,您可以将它们直接添加到列表中,试试这个

class Program
{
    List<Combatant> combatList = new List<Combatant>();
    static void Main(string[] args)
    {
        Combatant swastik = new Combatant();
        swastik.CombatantInitialize("Swastik", "Bhattacharyya", 0);
        //add item to list
        combatList.Add(swastik);

        Combatant ankit = new Combatant();
        ankit.CombatantInitialize("Ankit", "Gupta", 1);
        //add item to list
        combatList.Add(ankit);

        Random rndIndex = new Random();

        var idxGet = rndIndex.Next(0, combatList.Count);
        //Output firstname to console
        Console.WriteLine(combatList[idxGet].firstName);
    }
}