问一下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类型,我们可以不正确的将之理解为值类型
因为你可以尝试下
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<>中的问题?的主要内容,如果未能解决你的问题,请参考以下文章

请教一个关于java泛型的问题

怎么才知道List对象中存放的对象的类型呀>>>>急

lambda 返回 initializer_list 中的奇怪值

jquery 新手想问一下trigger('click')问题

盘点一下面试官最爱问的泛型和包装类,建议反复观看,真的写的非常详细

请为我解释一下好吗? java中的私有列表<>名称(列表<>模型,字符串名称)