0

使用构造函数后,是否可以向对象的实例添加值?

例如我有这个代码。我必须列出需要数字 n 的对象和时间(作为参数接收)。问题是时间可以在任何地方,所以我不能在构造函数中使用它。

 public List<IAction> Dispatch(string[] arg)
   {
       int time;
       int i = 0;
       int j = 0;
       List<IAction> t = new List<IAction>(10);
       do
       {
           if (int.Parse(arg[j]) >= 0 && int.Parse(arg[j]) <= 20)
           {
               t.Add(new ComputeParam(int.Parse(arg[j]))); 

               i++;
               j++;

           }
           else
           {
               if (arg[i][0] == '/' && arg[i][1] == 't')
               {
                   Options opt = new Options();
                   j++;

                   time=opt.Option(arg[i]); //sets the time 0,1000 or 2000


               }


           }
       } while (i != arg.Length);
       return t;

}

完成列表后,我可以执行以下操作:

for(int i=0; i<=t.Count; i++) { *add time to t[i]* }

我该怎么做呢?

提前致谢!

编辑 :

这是 ComputeParam 类

public class ComputeParam : IAction
{
    int n;
    int time;
    public ComputeParam()
    {
    }
    public ComputeParam(int n)
    {
        this.n = n;
    }

    public void run()
    {


        Factorial Fact = new Factorial();
        Fact.Progression += new Factorial.ProgressEventHandler(Progress);
        Console.WriteLine("                                        ");
        Console.Write("\n" + "Partial results : ");
        Console.CursorLeft = 35;
        Console.Write("Progress : ");
        int Result = Fact.CalculateFactorial(n, time);
        Console.WriteLine(" ");
        Console.WriteLine("The factorial of " + n + " is : " + Result);

        Console.WriteLine("Press Enter to continue...");
        Console.CursorTop -= 2;
        Console.CursorLeft = 0;

        Console.ReadLine();
    }

    public void Progress(ProgressEventArgs e)
    {
        int result = e.getPartialResult;
        int stack_value = e.getValue;
        double max = System.Convert.ToDouble(n);
        System.Convert.ToDouble(stack_value);
        double percent = (stack_value / max) * 100;

        Console.CursorLeft = 18;
        Console.Write(result + " ");
        Console.CursorLeft = 46;
        Console.Write(System.Convert.ToInt32(percent) + "%      ");

    }

}
4

1 回答 1

2

如果该对象具有公共属性,我不明白为什么不这样做。
编辑:看起来你需要为你的班级添加一个公共属性。另请注意,鉴于有一个采用 0 参数的公共构造函数,您还应该为 n 添加一个属性。

public class ComputeParam : IAction    
{    
    int _n;    
    int _time;    
    public ComputeParam()    
    {    
    }    
    public ComputeParam(int n)    
    {    
        this._n = n;    
    }  
    public int Time 
    { 
        get { return this._time; }
        set { this._time = value; }
    }

    public int N
    {
        get { return this._n; }
        set { this._n = value; }
    }


for(int i = 0; i < t.Count; i++) 
{ 
    ((ComputeParam)t[i]).Time = 6;
}
于 2012-08-06T12:30:54.130 回答