public class CreateUser
{ #region 变量
private string m_UserName;  //帐号
private string m_UserPassword; //密码
#endregion #region 属性 #region 帐号属性
public string UserName
{
get
{
return m_UserName;
}
set
{
m_UserName=value;
}
}
#endregion #region 密码属性
public string UserPassword
{
get
{
return m_UserPassword;
}
set
{
m_UserPassword=value;
}
}
#endregion #endregion #region 实例化
public CreateUser(string username,string password)
{
this.m_UserName=username;
this.m_UserPassword=password;
}
public CreateUser()
{ }
#endregion #region 构造方法 #region 验证用户是否登录
public bool CheckLogin()
{
if(this.UserName==null || this.UserPassword==null)
{
return false;
}
else
{
return true;
}
}
#endregion public string PlayBoBo()
{
if(!CheckLogin())
{
return "没有登陆啊";
}
return "玩BOBO游戏";
} public string GoWC()
{
if(!CheckLogin())
{
return "没有登陆啊";
}
return "上WC拉大便";
}
#endregion
}
这么一个类  然而执行的两个方法PlayBoBo()和GoWC() 都有去验证一下CheckLogin() 是否有该属性有没有办法在调用每个方法时。。不用每次都去验证是否CheckLogin() 而在其它地方验证后,从而影响 到全局的方法。是否可以执行该方法。。而不用调用的方法每一次都支验证一次。。这样可以做到吗????别外再问个小问题 
class a
{}class b
{}和class a
{
  class b
  {
  }}
有什么区别各又有什么好处呢????

解决方案 »

  1.   

    1:第一种情况可以使用继承,在构造函数中调用基类的构造函数,基类的构造函数进行检查。
    2:第二种属于类的设计,可以参考 .NET 中的类库在何时使用这种嵌套的设计。通常这种用法用于两个紧密关联的类,并且内部类只和外部类有关的情况。
    最后,个人觉得作者的类的设计还不好,比如第一种情况,我们会把身份验证和用户执行的动作分开,并且类名不会使用动词 + 名词的方式,而是只使用名词,动词 + 名词的方式用于执行一个动作,因此是用于方法命名的。
      

  2.   

    #region 验证用户是否登录(那么这个函数用在哪里合适呢)
    public bool CheckLogin()
    {
    if(this.UserName==null || this.UserPassword==null)
    {
    return false;
    }
    else
    {
    return true;
    }
    }
    #endregion
    能随便写一小段程序帮助我吗。。谢谢
      

  3.   

    public string PlayBoBo()
    {
    if(!CheckLogin())
    {
    return "没有登陆啊";
    }
    return "玩BOBO游戏";
    } public string GoWC()
    {
    if(!CheckLogin())
    {
    return "没有登陆啊";
    }
    return "上WC拉大便";
    }
    这两个方法中的if是无法避免的啊,在这里不判断CheckLogin(),那么总是要判断CheckLogin()的返回值的,使用基类也是不可避免的(从他的逻辑分析),我想楼主是怎样想的~~
      

  4.   

    你可以增加一个属性,用来判断是否检测过登录,这样你所有的需要登录操作的方法通过判断这个属性来判断,这样可以提高效率。属性在初始化的时候为false,在CheckLogin true逻辑里面置成true。
      

  5.   

    如果是class b:CreateUser
    {
    那这个CheckLogin 方法怎么验证其它方法可执行或者不可执行。。不还是要每个方法都去判断一次吗有没有办法就是如果验证不通过。。这个类的所有方法都不能使用。。而不是每个方法都加一个判断啊!!!
    }
      

  6.   

    个人认为,楼主的这个类没写好
    public string PlayBoBo()
    public string GoWC()
    两方法和
    public bool CheckLogin()方法
    最好不要在同一个类中,前两个方法可以放在Cevent类中
    public bool CheckLogin()这个方法放在Clogin类中,两个类中可以增加很多附加信息Cevent可以继承Clogin
      

  7.   

    你可以把LOGIN和USER分成两个类,只有LOGIN成功后才返回USER类,这样就不用验证了。
      

  8.   

    你可以把LOGIN和USER分成两个类,只有LOGIN成功后才返回USER类,这样就不用验证了。
      

  9.   

    class login
    {
       登录验证}class user
    {
      方法
    }login 生成实例当两个属性不存在的时候便退出
    否则生成user 实例 然后执行相关的方法吗??  楼上的你的是这个思路吗
      

  10.   

    定义一个bool变量
    不就可以了??
      

  11.   

    那也就是说每次要执行一个方法。。也需要判断一这个BOOL变量为真为假是吧~~~感觉上好像还是可以更简单的处理这个问题