当我尝试更改值时出现问题。
List<RefLanguage> languages1 = _refLanguageService.GetAll();
List<RefLanguage> languages2 = languages1;
languages1.Where(x => x.Id == 1).ToList().ForEach(x => x.Name = "Turkish");
Boolean isSame = languages1.Equals(languages2);
第一行是使用EF获取RefLanguage记录。
当我执行代码时,isSame对象的值为TRUE。
答案 0 :(得分:3)
第List<RefLanguage> languages2 = languages1;
行将languages1
的引用指向与languages2
相同的内存。然后.Equals
方法将比较两个引用,在这种情况下是相同的。
您可以做的比较是
bool isSame = languages1.SequenceEqual(languages2);
答案 1 :(得分:1)
答案 2 :(得分:0)
当您将vector<unsigned char> dec2bin( const string& _hex )
{
vector<unsigned char> ret;
if( _hex.size() < 2 )
{
return ret;
}
for( size_t i = 0; i <= _hex.size() - 2; i += 2 )
{
string two = string( _hex.data() + i, 2 );
stringstream ss( two );
string ttt = ss.str();
int tmp;
ss >> /*hex >>*/ tmp;
unsigned char c = (unsigned char)tmp;
ret.insert( ret.end(), c );
}
return ret;
}
int main()
{
string a = "65";
unsigned char c = dec2bin( a )[0];
cout << (char)c << endl;
return 0;
}
分配给languages2
时,您在两个不同的变量下引用相同的列表,您的where语句不会更改任何内容,因为它只是创建一个新的数据结构(迭代器) )。
您要做的实际上是通过以下方式创建基于前者的新列表:
languages1
但是两个列表中的元素仍然相同,因此当您修改var languages2 = languages1.Where(...).ToList().
中的任何元素时,它也会反映在另一个列表中。