Ein ref-oder out-argument muss ein zuweisbarer variable

Ich bin der Codierung eine Anwendung, die eine reverse-proxy-Verbindung, aber ich habe ein problem!!!
Der Fehler ist hier: new Form1.ProxyConfig()

Wenn ich ihn starten will bekomme ich eine Fehlermeldung: "Ein ref-oder out-argument muss ein zuweisbarer variable"

private void startToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (this.startToolStripMenuItem.Text == "Start")
    {
        var form2 = new Form2();

        if (form2.ShowDialog() != DialogResult.OK)
            return;

        int num1 = Form1.ProxyListenerStart(ref new Form1.ProxyConfig()
        {
            pclient_port = form2.ClientPort,
            pp_start = form2.LocalStartPort,
            pp_end = form2.LocalEndPort
        }, ref this._PN);

        if (num1 != 0)
            int num2 = (int) MessageBox.Show("Error " + num1.ToString());
        else startToolStripMenuItem.Text = "Stop";
    }
    else
    {
        Form1.ProxyListenerStop();

        startToolStripMenuItem.Text = "Start";
        listView1.Items.Clear();
        toolStripStatusLabel2.Text = "0";
    }
}
private struct ProxyConfig
{
    public int pclient_port;
    public int pp_start;
    public int pp_end;
}
Dies ist ein sehr starkes Indiz dafür, dass die Methode sollte nicht sein, die übergabe der parameter per Referenz in den ersten Platz, denn der Anrufer ist nicht zu erwarten, die variable mutiert ist (weil es keine variable).
Nein, es ist nicht ein Hinweis an alle. Wenn der Anrufer nicht über einen ref-parameter, dann hätte man eine ganz andere Art von Fehlermeldung. Dies ist ein ganz anderes Problem: Ausdrücke können nicht zugeordnet werden ... wie die Fehlermeldung ganz explizit sagt.
Ich sage nicht, dass der Anrufer sollte einfach weglassen ref keyword-und dann wird es funktionieren, werde ich sagen, dass das Update so ändern Sie die Methode so, dass es nicht mehr übergibt die parameter per Referenz, anstatt es zu verändern übergeben in eine variable anstatt eines Wertes. Es ist nicht nur der Behebung von compiler-Fehler, aber eigentlich ist das schreiben eine gute Lösung.
Meine Aussage oben ist korrekt: der Fehler ist nicht ein sehr starkes Indiz dafür, dass die parameter nicht per Referenz übergeben werden -- die beiden Fragen sind völlig orthogonal. Die Anrufer müssen die Aktualisierung der ProxyConfig übergeben -- es gibt keine Möglichkeit zu wissen, dass aus dem obigen code. Und es ist wahrscheinlich, dass die OP nicht schreiben und hat keine Kontrolle über ProxyListenerStart.

InformationsquelleAutor Cazanova Haxor | 2014-07-18

Schreibe einen Kommentar