希望很简单,但是我无法解决这个问题。
如何使我使用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();
}
}
答案 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);
}
}