SMSCOMMS SMSEngine = new SMSCOMMS("COM6");
該代碼似乎並不把我的論點COM6
作爲有效的ref string
。我該如何解決這個問題?我是否正確使用ref傳遞我的參數?
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));
}
錯誤。你可以在字符串中使用'ref',並且有時候你想要。如果該方法分配給'ref'變量,則調用者現在在其自己的變量中引用一個不同的字符串。 – 2010-06-14 06:04:10
我沒說字符串 - 我說string * literal *。如果您知道修改字符串文字的方法,讓.net人員知道它,導致它可能是一個錯誤。根據定義,文字是不變的。 「a」永遠不會是「a」。雖然它可以被另一個字符串替換,但這與修改字符串本身不同。 – cHao 2010-06-14 06:07:51
除此之外,有問題的代碼顯然是傳遞一個字符串文本,而不是一個變量(閱讀:*沒有變量分配給*),我認爲*是顯而易見的,並且你有理由破壞。 – cHao 2010-06-14 06:19:51