c# – Nullable(int?)继续抛出不可为空的异常
这是我第一次遇到这种情况 – 当然这不是很多,但我从不需要与集体协商作为我的搜索,同时表明它可以完成,我无法工作出来.
问题是如果用户将文本框留空,C#会自动在回发上输入零并进入数据库.我只想将文本框留空. 我在那里宣布了一个属性: private int? _PageNumber = null; public int? PageNumber { get { return _PageNumber; } set { _PageNumber = value; } } 在我的代码文件中我有: if (tbPageNumber.Text != "") ia.PageNumber = Convert.ToInt32(tbPageNumber.Text); else ia.PageNumber = null; 这是我得到例外的地方: CS0037: Cannot convert null to 'int' because it is a non-nullable value type 所以我想如果我不能改变类型,也许我可以改变输出.所以我想也许我可以把它放在texbox的text属性中来伪造它: '<%# Eval("PageNumber") == 0 ? null:Eval("PageNumber") %>' 抛出CS0019:运算符’==’不能应用于’object’和’int’异常类型的操作数. 为什么这么该死? 解决方法
为了非常直接,ia.PageNumber无法引用您提供的定义,因为以下代码不仅编译和运行,而且写出设置为NULL:
private int? _PageNumber = null; public int? PageNumber { get { return _PageNumber; } set { _PageNumber = value; } } if (string.Empty != "") { PageNumber = Convert.ToInt32(string.Empty); Console.WriteLine("Setting to value."); } else { PageNumber = null; Console.WriteLine("Setting to NULL."); } 底线是ia.PageNumber不是int?或_PageNumber不是int?.为了进一步具体化我的立场,以下代码: PageNumber = Convert.ToInt32(" "); Console.WriteLine("Setting to value {0}.",PageNumber); 抛出预期的异常:
所以问题也不能是填充字符串.最后具体我的立场,以下代码: PageNumber = Convert.ToInt32(""); Console.WriteLine("Setting to value {0}.",PageNumber); 抛出预期的异常:
所以问题也不能是一个空字符串.并且根据jadarnel27发表的评论进一步具体说明你可能正在转换null,实际上是按预期成功的,以下代码: PageNumber = Convert.ToInt32(null); Console.WriteLine("Setting to value {0}.",PageNumber); 实际上,编译,运行和抛出没有执行.它按预期将字符串Setting输出为值0. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |