【问题标题】:My C# Assembly or my code?我的 C# 程序集还是我的代码?
【发布时间】:2013-05-09 06:10:53
【问题描述】:

你好,我有这个代码:

private void button1_Click(object sender, EventArgs e)
    {
        if (radioButton1.Checked)
        {
            UDP.startflood(textBox1.Text, Convert.ToInt32(textBox3.Text), int.Parse(textBox4.Text), int.Parse(textBox2.Text), int.Parse(textBox5.Text));

        }
    }

我收到错误“名称空间 UDP 中不存在类型或名称空间名称 startflood(您是否缺少程序集引用?)”

这是我的 UDP.cs 的一部分:

public Thread[] Sockets;
        public string _Host;
        public int _Delay;
        public int _Sockets;
        public int _Port;
        public int _Timeout;

    public void startflood(string Host, Int32 Delay, int Socketss, int Port, int Timeout)
    {
        _Host = Host;
        _Delay = Delay;
        _Sockets = Socketss;
        _Port = Port;
        _Timeout = Timeout;

        Sockets = new Thread[_Sockets];
        for (int i = 0; i < _Sockets; i++)
        {
            Sockets[i] = new Thread(this.flood);
            Sockets[i].IsBackground = true;
            Sockets[i].Start();
        }

    }
    public void flood()
    {
    i have some code here
    }

请有人帮我解决这个问题吗?谢谢。

【问题讨论】:

  • 仔细阅读错误信息。您正在取消对 UDP 的引用,因此应该有一个名为 UDP 的声明成员变量,无论此类定义是什么类型。
  • 包含 startflood 的文件顶部是什么?您需要命名空间和类名。
  • startflood所在的类的名称是什么?除此之外,您在不创建新对象的情况下调用该方法。实例化一个新对象或将方法标记为static

标签: c# reference namespaces call .net-assembly


【解决方案1】:

您正在调用 startflood,就好像它是一个静态方法,但事实并非如此。

您需要创建 UDP 类的实例:

var udp = new UDP();
udp.startflood(textBox1.Text, Convert.ToInt32(textBox3.Text), int.Parse(textBox4.Text), int.Parse(textBox2.Text), int.Parse(textBox5.Text));

【讨论】:

  • 如果 startflood 是静态的,类变量也需要是静态的。
  • @RobertNoack - 是的,可能应该在发布之前查看实现。看起来将其保留为实例方法是最好的方法。好收获!
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 2019-06-01
  • 2010-10-25
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
相关资源
最近更新 更多