A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 土豆泥 中级黑马   /  2013-12-14 13:55  /  3711 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 土豆泥 于 2013-12-15 10:02 编辑

如题,不知道有没有人能解答一下,

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

7 个回复

倒序浏览
使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。
static 修饰符可用于字段、方法、属性、运算符和构造函数,但不能用于索引器、析构函数和类型。
这是framework文档里的,
注意“属于类型本身”,我想,第一句应该可以说明一点问题。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
static的用法是:修饰字段、方法、属性、运算符和构造函数。
函数格式:修饰符 返回值类型(形参列表){}。在函数体外已经可以定义static了,再往里面定义一个岂不是画蛇添足?

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
因为机制的关系。
其实C#这个可以理解为是替代C++中宏的东西,那么定义宏当然不能在函数里定义了。
VB我不是很清楚,但是c#的静态变量是在对象生成的时候分配内存空间的,而不是函数执行的时候。如果你在函数里定义,那么这个变量就需要在函数执行的时候分配内存空间,这是C#不允许的,至于为什么不允许,个人看法可能是因为垃圾回收机制的问题

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
C/C++可以在函数内部声明静态局部变量

我觉得C#的static不能用在函数里面的原因
C是面向过程思想(暂且这样说,别喷我,后面也是)的,C++是不完全面向对象思想的,这两种语言使用起来很灵活,C++保留很多C的语法特点,例如可以生静态局部变量,而静态局部变量在C/C++一般用来保存函数状态;C#是完全面向对象思想的语言,如果你在方法体内声明静态局部变量,这势必会导致一种混乱,在C#中,用面向对象的思想,应该把状态保存到对象中,因此,C#没有必要用静态局部变量来保存状态,用字段更清晰,且能避免混乱

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
问题解决了记得改成已解决啊~这样可以加分
回复 使用道具 举报
本帖最后由 如远行客 于 2013-12-15 13:07 编辑

static修饰的是类以及类的成员(字段,方法,属性这些),用static修饰的成员表示它是这一个类所有的,不属于某个特定的对象。在函数内部定义的变量不属于类及其成员,因此不能用static修饰。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马