0

私はこれについてさまざまな調査を行ってきましたが、私が発見したことから、tryparse と parse は文字列には存在しません。だから私はこれに代わるものを探しています。

私は7つの異なるテキストボックスを持っており、ボタンをクリックするとテキストボックスをチェックする必要があり(変数は文字列です)、テキストボックスが空の場合は完全にスキップします。テキストボックスに文字列があれば、それをリストに追加したい。リストである必要はありません。リストの方が望ましいですが、うるさいわけではありません。可能な限り最良の方法です。私はフロート値である他の7つのチェックボックスを持っています.これは私が持っているものです:

List<float> ListGrade = new List<float>();

float LG;

if (float.TryParse(txtGrade1.Text, out LG))
    ListGrade.Add(LG);

if (float.TryParse(txtGrade2.Text, out LG))
    ListGrade.Add(LG);

if (float.TryParse(txtGrade3.Text, out LG))
    ListGrade.Add(LG);

if (float.TryParse(txtGrade4.Text, out LG))
    ListGrade.Add(LG);

if (float.TryParse(txtGrade5.Text, out LG))
    ListGrade.Add(LG);

if (float.TryParse(txtGrade6.Text, out LG))
    ListGrade.Add(LG);

if (float.TryParse(txtGrade7.Text, out LG))
    ListGrade.Add(LG);

それは完璧に機能しますが、文字列の場合はわかりません。nullorwhitespace を使用することを考えましたが、テキスト ボックスを完全にスキップする方法がわかりません。これまでリストを使用したことがなく、これが初めてであり、out キーワードを完全に理解していません。検索を行うたびに、if (textbox1.Text == "") と言う以外に何も表示されませんが、テキストボックスをスキップする方法は示されていません。

また、上記のコードと、それと同じように見える別のリストを使用すると、テキストボックスが同一で名前が異なることを除いて、上記のコードの最後でこのコードを使用すると、宣言されていない変数を使用しているというエラーが表示されます。

if (ListGrades.Count > 0 && ListCredits.Count > 0)
    AverageGrade = ListGrades.Sum() / ListCredits.Sum();

それにelseステートメントを追加する必要がありますか?私がそれを行うとうまくいきますが、最終結果が台無しにならないように何を追加できるかわかりません。

さらに情報が必要な場合は、お知らせください。私は学び、研究をしようとしていますが、困惑しています!

みんなありがとう!

4

5 に答える 5

1

次のようにして、リストへの値の追加をスキップできます。

if (!string.IsNullOrWhiteSpace(txtbox.Text))
    // add to the list here

outキーワードのご案内はこちら

于 2013-09-08T05:31:23.730 に答える
1

LINQ の使用:

var textboxes = new [] {
       txtCredit1, txtCredit2, txtCredit3, txtCredit4, 
       txtCredit5, txtCredit6, txtCredit7
};
var ListCredits = textboxes.Select(tb => tb.Text)
                            .Where(txt => !String.IsNullOrEmpty(txt))
                            .ToList();
于 2013-09-08T05:46:09.567 に答える
0

条件のショートカットの性質に頼ることができます。AND 条件の最初の部分が失敗した場合、2 番目の部分は実行されません。これにより、テキストボックスをスキップできます。

List<float> grades = new List<float>();

float grade;

if (!string.IsNullOrWhiteSpace(txtGrade1.Text) && float.TryParse(txtGrade1.Text, out grade))
    grades.Add(grade);

if (!string.IsNullOrWhiteSpace(txtGrade2.Text) && float.TryParse(txtGrade2.Text, out grade))
    grades.Add(grade);

if (!string.IsNullOrWhiteSpace(txtGrade3.Text) && float.TryParse(txtGrade3.Text, out grade))
    grades.Add(grade);

...

if (grades.Count > 0 && credits.Count > 0)
     averageGrade = grades.Sum() / credits.Sum();
于 2013-09-08T05:49:24.277 に答える