C# 在类之间传递变量而不公开它们
本文关键字:变量 之间 | 更新日期: 2023-09-27 17:56:48
我正在编写一个 WPF 应用程序,该应用程序根据一些最小的用户输入搜索、解析和写入文件。我的 mainwindow 类中有一个方法调用(对另一个类中的方法),它需要从两个单独的文件中解析出许多不同的信息。目前,我有另一种方法可以解析源文件并为应用程序的另一个函数返回解析的数据数组。在该方法中,我有一些公共变量来存储第一次调用的必要信息。这是我弄清楚如何访问这些项目的唯一方法,而无需编写单独的方法来搜索每条信息的解析数据,我附加了一些代码来帮助澄清我当前的情况:
//From mainwindow.xaml.cs
private void button1_Click(object sender, RoutedEventArgs e)
{
string[] path = ff.Search(fw.sysName, fw.design, fw.partNumber);//From FileFinder class
string[] parsedData = fp.Parse(path);//From FileProcessor class
string[] summary = fw.SummaryWriter(parsedData, fw.masterList);//From FileWriter class
Output.Text = "";
foreach (string str in summaryvalues)
{
Output.Text += (str + "'n");
}
}
ff 中使用的变量。搜索() 和 fw。SummaryWriter() 是从 FileWriter.cs 调用的:
class FileWriter
{
public string sysName;
public string design;
public string partNumber;
public List<string> masterList = new List<string>();
public string[] MasterWriter(string input, int source)
{
//Do stuff. The data for the public variables is mined from this method.
}
public string[] SummaryWriter(string[] parsedData, List<string> moduleMasterList)
{
//Do stuff
}
}
我的问题很简单,如何在不公开的情况下访问这些变量?
首先,与其使用公共字段,不如将它们封装在公开私有字段的公共属性中?例:
private string somePrivateField;
public string SomePrivateField
{
get
{
return this.somePrivateField;
}
set
{
this.somePrivateField = value;
}
}
有关属性的信息,请参阅此网站
其次,当我遇到可能需要返回多个值的方法时,您可以为该方法确定参数,也可以将返回值封装到它们自己的类中,然后只返回该类的实例:
public void SomeMethod(int inputParameter, out int outvar1, out int outvar2)
{
...
}
有关 out 关键字,请参阅此站点
或
public SomeMethodOutput SomeMethod(int inputParameter)
{
...
return new SomeMethodOutput(number1, number2);
}
其中 SomeMethodOutput 是一个具有两个属性的类。
创建一个getter方法。
class Foo
{
private int _bar;
public void GetBar()
{ return _bar;}
}