为什么我会得到Null Exception?

时间:2012-02-22 09:09:45

标签: c# exception null

我搜索了一段时间,发现没有解决方案,或者我只是没有看到这个小错误?

我用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中我得到form1.send("data");的nullexception 看来form1真的是空的,但为什么呢?

我在哪里忘了什么?

5 个答案:

答案 0 :(得分:4)

您必须创建Form1的实例,尝试

public Form1 form1 = new Form1();

答案 1 :(得分:2)

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

form1永远不会被实例化。有你的NullReferenceException(NRE)。

更好:

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

答案 2 :(得分:1)

也许您忘了将form1中的testServer变量分配给构造参数。

顺便说一句:你的代码看起来不像是好设计:你不应该传递Form对象。

答案 3 :(得分:1)

它是null,因为你没有初始化它。

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

答案 4 :(得分:0)

form1变量在代码

中使用之前未初始化