Avatar billede lizardine Nybegynder
25. april 2004 - 14:39 Der er 12 kommentarer og
1 løsning

VB Type i C#

Hej

Jeg har siddet og arbejdet en del med definerede typer i VB6 og jeg vil høre om der er noget ligende i C#, og hvordan dette opbygges.

Et VB6 eksempel kunne være

Public Type thisType
    tName As String
    tAddress As String
    tPhone As String
End Type

Public MyType(3) As thisType

På forhånd tak.
Avatar billede arne_v Ekspert
25. april 2004 - 14:42 #1
Enten en struct eller en class.

En struct er nok tættest på hvad du søger.

struct Foobar
{
  string a;
  string b;
  string c;
}
Avatar billede arne_v Ekspert
25. april 2004 - 14:43 #2
public struct Foobar
{
  string a;
  string b;
  string c;
}

hvis den skal være public.
Avatar billede arne_v Ekspert
25. april 2004 - 14:44 #3
public Foobar[] trestk = new Foobar[3];

for at lave et array med 3 af dem.
Avatar billede lizardine Nybegynder
25. april 2004 - 14:50 #4
Hvordan tilføjer man så værdier til sin Struct. I VB vil det være:

trestk(0).a = "Bogstav A"
trestk(0).b = "Bogstav B"

osv...
Avatar billede arne_v Ekspert
25. april 2004 - 14:52 #5
trestk[0].a = "AAA";
trestk[0].b = "BBB";
trestk[0].c = "CCC";

så det ligner rigtigt meget !
Avatar billede lizardine Nybegynder
25. april 2004 - 15:05 #6
Det har jeg ogaå forsøgt men der kommer en fjel. Det er måske mig der blander tingene lidt sammen. Jeg har lagt min Struct uden min klasse. Se mit eksempel her:

namespace MinStruct
{
    public struct Char
    {
    string IllegalChar;
    string LegalChar;
    }

    public class ConverterIllegalChar
    {
   
    public Char[] sChar = new Char[2];

    public ConverterIllegalChar()
    {
    }

    private void AddIllegalChar()
    {
        sChar[0].IllegalChar = "Et tegn";
                sChar[0].LegalChar = "Et adnet tegn";
    }
    }
}
Avatar billede arne_v Ekspert
25. april 2004 - 15:10 #7
public struct Char
    {
    public string IllegalChar;
    public string LegalChar;
    }

sorry
Avatar billede lizardine Nybegynder
25. april 2004 - 15:14 #8
Det er meget fornemt. Tusind tak for hjælpen :-)
Avatar billede nielsbrinch Nybegynder
27. april 2004 - 18:40 #9
Jeg forstår overhovedet ikke formålet med en struct - som jeg forstår det, er det bare en klasse der ikke kan indeholde metoder. Der er altså ikke mulighed for indkapsling.

Jeg har en teori om at det bare er taget med i C#, for at tilfredsstille C++ programmører, el. lign.
Avatar billede arne_v Ekspert
27. april 2004 - 18:44 #10
En C# struct kan godt indeholde metoder.

(det kan en C++ struct også men ikke en C struct)

Der er ihvertfald en speciel egenskab ved struct nemlig at de er
value typer ikke reference typer.

Du har sikkert ret i at struct er med p.g.a. C/C++ arven.

Java har f.eks. ikke struct.

Personligt er jeg glad for C struct som en "let vægts struktur".
Avatar billede nielsbrinch Nybegynder
27. april 2004 - 19:31 #11
Vil det sige at hvis jeg gemmer en ArrayList i min struct, bliver den ArrayList klonet når jeg henter den ud? (eller svarende til)
Avatar billede arne_v Ekspert
27. april 2004 - 20:03 #12
Nej. Din reference bliver klonet.
Avatar billede arne_v Ekspert
27. april 2004 - 20:10 #13
Eksempel (banalt men illustrativt):

using System;

public struct AStruct
{
    public int v;
}

public class AClass
{
    public int v;
}

class MainClass
{
    public static void Main(string[] args)
    {
        AStruct s;
        AClass c = new AClass();
        s.v = 123;
        c.v = 123;
        AStruct s2 = s;
        AClass c2 = c;
        s2.v++;
        c2.v++;
        Console.WriteLine(s.v + " " + c.v);
    }
}
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