2

我正在编写一个 WPF 应用程序,它根据一些最少的用户输入来搜索、解析和写入文件。我的主窗口类中有一个方法调用(对另一个类中的方法),它需要从两个单独的文件中解析出许多不同的信息。目前,我有另一种方法可以解析源文件并为应用程序的另一个函数返回解析数据的数组。在该方法中,我有一些公共变量来存储第一次调用所需的信息。这是我可以弄清楚如何访问这些项目的唯一方法,而无需编写单独的方法来搜索每个单独信息的解析数据我附上了一些代码来帮助澄清我目前的情况:

//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.Search() 和 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
    }
}

我的问题很简单,如何在不公开它们的情况下访问这些变量?

4

2 回答 2

3

首先,与其拥有公共字段,不如将它们封装在公开私有字段的公共属性中?例子:

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 是一个具有两个属性的类。

于 2013-01-30T21:03:31.557 回答
0

做一个getter方法。

class Foo
{
private int _bar;

public void GetBar()
{ return _bar;}
}
于 2013-01-30T20:58:51.863 回答