Pregunta

Estoy familiarizado con el uso de pasar en un tipo de datos simple para la manipulación, pero parece que no puedo entender cómo pasar en este Queue<> sin causar un error de compilación. ¿Alguna idea?

Código:

Queue<SqlCommand> insertScriptQueue = new Queue<SqlCommand>();

private void UpdateDefaultIndicator(int newDefaultViewID,
                                    out (Queue<SqlCommand>) insertScriptQueue)

UpdateDefaultIndicator(newViewID, out (Queue<SqlCommand>)insertScriptQueue);
¿Fue útil?

Solución

De todos modos, la cola se pasará por referencia, no es un tipo de valor. Simplemente no use 'fuera'. ACTUALIZACIÓN: Disculpe, estaba pensando en 'ref', pero el hecho de que esté pasando un tipo de datos de cola, y no solo una referencia no asignada, me hace pensar que quiere usar 'ref' de todos modos. Excepto, por supuesto, que no necesita usar 'ref' porque la Cola no es un tipo de valor; ya se va a pasar 'por referencia', por defecto.

Otros consejos

Estás pasando un tipo de referencia. No hay necesidad de usar.

No debería estar inicializando una variable de salida. Si necesita modificar una variable dentro del alcance, use ref en su lugar.

Como Ed señala en su comentario, " modificar " es posible que no le dé una idea completa de lo que está sucediendo aquí: un parámetro de salida de un tipo de referencia será, por definición, un objeto inicializado al final de la llamada a la función. Como la mayoría de las otras respuestas han señalado, si desea pasar un objeto inicializado, ref es la mejor opción.

Queue<SqlCommand> insertScriptQueue;

private void UpdateDefaultIndicator(int newDefaultViewID,
                                out Queue<SqlCommand> insertScriptQueue){/*body*/}

UpdateDefaultIndicator(newViewID,out insertScriptQueue);

Eso funciona bien para mí ... ¿Qué error está recibiendo?

¿Por qué quieres una cita &; out "e; ... aquí ... ¿por qué no devuelves el tipo? Deje que el método devuelva Cola & Lt; & Gt; en lugar de vacío ... ¿funcionará para ti?

asegúrese de que está asignando insertScriptQueue algún tipo de valor dentro del método UpdateDefaultIndicator

La respuesta a la pregunta original, por cierto, es que está enviando a Queue, y el reparto está devolviendo una referencia provisional. Esa referencia no es asignable, por lo que no es un parámetro legal de salida. El código de Erich implementa la solución para este problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top