如何声明一个可以在其他事件中使用的对象

本文关键字:其他 事件 对象 声明 何声明 一个 | 更新日期: 2023-09-27 18:00:51

我正在处理一个windows窗体。我正在创建一个名为client的对象,该客户端有许多函数,包括login((search((。当我点击"登录按钮"时,会调用登录功能,当我点击"搜索按钮"时会调用搜索功能

我能够通过在这里声明它来创建一个"全局对象"(因为没有更好的术语(:

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
    MyClient client = new MyClient();
 private void btnLogIn_Click(object sender, EventArgs e)
    {
       client.login()
 private void btnSearch_Click(object sender, EventArgs e)
    {
       client.search()

现在,我面临的问题是,有时客户端断开连接,我必须使用另一个对象重新登录,我不能使用同一个对象。

我正在考虑使用一个按钮来重新登录,创建一个新对象,并在其他事件中继续使用相同的名称"client"作为对象。

有什么想法吗?

如何声明一个可以在其他事件中使用的对象

您可以将client变量封装在属性或方法中,该属性或方法封装逻辑以确定是否需要重新连接。假设您在客户端中有一个名为wasDisconnected()的方法来执行此操作。您可以像这样"惰性加载"类级别的变量。

public partial class Form1
{
    MyClient _client;
    protected MyClient client
    {
        get
        {
            // Check if we need to reconnect.
            if (_client == null || client.wasDisconnected())
                _client = new MyClient();
            return _client;
        }
    }
    // ...
}

在这种情况下,click方法将保持不变,但它们现在将通过属性而不是直接访问MyClient实例。