许多输入参数的初学者问题

时间:2009-11-02 10:50:19

标签: c#

嗨,我是C#的初学者。我有这门课。 class class1有很多变量。

class class1
{
string variable1;
string variable2;
//...
string variable10
}

和类class2,方法是doSomethig:

class class2
{
void doSomething(string s1, string s2, ..., string s10)
}

我在class3中使用class1和class2的instace。

class class3
{
class1 obj1 = new clas1();
class2 obj2 = new clas2();

//...
string result = obj.doSomething(obj1.variable1, obj1.variable2, ... , obj1.variable10)

}

问题是我从class2调用class3方法doSomething,而方法doSomething的输入参数是class1中的变量。 我想方法doSomething中的参数较少。我认为将class1中的变量添加到struct或类中。什么是最好的方法 ?感谢。

5 个答案:

答案 0 :(得分:7)

尝试传递对象ITSELF。

obj2.doSomething(obj1);

如果您提供获取变量的公共访问权限,那么class2中的方法将能够访问这些值,您将释放方法定义和调用的压力。

答案 1 :(得分:3)

使用字符串数组(string []变量)而不是variable1,variable2等更合适吗?还是某种字典?

如果类1只包含函数的参数,另一种方法是将整个对象传递给函数:

class class2 
{ 
   void doSomething(class1 c) { ... }
} 

答案 2 :(得分:2)

class class2
{
  void doSomething(class1 obj) {...}
}

答案 3 :(得分:0)

首先,您不应该直接访问班级中的字段。由于这看起来像Java,您应该获取并设置方法来访问字段:

public String getVariable1()
{
  return variable1;
}

public void setVariable1(String var1)
{
  variable1 = var1;
}
编辑:因为它是C#应该是:

public String Variable1
{
  get; 
  set;
}

接下来回答你的问题,class2中的doSomething方法只能获取class1的实例:

public String doSomething(Class1 class1Instance)
{
  // implementation of doSomething goes here and accesses class1Instance.getVariable1() -> getVariable10();
}

答案 4 :(得分:0)

您可以使用结构发送该值:

struct Data
{
    public int Var01 { get; set; }
    public int Var02 { get; set; }
    // ...
    public int Var10 { get; set; }
}

并使用这样的:

doSomething(new Data()
{
    Var01 = 1,
    Var02 = 2,
    Var10 = 10
});