Ошибка: "ссылка на объект требуется для нестатического поля, метода или свойства…"

У меня есть клиент WPF, запрограммированный с помощью C#. Программа представляет собой регистр демо, вы вводите имя и говорите, если они здесь, или нет, и отправляете его на сервер и порт, который вводится пользователем в текстовое поле.

Однако, пытаясь применить это в коде, я получаю ошибку: "ссылка на объект обязательна для нестатического поля, метода или свойства…". Это в строке "client.connect"...

namespace client
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }

        public class connectandsend
        {

            //if 'REGISTER' button clicked do this...{
            static void connect()
            {
                TcpClient client = new TcpClient(); // New instance of TcpClient class of the .Net.Sockets
                client.Connect(server_txt.Text, Convert.ToInt32(port_txt.Text)); // Server, Port
                StreamWriter sw = new StreamWriter(client.GetStream()); // New StreamWriter instance
                StreamReader sr = new StreamReader(client.GetStream()); // New StreamReader instance
            }

            /* static void send()
            {
                stream write... name.text and 'here' or 'not here' ticked box?
            }

            }
            */
        }

    }
}

1 ответ

Решение

connect() метод не может быть static если вы хотите иметь доступ к любым нестатическим членам MainWindow в этом. Кроме того, он не может быть расположен в другом классе, если этот класс или сам метод также не имеет ссылку на MainWindow учебный класс.

Удалить static Ключевое слово и переместить метод в MainWindow учебный класс:

public partial class MainWindow : Window
{

    public MainWindow()
    {
        InitializeComponent();
    }

    void connect()
    {
        ...
    }
}

Или передайте метод server_txt.Text и port_txt.Text методу при его вызове:

static void connect(string server, int port)
{
    TcpClient client = new TcpClient(); // New instance of TcpClient class of the .Net.Sockets
    client.Connect(server, port); // Server, Port
    StreamWriter sw = new StreamWriter(client.GetStream()); // New StreamWriter instance
    StreamReader sr = new StreamReader(client.GetStream()); // New StreamReader instance
}

MainWindow:

connectandsend.connect(server_txt.Text, Convert.ToInt32(port_txt.Text));
Другие вопросы по тегам