C# 此名称不适用于';不存在于当前环境中

C# 此名称不适用于';不存在于当前环境中,c#,asp.net,C#,Asp.net,我知道这是一个基本的编码问题,但我正在工作中学习,并试图找出该方法所寻找的参数,因为当我将其留空时,它似乎告诉我它正在寻找“职位”,这就是我在那里所拥有的。这是指OnTradeCalledBack和OnPositionCalledBack方法 这是将参数留空时出现的错误: 未提供与“SocketServer.AsynchronousSocketListener.MyPositionCallBackEventHandler”SocketServer的必需形式参数“position”对应的参数 代码

我知道这是一个基本的编码问题,但我正在工作中学习,并试图找出该方法所寻找的参数,因为当我将其留空时,它似乎告诉我它正在寻找“职位”,这就是我在那里所拥有的。这是指
OnTradeCalledBack
OnPositionCalledBack
方法

这是将参数留空时出现的错误:

未提供与“SocketServer.AsynchronousSocketListener.MyPositionCallBackEventHandler”SocketServer的必需形式参数“position”对应的参数

代码如下:

public class AsynchronousSocketListener
{
    public AsynchronousSocketListener(int port)
    {
    }

    //Need to create a delagate to handle the positions and trade information.
    public delegate void MyPositionCallBackEventHandler(TposPositionCallback position);
    public delegate void MyTradeCallBackEventHandler(TposTradeCallback trade);

    //Indicates something has happened and finished.
    //Event defined here, based on delegate

    public event MyPositionCallBackEventHandler PositionCalledBack;
    public event MyTradeCallBackEventHandler TradeCalledBack;

    //Raise the Event, need a method to do this.
    //Responsible for notifying subscribers

    protected virtual void OnPositionCalledBack()
    {
        //need to fix this, just added local to avoid error
        //TposPositionCallback position = null;
        if (PositionCalledBack != null)
            PositionCalledBack(position);
    }

    protected virtual void OnTradeCalledBack()
    {
        //need to fix this, just added local to avoid error
        //TposTradeCallback trade = null;
        if (TradeCalledBack != null)
            TradeCalledBack();
    }
}

只需将定义更改为

public delegate void MyPositionCallBackEventHandler(TposPositionCallback position = null);

如果未提供任何参数,它将传递null作为默认值

只需将定义更改为

public delegate void MyPositionCallBackEventHandler(TposPositionCallback position = null);

如果未提供任何参数,则会将null作为默认值传递

查看代码
TradeCalledBack
是一个签名为:

public event MyTradeCallBackEventHandler TradeCalledBack;
public delegate void MyTradeCallBackEventHandler(TposTradeCallback trade);
因此,
TradeCalledBack
需要将在
MyTradeCallBackEventHandler
中定义的参数传递给它,它是一个具有以下签名的:

public event MyTradeCallBackEventHandler TradeCalledBack;
public delegate void MyTradeCallBackEventHandler(TposTradeCallback trade);
因此,
TradeCalledBack
需要向其传递类型为
TposTradeCallback
的变量

要克服此错误,可以将null传递到方法中,如下所示:

TradeCalledBack(null);
或者将整个方法更改为如下所示,并将变量传递到其中:

protected virtual void OnTradeCalledBack(TposTradeCallback trade)
{
    if (TradeCalledBack != null)
    {
        TradeCalledBack(trade);
    }
}

按照此处的逻辑,您可以对
OnPositionCalledBack
执行类似的更改查看代码
TradeCalledBack
是一个签名为:

public event MyTradeCallBackEventHandler TradeCalledBack;
public delegate void MyTradeCallBackEventHandler(TposTradeCallback trade);
因此,
TradeCalledBack
需要将在
MyTradeCallBackEventHandler
中定义的参数传递给它,它是一个具有以下签名的:

public event MyTradeCallBackEventHandler TradeCalledBack;
public delegate void MyTradeCallBackEventHandler(TposTradeCallback trade);
因此,
TradeCalledBack
需要向其传递类型为
TposTradeCallback
的变量

要克服此错误,可以将null传递到方法中,如下所示:

TradeCalledBack(null);
或者将整个方法更改为如下所示,并将变量传递到其中:

protected virtual void OnTradeCalledBack(TposTradeCallback trade)
{
    if (TradeCalledBack != null)
    {
        TradeCalledBack(trade);
    }
}

按照此处的逻辑,您可以对
OnPositionCalledBack

执行类似的更改,您的“position”变量的类型是什么,它在哪里定义?公共委托void MyPositionCallBackEventHandler(TposPositionCallback position);否,方法
OnPositionCalledBack
中的
position
的类型是什么?它在哪里定义?我想是@CathalMF问的。@JP Hochbaum-No在OnPositionCalledBack()中方法您使用了一个未在任何地方定义的“position”变量。@CathalMF我认为这是OP在注释掉的代码中添加的局部变量,但只是忘记在该代码中删除它以进行演示,因为“position”变量的类型是什么,它定义在哪里?公共委托void MyPositionCallBackEventHandler(TposPositionCallback position);不,方法
OnPositionCalledBack
中的
position
的类型是什么?它的定义在哪里?我想是@CathalMF问的。@JP Hochbaum-OnPositionCalledBack()中的No方法您使用了一个未在任何地方定义的“position”变量。@CathalMF我认为这是OP在注释掉的代码中添加的局部变量,但只是忘记在该代码中删除它以进行演示sakeYep,知道这是一个基本的东西,我怪我的大脑袋没有找到它。谢谢!@JPHochbaum还注意到注释代码中的s实际上告诉了你需要查找的内容,它们描述了整个代码中发生的事情。因此,如果你再次陷入困境,请仔细阅读它们。是的,我知道这是一些基本的东西,我责备我的巨大的头脑冷漏了这个。谢谢!@JPHochbaum还注意到代码中的注释实际上告诉了你需要什么o寻找,它们描述了整个代码中发生的事情。因此,如果您再次陷入困境,请仔细阅读它们。