关于方法返回的问题

xuerueheng 2019-10-06 03:54:00
是这样的,我写了一个程序对用户类实现增删查改的操作,但我程序里有个方法给用户集合加一个用户,然后这个方法被别的方法调用了之后执行并返回后已经给用户集合里加的用户又消失了,我不知道怎么回事,各位大佬给看看呗。
ps:程序的所有代码太长发布全,所以是片段
用户类代码:

/// <summary>
/// 用户类
/// 每个用户的具体信息用此类决定
/// 每个用户由此类实例化
/// </summary>
class User
{
string name;
int nianLing;
char xingBie;
string zhuZhi;

/// <summary>
/// 名字属性
/// </summary>
public string Name
{
get { return name; }
set {
if (value.Length == 2 || value.Length == 3 || value.Length == 4)
{
this.name = value;
}else {
Console.WriteLine("长度不符合要求,请重输。");
Name=Console.ReadLine();
}
}
}
/// <summary>
/// 年龄属性
/// </summary>
public int NianLing
{
get { return nianLing; }
set {
if (value <= 100 || value >= 0)
{
this.nianLing = value;
}
else
{
Console.WriteLine("输入错误,请重输。");
this.NianLing = int.Parse(Console.ReadLine());
}
}

}
/// <summary>
/// 性别属性
/// </summary>
public char XingBie
{
get { return xingBie; }
set {
if (value == '男' || value == '女')
{
this.xingBie = value;
}
else { Console.WriteLine("输入错误,请重输。");
this.XingBie =Convert.ToChar(Console.ReadLine());
}

}
}
/// <summary>
/// 住址属性
/// </summary>
public string ZhuZhi
{
get { return zhuZhi; }
set { zhuZhi = value; }
}

public User() { }
public User(string a, int b, char c, string d)
{
this.Name = a;
this.NianLing = b;
this.XingBie = c;
this.ZhuZhi = d;
}
}


//这是视图层类的方法
/// <summary>
/// 询问用户操作的方法
/// </summary>
/// <param name="args"></param>
static void Main()
{
Console.WriteLine("请问您是否要对用户管理系统执行以下操作?");
Console.WriteLine("加入(a或+)");
Console.WriteLine("删除(b或-)");
Console.WriteLine("改变(c或=)");
Console.WriteLine("查询(d或?)");
Console.WriteLine("如果您要进行某操作,请您输入词语或括号内字母或符号");
string UserXuanZe = Console.ReadLine();
Controller控制器层 controller = new Controller控制器层();
controller.ChuLiUserXuanZe(UserXuanZe);
}
//这是控制器层类的方法
public void ChuLiUserXuanZe(string userXuanZe)
{
View视图层 view = new View视图层();
switch (userXuanZe)
{
#region 匹配加入选择的代码
case "加入":
view.XunWenUserShiFuZenJiaUser();//!!!!!就这有问题这个方法返回后我的users集合里的user就不见了
View视图层.XunWenUserShiFouJiXu();
break;
case "a":
view.XunWenUserShiFuZenJiaUser();
View视图层.XunWenUserShiFouJiXu();
break;
case "A":
view.XunWenUserShiFuZenJiaUser();
View视图层.XunWenUserShiFouJiXu();
break;
case "+":
view.XunWenUserShiFuZenJiaUser();
View视图层.XunWenUserShiFouJiXu();
break;
#endregion
default:
break;
}
}
//这是视图层类的方法
public void XunWenUserShiFuZenJiaUser()
{
Console.WriteLine("您是否要增加用户?");
Console.WriteLine("请输入是/yes或否/no");
string userXuanZe =Console.ReadLine();
if (userXuanZe == "是" || userXuanZe == "yes" || userXuanZe == "Yes")
{
base.ZengJiaUser();
}
}
//这是控制器层类的方法
public void ZengJiaUser()
{
Console.WriteLine("请您根据此格式输入用户信息");
Console.WriteLine("姓名=年龄=性别=住址");
string UserXinXi = Console.ReadLine();
string[] UserXinXiS= UserXinXi.Split('=');
string UserName = UserXinXiS[0];
int UserNianLing = int.Parse(UserXinXiS[1]);
char UserXingBie = Convert.ToChar(UserXinXiS[2]);
string UserZhuZhi = UserXinXiS[3];
newUserCunRuUsers(UserName, UserNianLing, UserXingBie, UserZhuZhi);
}
//这是模型层类的方法
public void newUserCunRuUsers(string UserName,int UserNianLing,char UserXingBie,string UserZhuZhi)
{
Users.Add(new User(UserName, UserNianLing, UserXingBie, UserZhuZhi));
}
//这是模型层类的用户集合
List<User> Users=new List<User>();//用户集合

这是第一张我控制台输入了,还没处理。图片1:
这是第二张已经存入了users集合。图片2:
这是第三张从users集合消失了。图片3:
...全文
95 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿蒙Amon 2019-10-08
  • 打赏
  • 举报
回复
引用 7 楼 xuerueheng 的回复:
[quote=引用 6 楼 阿蒙Amon 的回复:] 1. 为什么添加了User中没有? 你的MVC三层是父子级关系,这里你生成了View的实例,对应的Model中Users会重新分配内存,所以你此时看到的Users已经不是你之前添加User的那个Users,所以Users已经是一个纯新的列表,必然为空。 2. 继续操作之后Users也必然是空。 继续操作,重新调用了Main方法,你的Controller是在Main中实例化的,继续操作又重新实例化了一次,Users此时也必然是空。 3. 几点建议 a. 坚持英文命名吧 b. 关于MVC,你这个程序根本不是MVC,网上太多资料,你可以查查。 c. 关于继承,不要滥用继承,MVC三层不应该用继承关系。 d. 关于Main函数,它只是一个程序的入口,不要让他做那么多事。 e. 多看看书,《C#图解教程》不错,可以看看。 4. 关于你的程序改写 a. 你可以解决1和2的问题,让程序跑起来。 b. 重新写,按照真正的MVC。 加油你可以的!!!
大佬真正的mvc是指带数据库的那种吗?[/quote] 跟数据库没关系,MVC解决的业务分离。直白的说是前后台分离,后台程序员不用管前台界面,前台程序员只专注于页面。
xuerueheng 2019-10-07
  • 打赏
  • 举报
回复
引用 4 楼 阿蒙Amon 的回复:
把你代码发给我,我明天看一下。amon.hu@foxmail.com

邮箱吗?发了
阿蒙Amon 2019-10-07
  • 打赏
  • 举报
回复
把你代码发给我,我明天看一下。amon.hu@foxmail.com
xuerueheng 2019-10-07
  • 打赏
  • 举报
回复
引用 1 楼 阿蒙Amon 的回复:
已经执行完了,你再去类里看,当然没有。
话说你代码太烂了,中文拼音英语混合命名。

这不英语不好吗,命名只能中英混杂了,先凑合看一下
xuerueheng 2019-10-07
  • 打赏
  • 举报
回复
引用 1 楼 阿蒙Amon 的回复:
已经执行完了,你再去类里看,当然没有。
话说你代码太烂了,中文拼音英语混合命名。

蛤?!你咋这想当然的,已经执行完的方法,执行的就是给users集合加user对象,你执行完了你告诉我你没有
极客诗人 2019-10-07
  • 打赏
  • 举报
回复
别好高骛远 先一步步来 加油 最后说一下 命名要不打个全拼 要不就全英文 找个翻译工具耽误不了多久 中西结合太闹腾了
xuerueheng 2019-10-07
  • 打赏
  • 举报
回复
引用 6 楼 阿蒙Amon 的回复:
1. 为什么添加了User中没有?
你的MVC三层是父子级关系,这里你生成了View的实例,对应的Model中Users会重新分配内存,所以你此时看到的Users已经不是你之前添加User的那个Users,所以Users已经是一个纯新的列表,必然为空。

2. 继续操作之后Users也必然是空。
继续操作,重新调用了Main方法,你的Controller是在Main中实例化的,继续操作又重新实例化了一次,Users此时也必然是空。


3. 几点建议
a. 坚持英文命名吧
b. 关于MVC,你这个程序根本不是MVC,网上太多资料,你可以查查。
c. 关于继承,不要滥用继承,MVC三层不应该用继承关系。
d. 关于Main函数,它只是一个程序的入口,不要让他做那么多事。
e. 多看看书,《C#图解教程》不错,可以看看。
4. 关于你的程序改写
a. 你可以解决1和2的问题,让程序跑起来。
b. 重新写,按照真正的MVC。


加油你可以的!!!

大佬真正的mvc是指带数据库的那种吗?
阿蒙Amon 2019-10-07
  • 打赏
  • 举报
回复
1. 为什么添加了User中没有? 你的MVC三层是父子级关系,这里你生成了View的实例,对应的Model中Users会重新分配内存,所以你此时看到的Users已经不是你之前添加User的那个Users,所以Users已经是一个纯新的列表,必然为空。 2. 继续操作之后Users也必然是空。 继续操作,重新调用了Main方法,你的Controller是在Main中实例化的,继续操作又重新实例化了一次,Users此时也必然是空。 3. 几点建议 a. 坚持英文命名吧 b. 关于MVC,你这个程序根本不是MVC,网上太多资料,你可以查查。 c. 关于继承,不要滥用继承,MVC三层不应该用继承关系。 d. 关于Main函数,它只是一个程序的入口,不要让他做那么多事。 e. 多看看书,《C#图解教程》不错,可以看看。 4. 关于你的程序改写 a. 你可以解决1和2的问题,让程序跑起来。 b. 重新写,按照真正的MVC。 加油你可以的!!!
阿蒙Amon 2019-10-06
  • 打赏
  • 举报
回复
已经执行完了,你再去类里看,当然没有。 话说你代码太烂了,中文拼音英语混合命名。

110,571

社区成员

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

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

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