是否可以创建创建类实例的循环?

时间:2018-09-03 11:59:49

标签: c#

我想创建一个控制台应用程序,该应用程序读取userinput值并创建一个类的多个实例,然后在所有类实例中运行void say()。 下面的代码:

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

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            int botsnumber = 0;
            Console.WriteLine("Type number: ");
            botsnumber = Int32.Parse(Console.ReadLine());
            for (int i = 0; i < botsnumber; i++)
            {
                //Here generate bots: Bot b1 = new Bot(); Bot b2 = new Bot(); 
               // Bot b = new Bot(); 
            }
            b.say();// b1.say(); b2.say(); b3.say(); ...
        }
    }

    class Bot
    {
        public static void say()
        {
            Console.WriteLine("Hello!");
        }
    }
}

4 个答案:

答案 0 :(得分:1)

将实例放入列表中,然后填充列表,然后循环列表并调用say

botsnumber = Int32.Parse(Console.ReadLine());
var list = new List<Bot>();
for (int i = 0; i < botsnumber; i++)
{
   Bot b = new Bot(); 
   list.Add(b);
}
list.ForEach(b => b.say());

并且您不需要在方法say中放置静态

class Bot
{
    public void say()
    {
        Console.WriteLine("Hello!");
    }
}

答案 1 :(得分:1)

我猜是这样

public static List<Bot> bots = new List<Bot>();

...

for (int i = 0; i < botsnumber; i++)
{
    bots.Add(new Bot);
}

...

bots[0].Say();
bots[1].Say();

答案 2 :(得分:1)

认为您要在循环中调用say() ,并将其设为非静态方法:

for (int i = 0; i < botsnumber; i++)
{
     Bot b = new Bot();
     b.Say();
}

class Bot
{
    public void Say()
    {
        Console.WriteLine("Hello!");
    }
}

尽管请注意,在许多方面,创建立即丢弃的无状态对象实例没有任何意义,所以...在实际使用中,我会 期望某个状态,或者我期望它成为静态方法。

或者,您可以首先创建所有机器人,将它们堆积在列表中,然后遍历 -同样,是否明智取决于上下文,但是:

var bots = new List<Bot>(botsnumber);
for (int i = 0; i < botsnumber; i++)
{
     bots.Add(new Bot());
}
// ...
foreach(var bot in bots)
{
    bot.Say();
}

答案 3 :(得分:0)

您可以立即打电话说,或者在创建所有漫游器后全部叫出

for (int i = 0; i < botsnumber; i++)
{
    //Here generate bots: Bot b1 = new Bot(); Bot b2 = new Bot(); 
    Bot b = new Bot(); 
    b.say();
}

// or

var bots = new List<Bot>();
for (int i = 0; i < botsnumber; i++)
{
    //Here generate bots: Bot b1 = new Bot(); Bot b2 = new Bot(); 
    bots.Add(new Bot());
}
foreach (var bot in bots)
{
    bot.say();
}