再发帖!高手帮忙看看一个简单的程序吧~~~~~~~~~~

时间一粒 2010-06-21 10:59:46
之前的那帖完全是个人的笔误(也为自己的笔误负责了),如今重新发帖!

为什么不能编译通过?

class Test
{
static int myArg=1;
public static void Main(String[] args)
{
int myArg;
Console.WriteLine(myArg);
}
}

知道原因的高手就解释一下吧!
谢谢~
...全文
154 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
longshiyue 2010-06-22
  • 打赏
  • 举报
回复
局部的变量myArg没赋值。。
兔子-顾问 2010-06-22
  • 打赏
  • 举报
回复
.....
仔细看我的注释

//函数内的局部变量,与静态变量同名,则之后没有明确指定的情况下myArg表示局部变量
int myArg;
Console.WriteLine(myArg);//这里是没有初始化过的局部变量
Console.WriteLine(Test.MyArg);//这样才是静态成员变量。
Wude_S 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyazhe 的回复:]

变量作用域……
C# code
class Test
{
static int myArg=1;//静态变量
public static void Main(String[] args)
{
//函数内的局部变量,与静态变量同名,则之后没有明确指定的情况下myArg表示局部变量
int myArg;
Console.Wr……
[/Quote]

解释的太好了 ,学习
jingkunliu 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyazhe 的回复:]
变量作用域……

C# code
class Test
{
static int myArg=1;//静态变量
public static void Main(String[] args)
{
//函数内的局部变量,与静态变量同名,则之后没有明确指定的情况下myArg表示局部变量
int myArg;
Co……
[/Quote]
楼上大哥都写得这么详细了,你还搞不懂啊
static int myArg=1;//静态变量可以再整个函数中使用,但是你在main函数中重新定义了myArg,他会把原来的static int myArg=1给覆盖掉,在main函数中只有int myArg;才起作用。
不懂得话还是自己找书看吧,所有的基础类书籍都会讲到变量作用域的问题
yokoshine 2010-06-22
  • 打赏
  • 举报
回复
lz要记住啊,局部变量对全局变量起屏蔽作用的,除非是用了text.myArg,否则你的MAIN函数里的myarg是没有初值的
一切为了你 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyazhe 的回复:]
变量作用域……

C# code
class Test
{
static int myArg=1;//静态变量
public static void Main(String[] args)
{
//函数内的局部变量,与静态变量同名,则之后没有明确指定的情况下myArg表示局部变量
int myArg;
Co……
[/Quote]
说得太细了,比老师都说得细!!!
时间一粒 2010-06-22
  • 打赏
  • 举报
回复
嗯,很感谢 wuyazhe 的耐心指点!
还有其它人的帮忙,我也很感激!
其实,我所问的问题根本就是作用域知识,而不是C#的问题了!
现在是对以前的知识的复习,受益匪浅!
时间一粒 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyazhe 的回复:]
变量作用域……

C# code
class Test
{
static int myArg=1;//静态变量
public static void Main(String[] args)
{
//函数内的局部变量,与静态变量同名,则之后没有明确指定的情况下myArg表示局部变量
int myArg;
Co……
[/Quote]
与答案意思相似,但比解释更详细!谢谢~
但是我还有点疑问,static int myArg=1;和public static void Main(String[] args)
都是在Test的类里面,应该说变量myAry已经被初始化了啊!
兔子-顾问 2010-06-21
  • 打赏
  • 举报
回复
变量作用域……
class Test
{
static int myArg=1;//静态变量
public static void Main(String[] args)
{
//函数内的局部变量,与静态变量同名,则之后没有明确指定的情况下myArg表示局部变量
int myArg;
Console.WriteLine(myArg);//这里是没有初始化过的局部变量
Console.WriteLine(Test.MyArg);//这样才是静态成员变量。
}
}
Csdbfans 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 hhbgk 的回复:]
之前的那帖完全是个人的笔误(也为自己的笔误负责了),如今重新发帖!

为什么不能编译通过?

class Test
{
static int myArg=1;
public static void Main(String[] args)
{
int myArg;
Console.WriteLine(myArg);
}
}

知道原因的高手就解……
[/Quote]

class Test
{
static int myArg=1;
public static void Main(String[] args)
{
int myArg = 0;
Console.WriteLine(myArg);
}
}

这样就不会出错了
兔子-顾问 2010-06-21
  • 打赏
  • 举报
回复
错误 1 使用了未赋值的局部变量“myArg”
Csdbfans 2010-06-21
  • 打赏
  • 举报
回复
那是因为在C#里局部变量需要你去初始化,不像成员变量会有默认值
zj_312 2010-06-21
  • 打赏
  • 举报
回复
重复定义???
bancxc 2010-06-21
  • 打赏
  • 举报
回复
函数中的变量把外边的覆盖了 但是函数中的没赋值

我的理解
bancxc 2010-06-21
  • 打赏
  • 举报
回复
int myArg; //没赋值????????
Console.WriteLine(myArg);

110,537

社区成员

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

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

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