Tjena! Jag har inget bra svar på varför felmeddelandet dyker upp, men när det gäller sambandet mellan default propertyn Item (i VB.Net) och indexerare (i C#) så är detta nästan samma sak. Alltså, i VB.Net hittar du en property som heter Item som är default, vilket gör att du kan skriva : "...does not have an indexer"
Jag har tidigare mest programmerat i VB.NET men har nu valt att lära mig lite mer i livet och har återupptagit c#.. ganska kul.
Jag har dock dykt på ett problem som jag tror är c#-relaterat men jag vet faktiskt inte om det är så.
Here goes:
Jag har en synnerligen enkel liten web-app som bara innehåller en sida. Mellan postningar på denna sida vill jag spara undan saker i viewstate, vilket normalt inte ska innebära problem. Trodde jag.
Koden i sig följer normal nomenklatur:
<code>
ViewState["myKey"] = "A value";
</code>
Då jag raden inunder försöker läsa ut värdet (med samma nyckel) för jag felet "ViewState does not have an indexer". Vaffan e problemet. Hjälpen uttrycker det hela som att Indexern är den property som heter Item (Nähä?!) men den propertyn står ej att finna....Sv:
<code>
ViewState("index")
</code>
i stället för
<code>
ViewState.Item("index")
</code>
I C# så finns inga default properties men i stället har man indexerare med syntaxet :
<code>
ViewState["index"]
</code>
Syntaxet för att deklarera en indexerare i C# är :
<code>
public int this[String s]
{
get {...}
set {...}
}
</code>
Eftersom this är ett keyword så ser man att de som designat C# har valt att inte identifiera indexerarna med ett namn (utan endast med signaturen, eller parameterlistan) . Det är detta som gör att default propertyn Item inte syns i C# i de fall där den är döpt till Item (ganska vanligt).
Hur som helst, kan inte förklara ditt problem...men jag fick ju i alla fall skriva av mig lite... :-)