2016-11-21 3 views
0

In meinem Konsolenprogramm möchte ich eine E-Mail an jemanden senden mit System.Net.Mail.MailMessage. Aber ich kann es nicht initialisieren :(benötigt MailMessage eine Einstellung zum Initialisieren?

Namespace:

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

Code:

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

die Fehlermeldung zu:

Ein Feldinitialisierer kann die Nicht-Referenz statisches Feld, Methode oder Eigenschaft 'programA.emailHelper.from'

Ein Feldinitialisierer die nicht-statisches Feld, Methode nicht verweisen kann, oder Eigenschaft ‚programA.emailHelper.to‘

Ich habe keine Ahnung, dass ich etwas vor dem Gebrauch Mailmessage zu setzen tun verpassen.

Irgendeine Idee?

Antwort

0

Die Fehlermeldung geben Ihnen alle Information.

Ein Feldinitialisierer kann die nicht-statische Feldreferenz, Methode oder Eigenschaft

Also, wenn Sie es Arbeit machen wollen, sollten Sie Ihre String-Felder statisch machen. Was ich bezweifle, ist was du willst.

Wie ich schon sagte, das ist nicht das, was Sie von einer Hilfsmethode wollen, statische zu und von Adresse haben. Der Code sollte wie folgt aussehen:

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); 
    } 

} 

In diesem Fall, dass Sie Adressen haben, die aus dem Helfer kommen und Sie können mehrere MailMessage Klassen erstellen.

0

Als Fehlermeldung angegeben

Ein Feldinitialisierer nicht die Nicht-statisches Feld verweisen kann, eine Methode oder Eigenschaft

Was bedeutet, dass Sie ein Feld verwenden, können nicht ein anderes Feld zu initialisieren. Aber Sie können hier Verwendung des Konstrukteurs machen, Ihre Klassenimplementierung wird wie folgt aus:

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

oder ein Lese verwenden nur Eigenschaft Getter wie folgt aus:

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

A Feldinitialisierer kann nicht Referenz die nicht statische Feld, eine Methode oder Eigenschaft ‚Feld‘ Instanzfelder nicht außerhalb eines Verfahrens zum Initialisieren andere Instanzfelder verwendet werden.Wenn Sie eine Variable außerhalb eines Verfahrens zu initialisieren versuchen, sollten Sie die Initialisierung innerhalb der Klasse Konstruktor Durchführung

Überprüfen Sie die Dokumentation: 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() 
    { 
    } 
} 
Verwandte Themen