问一个关于C#中struct的问题,希望耐心一点哦!!

feeling_vb 2003-05-24 10:43:12
我现在定义一个struct如下:
public class UserCharacter
{
protected string strUserID;
public UserCharacter(){}
public UserCharacter(string UserID)
{
this.strUserID=UserID;
}

public void UserValRight(){
try
{
//这块是数据库连接
SqlDataReader userGroupRecord=cmdUserRight.ExecuteReader();
UserDataRight userDataRight;
//初始化权限
userDataRight.UserAddRight=false;
userDataRight.UserDelRight=false;
userDataRight.UserEditRight=false;
userDataRight.UserSaveRight=false;
userDataRight.UserSelRight=false;


while(userGroupRecord.Read()){
//判断是否有查询权限
if(userGroupRecord.GetValue(3).ToString()=="1")
{ userDataRight.UserSelRight=true;
}
。。。。。。。。。。。。。。。依次往下,是判断其它权限

}
userGroupRecord.Close();

}
catch(SqlException sqlE)
{
MessageBox.Show("数据库连接错误!"+sqlE.ToString(),"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);

}catch(Exception e){
MessageBox.Show("异常错误!"+e.ToString(),"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}

}

struct UserDataRight
{

public bool UserDelRight; //删除权限
public bool UserSelRight ; //查询权限
public bool UserAddRight; //新增权限
public bool UserEditRight; //编辑权限
public bool UserSaveRight; //保存权限



}


////////////////////////////////////////上面是代码是一个类的代码,下面是我怎么调用的
UserCharacter userRightCharacter=new UserCharacter("001");
UserDataRight userDataRight;
userDataRight=new UserDataRight();
userRightCharacter.UserValRight();
if(userDataRight.UserAddRight==true)
{
MessageBox.Show("有新增权限");
}
else{
MessageBox.Show("无新增权限");
}

////////////////////////////////////
这样做不能调用到结构下面的值,请问怎么样才能调用到,我这个有什么错误,我这样的方法是不是很蠢 :)
...全文
33 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yqdeng 2003-05-24
  • 打赏
  • 举报
回复
代码贴出来
feeling_vb 2003-05-24
  • 打赏
  • 举报
回复
在UserCharacter类中的public void UserValRight(out UserDataRight userDataRights)方法处出现一个错误:

E:\CRM\CRM_LANDSERVER\classPackage\UserCharacter.cs(50): The out parameter 'userDataRight' must be assigned to before control leaves the current method


yqdeng 2003-05-24
  • 打赏
  • 举报
回复
当然不行了,userRightCharacter.UserValRight(); 改变的只是userRightCharacter对象内声明的那个UserDataRight对象,并没有影响到userDataRight对象.
你可以修改public void UserValRight()为public void UserValRight(out UserDataRight userDataRights),然后将userDataRight对象传入
userRightCharacter.UserValRight(out userDataRight);
feeling_vb 2003-05-24
  • 打赏
  • 举报
回复
自己顶一下!!
yqdeng 2003-05-24
  • 打赏
  • 举报
回复
out参数是在method中实例化,你应将userDataRights的构造放在UserValRight(out userDataRights)中
feeling_vb 2003-05-24
  • 打赏
  • 举报
回复
namespace CRM_LANDSERVER.classPackage
{

struct UserDataRight
{
public bool UserDelRight; //删除权限
public bool UserSelRight ; //查询权限
public bool UserAddRight; //新增权限
public bool UserEditRight; //编辑权限
public bool UserSaveRight; //保存权限
}


public class UserCharacter
{
protected string strUserID;
public UserCharacter()
{

}
public UserCharacter(string UserID)
{
this.strUserID=UserID;

}

public void UserValRight(out UserDataRight userDataRight){
try
{
//此处连接数据库部分省略 SqlDataReader userGroupRecord=cmdUserRight.ExecuteReader();
//初始化权限
userDataRight.UserAddRight=false;
userDataRight.UserDelRight=false;
userDataRight.UserEditRight=false;
userDataRight.UserSaveRight=false;
userDataRight.UserSelRight=false;
while(userGroupRecord.Read()){
//判断是否有查询权限
if(userGroupRecord.GetValue(3).ToString()=="1"){
userDataRight.UserSelRight=true;
}
}
userGroupRecord.Close();

}

catch(SqlException sqlE){
MessageBox.Show("数据库连接错误!"+sqlE.ToString(),"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}catch(Exception e){MessageBox.Show("异常错误!"+e.ToString(),"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}



}


}

////////////////////调用部分的代码是

UserCharacter userRightCharacter=new UserCharacter("001");
UserDataRight userDataRights;
userDataRights=new UserDataRight();
userRightCharacter.UserValRight(out userDataRights);
if(userDataRights.UserAddRight==true)
{
MessageBox.Show("有新增权限");
}else{
MessageBox.Show("sdddd");
}


////////////////////
错误是E:\CRM\CRM_LANDSERVER\classPackage\UserCharacter.cs(50): The out parameter 'userDataRight' must be assigned to before control leaves the current method

////////////////////非常感谢yqdeng(享受生活每一天)兄弟!!!

110,536

社区成员

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

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

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