2014-09-05 6 views
1

Прошу прощения за глупый вопрос, но я новичок в C# и не смог найти помощь по другим вопросам, связанным с этой ошибкой.Объект C# не содержит определения для метода

Я создал класс под названием «Отправитель», но я не могу получить доступ к моему методу при создании экземпляра объекта. Когда я пытаюсь вызвать метод, я получаю ошибку: «объект не содержит определения для sendMessage». Я не знаю, где я ошибаюсь. Пожалуйста, укажите мне в правильном направлении.

Благодарим за помощь!

Это мой Sender класс:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Net; 
using System.Net.Sockets; 
using System.Net.NetworkInformation; 

namespace CS5200_HW1_GUI 
{ 
    public class Sender 
    { 
     private UdpClient myUdpClient; 
     private IPEndPoint localEP; 
     string ipAddress = "129.123.41.1"; 
     string _port = "12001"; 

     public void sendMessage() 
     { 

     } 
     // byte[] sendBuffer = Encoding.Unicode.GetBytes(command); 
     // int result = myUdpClient.Send(sendBuffer, sendBuffer.Length, localEP); 

    } 
} 

Это где я пытаюсь вызвать метод:

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using System.Windows.Forms; 
    using System.Net; 
    using System.Net.Sockets; 
    using System.Net.NetworkInformation; 

    namespace CS5200_HW1_GUI 
    { 
     public partial class Form1 : Form 
     { 
       //private UdpClient myUdpClient; 
       IPEndPoint localEP = new IPEndPoint(IPAddress.Any, 0); 
       string command = string.Empty; 
       string newWord = String.Empty; 
       string guess = String.Empty; 
       string dashes = String.Empty; 
       string newAddress = string.Empty; 
       string newPort = string.Empty; 
       int score = 0; 
       int length = 0; 
       StringBuilder sb = new StringBuilder(); 
       Random random = new Random(); 

       Sender sender = new Sender(); 

       private void button1_Click(object sender, EventArgs e) 
       { 
        command = "NewGame"; 
        sender.sendMessage(command);    //I get the error here 
        newWord = receiver.receiveMessage(); 
        length = newWord.Length; 
       } 
     } 
    } 
+0

sendMessage метод не принимает аргумент должен быть sendMessage() not sendMessage (команда) – Sorceri

ответ

7

Это происходит потому, что отправитель как объект отправителя, а также один из аргументы обработчика кликов.

Обратите внимание на метод подписи:

private void button1_Click(object sender, EventArgs e) 

Вы имеете в виду ближайшего отправителя, который имеет тип object. Чтобы решить эту проблему, вам нужно переименовать или позвонить по ней с помощью this.

Пример:

this.sender.sendMessage() 
+1

Я полностью пропустил область - хороший catch @Areks! У него также возникла проблема с передачей параметра. – n8wrl

+0

Спасибо! Как только мне позволено это сделать, я приму свой ответ. – dransom90

+0

+1 Я тоже пропустил проблему области. – BradleyDotNET

4

Вы вызываете sender.sendMessage с аргументом (command)

Единственная функция называется sendMessage на Sender объект не принимает никаких параметров, поэтому метод сопоставления не найден.

Вы также используете переменную sender, которая является переменной в методе Click (из-за подписи). Вы должны использовать другое имя.

+0

, тогда ошибка будет выглядеть как «нет перегруженного метода» – Shaharyar

+0

@Shaharyar. Я заметил, что другая ошибка слишком поздняя :(Это все равно будет проблемой после того, как он исправит другую ошибку. – BradleyDotNET

+0

Да, вы правы. , но ошибка 'method not found' возникает перед ошибкой' overloaded method'. +1 для обнаружения другой ошибки. – Shaharyar

Смежные вопросы