2
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));
}
4

3 に答える 3

3

ref呼び出されたメソッドは呼び出し元の変数に割り当てることができる必要があるため、一時的なものを渡すことはできません。そもそもなぜ使っているのですか?に割り当てることはありませんCOMMPORT

なぜだけではないのですか?

public SMSCOMMS(string COMMPORT)
于 2010-06-14T05:39:51.040 に答える
2

ref呼び出し元が渡した実際の変数を変更する場合を除いて、パラメーターを渡す必要はありません。文字列リテラル(定義上は定数)を変更できないため、参照渡しには無効です。

于 2010-06-14T05:47:10.253 に答える
1

ref使用可能な参照があるものを渡す場合にのみ使用できます。つまり、最初に変数を宣言してから、その変数をrefで渡す必要があります。

string comm = "COM6";
SMSCOMMS SMSEngine = new SMSCOMMS(ref comm);
于 2010-06-14T05:49:14.163 に答える