Pengkompil C# membenderakan ralat "Penggunaan pembolehubah tempatan yang tidak ditetapkan" apabila pembolehubah annualRate
, monthlyCharge
dan lateFee
mungkin digunakan tanpa penetapan sebelumnya yang terjamin. Ini biasanya berlaku dalam logik bersyarat di mana tidak semua laluan pelaksanaan memulakan pembolehubah ini.
Berikut ialah beberapa penyelesaian untuk menghapuskan ralat ini:
Kaedah 1: Permulaan Terjamin dengan if-else
Ganti penyataan if
bersarang dengan blok if-else
untuk memastikan setiap laluan pelaksanaan yang mungkin memberikan nilai kepada pembolehubah:
<code class="language-csharp">if (creditPlan == "0") { annualRate = 0.35; lateFee = 0.0; monthlyCharge = balance * (annualRate * (1.0 / 12.0)); // Note: Use 1.0/12.0 for floating-point division } else { // Handle other credit plan scenarios here. Assign values to annualRate, lateFee, and monthlyCharge. annualRate = 0.0; //Example: Default values lateFee = 0.0; monthlyCharge = 0.0; }</code>
Kaedah 2: Permulaan Pembolehubah Preemptive
Isytihar dan mulakan pembolehubah dengan nilai lalai sebelum logik bersyarat:
<code class="language-csharp">double annualRate = 0.0; double lateFee = 0.0; double monthlyCharge = 0.0; if (creditPlan == "0") { annualRate = 0.35; lateFee = 0.0; monthlyCharge = balance * (annualRate * (1.0 / 12.0)); } // ... rest of your code ...</code>
Pendekatan ini memastikan pembolehubah wujud dan mempunyai nilai, walaupun syarat if
tidak dipenuhi.
Kaedah 3: Menggunakan switch
Penyata (untuk berbilang pelan kredit)
Jika anda mempunyai berbilang pilihan pelan kredit, penyata switch
menyediakan penyelesaian yang lebih bersih dan mudah dibaca:
<code class="language-csharp">switch (creditPlan) { case "0": annualRate = 0.35; lateFee = 0.0; monthlyCharge = balance * (annualRate * (1.0 / 12.0)); break; case "1": // Handle credit plan "1" annualRate = 0.25; //Example lateFee = 10.0; //Example monthlyCharge = balance * (annualRate * (1.0 / 12.0)); //Example break; default: // Handle default or unknown credit plans annualRate = 0.0; lateFee = 0.0; monthlyCharge = 0.0; break; }</code>
Ingat untuk sentiasa mengendalikan semua kes yang mungkin dalam switch
untuk mengelakkan ralat pembolehubah yang tidak ditetapkan. Kes default
adalah penting untuk ini.
Dengan melaksanakan salah satu kaedah ini, anda menjamin bahawa annualRate
, monthlyCharge
dan lateFee
sentiasa diberikan nilai sebelum digunakan, menyelesaikan ralat pengkompil. Perhatikan penggunaan 1.0 / 12.0
untuk pembahagian titik terapung untuk mengelakkan pemotongan integer.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Penggunaan Pembolehubah Tempatan Tidak Ditugaskan' dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!