问一下list<>中的问题?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问一下list<>中的问题?相关的知识,希望对你有一定的参考价值。
private list<string> AList;
AList=new list<string>();
AList.Add("This is a string.");
private list<MyClass> Blist;
BList=new list<MyClass>();
BList.Add(new MyClass());
--------为什么把一个字符串加入到list 不用new,把自己的Myclass却要new ,按理说string也是对象嘛
因为你可以尝试下
string s1="111";
string s2=s1;
改变下s2的值,你看看s1有没有变化呢?
没有变化,由于运算符重载的问题,其实 = 号实际上(我的看法)是返回了一个新的内容和s1相同的string类型的对象,所以在平时的操作我们可以将他等同于一个值类型看待
那你看看,上面的例子
string s1="111";我们并没有用到new关键字,"111"可能也直接被识别为string类型了
而对于下面的大哥说的
string tmp = new string("This is a string.");
我记得没有这样的写法吧?
string ss = new string(new char[]'1');
string ss2 = new string(new char[]'1','1');
这个才是正确的吧?
我测试了下,加入一行Console.WriteLine("11");
MSIL翻译为
IL_004f: ldstr "11"
IL_0054: call void [mscorlib]System.Console::WriteLine(string)
可见是将之当作string类型的
所以LZ你也不用深究这个了我觉得···· 参考技术A 字符串是一种特殊的引用类型,
AList.Add("This is a string.");
实际上在编译时进行了如下操作
string tmp = new string("This is a string.");
AList.Add(tmp);
只是字符串有这种情况,其它引用类型都是要显式的new的 参考技术B 人个看法:
应该是编译器把string当作一种基本数据类型吧,就像int,char一样可以不用new.
以上是关于问一下list<>中的问题?的主要内容,如果未能解决你的问题,请参考以下文章
lambda 返回 initializer_list 中的奇怪值
jquery 新手想问一下trigger('click')问题