方法必须有一个返回类型

本文关键字:返回类型 有一个 方法 | 更新日期: 2023-09-27 18:06:12

关于Public Send(SerialPort serialPort1),方法必须有一个返回类型。我特别错过了什么?这就是我想开始给com端口写信的部分。从在线查看其他问题,我注意到我可能缺少该类的程序集引用或主体部分。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TEST_Listbox
{
    public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        comboBox1.Items.Add(new Command { DisplayText = "Part 1", CommandText = "01P00101##" });
        comboBox1.Items.Add(new Command { DisplayText = "Part 2", CommandText = "02P00102##" });
    }
    private void button1_Click(object sender, EventArgs e)
    {
        serialPort1.PortName = "COM3";
        serialPort1.BaudRate = 9600;
        serialPort1.Parity = Parity.None;
        serialPort1.DataBits = 8;
        serialPort1.StopBits = StopBits.One;
        serialPort1.Handshake = Handshake.None;
        serialPort1.RtsEnable = true;
        serialPort1.DtrEnable = true;
        serialPort1.Open();
        if (serialPort1.IsOpen)
        {
            serialPort1.WriteTimeout = 500;
            button1.Enabled = false;
        }        
    }
    public class Command
    {
        public string DisplayText { get; set; }
        public string CommandText { get; set; }
        public Send(SerialPort serialPort1)
        {
            if (serialPort1.IsOpen) 
            {
                var content = new List<byte>();
                content.Add(2);
                content.AddRange(Encoding.ASCII.GetBytes(CommandText));
                content.Add(3);
                byte[] buffer = content.ToArray();
                serialPort1.Write(buffer, 0, buffer.Length);
            }
        }
        public override string ToString()
        {
            return DisplayText;
        }
    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        var command = (Command)comboBox1.SelectedItem;
        if (command != null)
        {
            command.Send(serialPort1);
        }
    }
 }
}

方法必须有一个返回类型

这意味着你的Send方法没有返回类型。意思是你不会在那个方法中返回任何东西。如果该方法不应该返回任何东西,那么只需添加void作为返回类型:

public void Send(SerialPort serialPort1)
    {
        if (serialPort1.IsOpen) 
        {
            var content = new List<byte>();
            content.Add(2);
            content.AddRange(Encoding.ASCII.GetBytes(CommandText));
            content.Add(3);
            byte[] buffer = content.ToArray();
            serialPort1.Write(buffer, 0, buffer.Length);
        }
    }

在c#中,除了构造函数/析构函数之外,类的所有方法都有返回类型。否则,返回类型为void

由于您的Send()被编码为不返回任何内容,因此您从方法头中缺少void

来自:

public Send(SerialPort serialPort1)

:

public void Send(SerialPort serialPort1)