webForumDet fria alternativet

Select Case och dynamiska multi-case-satser?

2 svar · 531 visningar · startad av Lukaspojken

LukaspojkenMedlem sedan maj 20011 312 inlägg
#1

Finns det något smart sätt att skapa en dynamisk flervärdes case? Så här skulle jag vilja att det fungerar men case:n tar inte emot en en-dimensionell-array.

        Dim StrCaseExpression As String = "9;2"
        Dim StrInputParameter As String = "2"

        Select Case StrInputParameter
            Case Split(StrCaseExpression , ";")
                  'kod
            Case Else
                  'kod
        End Select

Jag vill inte skriva "Case 9, 2" eftersom StrCaseExpression kan skilja sig åt i dels värden och antal värden. Är det möjligt att lösa detta via en select case?

headbugMedlem sedan sep. 2006867 inlägg
#2

Hur har du tänkt dig att case:n ska gälla? Är caset 9;3;2;41 unikt eller en konkatenering av innehållet i case 9, 3, 2 och 41?

I fallet ett unikt dynamiskt case så måste du ju ändå skriva just ett case för varje tänkbar kombination (låter krångligt) så då kan du tex göra flernivåcase. I det andra fallet så kan du ju loopa igenom med en for each eller en for-slinga och samla på dig case-innehåll.

tohaMedlem sedan dec. 1999707 inlägg
#3

Lägg det i en hashtable och kolla värdet av inputsträngen. Ex i c#:

Hashtable h = new Hashtable();
h.Add("2", "case_01");
h.Add("9", "case_01");
h.Add("10", "case_02");
h.Add("12", "case_02");

string StrInputParameter = "2";
if (h.Contains(StrInputParameter))
{
    switch (h[StrInputParameter].ToString())
    {
        case "case_01" :
              ...
              break;
        case "case_02" :
              ...
              break;
       default:
    }
}
129 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)