19. september 2003 - 18:57Der er
9 kommentarer og 1 løsning
VB.NET til C# omskrivning af overloads property
Jeg er ved at omskrive noget VB.NET kode til C#. I VB koden er der defineret en "Overload property" som jeg ikke umiddelbart kan løse i C#. Et par gode hints eller forslag vil derfor være velkomne.
VB-kode som skal omskrives
<XmlIgnore> _ Overloads ReadOnly Property _ CacheIncrements(key As String) As _ CacheIncrement Get Dim increment As CacheIncrement For Each increment In _cacheIncrements If key = increment.Key Then Return increment End If Next increment Return Nothing End Get End Property
Mit eget forsøg i C# (Syntaksen er ikke korrekt i C# og kan derfor ikke kompileres)
[XmlIgnore] CacheIncrement readonly CacheIncrements(string key) { get { CacheIncrement increment; foreach (CacheIncrement increment in _cacheIncrements) { if (key == increment.Key) { return increment; } } return null; } }
ja, selvfølgelig det var en smutter, MEN det egentlige problemt er at get'er -metoden i VB-script har en paramter "string key". Det er vist ikke tilladt i C# (ligesom i java). Kompileren melder ";expected" efter get. Endvidere får jeg kompilerfejlen "xxxx already contains a definition for 'CacheIncrements'". Det synes at tyde på at get-metoden ikke kan overloads, ikke!
Jeg har læst lidt på lektionen, og property og indexer er jo faktisk to sider af samme sag. For (instantierede) objekter man kan vel sige at en "property" er det special tilfælde af en indexer, hvor der kun er et element! Jeg giver point, og må så se at få det implementeret.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.