Oke所以我对编程很新,我不知道为什么会出现这个错误。
我的方法应该存储它在此方法中执行的邮件:
public void StoreMail(PhishingMail PhishingMail)
{
using (var phishingMailStorage = new PhishFinderModel())
{
phishingMailStorage.PhishingMail.Attach(PhishingMail);
phishingMailStorage.SaveChanges();
}
然后在我的processPhishingMail方法中调用Store方法。但后来我得到了错误:无法隐式转换类型' void'到' int'。
public void ProcessPhishingMail(PhishingMail phishingMail)
{
Hashtable phishingUrls;
int phishingMailId;
int phishingUrlId;
//Error convertion
phishingMailId = _storageAgent.StoreMail(phishingMail);
所以我无法找到从void转换为int的解决方案。也许它不可能?
我的问题是:如何在我的代码中转换这些类型?
请不要苛刻我真的很陌生。感觉就像我在信息的海洋中游泳,我不知道在哪里看或开始。因此,非常欢迎任何建议的教程。
答案 0 :(得分:4)
方法
public void StoreMail(PhishingMail PhishingMail)
没有返回任何值。所以当你这样做时:
phishingMailId = _storageAgent.StoreMail(phishingMail);
您收到该错误,因为StoreMail
被声明为void
,这意味着它不会返回任何内容。
要解决此问题,只需按以下方式拨打StoreMail
:
_storageAgent.StoreMail(phishingMail);
如果您打算从StoreMail
返回值,则必须将其更改为返回int
值:
public int StoreMail(PhishingMail PhishingMail)
{
using (var phishingMailStorage = new PhishFinderModel())
{
phishingMailStorage.PhishingMail.Attach(PhishingMail);
phishingMailStorage.SaveChanges();
}
return someIdWhichYouNeedToFigureOut;
}
答案 1 :(得分:4)
制作方法时,您可以定义返回类型。虚空意味着它不会返回任何东西。您已将方法定义为public void StoreMail()
,因此说它不会返回任何内容。
当您调用该方法时,您要求返回phishingMailId = _storageAgent.StoreMail(phishingMail)
。但是因为你将方法定义为void而你没有让方法返回任何东西而你得不到id并且你得到了错误。
要解决这个问题,你必须让你的方法返回一个int
public int StoreMail(PhishingMail phishingMail){}
然后在方法中进一步定义要返回的内容
return newId;
答案 2 :(得分:0)
就我而言,我在数据库SQL Server中创建了存储过程, 然后我在C#程序中创建了一个类,并调用了该存储过程,并在该类内部的存储过程中添加了参数,并返回了数据表中的数据,最后我可以在程序中的任何位置调用我的类了 像这个例子:
1-创建存储过程:
CREATE proc [dbo].[GET_SAMPLE_KIND]
@TESTID int
as
select Dept_id,ID_sample from LabTests
where LabTests.TestId = @TESTID
2-在C#程序中创建类,并使用类似以下代码的参数调用存储过程:
public DataTable GET_SAMPLE_KIND(int TESTID)
{
DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
DataTable dt = new DataTable();
SqlParameter[] param = new SqlParameter[1];
param[0] = new SqlParameter("@TESTID", SqlDbType.Int);
param[0].Value = TESTID;
dt = DAL.SelectData("GET_SAMPLE_KIND", param);
DAL.close();
return dt;
}
要连接数据库并从中读取数据,您必须使另一个类与sql server联系(在我的情况下为DAL.selectData方法)以从数据库中选择数据,对于插入,更新和删除语句,还可以创建存储过程,然后创建另一个void在您的班级中针对该功能。
3-最后,您可以从程序中调用类和存储过程。