无法将类型“void”隐式转换为“int”?

use*_*415 1 c# int entity-framework void

好的,所以我对编程还很陌生,我不明白为什么会出现此错误。

我的方法应该存储它在这个方法中所做的邮件:

    public void StoreMail(PhishingMail PhishingMail)
    {
        using (var phishingMailStorage = new PhishFinderModel())
        {
            phishingMailStorage.PhishingMail.Attach(PhishingMail);

            phishingMailStorage.SaveChanges();

        }
Run Code Online (Sandbox Code Playgroud)

然后在我的 processPhishingMail 方法中,它调用 Store 方法。但是后来我收到错误:无法将类型“void”隐式转换为“int”。

public void ProcessPhishingMail(PhishingMail phishingMail)
{                     
      Hashtable phishingUrls;
      int phishingMailId;
      int phishingUrlId;
      //Error convertion
      phishingMailId = _storageAgent.StoreMail(phishingMail);
Run Code Online (Sandbox Code Playgroud)

所以我真的找不到从void转换为int的解决方案。也许这是不可能的?

我的问题是:如何在我的代码中转换这些类型?

请不要苛刻我真的很陌生。感觉就像我在信息的海洋中游泳,我不知道从哪里看或从哪里开始。因此,非常欢迎任何建议的教程。

Sti*_*aal 5

在创建方法时,您定义了返回类型。void 意味着它不会返回任何东西。您已将方法定义为public void StoreMail(),因此表示它不会返回任何内容。当您调用该方法时,您要求返回phishingMailId = _storageAgent.StoreMail(phishingMail)。但是因为您将该方法定义为 void 并且您没有让该方法返回任何内容,所以您无法获取 id 并出现错误。

要解决此问题,您必须使您的方法返回一个 int

public int StoreMail(PhishingMail phishingMail){}
Run Code Online (Sandbox Code Playgroud)

然后在方法中进一步定义要返回的内容

return newId;
Run Code Online (Sandbox Code Playgroud)