Pregunta

SMSCOMMS SMSEngine = new SMSCOMMS("COM6");

El código no parece llevar a mi argumento de COM6 como ref string.How válida puedo solucionar esto?

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));
}
¿Fue útil?

Solución

No se puede pasar un temporal con ref, debido a que el método llamado debe ser capaz de asignar a la variable de la persona que llama. ¿Por qué lo estás usando para empezar? Nunca se asigna a COMMPORT.

¿Por qué no:

public SMSCOMMS(string COMMPORT)

Otros consejos

No hay necesidad de pasar un parámetro ref a menos que estés con la intención de modificar la variable real pasarle la persona que llama. Ya que no pueden modificar un literal de cadena (que es constante, por definición), que no es válida para el paso por referencia.

Sólo puede utilizar ref cuando estás pasando a algo que tiene una referencia útil. Eso significa que tiene que declarar una variable en primer lugar, a continuación, pasar esa variable por ref:

string comm = "COM6";
SMSCOMMS SMSEngine = new SMSCOMMS(ref comm);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top