在另一个Project C#中调用时,getter中的字符串为空

时间:2016-02-18 15:15:18

标签: c# string getter-setter

我是C#编程语言的初学者。我正在尝试使用Getter和Setter来在ProjectA中设置字符串并在项目B中检索它。

  

项目B使用Windows窗体,我没有设置TextBox的值   使用检索到的字符串。

     

项目A是一个控制台项目,它只是从中读出一些东西   文件并将其存储在我想要检索的字符串中。

然而,这是我在项目B中的号召:

 string cardOwner = Transmit.Program.CardOwner;
            Debug.WriteLine("Card owner = " + cardOwner);
            tb_cardholder.Text = cardOwner;

这是我在项目A中的Getter / Setter:

private static string _cardOwner;
  public static string CardOwner
        {
            get
            {
                return _cardOwner;
            }

            set
            {
                _cardOwner = value;
            }
        }

 _cardOwner = System.Text.Encoding.ASCII.GetString(bCardOwner);

但在项目B中,我得到了#34;"空字符串。

我在项目B中包含了项目A(添加了参考文献并编写了#34;使用ProjectA和#34;)。

任何想法出了什么问题?

感谢。

3 个答案:

答案 0 :(得分:1)

仅仅因为你包含一个项目并在项目B中使用它的类,它并不意味着你也使用这些类的实例

参加以下课程:

public class Test
{
    public string Message { get; set; }
}

您可以将此类放入DLL项目(Tools)并从其他项目引用它,例如WinForms项目ProjectA和控制台项目ProjectB

在这两个项目中,您可以编写如下内容:

Test t = new Test() { Message = "Hello" };

这会创建Test类的新实例,但两个正在运行的应用程序ProjectAProjectB不会交换数据!它们是完全分开的。

类属性也是如此。

答案 1 :(得分:0)

您无法轻松地在两个不同的应用程序之间共享信息。静态属性仅共享同一应用程序域中的数据,即同一Windows进程中的大多数简单星座。

如果要在两个不同进程之间传输数据,则需要使用显式机制进行进程间通信。

答案 2 :(得分:0)

此行何时执行?

_cardOwner = System.Text.Encoding.ASCII.GetString(bCardOwner);

您需要将其放入方法中并调用该方法(并且知道调用何时发生将有助于您了解未设置_cardOwner的原因:

public static void Init()
{
    _cardOwner = System.Text.Encoding.ASCII.GetString(bCardOwner);
}

然后在需要_cardOwner

之前将此方法调用到您知道将要执行的地方
Transmit.Program.Init();
string cardOwner = Transmit.Program.CardOwner;     
tb_cardholder.Text = cardOwner;