一个困惑,求帮助

bineifeilie18 2017-04-07 10:12:15
如下c#代码是用于对ConInstance 实例的一个验证判断
问题:第一次调用函数我传入一个ConInstance ci1,验证成功后保存到connectModel 中,没问题
第二次我调用函数,并传入ci2的时候,为什么我对connectModel 的监视却发现里面的connectModel [0]却变成了我当前传入的ci2对象,而不是我之前保存的ci1对象?
求解惑,想了好久无头绪


public static List<Model > connectModel = new List<Model >();//验证成功后进行保存ConInstance对象和configNum
//Model{
//ConInstance CI{get;set;}
//string str{get;set}
//用于判断ConInstance 对象是否能通过验证,需要和configNum进行匹配
public static int DoWork(ConInstance ci)
{
string[] configNum = { "1", "2","3" };
if (succeedList.Count == 0)//还未成功验证
{
foreach (string one in configNum)
{
if (Login(one, ci) == true)//是否能验证成功
{
People p = new People (one);
succeedList.Add(p);//保存一个people对象
connectModel.Add(new Model { CI=ci,str=one});
}
}
return succeedList.Count;
}
else//验证个数>0,并且对已经保存的进行重新验证
{
int count = 0;
foreach (string one in configNum )
{
bool ishave = false;
foreach (People p in succeedList)
{
if (p.peopleNum == one)
{
ConInstance ci = connectModel.FirstOrDefault(s => s.str == one).CI;
if (Login(one, ci) == true)
{
count++;
}
ishave = true;
break;
}
}
if (ishave == false)
{
if (Login(one, ci) == true)
{
People p = new People (one);
succeedList.Add(p);//保存一个people对象
connectModel.Add(new Model { CI=ci,str=one});
count++;
}
}
}
return count;
}
}
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel6709 2017-04-07
  • 打赏
  • 举报
回复
bineifeilie18 2017-04-07
  • 打赏
  • 举报
回复
引用 2 楼 hanjun0612 的回复:
你的ci2是怎么声明的? ConInstance ci2=new ConInstance()这样应该是没问题的。 如果是ConInstance ci2=ci1; ci2.属性=xxxx ci2.属性=xxxx 这样就有问题了。引用类型的问题。 给你个例子
List<User> ulist = new List<User>();

            User u = new User();
            u.id = 1;
            u.name = "1";

            ulist.Add(u);

            User u2 = u;
            u2.name = "2";
            ulist.Add(u2);
            //到这里为止,ulist中  的u和u1的name都是2

            //如果是这么添加,就没问题了。
            User u3 = new User();
            u3.id = 2;
            u3.name = "3";
            ulist.Add(u3);

            Console.ReadLine();

public class User
    {
        public int id { get; set; }
        public string name { get; set; }
        public string type { get; set; }
        public int value { get; set; }
    }
好像是这个问题,我修改试试看
正怒月神 2017-04-07
  • 打赏
  • 举报
回复
你的ci2是怎么声明的? ConInstance ci2=new ConInstance()这样应该是没问题的。 如果是ConInstance ci2=ci1; ci2.属性=xxxx ci2.属性=xxxx 这样就有问题了。引用类型的问题。 给你个例子
List<User> ulist = new List<User>();

            User u = new User();
            u.id = 1;
            u.name = "1";

            ulist.Add(u);

            User u2 = u;
            u2.name = "2";
            ulist.Add(u2);
            //到这里为止,ulist中  的u和u1的name都是2

            //如果是这么添加,就没问题了。
            User u3 = new User();
            u3.id = 2;
            u3.name = "3";
            ulist.Add(u3);

            Console.ReadLine();

public class User
    {
        public int id { get; set; }
        public string name { get; set; }
        public string type { get; set; }
        public int value { get; set; }
    }
Poopaye 2017-04-07
  • 打赏
  • 举报
回复
public static int DoWork(ConInstance ci)
{
    ……
    ConInstance ci = ……
    ……
}
不可能出现这种代码 楼主要是很闲可以去数数门口的树上有几片叶子

110,545

社区成员

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

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

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