空值类型(byte?)如果是 null ,不能作为参数使用吗?

jarodzhao 2009-03-03 03:57:21
我有一个方法是这样的:
    void bindGrid(byte? mPermission)


调用时声明的参数也是 byte? 类型,如下:
            byte? mPermission = null;
if(0 != DropDownList1.SelectedIndex) mPermission = byte.Parse(DropDownList1.SelectedValue);

//调用方法是提示错误
bindGrid(mPermission, IsLock, pageSize);



然后直接调用怎么还提示 未提供该参数???
...全文
1098 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovefootball 2009-03-03
  • 打赏
  • 举报
回复

你的这个未提供参数跟定义可空类型没有任何关系~~~~

你调试看一下你的SelectedIndex是否=-1

另外就是看下你是怎么拼的@mPermission
如果为null,你是不是就没有赋值
jarodzhao 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lovefootball 的回复:]
void bindGrid(byte? mPermission)

bindGrid(mPermission, IsLock, pageSize);

这也不一致啊~~~

private void xxx(byte? b)
{ }

byte? b = null;
xxx(b);
[/Quote]

其实我是这样用的,完整调用代码是这样的:
            byte? mPermission = null;
if(0 != DropDownList1.SelectedIndex)
mPermission = byte.Parse(DropDownList1.SelectedValue);

bool? IsLock = null;
if (0 != DropDownList2.SelectedIndex)
IsLock = bool.Parse(DropDownList2.SelectedValue);

int? pageSize = null;
pageSize = int.Parse(DropDownList3.SelectedValue);

bindGrid(mPermission, IsLock, pageSize);


if(0 != DropDownList1.SelectedIndex) 的判断并未通过,mPermission 还是在 null 状态的
但不知为什么总是提示:参数化查询 '(@mPermission tinyint,@IsLock bit)SELECT mId 序号,mName 用户名,mQuest' 需要参数 @mPermission,但未提供该参数。
jarodzhao 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pztx1992 的回复:]
byte? mPermission =null;//?在这里表示该类型为可空,也就是说可以设置为null
byte b=null;//错误 貌似可空类型是2.0的一个新特性
[/Quote]

老兄,现在都流行 3.0
我都觉得自己好落伍呀
jarodzhao 2009-03-03
  • 打赏
  • 举报
回复
抱歉,因为其他参数没有问题,所以提问时把问题简单化了
调用方法是正确的,参数数量也使用了三个,但是只有这个参数有问题



这个在 web 页面中是的控件,dropdownlist1 有三个 listitem,第一项没有设置 value 值
页面的 postback 并不是这个控件引发的,而在回传前第一项是被选中状态

不知 dropdownlist 在的选项在默认选项时,selectedindex 是否有值?(不选择就没有 selectedindex 值吗?)

lijia12345 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zgke 的回复:]
void bindGrid(byte? mPermission) 你给的方法就1个参数


bindGrid(mPermission, IsLock, pageSize); 你要放里面三个...
[/Quote]
pztx1992 2009-03-03
  • 打赏
  • 举报
回复
byte? mPermission =null;//?在这里表示该类型为可空,也就是说可以设置为null
byte b=null;//错误 貌似可空类型是2.0的一个新特性
北京的雾霾天 2009-03-03
  • 打赏
  • 举报
回复
byte? mPermission
---------------
意思是说mPermission是个可以为空值的Byte变量。不是说后面所有的参数都可以不填的。
pztx1992 2009-03-03
  • 打赏
  • 举报
回复
调用方法的参数类型/数量必须与被调方法的参数兼容
zgke 2009-03-03
  • 打赏
  • 举报
回复
void bindGrid(byte? mPermission) 你给的方法就1个参数


bindGrid(mPermission, IsLock, pageSize); 你要放里面三个...



lovefootball 2009-03-03
  • 打赏
  • 举报
回复
void bindGrid(byte? mPermission)

bindGrid(mPermission, IsLock, pageSize);

这也不一致啊~~~

private void xxx(byte? b)
{ }

byte? b = null;
xxx(b);

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧