Jag vill att en textvariabel skall kunna byta namn efter det att slingan körs. Detta är egentligen inget konstigt, du kan inte byta namn på en variabel i runtime. Anledningen till att det fungerar i ditt ViewState-test är att ViewState fungerar som (eller rättare sagt är ett) Dictionary där du sätter Key och Values. Hej Robin. Jag har nu lyckats med att lösa problemet. Jag var in på din hemsida och tittade på ditt Musikquiz vilket jag antar att detta berör, rolig grej, tyvärr är inte musik min grej :) Hej och tack. Jag misstänkte att du skulle gå den vägen, jag måste sätta mig ner och utforska det lite bättre ;-)Problem i en for-slinga
Just nu så har jag en massa variabler, textFont1 textFont2 textFont3 osv
Jag försöker att köra..
<code>
string textFont;
for (int i = 1; 1 < 11; i++)
{
textFont + i.ToString() = "blue";
}
</code>
Jag får ett error: The left-hand side of an assignment must be a variable, property or indexer.
Skall man inte kunna göra så här?
Jag gjorde ett annat experiment som fungerar:
<code>
ViewState["svar1"] = "jag ";
ViewState["svar2"] = "vill ";
ViewState["svar3"] = "testa ";
ViewState["svar4"] = "detta ";
ViewState["svar5"] = "nu";
string text = "";
string tal="";
for (int i = 1; i < 6; i++)
{
tal="svar" +i.ToString();
text += ViewState[tal].ToString();
}
Label2.Text = text ;
</code>
Detta fungerar kanonbra och det är därför som jag undrar om " textFont + i.ToString"Sv: Problem i en for-slinga
I ditt fall så känns det som att den enklaste lösningen skulle vara att lägga alla värden i en lista eller en array om du inte vill ha en hel massa variabler.
Förklara gärna mera exakt vad det är du vill göra så är det enklare att föreslå en bra lösning!Sv:Problem i en for-slinga
Jo det är min frågesport som jag håller på att modernisera/förbättra och portar för mySQL.
För att kolla svar, rätt osv så har jag en väldigt lång lista med if-satser..
<code>
if (RadioButtonList1.SelectedValue.ToString() == ViewState["svar1"].ToString())
{
ratt += 1;
textFont1 = "blue";
}
else
textFont1 = "red";
</code>
..och det finns alltså 10 stycken liknande.
Jag försökte sedan och vara smart(!) och gjorde följande..
<code>
private static string deleString(int i, string result)
{
string newResult = "";
string[] nytt;
if (i == 1)
{
nytt = result.Split(',');
newResult = nytt[0].ToString();
}
else
{
nytt = result.Split(',');
newResult = nytt[1].ToString();
}
return newResult;
}
private static string checkValue(int ratt, string thisValue, string nextValue)
{
string textColor = "red";
if (thisValue == nextValue)
{
ratt += 1;
textColor = "blue";
}
string svar = ratt.ToString() + "," + textColor;
return svar;
}
//som körs så här..
ratt = Convert.ToInt32(deleString(1, checkValue(ratt, RadioButtonList1.SelectedValue.ToString(), ViewState["svar1"].ToString()).ToString()));
textFont1 = deleString(2, checkValue(ratt, RadioButtonList1.SelectedValue.ToString(), ViewState["svar1"].ToString()).ToString());
</code>
.. det fungerar men jag tycker att det ser klumpigt ut, och jag funderade då på att försöka att bygga en snurra.
Det var därför som jag ställde denna frågan i från första början.Sv: Problem i en for-slinga
<code>
//göra mina variabler public
public string textFont1 = "red";
public string textFont2 = "red";
//osv
public int ratt = 0;
//en ny class
private string makeValue(RadioButtonList rbl, string vieState, string textFont)
{
if (rbl.SelectedValue.ToString() == vieState)
{
ratt += 1;
textFont = "blue";
}
return textFont;
}
//och sedan
textFont1 = makeValue(RadioButtonList1, ViewState["svar1"].ToString(), textFont1);
</code>
Det är nog inte omöjligt att någon kan hitta ett bättre/effektivare sätt, men jag är nöjd med att jag löste det.Sv:Problem i en for-slinga
Kul att du löste det! Jag blev lite inspirerad och gjorde en variant på hur jag själv skulle ha löst det. Om du är intresserad av att titta på mitt lilla demo-projekt kan du hämta ner WebQuiz.zip från den här länken: https://skydrive.live.com/redir.aspx?cid=48cc9ff92ddd6dca&resid=48CC9FF92DDD6DCA!350&parid=48CC9FF92DDD6DCA!109&authkey=!AEPq1ewB2HAiaSI
Hör av dig om du har frågor på den koden :)Sv: Problem i en for-slinga