2012-02-22 5 views
0

Я искал какое-то время и не нашел решения или просто не вижу маленькую ошибку?Почему я получаю NullException?

Я написал программу с Visual C# и имеют Form1.cs Program.cs Server.cs

Server.cs


namespace WindowsApplication1 { 
class testServer { 
public Form1 form1; 
form1.send("data"); 

Program.cs


using System; 
using System.Collections.Generic; 
using System.Windows.Forms; 

namespace WindowsApplication1 
{ 
static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form1()); 
    } 
} 
} 

Form1.cs


namespace WindowsApplication1 
{ 
public partial class Form1 : System.Windows.Forms.Form 
{ 


    public Form1() 
    { 
     InitializeComponent(); 

    } 
    private testServer Server; 

private void startServer_Click(object sender, System.EventArgs e) 
    { 

     Server = new Server(data); 
     Server.form1 = this; 

    } 

Все работает, но в Server.cs я получаю nullexception с form1.send("data"); кажется form1 действительно пустой, но почему?

Где я что-то забыл?

+1

'form1.send ("данные");' не находится внутри функции. –

ответ

4

Вы должны создать экземпляр класса Form1, попробуйте

public Form1 form1 = new Form1(); 
+0

ok, что помогло мне продолжить =) спасибо. думал, что это уже сделано. –

2
public Form1 form1; 
form1.send("data"); 

form1 никогда не создается. Существует ваше исключение NullReferenceException (NRE).

Лучше:

public Form1 form1 = new Form1(); 
form1.send("data"); 
1

Может быть, вы забыли назначить переменную form1 в testServer параметру конструкта.

BTW: код не похож на хороший дизайн: вы не должны проходить объекты формы вокруг.

1

Это нулевое значение, потому что вы не инициализируете его.

public Form1 form1; 
.. 
// Initialize the object BEFORE using it! 
form1 = new Form1(); 
form1.send("data"); 
+0

«WindowsApplication1.SocketServer.form1» не является полем, но используется ... Этот метод должен иметь тип возврата или что-то вроде этого –

0

Переменная form1 не инициализирован перед использованием в коде

Смежные вопросы