int a = 1和 int b= new int ()有什区别

heyangbin 2009-08-22 02:17:16
int a = 0和 int b= new int() 有什区别?
string str1 = "a"和string str2 = new string('a',1)有什么区别
...全文
931 41 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssd1231 2009-09-12
  • 打赏
  • 举报
回复
搞不懂,帮顶
vwxyzh 2009-08-23
  • 打赏
  • 举报
回复
int b = new int();
直接被编译器优化成:
int b = 0;

string str1 = "a"
str1所引用的"a"是一个被拘留的字符串,全局共享的一个字符串(所有这样写的字符串变量的他们的都引用这相同的实例)
string str2 = new string('a',1)
str2所引用的"a"是一个直接创建出来的字符串,不被拘留,因此和str1是两个不同的字符串实例,虽然两者的内容是一样的,但是是两个不同的实例
moface 2009-08-23
  • 打赏
  • 举报
回复
来晚了……
mxc1225 2009-08-23
  • 打赏
  • 举报
回复
9楼的弟兄别瞎说啊!?
redleafe 2009-08-23
  • 打赏
  • 举报
回复
学习了。
对于数值型的变量和字符型的变量,我都是直接赋值进行初始化的。int a = 0。
能不用new的时候我就不用new,代码要精简。
xxgjenny92 2009-08-23
  • 打赏
  • 举报
回复
自己上机实践,然后去总结,这样更加容易掌握,你也可以查看msil代码
龙宜坡 2009-08-23
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 heng612 的回复:]
一个赋值,一个先实例化对象
[/Quote]

何来对象?

结构体
heng612 2009-08-23
  • 打赏
  • 举报
回复
一个赋值,一个先实例化对象
ywl236 2009-08-23
  • 打赏
  • 举报
回复
效果是一样子的,只不过,后者涉及到变量类型的深入知识!
其实不管是String int boolean也都是一个类,只不过这个类,被系统封装过
我们可以直接拿来赋值用,不需要进行实例化!
int i = 0;//直接赋值使用
int i = new int();//在内存中开僻一个空间用来存放int类型的值,但是值为空!
int i = new int(0);//在内存中开僻一个空间,并赋值0
假定有一个我们自定好已存在的类User,我们需要用这个类的时候需要按下面方式初始:
User user = new User();//实例化的过程
直接写user = "123";//不new一下就会报错!

把int也看做一个类,只是它是由系统定义好的,不需要一定用new来实例(用new也不会错)
所以就有了int i = 0;这样子的写法
阿牛138588 2009-08-23
  • 打赏
  • 举报
回复
int 和string是基本类型,声明时不需要实例化
hangang7403 2009-08-23
  • 打赏
  • 举报
回复
up
龙宜坡 2009-08-23
  • 打赏
  • 举报
回复
效果一样,不要以为int b= new int()就会new出来一个实例,更不会什么实例化


int实际上是Int32结构体,结构体是值类型的,何来实例☞
tkx180 2009-08-23
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 maiker1010 的回复:]
int a = 0和 int b= new int() 有什区别?
string str1 = "a"和string str2 = new string('a',1)有什么区别

new 没有必要吧
能走直线就不必绕弯弯,
代码能够少写就少写,能用简单的方法实现,绝不为难自己用复杂的实现

[/Quote]
24K純帥 2009-08-23
  • 打赏
  • 举报
回复
第一个没区别,第二个没见过
ProjectDD 2009-08-23
  • 打赏
  • 举报
回复
int a=1;
int a=new int(1);

--
这两个完全是等效的

int a;
int a=0;
--
这两个也是完全一样的;
zhoujianzhou 2009-08-22
  • 打赏
  • 举报
回复
string a = "a";
string b = "a";
System.Diagnostics.Debug.Write( Object.ReferenceEquals(a,b) );
zhoujianzhou 2009-08-22
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 wuyq11 的回复:]
String str = "a"; 这个只是一个引用,内存中如果有“a"的话,str就指向它
String str = new String("a");是根据"a"这个String对象再次构造一个String对象,将新构造出来的String对象的引用赋给str
int i = new int();完全等效于int i=0;,因为int的默认构造函数就是赋默认值0
而且值类型的默认构造函数是可以隐式调用
int a = 0和 int b= new int() 效果一样

[/Quote]

字符串的不变性:
当我们创建了字符串对象a,它的值是“a”,当我们再创建一个值为“a”的字符串对象b时它不会再去分配一块内存空间,而是直接指向了a在内存中的地址。
huyou1983218 2009-08-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 chaozi_249 的回复:]
int a = 0和 int b= new int() 有什区别?
a 是初始化并且赋值,也就是开辟内存空间并且赋值  b 是只初始化并没有开辟空间
string str1 = "a"和string str2 = new string('a',1)有什么区别
str1 直接初始化并且赋值 a ,str2 先实例化后赋值。
[/Quote]
误导群众
waz99 2009-08-22
  • 打赏
  • 举报
回复
学习了
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 maiker1010 的回复:]
int a = 0和 int b= new int() 有什区别?
string str1 = "a"和string str2 = new string('a',1)有什么区别

new 没有必要吧
能走直线就不必绕弯弯,
代码能够少写就少写,能用简单的方法实现,绝不为难自己用复杂的实现

[/Quote]
ding
加载更多回复(20)

111,101

社区成员

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

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

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