Avatar billede karryen Nybegynder
10. januar 2006 - 20:30 Der er 21 kommentarer og
1 løsning

Klasse i klasse

Hej,

Jeg har laven en klasse i en klasse

Public Class Klasse1

public info1 as string = "1"

public class under-klasse

public info2 as string = "2"

end class

end class


det virker fint nok, men jeg kan ikke se mine informationer i 'under-klassen'. altså jeg kan ikke få fat i informationen i klasse1.klass2.info2
Avatar billede arne_v Ekspert
10. januar 2006 - 20:32 #1
din underklasse er jo netop en klasse og ikke en instans ...
Avatar billede karryen Nybegynder
10. januar 2006 - 20:35 #2
hvordan kan jeg ellers lave det?
Avatar billede arne_v Ekspert
10. januar 2006 - 20:36 #3
Imports System

Public Class K1
    Public Class K2
        Public v As Integer = 123
    End Class
    Public Shared Sub Main(ByVal args As String())
        Dim o As K1 = New K1
        Console.WriteLine(o.K2.v)
    End Sub
End Class

giver fejl men følgende virker:

Imports System

Public Class K1
    Public Class K2
        Public v As Integer = 123
    End Class
    Public f As K2 = New K2
    Public Shared Sub Main(ByVal args As String())
        Dim o As K1 = New K1
        Console.WriteLine(o.f.v)
    End Sub
End Class
Avatar billede arne_v Ekspert
10. januar 2006 - 20:36 #4
iøvrigt vil jeg klart anbefale dig *ikke* at lave klasser inden i klasser
Avatar billede karryen Nybegynder
10. januar 2006 - 20:38 #5
ja okay, man man kan ikke lave det sådan at jeg bare skriver sådan

dim test as new Klasse1
msgbox(Klasse1.under-klasse.info2)
Avatar billede arne_v Ekspert
10. januar 2006 - 20:42 #6
tror jeg ikke

en klasse er en type ikke en instans
Avatar billede karryen Nybegynder
10. januar 2006 - 20:44 #7
hvad er en instans?
Avatar billede arne_v Ekspert
10. januar 2006 - 20:50 #8
det du producerer når du laver en New

integer er en type

mens 123 er en instans af en integer

i mit sidste eksempel er K2 en type mens f er en instans af K2
Avatar billede arne_v Ekspert
10. januar 2006 - 20:51 #9
hvorfor vil du lave en klasse i en klasse ?
Avatar billede karryen Nybegynder
10. januar 2006 - 20:52 #10
okay, så er jeg med.

Men det er da underligt man ikke kan det jeg vil, det er jo muligt med fx. klssen system.
Avatar billede arne_v Ekspert
10. januar 2006 - 20:55 #11
System er ikke en klasse men et namespace
Avatar billede karryen Nybegynder
10. januar 2006 - 20:57 #12
fungere de ikke på samme måde?
Avatar billede karryen Nybegynder
10. januar 2006 - 20:57 #13
hvis ikke, er det muligt at lave sit eget namespace?
Avatar billede arne_v Ekspert
10. januar 2006 - 20:59 #14
nej

ja

Namespace EEEE
    Public Class K
     
    End Class
End Namespace
Avatar billede karryen Nybegynder
10. januar 2006 - 21:01 #15
jeg ville su kunne lave et namespace sådan

Namespace EEEE
    Public Class K
     
public test as string = "test"

    End Class
End Namespace

--------

dim test2 as new EEEE

msgbox(test2.K.test)
Avatar billede arne_v Ekspert
10. januar 2006 - 21:21 #16
nej

dim test2 as new EEEE.K

msgbox(test2.test)
Avatar billede karryen Nybegynder
10. januar 2006 - 21:22 #17
okay, mange tak. smd et svar
Avatar billede arne_v Ekspert
10. januar 2006 - 21:24 #18
svar
Avatar billede burningice Nybegynder
11. januar 2006 - 13:23 #19
arne>> nestede klasser... hvorfor mener du det er en så dårlig ide? det findes jo også i .Net frameworket.
Avatar billede arne_v Ekspert
11. januar 2006 - 15:21 #20
ja

og i Java sprog og Java API

og i C++ sprog

jeg synes at det er en forvirrende feature som er unødvendig

ligesom Pascal rutiner inden i rutiner

KISS princippet
Avatar billede burningice Nybegynder
11. januar 2006 - 16:32 #21
Nu referede jeg mere til, at Microsoft selv har brugt det, ikke at det var en feature i .Net.

Jeg synes personligt det er en praktisk ting i de tilfælde hvor du har brug for en helper der kun skal bruges i forbindelse med en enkelt klasse. Istedet for at have den til at ligge og flyde i et namespace nester du den i den klasse den skal bruges i. Dette er også set flere steder i .Net frameworket.
Avatar billede arne_v Ekspert
11. januar 2006 - 17:01 #22
men det kunne man jo også have lavet rimeligt pænt ved hjælp af
normale klasser og metoder med passende accessability

og så have undgået en kompleks sprog konstruktion

(selvom .NET nested classes ikke er nær så slem som Java inner classes)
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
Kurser inden for grundlæggende programmering

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