问题描述
我有 3 个图片框,都允许为空值。我想做的是写出所有可能的 if 条件;我尝试分配变量,但我的变量超出了范围。任何更好的解决方案,请
MemoryStream ms = new MemoryStream();
if (imGuest != null)
{
imGuest.Save(ms,ImageFormat.Png);
byte[] arr = ms.ToArray();
}
else
{
int? arr = null ;
}
if (imDoc != null)
{
imDoc.Save(ms,ImageFormat.Png);
byte[] arrDoc1 = ms.ToArray();
}
else
{
int? arrDoc1 = null;
}
if (imDoc2 != null)
{
imDoc2.Save(ms,ImageFormat.Png);
byte[] arrDoc2 = ms.ToArray();
}
else
{
int? arrDoc2 = null;
}
using (sqlCommand cmd = new sqlCommand("sp_insert",MainClass.con))
{
// code here
cmd.Parameters.AddWithValue("@img",arr);
cmd.Parameters.AddWithValue("@doc1",arrDoc1);
cmd.Parameters.AddWithValue("@doc2",arrDoc2);
}
解决方法
试试这个方法:
using (var ms = new MemoryStream())
{
Func<Image,byte[]> getImage = (Image img) =>
{
if (img == null)
{
return null;
}
img.Save(ms,ImageFormat.Png);
return ms.ToArray();
};
using (var cmd = new SqlCommand("sp_insert",MainClass.con))
{
// code here
cmd.Parameters.AddWithValue("@img",getImage(imGuest));
cmd.Parameters.AddWithValue("@doc1",getImage(imDoc));
cmd.Parameters.AddWithValue("@doc2",getImage(imDoc));
}
}