我正在按照在线教程学习如何编写串行通信器。
我使用的是VS2019和.Net 5.0,和教程中使用的环境不一样
要使用 SerialPort 工具,我尝试创建:
static SerialPort serialPort1;
如代码所示:
using System;
using System.Windows.Forms;
using System.IO.Ports;
namespace SerialPortCommunication {
public partial class Form1 : Form {
static SerialPort serialPort1;
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
string[] ports = System.IO.Ports.SerialPort.GetPortNames();
comboBox1.Items.AddRange(ports);
comboBox1.SelectedIndex = comboBox1.Items.Count > 0 ? 0 : -1;
}
private void button1_Click(object sender, EventArgs e) {
if (button1.Text == "Open Port") {
serialPort1.PortName = comboBox1.Text;
serialPort1.Open();
button1.Text = "Close Port";
}
else {
serialPort1.Close();
button1.Text = "Open Port";
}
}
}
}
执行时遇到System.NullReferenceException: 'Object reference not set to an instance of an object.'
但是我改成之后
static SerialPort serialPort1 = new SerialPort();
VS 不再显示异常。
我的问题是:
有人告诉我我们不需要也不能为静态对象创建实例,但在这种情况下,为什么我需要创建一个实例来初始化 serialPort1?
我很困惑……
作为一个初学者,我可能会有一些不清楚的概念。你能给我一些指导或推荐一些资源供我学习吗?