| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1840 人关注过本帖
标题:请教各位大侠:C#中的数组为什么要初始化,我想知道比较深层次的原因。
只看楼主 加入收藏
陈维巍
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2008-10-30
收藏
 问题点数:0 回复次数:10 
请教各位大侠:C#中的数组为什么要初始化,我想知道比较深层次的原因。
各位大侠好!我是一句普通的大一学生,刚接触C#,以前对C有一定的了解。老师讲东西省略了很多东西,所以找到了这个牛X的论坛。我正在自学《C#入门经典》,这书真是本牛X的书啊!正看到数组这个部分,想知声明了数组以后为什么还要进行初始化,变量都不用初始化可以直接赋值,而数组却不能在初始化之前直接赋值。 谢谢大侠们!
搜索更多相关主题的帖子: 深层次 
2008-10-30 18:06
shmilylee
Rank: 2
来 自:江苏扬州蹩脚小公司
等 级:论坛游民
威 望:2
帖 子:242
专家分:22
注 册:2007-7-6
收藏
得分:0 
string[] why = { "谁", "说", "数", "组" , "不" , "能" , "直" , "接" , "赋" , "值" , "的" , "?"};


太可恶了,居然不能超过100个字符!
这区区100个又怎么能概括我平凡而又伟大的一生!
2008-10-31 09:05
beyond_jsc
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2008-10-7
收藏
得分:0 
楼上言简意赅    楼主复制粘贴就知道了
2008-10-31 19:06
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
收藏
得分:0 
2楼的这一句:
string[] why = { "谁", "说", "数", "组" , "不" , "能" , "直" , "接" , "赋" , "值" , "的" , "?"};

不知道是不是成功运行的,如果是,它应该是如下写法的简写:
string[] why = new string[]{ "谁", "说", "数", "组" , "不" , "能" , "直" , "接" , "赋" , "值" , "的" , "?"};

数组是一种引用对象,也就是如上,why并不代表数组本身,而是指向数组在内存中的地址。因此我们声明why时,仅仅是一个可以容纳string数组的一个变量的符号而已,它并不指向任何有用的对象。只有当使用new关键词初始化以后,它才具体指向这段字符串数组所在的内存位置。
为什么要这么做,是因为高级语言中,内存由运行时动态管理和分配,你写程序时并不知道这个程序将在内存的什么位置运行,对象在什么位置创建。
C#也提供了一些简略写法,再例如:
string A = "Hello";就是其中之一,我们看不到new关键字,但实际上它声明了一个A变量,并将A变量指向了存放Hello字符串所在的引用位置。

铲铲是也
2008-10-31 23:47
橘黄色的星期天
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2008-5-27
收藏
得分:0 
我觉的如果看不懂上面的讲述的话应该先搞懂对象的概念吧

每天都是一首歌,每天都是一首诗--静
2008-11-01 01:33
飙马
Rank: 5Rank: 5
来 自:马里亚纳
等 级:贵宾
威 望:15
帖 子:779
专家分:280
注 册:2007-3-28
收藏
得分:0 
两个选择:
  一、先赋长度 String[] strArray=new string[8];
  二、先赋值   string[] strArray=new string[] { "A" , "B" , "C"};

C#中,不能让数组干不明不白的事情,首先总要给它一个名份。

IT精英如同彩票:平凡的人像5块也中不到一样普遍,努力一点你中了5元保了个本。奖金越高,机率也就越小,付出的也越多,盖茨如同500万一样稀有。虽然每天忙碌而平凡,但我努力成为精英,做梦中了500万。
2008-11-01 11:12
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
若是想知道深层次的东西,就弄下堆栈是怎么存放引用变量和其指向的值的。


仁者乐膳,智者乐睡。我都爱~
2008-11-01 11:56
陈维巍
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2008-10-30
收藏
得分:0 
回复 2# 的帖子
《C#入门经典》里说的你这个也是初始化数组的一种方式哦,说是这个叫用字面值初始化哦。要是直接给数组中的一个元素赋值的话实现不了哦,比如直接来个why[0]="谁",这样编译会失败的啊!

心如止水,宁静致远!
2008-11-02 01:15
陈维巍
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2008-10-30
收藏
得分:0 
回复 4# 的帖子
感谢您的回答,貌似描述得很准确。虽然我还没弄懂,但是我先把您讲的描述记下来了,相信以后的学习中可以弄懂的。

心如止水,宁静致远!
2008-11-02 01:18
陈维巍
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2008-10-30
收藏
得分:0 
回复 6# 的帖子
发现了一个语法错误,呵呵 。该给它一个名份。很形象的表述,谢谢!

心如止水,宁静致远!
2008-11-02 01:20
快速回复:请教各位大侠:C#中的数组为什么要初始化,我想知道比较深层次的原因。 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028659 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved