在另一个项目 C# 中调用时,来自 getter 的字符串为空

本文关键字:getter 来自 字符串 项目 另一个 调用 | 更新日期: 2023-09-27 18:35:23

我是C#编程语言的初学者。我正在尝试使用 Getter 和 Setter 以便在项目 A 中设置字符串并在项目 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 中,我得到 " 空字符串。

我已经将项目 A 包含在项目 B 中(添加了参考并写了"使用 Project A")。

知道出了什么问题吗?

谢谢。

在另一个项目 C# 中调用时,来自 getter 的字符串为空

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

参加以下课程:

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

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

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

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

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

类属性也是如此。

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

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

这行是什么时候执行的?

_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;