Avatar billede stenmadsen Nybegynder
19. september 2003 - 18:57 Der 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;
    }
}
Avatar billede burningice Nybegynder
22. september 2003 - 09:15 #1
dine keywords skal ALTID stå FØR return-typen...

readonly string CacheIncrements {
  get {
        CacheIncrement increment;
        foreach (CacheIncrement increment in _cacheIncrements)
        {
            if (key == increment.Key)
            {
                return increment;
            }
        }
        return null;
  }
}
Avatar billede stenmadsen Nybegynder
22. september 2003 - 12:37 #2
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!
Avatar billede burningice Nybegynder
22. september 2003 - 14:48 #3
den har sq ingen parameter... hvad får dig til at tro det ?
Avatar billede burningice Nybegynder
22. september 2003 - 14:50 #4
en property kan ikke have nogen parameter
Avatar billede stenmadsen Nybegynder
22. september 2003 - 15:34 #5
Jeg har lidt en fobi overfor VB, så måske misforstår jeg VB koden, men

Overloads ReadOnly Property _
        CacheIncrements(key As String) As _
        CacheIncrement

ligner da unægtelig definitionen på en metode 
readonly CacheIncremnent CacheIncrements(String key) {}
Ikke?

Da overload kun 'kigger' på parametrene og ikke return-typen må get'eren have en parameter. Ellers giver det ingen mening at overload'e, vel!
Avatar billede burningice Nybegynder
22. september 2003 - 16:29 #6
jeg må nok sige, at det property-keyword irreterer mig... ellers kunne det jo være en indexer ??

readonly string this[string key] {
  get {
        CacheIncrement increment;
        foreach (CacheIncrement increment in _cacheIncrements)
        {
            if (key == increment.Key)
            {
                return increment;
            }
        }
        return null;
  }
}
Avatar billede stenmadsen Nybegynder
22. september 2003 - 17:46 #7
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.
Avatar billede stenmadsen Nybegynder
22. september 2003 - 17:50 #8
Hvordan er det nu lige man giver point, jeg kan ikke finde knappen!
Avatar billede burningice Nybegynder
23. september 2003 - 10:20 #9
det er fordi at jeg kun har lavet kommentarer...
Avatar billede stenmadsen Nybegynder
23. september 2003 - 20:58 #10
Her kommer dine points
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester