4

(私は C# コーディングの世界に新たに導入されました。) 私は現在、C# 言語で関数を使用して作業しようとしています。total distance traveledプログラムの目標は、とを使用して平均を計算し、これにtotal hours traveledNY 市から MIAMI までの時間を掛けて、NY 市から MIAMI までの距離を求めることです。

結果(ニューヨーク市からマイアミまでの距離)を得るために、関数(コンテンツに関して)を適切に構築するにはどうすればよいですか?関数を作成して、double voidパブリックまたはプライベートと宣言する必要がありますか?

4 つのテキストボックス:

Starting Mileage
Ending Mileage
Total Driving Time 
Time from NY city to MIAMI

ボタンのクリックで実行される関数を配置しました。関数の使用方法の簡単なアイデア:

 private void button1_Click(object sender, EventArgs e)
        {
            double v = Calculate_Velocity();
            double t = Get_Time();
            double d = Calculate_Distance (v,t);
            Display_Results(v, t, d);
            Clear_TextBoxes();


        }
4

4 に答える 4

3

関数を非公開にするか、保護する必要があります。private と protected の違いは、 private はクラスまたは構造体のコードからのみアクセスでき、 protected は現在のクラスとその派生クラスでのみ使用できることです。

これは、CSharp のアクセス修飾子の適切な説明へのリンクです。

コードは次のようになります。

private double CalculateVelocity()
{
    double distance = 0;
    double time = 0;

    if(double.TryParse(tbDistance.Text, out distance) &&
       double.TryParse(tbTime.Text, out time))
    {
        return distance/time;
    }

    return 0.0;
}

private double GetTime()
{
    //Get Time
}

private double CalculateDistance(double velocity, double time)
{
    //Calculate Distance
}

private double DisplayResults(double velocity, double time, double distance)
{
    //Display Results
}

private double ClearTextboxes()
{
    //Clear textboxes
}

private void button1_Click(object sender, EventArgs e)
{
    //You get the idea
}

あなたは csharp を初めて使用するので、プロパティを使用してみる良い機会かもしれません。たとえば、GetTime は次のように記述できます。

// Property to GetTime
public double GetTime
{ 
      get
      {
          // variable to hold time
          double time = double.MinValue;

          // Safely parse the text into a double
          if(double.TryParse(tbTime.Text, out time))
          {
              return time;
          }

          // Could just as easily return time here   
          return double.MinValue;
      }
      set
      {
          // Set tbTime
          tbTime.Text = value.ToString();
      }
}

そして、次のようにプロパティを使用できます。

double time = GetTime;

また

GetTime = time;

GetTime の double の代わりに TimeSpan を使用することも検討してください。

于 2012-09-25T04:02:04.533 に答える
2

結果(ニューヨーク市からマイアミまでの距離)を得るために、関数(コンテンツに関して)を適切に構築するにはどうすればよいですか?

まず、絶対的な正解はなく、それぞれの意見があります。私の意見では、プロジェクトに新しいクラスを追加することをお勧めします。

class Formulas
{
    public static double CalculateVelocityFromMileage(double startMileage, double endMileage, double time)
    {
        return (endMileage - startMileage) / time;
    }
}

これにより、速度、距離、平均時間を計算するロジックが別の場所に分離され、TextBox コントロールの名前や、ユーザーがそれらのテキスト ボックスに情報を入力する方法については想定されません。

これらの関数を静的にする必要があります。静的関数は、関数の定義で提供される入力のみを必要とする関数と考える必要があります。静的関数は良いことです。関数を呼び出す人のビューから隠されているアイテムに依存しません。もちろん、静的関数の場合は double を返すしかありません。

そして、関数を公開する必要があります。これにより、クリック イベントのコードで次のように呼び出すことができます。

Formulas.CalculateVelocityFromMileage(start, end, time);

次のことを覚えておいてください:
1. 関数は 1 つのことを行い、1 つのことをうまく行う
必要があります。

少し多くのコードを書くことに気付くかもしれませんが、アプリケーションが成長するにつれてより多くのコードを書き始めると、感謝することでしょう。

しかし、自分の直感を信じて、自分だけのスタイルを見つけ、自分に合うものを見つけてください。

于 2012-09-25T03:51:04.660 に答える
0

数式がわからないので、アイデアを提供するだけで、それに応じてアプリケーションを構築できます

クラス内の関数を次のように定義するだけです

double i=0;
public double Calculate_Velocity()
{
    i=double.parse(Starting Mileage.Text)*double.parse(TotalDrivingTime.Text );
    return i;   
    //Formula may be wrong but you will get idea abt the things...
}

同様に、すべての関数を定義します...

于 2012-09-25T03:14:29.827 に答える
0

double端数マイルが必要な場合は、選択しても問題ありません。1500マイルまたは1837マイルのような結果が必要な場合は、それintが道です. と宣言するとdouble、1500.33 マイル (1500 マイルと 1/3 マイル) のような結果が返されます。そのため、分数のマイル (より正確です) または整数のマイルが必要な場合、選択はあなた次第です。

あなたのプログラムでは、関数を作成しますprivate。それらを作成するprivateと、クラスのインスタンスをインスタンス化することによって関数を呼び出すことができなくなります。言い換えれば、エンドユーザーは最終結果だけを望んでいます。エンド ユーザーには、「ヘルパー」関数を呼び出すビジネスはありません。

参考までに、あなたは尋ねませんでしたが、 と呼ばれる 3 番目の可視性オプションもありますprotectedProtectedのように動作しprivateます。違いは、クラスが別のクラスに継承されている場合、そのクラスは保護された関数と変数にアクセスできることです。

于 2012-09-25T03:15:34.753 に答える