[C#]array of chars readonly?

Pagina: 1
Acties:

  • Magic
  • Registratie: September 2001
  • Niet online
ik ben een paar dagen geleden begonnen met c#, ik heb al wat ervaring met c++ en delphi, dus zo heel groot is die overstap niet. maar hier is een probleem waar ik niet uitkom. ik wil een soort galgje maken, zoals ik al eens eerder in dephi had gedaan. ik heb het boek er al eens op doorgespit, maar ik kon niks vinden. ook de search en google boden geen uitkomst.
waarschijnlijk is het zo simpel dat het gewoon nooit gevraagd word. alleen ik heb nu het punt berijkt dat ik het liefst alles het raam uitgooi.

code:
1
2
3
4
5
6
7
8
9
10
private void button1_Click(object sender, System.EventArgs e)
{
    string teradenwoord=textBox2.Text.ToUpper();
    string puntwoord="woord";
    for(int t=0;t < teradenwoord.Length;t++)
    {
        puntwoord[t]='.';
    }
    label4.Text=puntwoord;
}

naar mijn weten hoort dit gewoon te werken, maar dan geeft de compiler de volgende fout:
Property or indexer 'string.this[int]' cannot be assigned to -- it is read only
de bedoeling is dus, dat label4.text evenveel puntjes krijgt als dat het te raden woord letters heeft.

Steam: Brainfrz82 | PSN: Brainfrz | Discord: Brainfrz


Verwijderd

Wat je doet is niet zo netjes vandaar dat c# het niet helemaal leuk vind. Ik zou gewoon met een char array werken en een nieuwe string aanmaken met de constructor die een char array aanvraagt. Het volgende voorbeeldje werkt volgens mij aardig (niet getest)

string teradenwoord=textBox2.Text.ToUpper();
char[] cPuntWoord = new Char[teradenwoord.Length];
for(int t=0;t < teradenwoord.Length;t++)
{
cPuntWoord[t]='.';
}
label4.Text=new String(cPuntWoord);

  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
is teradenwoord, misschien langer dan puntwoord?
Maar je weet nog niet hoelang teradenwoord is.

/me weet geen leuke quote voor in zijn signature


  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

An instance of String is said to be immutable because its value cannot be modified once it has been created. Methods that appear to modify a String actually return a new String containing the modification. Use the System.Text.StringBuilder class if it is necessary to actually modify the contents of a string-like object.
Dus ja, strings zijn per definitie readonly.

Jouw probleem is trouwens veel makkelijker op te lossen:
code:
1
  string puntwoord = String('.',teradenwoord.Length);

[ Voor 8% gewijzigd door Rataplan op 30-08-2003 15:38 ]


Journalism is printing what someone else does not want printed; everything else is public relations.


  • Magic
  • Registratie: September 2001
  • Niet online
KnoppenSpook schreef op 30 August 2003 @ 15:29:
is teradenwoord, misschien langer dan puntwoord?
Maar je weet nog niet hoelang teradenwoord is.
had ik ook al aan gedacht, maar het scheen niks uit te maken.

Reneos: thanx, de code ziet er heel aannemelijk uit, ik ga het direct even proberen.
die code werkt, thanx! :)

rataplan: jou code werkt niet, hij geeft de volgende fout:
'string' denotes a 'class' which is not valid in the given context

[ Voor 20% gewijzigd door Magic op 30-08-2003 15:42 ]

Steam: Brainfrz82 | PSN: Brainfrz | Discord: Brainfrz


  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

Pardon!
code:
1
  string puntwoord = new String('.',teradenwoord.Length);


Journalism is printing what someone else does not want printed; everything else is public relations.


  • Magic
  • Registratie: September 2001
  • Niet online
Rataplan schreef op 30 August 2003 @ 15:53:
Pardon!
code:
1
  string puntwoord = new String('.',teradenwoord.Length);
Kijk, daar hebben we wat aan :)
minder typewerk is natuurlijk altijd welkom. :)

Steam: Brainfrz82 | PSN: Brainfrz | Discord: Brainfrz

Pagina: 1