c#在类之间传递变量而不公开它们

c#在类之间传递变量而不公开它们,c#,variables,C#,Variables,我正在编写一个WPF应用程序,它基于一些最小的用户输入来搜索、解析和写入文件。我在mainwindow类中有一个方法调用(对另一个类中的方法),它需要从两个单独的文件中解析大量不同的信息。目前,我有另一个方法解析源文件,并为应用程序的另一个函数返回解析数据数组。在该方法中,我有一些公共变量来存储第一次调用所需的信息。这是我唯一能找到的访问这些项目的方法,而无需编写单独的方法来搜索解析数据中的每一条信息。我附上了一些代码来帮助澄清我的当前情况: //From mainwindow.xaml.cs

我正在编写一个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.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
    }
}
类文件编写器
{
公共字符串系统名;
公共字符串设计;
公共字符串部件号;
公共列表主列表=新列表();
公共字符串[]主编写器(字符串输入,int源)
{
//公共变量的数据就是从这个方法中挖掘出来的。
}
公共字符串[]SummaryWriter(字符串[]解析数据,列表模块MasterList)
{
//做事
}
}
我的问题很简单,如何在不公开这些变量的情况下访问它们?

创建一个getter方法

class Foo
{
private int _bar;

public void GetBar()
{ return _bar;}
}

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

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)
{
...
}


其中SomeMethodOutput是一个具有两个属性的类。

该类中的所有成员变量都可以由同一类中的成员方法访问,即使它们是私有的。我遗漏了什么吗?@lboshuizen是的,他们不在同一个班里。@Servy-woops,忽略了ff和ff之间的区别。谢谢你,史蒂文!您发布的第一个示例非常适合我的需要。我问了一些和我一起工作的程序员,但他们的回答虽然详尽,但缺乏一个简明的例子。我认为其他的例子会很有效,但就我而言,可能会有点笨拙。
public SomeMethodOutput SomeMethod(int inputParameter)
{
...
return new SomeMethodOutput(number1, number2);
}