在我的控制台程序中,我想使用System.Net.Mail.MailMessage
向某人发送电子邮件。但是,我无法初始化它:(
名称空间:
using System.Net;
using System.Net.Mail;
代码:
class emailHelper
{
string to = "jane@address.com";
string from = "ben@address.com";
MailMessage message = new MailMessage(from, to);// errors here
}
错误消息是关于:
字段初始值设定项不能引用非静态字段,方法或 property' programA.emailHelper.from'
字段初始值设定项不能引用非静态字段,方法或 property' programA.emailHelper.to'
我不知道在使用MailMessage之前我是否会错过任何设置。
有什么想法吗?
答案 0 :(得分:0)
正如错误消息所述
字段初始值设定项不能引用非静态字段,方法或 属性
这意味着您无法使用字段初始化另一个字段。但是你可以在这里使用构造函数,你的类实现将如下所示:
class emailHelper
{
string to = "jane@address.com";
string from = "ben@address.com";
MailMessage message; // Declare here
public emailHelper() // Constructor
{
message = new MailMessage(from, to);//initialize here
}
}
或者像这样使用只读属性getter:
public MailMessage Message
{
get { return new MailMessage(from, to); }
}
答案 1 :(得分:0)
错误消息为您提供所有信息。
字段初始值设定项不能引用非静态字段,方法或 属性
因此,如果您想使其工作,您应该将字符串字段设置为静态。我怀疑你想要什么。
class emailHelper
{
static string to = "jane@address.com";
static string from = "ben@address.com";
MailMessage message = new MailMessage(from, to);// errors here
}
就像我说的那样,这不是你想要的一个辅助方法,而是静态地址和来自地址。您的代码应如下所示:
public class EmailHelper
{
public string To {get; set;}
public string From {get; set;}
public MailMessage message {get; set;}
public EmailHelper(string to, string from)
{
To = to;
From = from;
message = new MailMessage(from, to);
}
}
在这种情况下,您有来自帮助程序的地址,您可以创建多个MailMessage
类。
答案 2 :(得分:0)
字段初始值设定项无法引用非静态字段,方法或 property'field'实例字段不能用于初始化其他字段 方法外的实例字段。如果您正在尝试初始化a 在方法外部变量,考虑执行初始化 在类构造函数中
查看文档:{{3}}
// CS0236.cs
public class MyClass
{
public int i = 5;
public int j = i; // CS0236
public int k; // initialize in constructor
MyClass()
{
k = i;
}
public static void Main()
{
}
}