0

2つの.csファイル(Hex2Bin.csと)があり、変数をからにProgram.cs渡したいend_addrProgram.csHex2Bin.cs

Program.csの私のコード:

class Program
{
    enum to_exit {
        exit_ok = 0,
        exit_invalid_args,
        exit_to_few_args,
        exit_invalid_input_file,
        exit_invalid_args_file,
        exit_permission_denied,
        exit_unexpected_eof
    };

    // class value holders
    static String args_file_name = "";
    static String in_u1_name = "";
    static String in_u22_name = "";
    static String out_name = "";
    static short end_addr = 0x0000;                 // 4-digit Hexadecimal end address
    static Byte[] version_code = { 0, 0, 0, 0 };    // 3 bytes version, 1 for extra info
}

とにかく私はこれを行うことができますか?私はcでそれを行う方法を知っていますが、私はc#に非常に慣れていません。ありがとう。

4

5 に答える 5

2

staticC# は、変数に関して C のようには機能しません。変数をフィールドにすることで、変数をクラスend_addr外で使用できるようにすることができます。デフォルトでは、フィールドは.Programpublicprivate

public static end_addr = 0x0000;

そして、次のようにアクセスできます。

var x = Program.end_addr;

ただし、C# のイディオムと規則に慣れるためにもう少し時間を費やすことをお勧めします。あなたはまだ C の観点から C# を考えているようですが、それらは大きく異なります。

于 2012-08-09T21:39:20.447 に答える
0

次のように変数を宣言すると:

public static short end_addr = 0x0000;

次に、別のクラスから次のように使用できます。

Program.end_addr

オブジェクト指向ではありません。

クラス Hex2Bin が Program クラスの Main メソッドによって使用/呼び出される場合、呼び出すメソッドの入力パラメーターとして変数を渡すか、使用するクラス/オブジェクトのプロパティとして変数を設定できるはずです...

于 2012-08-09T21:40:19.643 に答える
0

C のバックグラウンドを考えると、ランタイムとコンパイル時の問題が混在している可能性があると思います。

ただし、Hex2Bin.cs では、静的変数を更新する静的メソッドを作成できます。

class Hex2Bin 
{
    static short end_addr = 0x0000;
    static void updateEndAddr(short endAddr)
    {
        end_addr = endAddr;
    }
}
于 2012-08-09T21:40:24.180 に答える
0

「ファイル」について話していますが、本当にやりたいことは、プログラムのエントリ ポイント ( Program.cs) から、データを処理するクラス (または静的クラスのメソッド) のオブジェクトにデータを渡すことですよね?

もしそうなら、これはかなり単純なはずです。Program.cs を変更して、クラスのインスタンス (Hex2Bin.cs からのもの) を次のように作成する必要があります。

...
Hex2Bin hex2bin = new Hex2Bin( end_addr );
...

Hex2Bin は次のようになります。

public class Hex2Bin
{
    private short endAddress;
    public Hex2Bin( short endAddress )
    {
        this.endAddress = endAddress;
    }
}

end_addrこれにより、 fromの値を使用できるようになりますProgram.cs

別のアプローチは、それを利用するメソッドに直接渡すことです。

Hex2Bin.Method(end_addr);

Hex2Bin ファイルでは次のようになります。

public static void Method(short endAddress)
{
    //... do the work here
}
于 2012-08-09T21:40:30.847 に答える
0

そのようにマークするだけで十分end_addrですpublic

public static short end_addr = 0x0000;

次に、このようにどこからでもアクセスできます

Program.end_addr

ただし、データを公開するには、フィールドではなくプロパティを使用することをお勧めします。

// Property
public static short end_addr { get; private set; }

// Constructor
public Program()
{
    // Initialize property value.
    end_addr = 0x0000;
}
于 2012-08-09T21:39:07.780 に答える