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寻找,它们描述了整个代码中发生的事情。因此,如果您再次陷入困境,请仔细阅读它们。