C#如何使对象在另一个类中可见

时间:2018-07-23 15:51:44

标签: c#

希望很简单,但是我无法解决这个问题。

如何使我使用Age类创建的对象Andrew在Program类之外可见?

我得到的错误是; “ Andrew.PersonAge在当前上下文中不存在”

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Testing2
{
public class Age
{
    private string personage;

    public string PersonAge
    {
        get { return personage; }
        set { personage = value; }
    }

}

class Program
{
    static void Main(string[] args)
    {
        Age Andrew = new Age();
        Andrew.PersonAge = "30"; 
    }
}


class TestOutput
{
    Console.WriteLine(Andrew.PersonAge);
    Console.ReadLine();    
}
}

3 个答案:

答案 0 :(得分:1)

您最好的选择可能是将Andrew传递给任何需要的对象。或者,您可以创建一个公开它的属性。您的TestOutput类甚至都不会编译,因此让我们添加一个接受Age对象的方法:

class TestOutput
{
    public static void Output(Age age)
    {
        Console.WriteLine(age.PersonAge);
        Console.ReadLine();
    }
}

然后您只需要从Main()进行呼叫:

static void Main(string[] args)
{
    Age Andrew = new Age();
    Andrew.PersonAge = "30";
    TestOutput.Output(Andrew);
}

答案 1 :(得分:1)

简短的答案:您不能使对象在另一个类中可见。

但是您可以让import sys import codecs # trick to process sys.stdin with a custom encoding fin = codecs.getreader('utf_8_sig')(sys.stdin.buffer, errors='replace') if '-i' in sys.argv: # For command line option "-i <infile>" fin = open(sys.argv[sys.argv.index('-i') + 1], 'rt', encoding='utf_8_sig', errors='replace') for line in fin: ...Processing here... 对象作为要传入类或Andrew方法的参数。

这里是一个传递Output对象被构造参数的示例,然后您可以调用此类Andrew的方法来显示Output

Andrew.PersonAge

答案 2 :(得分:0)

首先,您应该重构代码以将“年龄”替换为“人”:

public class Person
{
    public string Name { get; set; }
    public string Age { get; set; }
}

然后,在您的程序中,您需要一个用于存放个人的地方以及一种显示结果的方法:

class Program
{

    public static Person Person { get; set; }

    static void Main(string[] args)
    {

        Person = new Person
        {
            Age = 10,
            Name = "Andrew"
        };

        TestOutput();
    }

    /// <summary>
    /// Method to show result
    /// </summary>
    static void TestOutput()
    {
        Console.WriteLine(Person.Name);
    }

}