-1

別のクラスで宣言されているときに配列変数に値を割り当てる方法は? 以下は、私の問題をより簡単に理解するためのサンプルコードです:-

// Below is a class customer that has three parameters: 
// One string parameter and Two int array parameter

public class Customer
{
    public string invoiceFormat { get; set; }
    public int [] invoiceNumber { get; set; }
    public int [] customerPointer { get; set; }

    public Customer(
        string invoiceFormat, 
        int[] invoiceNumber, 
        int[] customerPointer) 
    {
        this.invoiceFormat = invoiceFormat;
        this.invoiceNumber = invoiceNumber;
        this.customerPointer = customerPointer;
    }
}

// How to assign value for invoiceNumber or customerPointer array in 
// different windows form?
// The following codes is executed in windowsform 1

public static int iValue=0;
public static Customer []c = new Customer [9999];

c[iValue] = new Customer(textBox16.Text, invoiceNumber[0].iValue + 1, 
                         customerPointer[0].iValue);

// I have an error that the name 'invoiceNumber and customerPointer' 
// does not exist inthe current context
4

2 に答える 2

1

あなたが持っているもの

c[iValue] = new Customer(textBox16.Text, invoiceNumber[0].iValue + 1, customerPointer[0].iValue);

これは完全に間違っており、エラーが発生する理由です: The name 'invoiceNumber and customerPointer' does not exist inthe current context

InvoiceNumber または CustomerPointers の配列を宣言することはありません。これらはどちらもあなたのクラスのメンバーであり、混乱していると思います。int にはメンバーがなく、データ型であるため、invoiceNumber[0].iValue +1 がどうなるかを推測するつもりはありません。

これを修正するには、次のようなことを行います

        //create some arrays
        int[] invoicesNums = new int[]{1,2,3,4,5};
        int[] customerPtrs = new int[]{1,2,3,4,5};
        //create a new customer
        Customer customer = new Customer("some invoice format", invoicesNums, customerPtrs);

        //add the customer to the first element in the static array
        Form1.c[0] = customer;

わかりましたので、その方法はわかりましたが、クラス、配列、データ型、および OOP を停止してより深く調べる必要があると本当に思います。これにより、プログラムをさらに進めたときに大きな頭痛の種から解放されるからです。 .

于 2013-10-15T04:06:37.567 に答える
0

まだ存在しない値を使用しようとしています。コンストラクターを見てください。

public Customer(string invoiceFormat, int[] invoiceNumber, int[] customerPointer) 
{
            this.invoiceFormat = invoiceFormat;
            this.invoiceNumber = invoiceNumber;
            this.customerPointer = customerPointer;
 }

intこれは、文字列、 の FULL 配列、および の別の COMPLETE 配列を渡す必要があることを意味します int。これを試みることによって:

c[iValue] = new Customer(textBox16.Text, invoiceNumber[0].iValue + 1, customerPointer[0].iValue);

まだ存在しない変数を呼び出しています。コンストラクタという言葉について考えてみましょう。これにより、オブジェクトが作成され、内部変数が初期化されます。 別の配列パラメーターを渡すことによって割り当てられることはありませんinvoiceNumber[]customerPointer[]これが、そのエラー メッセージを受け取る理由です。invoiceNumberコンストラクターを使用してこれらの配列を初期化してから singleおよび singleを渡し、それらcustomerPointerが初期化された配列に追加された場合、これは機能します。ただし、内部値は配列であってはならないように思えintます。その場合、これらのパラメーターごとに単一の値を渡すことができます。

于 2013-10-14T23:18:24.667 に答える