EDIT: Jawaban Baru disediakan. Saya baru mulai menggunakan C # ketika saya menulis jawaban pertama untuk pertanyaan ini, dan di belakang saya sekarang menyadari bahwa "solusi" saya adalah naif dan tidak efisien.
Jawaban asli saya: Saya akan menggunakan versi yang lebih sederhana:
if(Enumerable.Range(1,100).Contains(intInQuestion)) { ...DoStuff; }
A Better Way
Karena saya belum melihat solusi lain yang lebih efisien (menurut tes saya setidaknya), saya akan mencobanya lagi.
Cara baru dan lebih baik yang juga berfungsi dengan rentang negatif :
// Returns true if x is in range [min..max], else false
bool inRange(int x, int min=1, int max=100) => ((x - max)*(x - min) <= 0);
Ini dapat digunakan dengan rentang positif dan negatif dan default ke kisaran
1..100 (inklusif) dan digunakan xsebagai nomor untuk memeriksa diikuti oleh rentang opsional yang ditentukan oleh mindan max.
Menambahkan Contoh Untuk Ukuran Yang Baik
Contoh 1:
// Returns true if x is in range [min..max], else false
bool inRange(int x, int min=1, int max=100) => ((x - max)*(x - min) <= 0);
Console.WriteLine(inRange(25));
Console.WriteLine(inRange(1));
Console.WriteLine(inRange(100));
Console.WriteLine(inRange(25, 30, 150));
Console.WriteLine(inRange(-25, -50, 0));
Pengembalian:
True
True
True
False
True
Contoh 2: Menggunakan daftar int acak antara 1 dan 150
// Returns true if x is in range [min..max], else false
bool inRange(int x, int min=1, int max=100) => ((x - max)*(x - min) <= 0);
// Generate 100000 ints between 1 and 150
var intsToCheck = new List<int>();
var randGen = new Random();
for(int i = 0; i < 100000; ++i){
intsToCheck.Add(randGen.Next(150) + 1);
}
var counter = 0;
foreach(int n in intsToCheck) {
if(inRange(n)) ++counter;
}
Console.WriteLine("{0} ints found in range 1..100", counter);
Pengembalian:
66660 ints found in range 1..100
Waktu Eksekusi: 0,016 detik