我对 C# 还是很陌生,但我认为我理解范围的概念。我的程序有问题,我非常感谢一些帮助。
以下代码的问题是第 35 行失败
“非静态字段、方法或属性需要对象引用”。
您可以看到对象 Mail 被实例化为 Program 类的一部分,并且它似乎应该是全局可访问的。但是当我尝试在 InitMail() 方法中使用 Mail.Add 时,它无法识别 Mail 对象。
如果我将实例化和 InitMail 代码移动到 Main() 中,它就可以正常工作(尽管我还必须删除实例化上的 public 修饰符)。我在这里不明白什么?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestApp1103
{
class Program
{
// Define an enum type named "Division" specifying all possible values:
public enum Division {PFR, PSE, PVF, PVM, PVS}
//Define a generic class named "MailList" and specify accessor methods:
public class MailList
{
public Division Div { get; set;}
public string[] SuccAddr { get; set; }
public string[] FailAddr { get; set; }
}
// Instantiate a MailList object named "Mail":
public List<MailList> Mail = new List<MailList>();
static void Main(string[] args)
{
// Populate the object "Mail":
InitMail();
}
static void InitMail()
{
Mail.Add( new MailList()
{
Div = Division.PFR,
SuccAddr = new string[2] { "addr1@contoso.com", "addr2@contoso.com" },
FailAddr = new string[2] { "addr3@contoso.com", "addr4@contoso.com" }
});
}
}
}