Почему я получаю NullException? - PullRequest
0 голосов
/ 22 февраля 2012

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

Я написал программу на 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 действительно нулевой, но почему?

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

Ответы [ 5 ]

4 голосов
/ 22 февраля 2012

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

public Form1 form1 = new Form1();
2 голосов
/ 22 февраля 2012
public Form1 form1;
form1.send("data");

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

Лучше:

public Form1 form1 = new Form1();
form1.send("data");
1 голос
/ 22 февраля 2012

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

public Form1 form1;
..
// Initialize the object BEFORE using it!
form1 = new Form1();
form1.send("data");
1 голос
/ 22 февраля 2012

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

Кстати: ваш код не выглядит как хороший дизайн: вы не должны передавать объекты Form.

0 голосов
/ 22 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...