c# - 在 C# 中将 null 分配给整数
问题描述
我有一个 winforms 应用程序,我试图在 tableadapter 中传递 5 个参数以执行查询,但我收到错误“无法从 'int 转换?” 到'int'。它们都可以是空值。
private int? c_id ;
private string c_cn;
private int? c_afm;
private string c_job;
private string c_city;
private void btnView_Click(object sender, EventArgs e) {
c_id = (txtBox_id.Text != string.Empty) ? c_id = Convert.ToInt32(txtBox_id.Text) : c_id = null;
c_afm = (txtBox_afm.Text != string.Empty) ? c_afm = Convert.ToInt32(txtBox_afm.Text) : c_afm = null;
c_cn = (txtBox_cn.Text != string.Empty) ? c_cn = txtBox_cn.Text : c_cn = null;
c_job = (txtBox_job.Text != string.Empty) ? c_job = txtBox_job.Text : c_job = null;
c_city = (txtBox_job.Text != string.Empty) ? c_city = txtBox_city.Text : c_city = null;
this.clientBrowserTableAdapter.Fill(erpDataSet.PelatesBrowser,c_id,c_cn,c_afm, c_job,c_city);
}
问题出在 c_id 和 c_afm 参数上。有任何想法吗?
解决方案
您可以创建一个专用的方法来将字符串转换为int?
private int? ConvertToDbInt(string text)
{
if (string.IsNullOrEmpty(text))
{
return null;
}
return int.Parse(text);
}
然后将其重用于不同的变量
c_id = ConvertToDbInt(txtBox_id.Text);
c_afm = ConvertToDbInt(txtBox_afm.Text);
您的实际问题是因为条件运算符?:
期望正数和负数表达式都产生相同类型的值,在您的情况下是int
- 正数和int?
负数。
first_expression 和 second_expression 的类型必须相同,或者必须存在从一种类型到另一种类型的隐式转换。
如果您是条件运算符的忠实粉丝,?:
那么在您的情况下,只需确保两个表达式都返回相同的类型int?
。
c_id = (txtBox_id.Text != string.Empty) ? (int?)Convert.ToInt32(txtBox_id.Text) : null;
当在线抛出异常时this.clientBrowserTableAdapter.Fill(...
,这意味着该Fill
方法需要类型参数int
,您可以通过调用轻松地将可为空的 int 转换为 int 。.GetValueOrDefault()
this.clientBrowserTableAdapter.Fill(
erpDataSet.PelatesBrowser,
c_id.GetValueOrDefault(),
c_cn,
c_afm.GetValueOrDefault(),
c_job,
c_city);
推荐阅读
- batch-file - 如何在批处理中检查光标位置上的字符?
- c# - Unity - 3d粒子,如何改变alpha?
- google-chrome - 在不同的浏览器选项卡中自动填充相同的用户名密码
- r - 为什么我不能在 R 中加载 seqinr 包?
- docker - Docker mediawiki docker pull mediawiki:1.31.1 下载 1.27.5 代替
- r - 检查R中是否存在URL
- angular - Angular 6 Material - 无法读取未定义的属性“navigateByUrl”
- android - 如果不使用 PRO 帐户时使用 Webview,我可以在 android native 上使用 Vimeo 原生视频流吗?
- ios - UIView 切出任意数量的透明孔
- java - 我在 JTabbedPane 外部的框架内收到 JButton 的“错误:找不到符号”