如何使用的if-else语句表示值?

问题描述 投票:0回答:1

我最近开始学习C#,我想使不同单位的长度转换器。然而,似乎我不能使用if-else语句内声明的值。谁能帮帮我吗?

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace converter
{
    public partial class MainForm : Form
    {
    public MainForm()
    {
        InitializeComponent();
    }
    void ClearBClick(object sender, EventArgs e)
    {
        convIn.Clear();
        convOut.Clear();
        cmbConv.Refresh();
    }
    void ExitBClick(object sender, EventArgs e)
    {
        this.Close();
    }
    void ConvBClick(object sender, EventArgs e)
    { double exchangeRate;

        if(cmbConv.SelectedItem.ToString() == "Miles to Kilometers")
        {
            exchangeRate = 1.60934;
        }
        else if(cmbConv.SelectedItem.ToString() == "Kilometers to Miles")
        {
            exchangeRate = 0.621371;
        }
        else if(cmbConv.SelectedItem.ToString() == "Inches to Centimeters")
        {
            exchangeRate = 0.393701;
        }
        else if(cmbConv.SelectedItem.ToString() == "Centimeters to Inches")
        {
            exchangeRate = 2.54;
        }

        double conv = Convert.ToDouble(convIn.Text);
        var conversion = conv * exchangeRate;

        var result = Convert.ToString(conversion);

        convOut.Text = result;
        }

    }
}

我用这个之前,我使用了不同的结构,这也didn't工作,我在不同的方法分离的if-else语句。

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace converter
{
    public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
    }
    void ClearBClick(object sender, EventArgs e)
    {
        convIn.Clear();
        convOut.Clear();
        cmbConv.Refresh();
    }
    void ExitBClick(object sender, EventArgs e)
    {
        this.Close();
    }
    void ConvBClick(object sender, EventArgs e)
    {           double conv = Convert.ToDouble(convIn.Text);
        var conversion = conv * exchangeRate;

        var result = Convert.ToString(conversion);

        convOut.Text = result;
    }
    void CmbConvSelectedIndexChanged(object sender, EventArgs e)
    {
         double exchangeRate;

        if(cmbConv.SelectedItem.ToString() == "Miles to Kilometers")
        {
            exchangeRate = 1.60934;
        }
        else if(cmbConv.SelectedItem.ToString() == "Kilometers to Miles")
        {
            exchangeRate = 0.621371;
        }
        else if(cmbConv.SelectedItem.ToString() == "Inches to Centimeters")
        {
            exchangeRate = 0.393701;
        }
        else if(cmbConv.SelectedItem.ToString() == "Centimeters to Inches")
        {
            exchangeRate = 2.54;
        }

     }
 }
c# if-statement sharpdevelop
1个回答
3
投票

你试图使用你的exchangeRate方法称为ConvBClick变量,但该变量并不在该方法存在的。你在你的CmbConvSelectedIndexChanged方法创建一个类似命名的变量,但后来从来没有与任何东西。

更然而代码的整体结构,您CmbConvSelectedIndexChanged方法并没有真正做任何事情。它执行的任何时间上控制所选择的指数的变化,但它不会影响任何东西。相反,应对在所有SelectedIndexChanged事件,只写返回您无论基于何种当前选择的指标是希望值的方法:

double GetExchangeRate()
{
    double exchangeRate = 0.0;

    if(cmbConv.SelectedItem.ToString() == "Miles to Kilometers")
    {
        exchangeRate = 1.60934;
    }
    // etc., the rest of your conditions

    return exchangeRate;
}

然后在你点击链接你可以调用这个方法来获得当前汇率:

double conv = Convert.ToDouble(convIn.Text);
var exchangeRate = GetExchangeRate();
var conversion = conv * exchangeRate;

var result = Convert.ToString(conversion);

convOut.Text = result;
© www.soinside.com 2019 - 2024. All rights reserved.