将变量从一个文件传递到另一个文件c#

时间:2012-08-09 21:31:56

标签: c#

我有两个.cs文件(Hex2Bin.csProgram.cs),我想将变量end_addrProgram.cs传递给Hex2Bin.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#很新。感谢。

5 个答案:

答案 0 :(得分:2)

对于static变量,C#不像C一样工作。您可以将变量end_addr设置为Program类之外的public字段。默认情况下,字段为private

public static end_addr = 0x0000;

然后就可以这样访问:

var x = Program.end_addr;

但是,我建议您花一点时间熟悉C#习语和惯例。看起来你仍然在思考C语言中的C#,它们是非常不同的。

答案 1 :(得分:0)

end_addr标记为public就足够了

public static short end_addr = 0x0000;

然后你可以从任何地方访问它

Program.end_addr

虽然使用properties而不是字段来公开数据,但这是一种更好的做法。

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

// Constructor
public Program()
{
    // Initialize property value.
    end_addr = 0x0000;
}

答案 2 :(得分:0)

如果您声明变量如下:

public static short end_addr = 0x0000;

然后从另一个班级你可以像这样使用它:

Program.end_addr

但不要这样做,不是面向对象的!

如果您的类Hex2Bin由Program类的Main方法使用/调用,您应该能够将您的变量作为您调用的方法的输入参数传递,或将它们设置为您使用的类/对象的属性...

答案 3 :(得分:0)

考虑到你在C中的背景,我认为你可能会将运行时与编译时问题混在一起。

但是,在Hex2Bin.cs中,您可以创建一个更新静态变量的静态方法。

class Hex2Bin 
{
    static short end_addr = 0x0000;
    static void updateEndAddr(short endAddr)
    {
        end_addr = endAddr;
    }
}

答案 4 :(得分: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

Program.cs的值

另一种方法是将其直接传递给将使用它的方法:

Hex2Bin.Method(end_addr);

并在Hex2Bin文件中:

public static void Method(short endAddress)
{
    //... do the work here
}