嗨,我是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或类中。什么是最好的方法 ?感谢。
答案 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
});