.Net'te yalnızca Visual Basic, anahtar deyimlerinde aralıklara izin verir, ancak C #'da bunun için geçerli bir sözdizimi yoktur.
C # 'da özel probleminizi çözerek, onu şu şekilde çözerdim:
if(number >= 1 && number <= 9)
{
if(number < 5)
{
}
else
{
}
}
else
{
}
Bunu daha fazla açıklamak için, bir yüzde değeriniz olduğunu hayal edin.
Probleminizi bir şablon olarak kullanarak, bunun şöyle görünmesini isteyebilirsiniz:
switch (percentage)
{
case (0 to 19):
break;
case (20 to 39):
break;
case (40 to 69):
break;
case (70 to 79):
break;
case (80 to 100):
break;
default:
break;
}
Bununla birlikte, C # bu sözdizimine izin vermediğinden, burada C # 'ın izin verdiği bir çözüm var:
if (percentage >= 0 && percentage <= 100)
{
if (percentage >= 40)
{
if (percentage >= 80)
{
}
else
{
if (percentage >= 70)
{
}
else
{
}
}
}
else
{
if (percentage >= 20)
{
}
else
{
}
}
}
else
{
}
Alışmak biraz zaman alabilir, ancak bir kez aldığınızda sorun değil.
Şahsen, aralıklara izin vermek için ifadeleri değiştirmekten memnuniyet duyarım.
C # switch ifadelerinin geleceği
Anahtar ifadelerinin nasıl iyileştirilebileceğine dair sahip olduğum bazı fikirler:
Versiyon A
switch(value)
{
case (x => x >= 1 && x <= 4):
break;
case (x => x >= 5 && x <= 9):
break;
default:
break;
}
Sürüm B
switch(param1, param2, ...)
{
case (param1 >= 1 && param1 <= 4):
break;
case (param1 >= 5 && param1 <= 9 || param2 != param1):
break;
default:
break;
}