SMSCOMMS SMSEngine = new SMSCOMMS("COM6");
代码似乎没有将我COM6
的论点视为有效的ref string
。我该如何解决这个问题?
public class SMSCOMMS
{
public SMSCOMMS(ref string COMMPORT)
{
SMSPort = new SerialPort();
SMSPort.PortName = COMMPORT;
SMSPort.BaudRate = 9600;
SMSPort.Parity = Parity.None;
SMSPort.DataBits = 8;
SMSPort.StopBits = StopBits.One;
SMSPort.Handshake = Handshake.RequestToSend;
SMSPort.DtrEnable = true;
SMSPort.RtsEnable = true;
SMSPort.NewLine = System.Environment.NewLine;
ReadThread = new Thread(
new System.Threading.ThreadStart(ReadPort));
}
答案 0 :(得分:3)
您无法使用ref
传递临时值,因为被调用的方法必须能够分配给调用者的变量。你为什么一开始使用它?您永远不会分配到COMMPORT
。
为什么不呢:
public SMSCOMMS(string COMMPORT)
答案 1 :(得分:2)
除非您打算修改调用方传递的实际变量,否则无需传递ref
参数。由于无法修改字符串文字(根据定义它是常量),因此无法通过引用传递。
答案 2 :(得分:1)
当您传递具有可用参考的内容时,您只能使用ref
。这意味着你必须先声明一个变量,然后通过ref:
string comm = "COM6";
SMSCOMMS SMSEngine = new SMSCOMMS(ref comm);