0

私はブラックジャックプロジェクトを作っています..

まず、ボタンのHitクラスを作成しました。Hit

そのため、フォームをクリックすると、ヒット クラス内の数値/値をランダム化したスイッチ ケース シナリオから値が取得されます。

メソッド内で Class hit to = stRefID のすぐ下に変数を作成しようとしましたGenerateIDが、これも失敗しました。すべてが公開されているので、私は困惑しています。

ここに実際に投稿するのは初めてですが、いつもこの場所を使用しているので、お時間をいただきありがとうございます。

Hit.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Blackjack
{
public class Hit
{
    public static string GenerateID(int MinSize, int MaxSize)
    {

        string stRefID = "";

        Random random = new Random();

            int iChosenMaxSize = random.Next(0, 11);

            int two = 2;
            int three = 3;
            int four = 4;
            int five = 5;
            int six = 6;
            int seven = 7;
            int eight = 8;
            int nine = 9;
            int ten = 10;
            int jack = 10;
            int queen = 10;
            int king = 10;
            int ace = 11;


         for (int x = 1; x <= iChosenMaxSize; x++)
        {
            int iCharType = random.Next(0, 12);
            switch (iCharType)
            {
                    case 0:
                        stRefID += two;
                        break;
                    case 1:
                        stRefID += three;
                        break;
                    case 2:
                        stRefID += four;
                        break;
                    case 3:
                        stRefID += five;
                        break;
                    case 4:
                        stRefID += six;
                        break;
                    case 5:
                        stRefID += seven;
                        break;
                    case 6:
                        stRefID += eight;
                        break;
                    case 7:
                        stRefID += nine;
                        break;
                    case 8:
                        stRefID += ten;
                        break;
                    case 9:
                        stRefID += ace;
                        break;
                    case 10:
                        stRefID += jack;
                        break;
                    case 11:
                        stRefID += queen;
                        break;
                    case 12:
                        stRefID += king;
                        break;

                }
             } return stRefID; 

        }
    }
}

そして、テキストボックスを取得して、取得した値に設定したい場所:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Blackjack
{
public partial class Form1 : Form
{


        private void hit_Click(object sender, EventArgs e)
    {

         this.test.Text = Hit.stRefID;

    }

ボタンも公開しようとしましたが、これは失敗しました...

出力用のテスト テキスト ボックス:

private void test_TextChanged(object sender, EventArgs e)
    {

    }

よろしく、マイク。

改訂されたコード:

namespace Blackjack
{
public class Hit
{

    public static string GenerateID(string stRefID)

    {

        Random random = new Random();

            int iChosenMaxSize = random.Next(0, 11);

            int two = 2;
            int three = 3;
            int four = 4;
            int five = 5;
            int six = 6;
            int seven = 7;
            int eight = 8;
            int nine = 9;
            int ten = 10;
            int jack = 10;
            int queen = 10;
            int king = 10;
            int ace = 11;


         for (int x = 1; x <= iChosenMaxSize; x++)
        {
            int iCharType = random.Next(0, 12);
            switch (iCharType)
            {
                    case 0:
                        stRefID += two;
                        break;
                    case 1:
                        stRefID += three;
                        break;
                    case 2:
                        stRefID += four;
                        break;
                    case 3:
                        stRefID += five;
                        break;
                    case 4:
                        stRefID += six;
                        break;
                    case 5:
                        stRefID += seven;
                        break;
                    case 6:
                        stRefID += eight;
                        break;
                    case 7:
                        stRefID += nine;
                        break;
                    case 8:
                        stRefID += ten;
                        break;
                    case 9:
                        stRefID += ace;
                        break;
                    case 10:
                        stRefID += jack;
                        break;
                    case 11:
                        stRefID += queen;
                        break;
                    case 12:
                        stRefID += king;
                        break;

                }
          } return stRefID; 

        }

}
}

戻り値がそれに戻る必要があるため、stRefID を使用して generateID メソッドを作成しました。これにより、ボタンから値を呼び出すことができますか? パブリック静的文字列宣言は機能しますが、デフォルト値がある場合にのみ...

4

3 に答える 3

4

完全に理解できたかどうかはわかりません。

しかし、それは機能するためstRefIDの変数であることがわかりました。localGenerateID

Hit.stRefIDそれにアクセスする必要がある場合はstRefID、静的クラスメンバーにする必要があります

グローバル変数stRefIDとして追加してみてください。staticClass

public class Hit
{
    public static string stRefID = "";

    public static string GenerateID(int MinSize, int MaxSize)
    {
       //Your logic
    }
于 2013-05-20T03:50:30.120 に答える
2

メソッド内で定義された変数にはアクセスできません。stRefID のスコープは厳密に GenerateID 内にあります。クラスに基づいて、stRefID の値にアクセスする場合は、を呼び出す必要がありますHit.GenerateID。これにより、stRefID の値が返されます。C# では、変数のスコープが非常に重要です (すべてのプログラミング言語と同様)。C# Variable Scopeをご覧になることをお勧めします

于 2013-05-20T03:50:50.260 に答える
-1

stRefIDあなたがしたことは、メソッドのスコープ内で変数を宣言することです。GenerateIDこれは機能しません。そのため、できることは、その変数をクラスのスコープ内に配置し、このように使用することです。

namespace Blackjack
   {
    public class Hit
      {
       string stRefID = "";

       public static string GenerateID(int MinSize, int MaxSize)
        {
        Random random = new Random();

        int iChosenMaxSize = random.Next(0, 11);

        int two = 2;
        int three = 3;
        int four = 4;
        int five = 5;
        int six = 6;
        int seven = 7;
        int eight = 8;
        int nine = 9;
        int ten = 10;
        int jack = 10;
        int queen = 10;
        int king = 10;
        int ace = 11;


     for (int x = 1; x <= iChosenMaxSize; x++)
    {
        int iCharType = random.Next(0, 12);
        switch (iCharType)
        {
                case 0:
                    stRefID += two;
                    break;
                case 1:
                    stRefID += three;
                    break;
                case 2:
                    stRefID += four;
                    break;
                case 3:
                    stRefID += five;
                    break;
                case 4:
                    stRefID += six;
                    break;
                case 5:
                    stRefID += seven;
                    break;
                case 6:
                    stRefID += eight;
                    break;
                case 7:
                    stRefID += nine;
                    break;
                case 8:
                    stRefID += ten;
                    break;
                case 9:
                    stRefID += ace;
                    break;
                case 10:
                    stRefID += jack;
                    break;
                case 11:
                    stRefID += queen;
                    break;
                case 12:
                    stRefID += king;
                    break;

            }
         } return stRefID; 

    }

これはうまくいくはずです

于 2013-05-20T03:55:39.643 に答える