2016-06-27 7 views
5

Quindi sto provando a passare una stringa locale a un altro modulo in un progetto C#. Questo è il mio codice:La proprietà o l'indicizzatore non può essere assegnata a "-" è di sola lettura

Modulo 1:

... 
Main frm = new Main(); 
frm.Passvalue = usrTxt.Text; 
frm.ShowDialog(); 

Modulo 2

... 
public string Username; 
public string Passvalue 
{ 
    get { return Username; } 
} 

sto ottenendo l'errore:

Property or indexer "Main.Passvalue" cannot be assigned to "--" it is read only

Non ho mai dichiarato nulla come ReadOnly, fa qualcuno sa qual è il problema qui?

+2

io che è perché non avete specificato 'immobili set' per' Passvalue' –

risposta

2

Se si vuole essere in grado di impostare vostra proprietà, è necessario aggiungere un set gestore:

public string Passvalue 
{ 
    get { return Username; } 
    set { Username = value; } 
} 

sarebbe più facile se utilizzare le proprietà auto-implementato subito:

public string Username 
{ 
    get; 
    set; 
} 
2

La vostra proprietà manca setter. Cambiarlo in:

public string Passvalue 
{ 
    get { return Username; } 
    set { Username = value; } 
} 
+0

Funziona ora, grazie! –

2

Il problema è che hai solo un getter per Form2.Passvalue, ma non setter. Aggiungere questo Form2:

public string Passvalue 
{ 
    get { return Username; } 
    set { Username = value; } // add this setter 
} 
7

Non ha setter, che lo rende una proprietà di sola lettura, modificarla in:

public string Passvalue 
{ 
    get { return Username; } 
    set { Username = value; } 
} 

Per inciso, questo sembra un po 'ridondante, come si sta esponendo pubblicamente Username Comunque. Generalmente è considerata una buona pratica rendere privati ​​i campi di classe.

1

La proprietà non ha setter.

Questo è il codice che è possibile utilizzare per getter e setter implementati automaticamente.

public string Username { get; set; } 
public string Passvalue { get; set; } 

Oppure, se si vuole ottenere e il valore del nome utente dal Passvalue set, è possibile utilizzare

public string Username { get; set; } 
public string Passvalue 
{ 
    get { return Username; } 
    set { Username = value; } 
} 
Problemi correlati