2016-11-21 105 views
0

在我的控制台程序中,我想通过使用System.Net.Mail.MailMessage发送电子邮件给某人。然而,我不能初始化它:(MailMessage是否需要任何设置来初始化?

名称空间:

using System.Net; 
using System.Net.Mail; 

代码:

class emailHelper 
{ 
    string to = "[email protected]"; 
    string from = "[email protected]"; 
    MailMessage message = new MailMessage(from, to);// errors here 
} 

该错误消息为约:

甲字段初始不能引用非属性'programA.emailHelper.from'

一个字段初始不能引用非静态字段,方法或 财产“programA.emailHelper.to”

我根本不知道我错过了什么MAILMESSAGE使用前设置。

有什么想法?

回答

0

错误信息给你所有的信息。如果你想它的工作

一个字段初始不能引用非静态字段,方法或 财产

所以,你应该让你的字符串字段静态的。我怀疑是你想要的。

class emailHelper 
{ 
    static string to = "[email protected]"; 
    static string from = "[email protected]"; 
    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类。

0

作为错误消息指出

甲字段初始不能引用非静态字段,方法或 属性

这意味着你不能使用的字段来初始化另一个字段。但是你可以利用这里的构造函数,类实施将是这样的:

class emailHelper 
{ 
    string to = "[email protected]"; 
    string from = "[email protected]"; 
    MailMessage message; // Declare here 
    public emailHelper() // Constructor 
    { 
     message = new MailMessage(from, to);//initialize here 
    } 
} 

或者使用只读属性的getter这样的:

public MailMessage Message 
{ 
    get { return new MailMessage(from, to); } 
} 
0

甲字段初始不能引用非静态字段,方法或 属性“字段”的实例字段不能被用于初始化的方法以外的其他 实例字段。如果你想初始化的方法外 变量,考虑执行初始化 类的构造函数

检查里面的文档:Compiler Error CS0236

// 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() 
    { 
    } 
}