我搜索了一段时间,发现没有解决方案,或者我只是没有看到这个小错误?
我用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真的是空的,但为什么呢?
我在哪里忘了什么?
答案 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
变量在代码