在C#中写一个方法A,方法内定义了很多变量。在该方法A内部调用另一个类中的方法B,方法B用于对方法A中变量的修改。为了实现这个功能,方法B必须用目标被修改值为输入变量,才能在B内部对A中的变量进行引用修改。
但如此方法B输入的变量将会非常多,怎么做才能最大程度简化代码?
注意事项:
1.还需要让这些变量在方法A中可以被单独使用。如果单独定义变量集合的话,这样每次就只能整个集合一起使用了是吗?
2.而且我希望每次变量在方法A中单独使用时候,可以直接用变量名,不需要加class的前缀。
在C#中写一个方法A,方法内定义了很多变量。在该方法A内部调用另一个类中的方法B,方法B用于对方法A中变量的修改。为了实现这个功能,方法B必须用目标被修改值为输入变量,才能在B内部对A中的变量进行引用修改。
但如此方法B输入的变量将会非常多,怎么做才能最大程度简化代码?
注意事项:
1.还需要让这些变量在方法A中可以被单独使用。如果单独定义变量集合的话,这样每次就只能整个集合一起使用了是吗?
2.而且我希望每次变量在方法A中单独使用时候,可以直接用变量名,不需要加class的前缀。
引自免费微信小程序:皆我百晓生
在C#中,如果你有许多变量需要传递给另一个方法,并且你想保持它们的独立性,同时避免过多的参数列表,你可以考虑使用ref
关键字或者创建一个新的类来封装这些变量。这里我会提供两种方案供你选择。
在C#中,ref
关键字允许你在函数中修改传入的变量的原始值。但是,这种方法要求你在调用函数时明确指定你要引用哪个变量。
首先,我们定义一个包含多个变量的类:
public class MethodVariables
{
public int Variable1 { get; set; }
public string Variable2 { get; set; }
// 添加其他你需要的变量...
}
然后,在方法A中,我们将这些变量作为ref
参数传递给方法B:
public void MethodA()
{
var methodVariables = new MethodVariables
{
Variable1 = 5,
Variable2 = "Hello"
// 初始化其他变量...
};
ModifyVariables(ref methodVariables);
Console.WriteLine($"Variable1: {methodVariables.Variable1}");
Console.WriteLine($"Variable2: {methodVariables.Variable2}");
}
private static void ModifyVariables(ref MethodVariables variables)
{
variables.Variable1 *= 2;
variables.Variable2 += " World";
}
另一种方法是创建一个新的类来封装这些变量,这样你就可以将整个对象作为一个参数传递,而不需要逐个传递每个变量。
public class MethodVariablesContainer
{
public int Variable1 { get; set; }
public string Variable2 { get; set; }
// 添加其他你需要的变量...
public void ModifyVariables()
{
this.Variable1 *= 2;
this.Variable2 += " World";
}
}
public void MethodA()
{
var container = new MethodVariablesContainer
{
Variable1 = 5,
Variable2 = "Hello"
// 初始化其他变量...
};
container.ModifyVariables();
Console.WriteLine($"Variable1: {container.Variable1}");
Console.WriteLine($"Variable2: {container.Variable2}");
}
在这个例子中,你可以在MethodA
中直接通过container
实例访问并修改变量,而无需显式地使用ref
关键字。另外,你还可以在MethodVariablesContainer
类中添加更多的逻辑,比如验证、计算等,使代码更加模块化。