C# 使用 terminal.gui 时无法找到对象引用
C# Cant find object reference when using terminal.gui
我一直在玩弄一些 server/client 的东西,虽然我尝试使用 terminal.gui,但出于某种原因我不明白它的表现。我有 2 个脚本;一个处理后端事务,一个处理用户 interface/interraction.
脚本 1:
using UI;
namespace ServerTest
{
public class Server
{
static void Main()
{
UI.UI.main();
StartServ();
RecieveConn.Start();
MngSockets.Start();
}
}
}
脚本 2:
using ServerTest;
using Terminal.Gui;
namespace UI
{
public class UI
{
static Window win = new Window(new Rect(0, 0, Application.Top.Frame.Width, Application.Top.Frame.Height), "MyApp");
public static void main()
{
Application.Init();
win.Add(new Label(0, 0, "asd"));
Application.Run(win);
}
}
}
这给了我错误:
System.TypeInitializationException
HResult=0x80131534
Message=The type initializer for 'UI.UI' threw an exception.
Source=Server
StackTrace:
at UI.UI.main() in C:\Users\ThisPc\Desktop\ConsoleApp2\ConsoleApp2\ui.cs:line 29
at ServerTest.Server.Main() in C:\Users\ThisPc\Desktop\ConsoleApp2\ConsoleApp2\Program.cs:line 23
Inner Exception 1:
NullReferenceException: Object reference not set to an instance of an object.
不过,如果我这样做,它会起作用:
using ServerTest;
using Terminal.Gui;
namespace UI
{
public class UI
{
public static void main()
{
Window win = new Window(new Rect(0, 0, Application.Top.Frame.Width, Application.Top.Frame.Height), "MyApp");
Application.Init();
win.Add(new Label(0, 0, "asd"));
Application.Run(win);
}
}
}
但是我不能在其他函数中使用 win
变量...
提前致谢 =)
感谢 mjwills 的回答...
就这样
using ServerTest;
using Terminal.Gui;
namespace UI
{
public class UI
{
static Window win = null;
public static void main()
{
win = new Window(new Rect(0, 0, Application.Top.Frame.Width, Application.Top.Frame.Height), "MyApp");
Application.Init();
win.Add(new Label(0, 0, "asd"));
Application.Run(win);
}
}
}
我一直在玩弄一些 server/client 的东西,虽然我尝试使用 terminal.gui,但出于某种原因我不明白它的表现。我有 2 个脚本;一个处理后端事务,一个处理用户 interface/interraction.
脚本 1:
using UI;
namespace ServerTest
{
public class Server
{
static void Main()
{
UI.UI.main();
StartServ();
RecieveConn.Start();
MngSockets.Start();
}
}
}
脚本 2:
using ServerTest;
using Terminal.Gui;
namespace UI
{
public class UI
{
static Window win = new Window(new Rect(0, 0, Application.Top.Frame.Width, Application.Top.Frame.Height), "MyApp");
public static void main()
{
Application.Init();
win.Add(new Label(0, 0, "asd"));
Application.Run(win);
}
}
}
这给了我错误:
System.TypeInitializationException
HResult=0x80131534
Message=The type initializer for 'UI.UI' threw an exception.
Source=Server
StackTrace:
at UI.UI.main() in C:\Users\ThisPc\Desktop\ConsoleApp2\ConsoleApp2\ui.cs:line 29
at ServerTest.Server.Main() in C:\Users\ThisPc\Desktop\ConsoleApp2\ConsoleApp2\Program.cs:line 23
Inner Exception 1:
NullReferenceException: Object reference not set to an instance of an object.
不过,如果我这样做,它会起作用:
using ServerTest;
using Terminal.Gui;
namespace UI
{
public class UI
{
public static void main()
{
Window win = new Window(new Rect(0, 0, Application.Top.Frame.Width, Application.Top.Frame.Height), "MyApp");
Application.Init();
win.Add(new Label(0, 0, "asd"));
Application.Run(win);
}
}
}
但是我不能在其他函数中使用 win
变量...
提前致谢 =)
感谢 mjwills 的回答...
就这样
using ServerTest;
using Terminal.Gui;
namespace UI
{
public class UI
{
static Window win = null;
public static void main()
{
win = new Window(new Rect(0, 0, Application.Top.Frame.Width, Application.Top.Frame.Height), "MyApp");
Application.Init();
win.Add(new Label(0, 0, "asd"));
Application.Run(win);
}
}
}