[C#] Array maken met als index een char.

Pagina: 1
Acties:

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Ik heb me al lam gezocht op Google en zelfs in de documentatie, maar ik kan niet vinden hoe je een array maakt met als index een char, of een string?

In PHP zou je zoiets doen:
PHP:
1
2
3
4
<?php
$aX = array('c' => 'b');
echo $aX['c']; // dit werkt
?>


Maar ik kan maar nergens vinden hoe dit in C# gaat?


Ook kan ik overigens geen functie vinden die iets simpels als dit doet:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if (isset($aX['c']))
{
    // ...
}

// of

if (array_key_exists('c', $aX))
{
    // ...
}
?>


Dit zou ik dan eventueel weer met een try/catch op kunnen vangen, maar ik geef persoonlijk de voorkeur aan een nette if/else.

Kan iemand mij misschien een schop in de goede richting geven?

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • Daspeed
  • Registratie: Maart 2001
  • Nu online
Kijk eens naar een hashtable of een dictionary of iets dergelijks.

Verwijderd

C# => Hashtable ?

  • user109731
  • Registratie: Maart 2004
  • Niet online
l0c4lh0st schreef op donderdag 05 april 2007 @ 11:05:
Ook kan ik overigens geen functie vinden die iets simpels als dit doet:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if (isset($aX['c']))
{
    // ...
}

// of

if (array_key_exists('c', $aX))
{
    // ...
}
?>


Dit zou ik dan eventueel weer met een try/catch op kunnen vangen, maar ik geef persoonlijk de voorkeur aan een nette if/else.
De al genoemde hashtable heeft daarvoor dus een containsKey method :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
een hashtable heeft niet dezelfde eigenschappen als een array. Een hashtable is een 'key/value' collection waarbij de key unique moet zijn.
Als die key echt unique moet zijn, dan is een Hashtable idd wel de goede oplossing. (Of, als je gebruikt maakt van .NET 2.0, kijk dan beter eens naar de generic Dictionary. Dan heb je meteen een typed oplossing).

Hmm, nouja, bij een array is je index ook wel uniek natuurlijk. :p

[ Voor 34% gewijzigd door whoami op 05-04-2007 11:46 ]

https://fgheysels.github.io/


  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Hallo mensen, ja, met een Hashtable kan ik wel vooruit denk ik zo!

Bedankt!

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • Daos
  • Registratie: Oktober 2004
  • Niet online
In weet niet zoveel van C#, maar in gewoon C kan je een character als index gebruiken:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <limits.h>
#include <stdio.h>

int main() {
    int groot[CHAR_MAX];
    int klein[26];


    groot['X'] = 100;
    klein['Y' - 'A'] = 200;

    printf("X = %d, Y = %d\n", groot['X'], klein['Y' - 'A']);
}

[ Voor 2% gewijzigd door Daos op 05-04-2007 13:33 . Reden: CHAR_MAX is simpeler dan 1 << CHAR_BIT ]


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

whoami schreef op donderdag 05 april 2007 @ 11:17:
[...]

een hashtable heeft niet dezelfde eigenschappen als een array. Een hashtable is een 'key/value' collection waarbij de key unique moet zijn.
PHP arrays zijn eigenlijk ook geen arrays ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Daos
  • Registratie: Oktober 2004
  • Niet online
.oisyn schreef op donderdag 05 april 2007 @ 12:56:
[...]

PHP arrays zijn eigenlijk ook geen arrays ;)
offtopic:
Het zijn in Php Associatieve arrays.


[edit]
De link is zowaar ontopic. Bij de sectie C# staan voorbeelden hoe een associatief array daarin is te implementeren.

[ Voor 17% gewijzigd door Daos op 05-04-2007 13:25 ]


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 11:05

voodooless

Sound is no voodoo!

Daos schreef op donderdag 05 april 2007 @ 12:43:
In weet niet zoveel van C#, maar in gewoon C kan je een character als index gebruiken
Dat kan C# natuurlijk ook, maar dan heb je wel het probleem dat je een fixed size array moet hebben, en dat is zonde als je alleen (char)0 en (char)247 wil opzoeken. Je hebt dan een berg ongebruikte velden.

Do diamonds shine on the dark side of the moon :?


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dat is de abstracte naam ja, ik had het over de standaard array waarbij elementen aaneensluitend in het geheugen staan, zoals een native Java, C, C++ en C# array. De PHP arrays zijn niet als dusdanig geïmplementeerd.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

voodooless schreef op donderdag 05 april 2007 @ 13:34:
[...]


Dat kan C# natuurlijk ook, maar dan heb je wel het probleem dat je een fixed size array moet hebben, en dat is zonde als je alleen (char)0 en (char)247 wil opzoeken. Je hebt dan een berg ongebruikte velden.
Treedt veel fragmentatie op idd, volgens mij zoekt topic starter gewoon een (generic) hashmap/table.
Pagina: 1