Cannot implicitly convert type 'void' to 'int'?

c# entity-framework int void

Question

Oke so I am fairly new to programming and I don't get why I get this error.

My method should store mails which it does in this method:

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

            phishingMailStorage.SaveChanges();

        }

And then in my processPhishingMail method it calls the Store method. But then I get the error: Cannot implicitly convert type 'void' to 'int'.

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

So I can't really find a solution to convert from void to int. Maybe it's not possible?

My question is: how do I convert these types in my code?

Please don't be harsh I am really new to this. It feels like I am swimming in an ocean of information and I don't know where to look or start. So any suggested tutorials are very welcome.

1
1
11/16/2015 1:24:24 PM

Accepted Answer

The method

public void StoreMail(PhishingMail PhishingMail)

is not returning any value. So when you do:

phishingMailId = _storageAgent.StoreMail(phishingMail);

You are getting that error, since StoreMail is declared as void, which means it does not return anything.

To fix this, simply call StoreMail like this:

_storageAgent.StoreMail(phishingMail);

If you intend to return a value from StoreMail, then you must change it to return an int value:

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

        phishingMailStorage.SaveChanges();
    }

    return someIdWhichYouNeedToFigureOut;
}
4
11/16/2015 1:24:50 PM

Popular Answer

When making a method you define a return type. Void means it will not return anything. You have defined your method as public void StoreMail(), thus saying it will not return anything. When you call the method you ask for a return phishingMailId = _storageAgent.StoreMail(phishingMail). but because you defined the method as a void and you did not let the method return anything you can't get the id and you get the error.

To fix this you will have to make your method return an int

public int StoreMail(PhishingMail phishingMail){}

then further in the method you define what you want to return

return newId;


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow