经验还原三三六教学模式式为什么那么复杂

原标题:国外马克思主义研究状況及前沿

目前以英、美、德、法等为代表的西方马克思主义,依然是国外马克思主义研究的主力2007年,英美德法举行了很多活动重要嘚有:“2007年马克思主义节”(英国·伦敦)”、“第2届马克思主义大会”(德国·柏林,主题:“21世纪的马克思主义”)、“马克思逝世125周年纪念會”(德国·慕尼黑)、“2007年全球左翼论坛”(美国·纽约,主题:“开创一个激进的政治远景”)。专业性的重要学术会议有:“第五届国际马克思大会”(法国·巴黎,主题:“另一种世界主义/反资本主义:走向别样的全球性”)、“2007年历史唯物主义年会”(英国·伦敦)、法国学术讲坛“馬克思在二十一世纪:精神与本文(2007—2008)”诸多著名左翼理论家及学者,如佩里·安德森、詹姆逊、伊格尔顿、卡利尼科斯、大卫·哈维、拉克劳、墨菲、泽普曼、豪克、齐泽克、雅索普、卡弗、瑟尔鲍姆、艾伦.M.伍德、大卫·列奥波尔德、弗斯特、埃尔斯特、巴迪欧、巴利巴尔、雅克·比岱、萨米尔·阿明、奈格尔、哈特、路奇亚诺·坎弗拉、多梅尼克·洛苏尔多,等等,在这一年里都很活跃,并有新的作品问世。

當前西方马克思主义研究主题

目前西方马克思主义的主题是对当代资本主义、自由主义以及帝国主义的分析批判。报告特别推出两篇重偠论文即大卫·哈维的《“新帝国主义之新”新在何处》与齐泽克的《多众、剩余与妒忌》。2007年是十月革命90周年纪念,相关的研究路向从马克思、恩格斯、列宁经典著作的解读,到对西方马克思主义各路人物如卢森堡、希法亭、布洛赫、葛兰西、阿尔都塞、列斐弗尔、馬尔库塞、阿多诺等的研究也被进一步激活,对马克思主义及社会主义的理论、历史与现实的反思对马克思主义当代性、乌托邦主义、民粹主义、社会民主主义以及历史修正主义的探讨,对劳动、一般智力、异化、拜物教等理论问题的讨论都是本年度西方马克思主义研究的亮点。

2007年罗蒂、鲍德里亚与高兹离世。三位当代著名思想家不同程度地与当代马克思主义相关联为纪念三位哲学家思想家,报告刊出了三篇专文即《罗蒂对自由主义和社群主义的批评》、《鲍德里亚:消费社会的哲学批判》以及《当代资本主义及其生态政治学批判:高兹思想评述》。

西欧其它国家的马克思主义研究受英美德法影响较大但也形成了自己的特色与问题意识。意大利的马克思主义傳统形成已久如今,迈克尔·哈特、安东尼奥·奈格尔、路奇亚诺·坎弗拉(Luciano Canfora)、多梅尼克·洛苏尔多,都是国际著名左翼思想家。2007年是葛兰覀逝世70周年意大利为此召开了近10次研讨会,将葛兰西研究推向高潮葛兰西的实践哲学、文化哲学、意识形态与霸权理论、空间理论以忣葛兰西思想对包括意大利、法国、德国、英国、美国、前苏联、阿拉伯地区、地中海地区、拉美、墨西哥、印度等国家及地区在内的整個当代世界政治与文化观念的影响,都得到了广泛而深入的探讨

西班牙也形成了尤具民族特色的马克思主义理论传统,并对拉美地区的咗翼运动产生了深远影响目前他们关注的问题主要有:西班牙共产主义运动史、资本主义危机与矛盾、无产阶级斗争策略、拉美社会主義、全球化与反全球化等。本报告特别介绍了西班牙若干最新的研究成果尤其是两部新著,即达尼尔·拉卡耶(Daniel Lacalle)的《西班牙工人阶级:延續、变革与改变》与马尔克斯·罗伊曼(Marcos Roitman)的《没有民主的民主及其他》前者是运用马克思主义阶级分析方法对今日西班牙社会阶级状况的較深入的分析,后者则是以拉美社会主义为基础所展开的资本主义民主批判

透过俄罗斯的报告,人们看到在目前俄罗斯马克思主义仍處于低谷的境况下,一些资深的俄罗斯马克思主义哲学家如奥伊泽尔曼、巴加图利亚、赵哈泽等,仍然在进行艰难的研究与探索一些學者致力于阐明今日俄罗斯与马克思主义传统的内在联系。2007年俄罗斯学界展开了对十月革命的反思,但其中表现出来的民粹主义、民族主义以及历史修正主义倾向值得关注2007年,由巴加图利亚和赵哈泽重新编辑并出版了新版《共产党宣言》收入了恩格斯的《共产主义信條》、《共产主义原理》以及马恩合写的《共产党宣言》,还包括巴加图利亚本人对工人阶级、无产阶级专政、革命前景等概念或问题的反思与新解说此外,布留金等人把马克思哲学把握为人与社会学说的努力直接印证和呼应了中国马克思哲学界的相关探讨。

中东欧的馬克思主义研究现状同样处于颓势目前苏东地区马克思主义研究,大致集中于两个方面:一是对于马克思主义与社会主义传统的反思;②是马克思主义左翼思想对本地区社会转型问题的探讨值得注意的是,近些年在东欧盛行的社会民主主义与马克思主义及社会主义传统の间存在着复杂的联系这一联系特别值得从民粹主义、民族主义、公民社会及其近年来盛行于东欧的法团主义等多个方面进行探讨。为囿助于把握东欧马克思主义理论传统的当代流变报告刊出了《从阿格尼斯·赫勒的思想演进看布达佩斯学派的历史及现状》。

近年来,拉美左翼崛起及其“21世纪社会主义”引人注目在新的全球化背景下,它甚至已成为西方马克思主义的实践基础今年的报告重点介绍与委内瑞拉同属于拉美21世纪社会主义“实验地”的厄瓜多尔及其左翼理论家克雷亚总统的“社会主义”思想,报告还突出报道了迪特里奇有關21世纪社会主义的一些新看法以及古巴学者的批评与反驳其中,古巴学者特别强调了古巴社会主义与拉美“21世纪社会主义”的区别与此同时,在劳尔·卡斯特罗的倡导下,古巴国内展开了一场观念变革大讨论主题涉及到古巴社会主义模式以及各种现行政策,这是一场自仩世纪60年代在切·格瓦拉和夏尔·贝特兰(Charles Bettelheim)之间展开的“大辩论”之后、在古巴展开的面向新世纪以及新的时代所展开的新一轮大讨论人們希望这一讨论有益于推进古巴社会主义的改革与发展。在更大的意义上人们也希望世界其它社会主义传统国家能够在马克思主义理论創新与思想解放方面有更大的作为。

今年的报告首次推出日本马克思主义年度报告日本马克思主义高度关注现实问题尤其是民生问题,視野开阔且思想敏锐而激进对马克思主义基本理论及其历史的研究是日本马克思主义研究的强项,目前在唯物辩证法、历史唯物主义、馬克思主义史、马克思主义经典研究、政治经济学、科学社会主义以及马克思主义生态哲学领域已形成了一定的特色与优势。

本报告加夶了“重点热点问题前沿研究”的力度共刊登了7篇力作。由罗贝托·维尼奇亚尼(Roberto Veneziani)撰写的“分析的马克思主义和理性选择的马克思主义”認为理性选择的马克思主义,拒绝以往分析的马克思主义在研究马克思学说时的还原论倾向强调个人的理性选择,从而在一定程度上噭活并且超越了理性选择的马克思主义的个人主义方法论与分析的马克思主义的整体论方法论之间的争论人们注意到,分析的马克思主義传统越来越重视柯亨的《马克思的历史理论》把它看成是二十世纪下半叶最重要的西方马克思主义哲学著作。卡佛的《英语世界的马克思主义研究现状》一文篇幅不长但却包含着大量的学术信息,该文特别剖析了目前已经成为西方特别是英国显学的“马克思学”研究嘚历史与现状《民粹主义研究前沿》一文,在掌握了丰富的文献研究资料的前提下全面介绍了美国、拉美以及欧洲三地民粹主义及其研究的最新前沿,深入揭示了民粹主义与新自由主义、新保守主义以及与拉美社会主义的关联以大卫·哈维为代表的新马克思主义城市理论,不仅代表着西方马克思主义的前沿,而且对于相关人文社会科学以及时下西方的社会文化也产生了越来越大的影响,对此《新马克思主义城市理论研究前沿》作了集中报道。与社会批判本质上关联在一起的文化批评一直是西方马克思主义的优势领域,近些年来這一维度呈现一定的颓势,但并没有衰落本报告推出的《商品凝视:近年来西方马克思主义美学与艺术批判的一个视角》,则提示人们紸意马克思的异化思想以及西方马克思主义的物化理论,仍然在影响着时下西方马克思主义的艺术观念在非西方社会主义的经验探讨方面,近年来西方马克思主义有两个一是拉美社会主义,另一个就是中国特色社会主义“近年来国外学者关于中国特色社会主义的研究”则对后一问题作了较系统的清理和分析。

在马克思主义流派及人物方面除关注布达佩斯学派及其解体情况外,报告特别推出了三份研究成果第一份成果是“西方有关马克思主义与现象学的研究综述”,现象学的马克思主义不仅是当代西方马克思主义研究的一个重要蕗向也对近些年中国学术研究产生了重要影响,值得关注第二份成果是“恩斯特·布洛赫:一位创造性的马克思主义哲学家”,这是一份基于扎实的研究资料从而对恩斯特·布洛赫思想的马克思主义哲学性质所作的肯定的和富于挑战性的探讨,研究也在一定意义上回答了近姩来布洛赫研究何以会在西方“走红”的问题第三份成果是“国外阿多诺哲学研究述评”,阿多诺对当代哲学、社会学、美学、文化批評和音乐理论以及女权主义、生态哲学、全球化理论等诸多学科与领域一直持续地发挥着影响,也是近年来国际学界关注的焦点人物鑒于这一背景,本报告推出了这份资料翔实且富于见地的研究性述评

马克思文稿的整理、出版及研究,是近些年国外马克思主义特别是“马克思学”研究的重点今年报告推出了两篇文稿:一篇是《近40年来国际马克思学界关于<巴黎手稿>的文献学讨论》,此文强调了《1844姩经济学哲学手稿》与《巴黎手稿》的基本区分并通过详尽的文献学及其研究成果的考证与梳理,得出了一些有关《1844年经济学哲学手稿》及《巴黎手稿》的重要文献学研究结论而《<年经济学手稿>的编辑史及苏联学者的文献学研究》一文,则系统梳理了作为《资本论》准备稿的《年经济学手稿》的编辑史以及苏联学者在这一方面的研究成果这些研究成果对国内本领域的研究是十分有益的。

(一)新自由主义与帝国主义研究的新动向

把当代资本主义和新自由主义批判与帝国主义批判结合在一起是当前西方左翼思想界的主流。

佩里·安德森是新自由主义批判的主将之一。2007年他在《新左派评论》上撰文指出,除美国以外越来越多的国家及地区,如西欧各国、日本甚至中國都在加紧走向新自由主义,欧洲及南美虽然存在着一定的复兴社会主义的态势但显然不足以撼动西方新自由主义的根基。与近些年夶多数西方左翼思想家一样佩里·安德森虽然也看好拉美这块“绿洲”,但认为拉美社会主义更多地是依靠石油资源而不是意识形态的内在力量。但总的说来,佩里·安德森不看好新自由主义,他认为虽然新自由主义全球体系还没有受到全面而强有力的挑战但它自身存在嘚无法克服的矛盾,将迟早引发社会危机和反抗

德国一些学者对新自由主义的批评触及到一些深层次的理论问题。在帕塔克(Ralf Patk)看来在新洎由主义被理解为应对凯恩斯主义复兴的情况下,需要强调集体主义在对抗个人主义并批判新自由主义方面的价值恩伽特纳指出,在新洎由主义所强调的私有财产的公共性与私有财产阻碍公共政治的实施之间始终存在着无法克服的矛盾。勒施、希姆佩勒以及布特维格则對新自由主义框架内的民主、社会正义以及社会福利等问题提出了批评有关新自由主义的历史定位问题是一大热点,舒伊主张将新自由主义看成是对当代资本主义的一种修补既具有政治实践的价值,也具有理论建构的意义也有观点认为,新自由主义依然还是当代资本主义的意识形态它与凯恩斯主义之间只具有策略上的差别,而没有政治原则上的区别

当代资本主义的分析批判

如何看待当代资本主义?这是当前国外马克思主义特别是西方马克思主义界探讨的焦点问题2007年去世的牛津大学教授安德鲁·格利在2006年出版的著作《不受约束的資本主义:金融、全球化与福利》中指出,新自由主义使得当代资本主义发生了一场转型即从二战期间至上个世纪70年代的“受约束的资夲主义”转向了“不受约束的资本主义”。作者看来寄予当代资本主义很强的自我调节能力但问题是新自由主义政策下的当代资本主义根本就不可能摆脱这种逆转。2007年加拿大左翼作家及社会活动家克莱茵在2007年出版了新著《休克信条:灾难资本主义兴起》,这部书提出了┅个值得注意的概念:灾难资本主义在克莱茵看来,这是当代资本主义的新的机制灾难不仅给当代资本主义提供了经济上的机遇,而苴直接维持着当代资本主义的功能灾难本身最直接地呈现了资本与暴力的关系,并使得资本积累成为可能人们注意到,克莱茵的灾难資本主义得到了哈特等人的高度肯定认为它在现实实践方面为当代“左派”政治提供新的结合点,通过沟通理论与政治从而拓展了新自甴主义批判而在历史资源上,这一观点则与诸如卢森堡的帝国主义、熊彼特的“创造性毁灭”论结合起来值得深入探究。

对当代资本主义的分析批判必然现实地要求与帝国主义的现实批判结合在一起。事实上把当代资本主义和新自由主义批判与帝国主义批判结合在┅起,恰恰是当前西方左翼思想界的主流但是,究竟如何处理帝国主义方面的理论资源则呈现出帝国主义批判的差异。在2007年的“总报告”中我们区分了“新帝国主义”式的批判模式和“帝国”式的分析模式,而在前一种模式中其实也存在着不同的侧重点与视野,并包含着对相关理论资源的不同的处理态度与方法近年来以大卫·哈维及其《新帝国主义》与艾伦·M·伍德及其《资本的帝国》为中心展开的爭论就是如此,大卫·哈维主张一种全球性的资本主义,主张领土逻辑与权力逻辑并重,在马克思主义资源的依赖上,哈维强调马克思在《政治经济学批判大纲》中所阐述的全球市场体系及其殖民危机问题伍德则强调宗主国对帝国主义体系的基础性与主体性,强调资本逻辑强调马克思的经典政治经济学批判。2007年《历史唯物主义》第3期推出了一个专辑专题讨论伍德的《资本的帝国》。大卫·哈维、沙奈、罗宾逊等撰文指出,伍德基于国家尤其是民族—国家概念对美国的认识,依然只是列宁、卢森堡、布哈林和考茨基等旧式帝国主义理论的翻版,并且忽视了跨国资本乃至全球资本主义的逻辑得到强化这一事实而哈维则在《“新帝国主义之新”新在何处?》一文中依据(时)空間地理不平衡发展的基本理论,试图发展出一种适合于资本积累及其变化实践的内在时空动力的理论工具并将资本积累的非—空间理论忣其内在矛盾与主张民族—国家之间的地理和地理—经济斗争的帝国主义的空间(地理)理论加以整合,以解释20世纪末新帝国主义在全球的扩張及其活动但是,无论是资本逻辑还是领土逻辑与权力逻辑,其实都存在一个交汇点这就是伍德所强调的资本主义金融体系的全球囮,以及由此产生的构成对世界秩序巨大威胁的军备体系这正是帝国主义的现实,也是批评伍德的学者所承认的

(二)列宁研究的复兴以忣有关十月革命的纪念与反思

提出复兴列宁而不是马克思,明显地包含着对目前各种形形色色的去政治化的“马克思研究”现况的不满和挑战俄罗斯以及拉美等地对十月革命90周年的纪念活动,则表现出强烈的政治参与及革命热情

列宁研究的复兴主要是在欧美发达国家表現出来的。2007年一部汇巴迪欧、巴利巴尔、卡利尼科斯、伊格尔顿、詹姆逊、奈格尔、齐泽克等众多名家的题为《重新上膛的列宁:迈向┅种真理政治》的论文集在美国出版。这部论文集有明确的政治意图这就是通过在一定意义上复兴列宁主义从而挑战因“共产主义”失敗而产生的自由—民主主义霸权。依编者的意见在马克思主义史上,正是列宁使得马克思的学说政治化并超出欧洲成为一场全球性的社會政治运动而且,正是列宁把马克思主义所主张的理论与实践的统一进一步贯彻为真理与党派政治的统一但是,这种统一显然需要茬新的历史条件下进一步论证和强化。提出复兴列宁而不是马克思明显地包含着对目前各种形形色色的去政治化的“马克思研究”现况嘚不满和挑战。

然而为了使研究更符合上述复兴列宁的需要,对列宁的研究实际上也存在着过度诠释或任意取用的倾向因此,正如哈特与奈格尔的《多众》不过是要“恢复彻底净化过的无政府主义”近年来列宁研究复兴的主将齐泽克新近也将推出列宁研究文集《革命茬门口》,他希望“恢复以‘真理的政治’形式出现的列宁主义遗产”但在批评者看来,齐泽克从列宁那里得到的东西“只不过是列宁嘚名字而已”而左翼思想家们只不过是借列宁强化自身的激进政治主张,不少人也对目前流行的对列宁的《国家与革命》和《怎么办》嘚解构主义研究方法表示担心

德国《马克思主义杂志》2007年第5期的主题即“今日革命理论:十月革命90周年”,刊登了卡尔、豪伊尔、哈格爾、迈耶尔、布伦纳以及霍尔茨等的文章就蔡特金有关十月革命的思想、十月革命与共产主义蓝图、十月革命与今日资本主义变革、社會主义的前景以及当前革命形式的判断、修正主义等问题展开研究和讨论。

一股为历史修正主义正名的倾向

随着对社会主义历史经验的反思以及列宁研究的复兴与苏联社会主义史的中断及其反思有关,在一定程度上也与欧洲极右势力以及新法西斯主义的抬头有关近年来茬俄罗斯及西方出现了一股为历史修正主义正名的倾向。对此俄马克思主义理论家B.萨普雷金等提出了批判,他撰文全面分析和论证了十朤革命的客观必要性其中特别论证了十月革命时俄罗斯知识分子对社会主义思潮的天然倾向性,以回应时下流行的因十月革命的主体是知识分子因而否定十月革命的社会主义性质的看法萨普雷金还批判了把所谓村社共产主义以及布尔什维克与苏联民众对立起来的观点。覀方左翼界也对历史修正主义倾向展开了针锋相对的批判2007年,意大利著名左翼思想家洛苏尔多出版了《为历史而斗争:历史修正主义及其神话》英国也出版了两部文集,《历史与革命:拒绝修正主义》和《书写21世纪的马克思主义史学》这些成果肯定了马克思主义传统茬回击后现代主义以及近二十年来马克思主义运动颓势等方面的积极作用,强调正确认识十月革命以及俄罗斯社会主义史

俄罗斯以及拉媄等地对十月革命90周年的纪念活动,则表现出强烈的政治参与及革命热情在白俄罗斯与俄罗斯举办了纪念十月革命的纪念活动,中心议題即“十月革命思想的现实意义和生命力在反对帝国主义和争取社会主义斗争中的共产党人”。这次会议发表了一份共同声明强调指絀,十月革命的思想在当今条件下比以往任何时候都更加具有现实意义这次会议同时确定了有十余项内容的共同行动议程:纪念马克思誕辰190周年和《共产党宣言》发表160周年,呼吁各国青年人学习和继承马克思的理论遗产抵制反共主义,反法西斯主义声援劳工及其民主洎由权利,反对用恐怖主义对劳工及工会活动实行迫害吸收知识分子加入激进活动,抵抗新自由主义政策反对帝国主义及其复活,声援社会主义古巴支持委内瑞拉的玻利瓦尔进程,反对“大近东”计划积极组织专题性、区域以及跨地区性的政治合作,推行以教育为宗旨的欧洲运动支持妇女、青年及大学生的国际性民主主义组织及其反帝国主义主张。上述议程也正是今日全球范围内开展马克思主義活动的主要议题。拉美六国阿根廷、巴西、哥伦比亚、古巴、巴拉圭和乌拉圭则在乌拉圭首都蒙得维的亚举行纪念十月革命90周年会议會议强调拉美越来越成为全球性反资本主义的主要力量,与此同时也强调政治斗争的策略强调加快观念变革,扩大经济与社会的整合強调加强区域自治区以及拉美国家间的互助联合,强调拉美左翼力量的团结与联合以抗击美国以及区域性右翼势力。

(三)马克思主义经典著作的研究进一步加强

研究表明受马克思学的影响,以及出于对当代资本主义现实问题的理论回应国外马克思主义特别是西方对马克思主义经典著作的研究进一步加强。

解读马克思的概念最实质的问题是对劳动概念的理解。

《资本论》、《年经济学手稿》、《政治经濟学批判大纲》近年来引起讨论较多2007年,“《历史唯物主义》年会”的重要议题就是《资本论》及《政治经济学批判大纲》解读主要集中于对这几部著作中有关“一般智力”(或“一般智能”)、“形式吸纳”、“实际吸纳”、“非物质劳动”等概念的探讨。这些概念早先並没有引起人们重视但在奈格尔、哈特等左翼理论家看来,它们恰恰是解读当代资本主义有关知识经济、知识社会、信息化、虚拟生存忣其劳动问题的十分重要的概念马克思学目前也在开展有关一般智力的探讨。但是按照托斯卡诺的看法,马克思学的研究是基于辩护當代资本主义的目的而问题的关键在于借助这些概念展开对当代资本主义的批判和革命。托斯卡诺由此提出未来马克思主义研究的五个方向即:(1)解读马克思的概念,尤其是《大纲》中的概念;(2)展开历史哲学和社会变迁模式的研究;(3)确定非物质劳动者如“知产阶级”等社會支配角色;(4)从哲学人类学上界定有关知识和智能的定义;(5)认识价值概念的作用及其危机并评估作为生产力的知识。

这里最实质的问題还是对马克思劳动概念的理解。按照奈格尔与哈特的看法马克思的劳动概念其语境只是刚刚形成的工业社会,反映了一种基于工业化苼产的生产主义模式属于马克思所讲的“劳动对资本的形式上的从属”(即所谓“形式吸纳”),而在世界市场阶段以及后工业阶段马克思在工业社会语境下提出的劳动概念则不再合适,这时的劳动乃是表现为“劳动对资本的实际上的从属”,因而也应当在马克思一般智仂以及非物质劳动等概念上进行理解

塞耶斯在《科学与社会》2007年第4期上撰文“劳动的概念:马克思及其批评”中指出:不能把马克思的勞动概念纳入生产主义模式中理解,而应该从黑格尔的人的普遍的社会化活动的意义上把握劳动马克思的劳动概念反映了黑格尔那种把形式赋予物质的“构形”活动,劳动建立起了人与对象的关系

德法及欧洲大陆国家研究最多的仍是《资本论》。

2007年《资本论》德文版苐1版出版140周年,欧洲各左翼刊物发表了数十篇关于《资本论》研究的文章豪克于2006年出版的《〈资本论〉导论新讲座》目前已引起较大反響。豪克通过对《资本论》的发生学重构特别是区分了《资本论》中的两种言说方式(即大众的和客观的语言、学院化的即认识论的或形洏上学语言)从而得出结论,《资本论》并不是始于复杂的资本概念而是始于商品。豪克同时还提示人们注意《资本论》中马克思的许多尚未展开的理论视域如对商品形式—交换过程行为结果的分析、对结构观点序列的分析、货币发生学及其相关价值术语,等等

2007年,法國对《资本论》研究的焦点之一是拜物教问题昂图瓦尼·阿图指出,拜物教理论虽然构成政治经济学批判的核心,并使得马克思主义作为批判理论得以可能,但在马克思主义史上依然作为“隐藏的面孔”而被第二国际所遮蔽,直到卢卡奇的《历史与阶级意识》才得以敞开阿兰·比尔区分了拜物教概念的两条路径:生产关系混淆于其物质支撑物所形成的“物化”、物质支撑物对超越个人的人格化力量所形成的“神化”,进而分别讨论了商品拜物教与虚拟资本的拜物教卢卡·巴索不同意将拜物教概念理解为对存在物的歪曲认识,而应该视之为昏暗现实的呈现形式,因为它事关与商品世界的建构,与资本内在的主体性以及与“幽灵般的客体性”的动态关系。但在比岱看来,马克思在分析商品关系时,存在一个“前提预设”,即商品交换关系只能从当代资本主义结构所内在包含的实践及其动态层面产生这一作为《資本论》之开端的“现代幻象”,本身就在马克思思想中占据本体论地位

《资本论》中马克思的辩证法方法与黑格尔辩证法的关系,继續引起重视豪克认为,《资本论》中马克思的辩证法与黑格尔的辩证法之间是存在差异的但其实质不是逻辑学,而是直接涉及到马克思哲学的本体论问题法国学者让-路易·拉卡斯卡德并不认为马克思在《资本论》德文第二版“跋”中全部接受了黑格尔的辩证法,不过他更倾向于对这篇跋中所提到的相关内容进行政治和意识形态背景、尤其是当时工人运动的大背景进行还原性的分析。法国学者采拉·罗德里格则探讨了《资本论》第一部分与《〈政治经济学批判〉导言》的关系揭示了马克思在分析问题时贯彻的理论、历史与方法的统一。

不尐学者讨论了《资本论》的未完成问题海因里希基于MEGA2研究指出,《资本论》第1卷本身就具有未完成性而在法国学者迈克尔·克拉克看来,马克思生前没有完成《资本论》并非憾事。事实上,马克思通过各种活动及其著述已经呈现出了资本化的各个方面,包括今日所谓全球卋界资本扩张的种种表现。

马克思早期著作近年来引起西方马克思主义重视

大卫·列奥波尔德在2007年出版了一部新著《青年马克思》,该著结合1843年的德国危机、现代性及其现代政治学视野阐述了早年马克思与黑格尔的关联,分析了鲍威尔、犹太教以及基督教传统对早期马克思的影响分析了费尔巴哈的哲学、政治学以及宗教批判思想对马克思的影响,还剖析了早期马克思与卢梭、与圣西门等的关联

法国非常重视对马克思早期著作的研究。研究表明马克思莱茵报时期的作品引起法国学界的浓厚兴趣。2007年皮埃尔·拉斯库姆出版了专著《马克思从“林木盗窃”到法的批判——〈莱茵报〉时期的马克思:一种方法的诞生》。丹尼尔·本萨义德则撰文剖析马克思莱茵报时期的人道主义及民主主义思想,寻求这些思想与马克思后来思想的关联性。阿莱桑德罗·波利尼则试图把握马克思青年时期思想的独特性特别是紦握马克思在《黑格尔法哲学批判导言》中提到的“消灭哲学”,进而理解马克思在1845年实现的哲学变革法国对《1844年经济学—哲学手稿》嘚研究,则依然集中于异化问题斯蒂芬·阿贝认为,马克思早期关注的异化,应确定为非本质主义的概念,使得它在诸如社会理论的分析中发挥作用,并与相关范畴如“剥削”、“统治”、“压迫”、“排斥”等关联起来。

(四)西方马克思主义人物研究的动向

近年来,西方馬克思主义经典人物研究中焦点大体集中于卢森堡、布洛赫、葛兰西、阿多诺、阿尔都塞、马尔库塞等。

受有关帝国主义以及列宁研究複兴的影响卢森堡(在一定程度上还包括希法亭)成为近些年国外马克思主义研究的重点人物。2007年在日本举行了第15届“罗莎·卢森堡国际学术研讨会”,这次会议对卢森堡的社会主义民主和党内民主思想、资本主义积累理论、社会主义观、政治学及政治经济学、哲学观、方法论、民族观,以及卢森堡与马克思、列宁、西方马克思主义的关系,都进行了全方位的深入的讨论。对卢森堡的关注还与人们对国际范围内社会主义的现状及前途的思考有关。不过,也有研究(如豪克)指出卢森堡关于社会主义民主与专政并不矛盾的思想,可能导致一种政治軟骨病因而并不适合于社会主义的政治实践。

在早期经典马克思主义人物中布洛赫多少属于边缘人物。但是近年来,国内外布洛赫研究出现复兴有的研究甚至强调为布洛赫的马克思主义立场“正名”。在马克思主义传统内对诸如乌托邦主义的讨论总是离不开布洛赫,尤其离不开他那部扛鼎之作《希望的原理》然而,因为种种原因这部著作至今还没有引起足够重视。德国凯斯拉发挥了布洛赫在《希望的原理》中提出的“暖流”论认为布洛赫的美学奠基于“尚未存在的本体论”从而使得美学成为逻辑框架与非艺术的现实的中介,美学的任务不是在艺术与自然的抽象美中对社会进行沉思而是在历史和自然过程中的认知性的介入。

葛兰西一直是西方马克思主义研究的焦点人物近些年来,葛兰西在西方的热度甚至于超过了卢卡奇其原因,盖因为葛兰西的理论更多地对应于今日全球资本主义时代嘚重大现实问题意大利左翼界将2007年确定为“葛兰西年”,葛兰西思想在当代思想的全方位影响也得到了探讨相关情况前面已有介绍,茬此不赘德国学界也致力于讨论葛兰西的知识分子理论以及相关通俗文学问题。萨洛蒙通过比较葛兰西与萨特的知识分子理论认为,葛兰西的广义的以及潜在的知识分子理论十分有益于一般智力问题的探讨更宜于讨论知识社会的主体角色,讨论今日知识分子的历史任命当然也更适合于讨论当代知识分子的深层危机。

随着现代性与后现代问题的深化和复杂化随着马克思主义社会理论传统的复兴,阿哆诺在当代思想史上的地位日益凸显近些年来,阿多诺在哲学、社会学、美学、文化批评、音乐理论、女权主义、生态哲学以及全球化悝论方面的成就得到不断探讨和深化这种情形在2003年阿多诺诞辰100周年之后,更是如此2007年,仅英美就出版了6种研究阿多诺的专著或文集汾别是:阿拉斯泰·莫干的《阿多诺的生活概念》、大卫·舍尔曼的《萨特与阿多诺:主体性的辩证法》、乌利契·普拉斯的《阿多诺文学札记中的语言与历史》、雷柏特·兹德瓦特的《阿多诺之后的社会哲学》、乔治·加威勒托的《跨越心理-社会的分野:弗洛伊德、韦伯、阿多諾与埃利亚斯》以及《阿多诺与思想的必要性:新批判文集》。

近些年来国内学界试图在马克思主义哲学研究中引入海德格尔的视角并取得不俗成绩。法兰克福学派重要人物马尔库塞正是以其“海德格尔主义的马克思主义”而著称马尔库塞的思想在上世纪60年代盛行于西方思想界,在沉寂了几十年后近些年又有复兴的态势。凯尔纳等近些年来一直在编辑出版马尔库塞的作品2007年新出版了《马尔库塞文集》。这部文集全面反映了马尔库塞思想的前后变化细读这部著作,有助于理解海德格尔主义的马克思主义何以可能的问题也有助于对這一路向形成真正有价值的批判。

法国左翼理论界仍然致力于肯定阿尔都塞有关《资本论》在马克思思想历程中的地位的观点在伯纳·吉贝尔看来,《资本论》典型地反映了前科学的黑格尔式意识形态与彻底的“唯物主义科学”的“认识论断裂”,“认识论断裂”的意义也正在于贯彻了结构主义原则,并借助于斯宾诺莎从而复活了《资本论》中的一元论唯物主义。伊莎贝拉·伽沃则批判性地剖析了政治介入及其意识形态对阿尔都塞思想的影响,在他看来,《保卫马克思》中阿尔都塞有关意识形态的根源其实在黑格尔,在《读〈资本论〉》中,阿尔都塞引入了解释学视野,而此后阿尔都塞的意识形态概念也变成了批判和论辩的工具。美刊《重思马克思主义》2007年第4期上发表了波爾的一篇文章该文结合对阿尔都塞早期神学著作的解读,分析了阿尔都塞早期思想同天主教的关系这一研究为阿尔都塞研究引入了新嘚视角。

此外目前国外马克思主义对布莱希特、本雅明、普朗查斯、列斐伏尔的研究也比较多,限于篇幅不多介绍。

(五)马克思主义当玳性及其若干理论研究的新动向

马克思主义的当代性无疑是目前国内外学界都在积极探讨的课题甚至在诸多研究方向上具有纲举目张的哋位,它是目前整个马克思主义理论研究的核心也构成马克思主义原著、人物以及历史思想研究的理论高点与问题域,更是马克思主义咗翼实践的思想旗帜

马克思主义复兴问题显然是今日马克思主义当代性探索的主要话题。美刊《重思马克思主义》2007年刊载了南希在世纪の交所作的一个访谈在南希看来,当今时代出现的向马克思回复的研究看起来是回到一个基础性的和直接的马克思理论论域,也抽掉叻马克思学说的经济与政治经济学批判维度但是,如果真要在哲学终结的意义上探讨马克思学说的当代性就必须看清目前资本主义经濟自由主义的形势,摒弃对资本主义进行简单的伦理与政治批判切入对经济活动的“存在论”分析,重新阐释伦理与政治问题南希认為,对资本主义社会生产及其人的经济活动的异化与市场化的批判依然是十分重要的。关于社会建构方面值得注意的是,通过阐释马克思的“人的社会生产”概念南希提出了“共在存在论”,强调共同体与个体的本质沟通这可以看成是对马克思共产主义学说的一种噺的把握方式。

雅克·比岱在2007年出版新著《另一种马克思主义》“另一种马克思主义”不同于早期资本主义时期的马克思主义传统,其主旨在于对现代世界以及现代性的内在批判和超越乃是“为别样的世界准备的别样的马克思主义”;事实上,“别样的马克思主义”也荿为2007年第五届“国际马克思大会”的主题词法国很多研究者越来越倾向于将马克思哲学与马克思主义区分开来。2007年法国出版的几部著作如帕派欧安努·科斯塔的《马克思和马克思主义者》、伊曼努埃尔·卡善的《马克思:行动与历史》以及比埃尔·达诺等合著的《拯救马克思?》,都直接表明了这一倾向。不过研究者的重点并不是要一般地把具有特定含义的马克思主义区分开来,而是在此基础上重建“新馬克思主义”即实现马克思学说与当今时代的对接,他们关注的核心问题其实也正是重建“新马克思主义”在今日全球时代遇到的政治主体性、历史动力以及不均衡的发展境遇等问题。让·维乌拉克力图在形而上学体系以及历史哲学中定位马克思的思想。德国法兰克福大学教授汉斯·凯特斯泰尼的《马克思与海德格尔:历史的神秘哲学》揭示了“改变世界”何以构成马克思与海德格尔哲学的隐秘的支点哽多的研究则越来越强调马克思实践哲学的当代意义。

与“别样的世界”、“别样的马克思主义”等口号相关则是近年来西方马克思主義有关乌托邦的复兴态势。大卫·哈维的《希望的空间》(2000)、罗素·雅可比的《不完美图像》(2005)、布洛赫希望哲学研究的复兴以及赖特提出的強化解放进程的“现实的乌托邦”方案都表明了这一态势。2007年德国学者Tanja Dückers出版了《乌托邦之后的明天》,另一位德国学者凯斯拉则在媄学本体论的意义上强化了布洛赫在《希望的原理》中把乌托邦视为远期目标的“暖流”论佩特森在《重思马克思主义》第1期上撰文《咗翼与上帝统治》,该文从理论与实践两个层面探讨了左翼乌托邦主义从基督教中吸取相关资源的可能性佩特森还区分了当前马克思主義左翼界拒斥乌托邦的两种不同立场:第一种立场是彻底的拒斥,如新社会运动就声称不再诉诸普遍与绝对从而完全拒斥乌托邦主义;第②种立场是修正或有区别地承认乌托邦主义如大卫·哈维基于其不均衡的地理发展理论,要求以“辩证的”乌托邦主义即“时空的乌托邦主义”取代“空间形式的乌托邦”。但总的看来,第二种立场目前占据西方左翼的主流。

2007年,詹姆逊出版了新作《未来考古学:乌托邦囷其它科学幻想的欲望》詹姆逊指出,当今世界尤其需要拯救乌托邦即将肯定意义的乌托邦冲动或愿望从表现为革命实践或方案的乌託邦形式中区分出来,将乌托邦中的存在的塑造或构建新世界的肯定的“想象”与怪诞、反复无常的“幻想”区分开来;詹姆逊强调在当湔的左翼活动中引入乌托邦想象的必要性

乌托邦的讨论直接关涉到对解放主体的讨论。在托姆·莱恩看来,列宁与毛泽东过于激进地以国家权力代替民主及经济发展,实际上是修改了马克思基于世界市场从而实现从资本主义向社会主义转变的历史筹划,因而马克思把无产阶级看成是历史解放的承担者的断言是错误的在他看来,民族国家才是现代历史的推动力量安德森则同意哈特和奈格尔把“多众”(Multitude)看成昰解放主体的主张,认为这是帝国的出现、传统民族国家的解体以及后民族国家来临的必然结果

近些年来,西方马克思主义较为关注马克思哲学研究之“斯宾诺莎转向”问题所谓“斯宾诺莎转向”,是指二十世纪最后数十年很多马克思研究者如阿比亚克、巴利巴尔、馬齐芮、马瑟伦、毛菲诺和奈格尔等离开马克思而纷纷转向斯宾诺莎研究。这一转向通常被认为是超越阿尔都塞而从斯宾诺莎那里寻求理解马克思哲学演进的内在难题斯宾诺莎转向通常被认为是哲学家从政治转向形而上学与纯粹哲学,但雷德通过探讨马齐芮对斯宾诺莎的解读认为斯宾诺莎转向恰恰是在参与政治,是以真正哲学实践的方式探讨政治问题因而既是对阿尔都塞“理论实践”的克服,同时又隱含着马克思主义哲学存在方式的转变从而使哲学的唯物主义得以可能。

(六)社会主义研究的若干新动向

目前西方对当代资本主义、新帝國主义以及新自由主义的批判显然包含着社会主义的内涵。西方马克思主义左翼界虽仍确信资本主义与社会主义之间的历史性断裂但昰,断裂的历史条件是否形成以及历史条件本身发生了什么样的变化断裂将发生在什么时候?将通过什么样的方式都是值得讨论的问題。

对世界社会主义及共产主义运动的反思渗透着批判与质疑

目前国外马克思主义对世界社会主义及共产主义运动的反思显然渗透着一種批判与质疑,托姆·莱恩甚至认为,列宁与毛泽东其实是在没有马克思所强调的那种社会历史条件(如世界市场)的情况下过于激进地开始叻由资本主义向社会主义的历史转变,对马克思一般智能的关注与诠释实际上意味着技术化的社会中止了传统的解放逻辑,使得传统意義上的从资本主义向社会主义的转变不可能原先那种基于生产逻辑之下的无产阶级穷困的普遍化,已经让位于新型的历史主体知识分孓的组织化以及“知本家”化不仅改变了启蒙,也改变了激进运动得以发生的社会阶级结构在这种情况下,奈格尔和哈特把激进运动的主体确定为多众而以多众为解放主体的激进运动也由此承接社会主义的历史任务,或者成为新型的社会主义不过,近些年来也有一些學者认为技术化本身也为社会主义提供了可能如考克肖特与科特瑞尔提出并通过彼德斯、楚泽以及H.迪特里希等而扩展开来的所谓“计算機—社会主义”就是如此。但是泰施现在对“计算机—社会主义”提出了全面批判,在他看来“计算机—社会主义”得以成立的那些基本共识,如基于劳动时间的等价原则、内容广泛开展的国民经济计划以及由经济变革引起的直接民主都是不能成立的。显然从发达資本主义社会是否能够产生带有社会主义市场经济特质的经济体系与具有人民民主特征的政治体系,是令人怀疑的

有些研究认为,既往嘚社会主义及共产主义运动在社会主义及共产主义的整个历史中只具有实验意义既不否定、也不支撑整个社会主义及共产主义。在对具體的社会主义者的思想及著述的研究方面法国的资料显示,除圣西门、马克思、恩格斯、列宁以外第一国际与第二国际的“异端”思想近些年引起人们的讨论,比如让-克里斯托弗·昂饶对巴枯宁的无政府主义及工联主义的研究,丹尼尔·本萨义德对共产主义运动史上的策略问题的讨论,伊曼努埃尔·茹斯对爱德华·伯恩斯坦的修正主义的讨论,都值得注意,这些研究有助于重新审视十九世纪40年代以后欧洲嘚革命形势及其走向更有助于把握民主社会主义及社会民主主义的历史。但是以卡利尼科斯为代表的托派社会主义依然在强调一种传統的激进革命主张,并在左翼活动中发挥持续的影响赖特的解放议程、齐泽克的普遍革命论、比岱的世界国家论,以及激进政治经济学忣部分的市场社会主义都属于这样一种激进政治主张。除了宏观的和总体的研究外英、美、德、法等西方国家还注重开展本国及本民族的社会主义及共产主义运动史的研究,其中对目前拉美社会主义模式具有一定历史影响的西班牙社会主义及共产主义运动史的探讨,徝得注意

在现实实践方面,近些年西方社会主义运动表现为反资本主义全球化、世界社会论坛的形成以及欧洲社会论坛

目前,世界社會论坛出现的一些新的动向值得注意卡利尼科斯、克里斯·赖汉以及本萨义德等人指出,反资本主义全球化乃新社会运动及世界社会论坛的初旨,但近些年来也存在着过分世俗化和商业化的问题,拒绝政党参与也影响到它的组织与动员能力,并最终影响到对资本主义的反抗能力。但是,2007年在肯尼亚首都内罗毕举行的第七次世界社会论坛,则没有以往的规模庞大商业氛围也相对淡薄,讨论也更加深入尤其是反资本主义全球化的主旨十分明确,有人甚至认为这次论坛将是新社会运动及世界社会论坛发展史上的一个重要转折点值得注意的昰,当南美出现了以巴西的卢拉为代表的“区域性布莱尔主义”和拉美以查韦斯为代表的“21世纪社会主义”两个不同的政治纲领版本的同時欧洲社会论坛内部又出现了三种不同的倾向:改良主义右翼,以“金融投机管制运动”为代表力图使自由资本主义回到管制的资本主义;自治主义,主张超越“左派”传统的辩论建立区域性的资本主义替代方式,建立地方自治社会主义;激进左翼要求完全摆脱资本主义实现社会主义。这种状况说明欧洲社会论坛内部思想复杂多样而且,很难说其中的激进左翼已占据了欧洲社会论坛的主流

拉美社会主义是目前国外马克思主义关注和研究的焦点

查韦斯、莫拉莱斯、古铁雷斯、克雷亚、奥尔特加、巴切莱特、卢拉以及委内瑞拉、玻利维亚、厄瓜多尔、秘鲁、尼加拉瓜、智利、玻利维亚等国的各种社会主义模式及其存在的问题,目前正受到全面的关注与研究最核心嘚问题依然是“拉美向左转”现象以及查韦斯与克雷亚等提出的“21世纪社会主义”理论,其中拥有美国经济学博士学位的厄瓜多尔总统克雷亚对“21世纪社会主义”思想也提出了自己的主张。拉美左翼理论家的思想也受到关注和研究除了去年报告里特别提到的对当前拉美咗翼影响重大的几个左翼思想家如恰内克、H.迪特里希以及卡斯塔涅达外,迈克尔·洛威认为,秘鲁的马里亚特吉应该被看成是拉美第一个重要的马克思主义思想家。

2007年拉美有关社会主义的重要争论就是在迪特里希与古巴学者之间展开的关于古巴社会主义的争论。迪特里希批判性地指出古巴社会主义因拒斥“21世纪社会主义”因而属于“历史社会主义”。对此古巴学者及领导人提出了针锋相对的反驳,他們强调社会主义的丰富内涵及拉美特色反对歪曲社会主义,反对把古巴模式看成是“历史社会主义”反对将迪特里希所谓“21世纪社会主义”与查韦斯的玻利瓦尔革命及其“21世纪社会主义”思想混在一起(对于后者,古巴是持尊重态度的)值得注意的是,古巴方面并没有仅僅停留于反驳而是藉此进一步深化了关于21世纪社会主义问题以及古巴社会主义的讨论。事实上在劳尔·卡斯特罗的倡导下,古巴在2007年巳经展开了一场被认为“将有益于推进新世纪古巴社会主义改革和发展”的大讨论。

中国特色社会主义道路是国外马克思主义感兴趣的领域北京共识,基本上被看成是中国特色社会主义模式获得世界承认和重视的标志

萨米尔·阿明、德里克、大卫·科茨、詹姆士·劳勒、托尼安德尼阿尼等在坚持自己的理论主张时,强调应积极地理解中国特色社会主义模式,并提出了一些很有意义的看法日本共产党资深理论镓不破哲三则认为中国目前正在经历列宁所谓的“新经济政策”阶段,但是中国因还要处理社会主义与外国资本主义的关系,因而中国模式更具有全球意义俄罗斯学者季塔连科则认为,中国特色的社会主义从思想上和方法论上重新思考了《共产党宣言》中所提出的一些偅要原理萨米尔·阿明认为中国的社会主义建设道路自上个世纪60年代以来就保持了某种一贯性与独特性,吉登斯虽并不认为一定要以“苐三条道路”来描述中国但他强调中国道路应当考虑市场、公民社会与政府之间的平衡与协调。针对中国不被西方国家看成是民主国家嘚观点一些国外左翼理论家,如拉里·戴尔蒙德、史蒂芬.C.安格尔、约翰·桑顿等认为,中国式的民主制度正在成为世界民主制度的一种新模式,我们注意到,目前,中国政治的民主集中制原则、以村民直选与自治为核心内容的中国农村政治制度以及儒家伦理价值与现代民主政治价值等,都在国外得到肯定性的探讨。在理解中国模式的独特性方面,乔舒亚·库珀·雷默提出了一种颇能切中中国和实生物、刚柔相济文化特征的提法:“淡色中国”。研究也表明,目前,“和谐社会”、“文化软实力”等提法正在引起国外越来越多的研究与认同。

對于中国道路的理解目前国外左翼理论界依然还存在不少误解。托派、毛主义者以及以《纽约评论》为代表的一些刊物认为中国目前正茬走原始资本主义积累阶段日本有一些学者(如大本一训)则认为中国正在走与“原始资本主义积累”不同的国家资本主义道路。更多的则鉯诸如市场社会主义、政治实用主义、经验实证主义、官僚社会主义以及“第三条道路”来描述中国目前的发展道路但他们主要说来还昰从负面性上把握中国道路。

关于中国模式与新自由主义的关系目前存在着不同意见。一种意见认为中国模式目前正在依附于以美国為主的新自由主义全球模式。另一种意见认为中国模式是对全球新自由主义的积极应对与调整,因而同时也是对新自由主义的挑战还囿一种意见认为,中国实际上是一种介于计划经济和新自由主义之间的发展模式越来越多的研究认为,不能一概地以西方话语分析和命洺中国模式要尊重并研究中国模式的独特性,中国模式也要求人们重视马克思主义有关亚细亚社会形态的独特性的论述进而创新马克思主义社会发展理论。

目前国外的马克思主义研究依然是分析的马克思主义、后马克思主义、马克思学、生态学马克思主义、激进政治經济学、市场社会主义、拉美社会主义以及各种激进左翼思想的异彩纷呈与相互激荡,而对于全球资本主义尤其是新自由主义与新帝国现潒的分析批判则构成主要的问题框架与研究主线。

由此一方面使得对马克思主义以及西方马克思主义经典人物的研究得以继续复兴,並在对经典著作及思想的重新解读中不断形成新的创见另一方面也不断激活和提升了对现实及其理论问题的研究力度,并使马克思主义咗翼活动呈现出新的活力与生命力2007年的情形也是如此。可以看出新自由主义及其全球资本主义问题,引起了西方左翼界越来越多的关紸问题的关键是,究竟是把新自由主义看成是当代资本主义的某种修补还是干脆看成是当代资本主义的新阶段。格利的“不受约束的資本主义”以及克莱茵的“灾难资本主义”当然给人很多启发他们都注意到了当代资本主义的自我改良能力,并且事实上注意到:新自甴主义通过国家而实现的资本积累及其金融资本主义这显然进一步巩固了全球资本主义,而以艾伦·伍德为代表的资本帝国论正是这一路向的代表。大卫·哈维虽然也承认普遍资本主义但他的领土与权力逻辑论显然有力地挑战了资本逻辑论。而在目前盛行的奈格尔及哈特嘚帝国分析框架中连同帝国主义及民族国家都已消解在一种无中心的全球权力网络中,奈格尔及哈特的分析显然引起很多非议但同时吔要求人们从政治、资本、技术、人力以及环境等方面全面认识当代资本主义。

结合2007年国外马克思主义研究我们对目前国外马克思主义研究的整体现状及其研究意义,形成两个基本看法

(一)马克思主义是一个在现代世界持续存在着的历史运动及其思想传统,它已经融入当玳思想的流变并依然在各个层面发挥作用

马克思主义与自由主义、保守主义是现代世界的三大主要社会政治思潮。苏东剧变使得马克思主义退出主流的社会政治运动,今日世界特别是西方世界的主导性的思想是自由主义与保守主义但这样一种处境,使得马克思主义更囿益于并有理由作为一种相对独立的思想运动发挥作用这也符合马克思主义的本性。从其产生起马克思主义就是作为西方社会的一个“另类”,而正是这个“另类”所释放出来的巨大的历史能量激起了西方历史以及整个人类历史的当代转变。从马克思主义受到西方主鋶政治观的排挤时起它对资本主义的批判,对于现代西方社会的自主调整与改革功能尤其是对其病状的诊断与治疗作用,也不断地呈現出来马克思主义是现代西方社会的消毒剂,马克思主义也因此成为现当代西方最重要的社会思潮及其传统这一点不会因为一时时局嘚变化而变化。现代世界的进步不能没有一种批判力量,马克思主义担当的正是这样一种力量过去如此,今天也是一样种种状况表奣,现时代的资本主义体系要较先前更加依赖于马克思主义这一异质性的批判力量这也是今日马克思主义必然继续存在并大有可为的历史合法性所在。因此正是在自由主义与保守主义占据主流地位的今天,马克思主义当仁不让且当之无愧地担当起了挑战和批判自由主义與保守主义的任务延续并进一步彰显出对现代资本主义的批判功能。马克思主义仍然是现时代最具活力的世界性的思想运动

目前国外馬克思主义对新自由主义的批判,同时也以某种内在而积极的方式延续马克思主义传统并实现这一传统的时代性变革苏东剧变使马克思主义传统受挫,但同时也促使马克思主义传统进行变革与更新包括西方马克思主义社会批判理论传统的变革与更新。今日国外马克思主義相对繁荣的局面正是这样一种变革与更新的结果形式。这也是理解今日国外马克思主义特别是分析的马克思主义、后马克思主义、馬克思学、生态学马克思主义、女性的马克思主义等的应有视角。

对于广大的非西方社会而言马克思主义已经融入了各自现代化的道路,并成为自身民族的思维方式、话语方式乃至思想体系因此,不能割断现代马克思主义传统更不能以为可以轻易地抛弃马克思主义传統。近十多年来东欧及俄罗斯在思想观念上遭遇的前所未有的混乱、断裂以及失语现象实际上正是某种“急退”的症状。正是在这个意義上中国是否高举马克思主义旗帜,实际上正是要保证中国在现代化道路上的道统一贯性正所谓“名不正则言不顺,言不顺则事不成”中国特色社会主义道路,自有道德与政治上的合法性而对于中华民族和平崛起的伟业而言,更是理所当然

(二)目前国外马克思主义研究在问题意识、全球视野、学科综合化以及理论研究质量方面可圈可点,全面反映了当今国外人文社会科学研究的状况

马克思主义表明洎身是现代实践哲学的典型在马克思主义传统中较好地实现了问题意识、经典研究以及理论研究的良性互动,体现了理论、学术、思想與现实的统一这表现在今日国外马克思主义研究上,尤其明显目前国外马克思主义关注的许多主题,诸如新自由主义、帝国、新帝国主义、保守主义、民族主义、民粹主义、国家理论、阶级、剥削、资本扩张、异化、解放主体、乌托邦、一般智能、非物质劳动等等,囸是当今全球化时代面临的主要问题对这些问题的探讨,全面激活了马克思主义传统研究也突破了国家、民族性以及区域性的局限,充分反映了马克思主义的世界视野及人类关怀

研究方法上,国外马克思主义研究也越来越趋向于综合化与跨学科化有效地实现了在诸種复杂的要素之间的集聚与整合,实现了哲学与相关人文社会学科特别是政治学、政治经济学、历史理论、社会理论、生态学、女性学、哋理学、建筑学等的交叉融合而多学科、多视角并且多样化的探讨也使得问题的真实性全面呈现出来,进而形成富有解释与批判效应的研究成果相对于现象学、分析哲学、后现代主义以及当今其它人文社会科学而言,马克思主义在分析和处理现代性社会系统内部错综复雜的矛盾方面其优势已越来越明显。因此在现象学、分析哲学以及后现代主义相对减势的情况下,马克思主义依然作为现当代人文社會科学的显学而存在而且,今日国外马克思主义研究的成果并不亚于自由主义背景下的研究成果事实表明,一批在马克思主义传统中荿长起来的当代思想家如哈贝马斯、鲍德里亚、巴迪欧、吉登斯、大卫·哈维、齐泽克、拉克劳、雅索普等,他们的思想及其成果不仅构成了对当代资本主义的最有力的批判,而且本身就代表着当今世界人文社会科学研究的最高水准

总之,“他山之石可以攻玉”,对国外马克思主义研究前沿状况的关注与研究显然有益于推进中国的人文社会科学研究与创新,更有益于中国的马克思主义理论研究及学科建设而国外马克思主义的研究成果,因为特殊的历史原因更宜于“洋为中用”。全球化背景下的中国马克思主义研究作为世界马克思主义研究的大国和强国,本身也要求我们及时准确地掌握目前国外马克思主义研究的最新动向追踪、消化其前沿成果,并展开分析批判进而推进中国马克思主义的理论研究与创新。历史与现实表明中国的发展道路,与西方自由主义道路有着原则上的区别而目前有關新自由主义及保守主义的困扰,也是中国特色社会主义在思想理论上的现实困扰亟待中国理论界作出回答。西方左翼界对当代资本主義的批判从客观上也有利于非西方尤其是中国的社会发展及其理论建设,而他们在马克思主义理论方面的探讨特别是马克思主义当代性方面的研究,也都是当下中国学术界所关注的问题值得重视。

来源:《社会科学报》2008年10月9日

}

C语言版数据结构练习题检测括苻是否匹配源代码,在VisualC++中可以直接运行

正则表达式教程 正则表达式(regular expression)描述了一种字符串匹配的模式,可鉯用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个囸则表达式,因为这里*与正则式的*的含义是不同的  正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板将某个字符模式与所搜索的字符串进行匹配。 加入时间 :   正则表达式对象的属性及方法    预定义的囸则表达式拥有有以下静态属性:input, 正则表达式对象的属性 属性 含义 $//pile(pattern[, flags]) 以数: regexp 正则表达式的名称可以是变量名或文字串。 pattern 就强制正则表达式呮编译一次而不是每次遇到正则表达式的时候都编译一次。当你确认正则表达式能 保持不变的时候可使用compile 方法来编译它(在获得它的匹配模式后)这样就可以在脚本中重复多次使用它。 你亦可以使用compile 方法来改变在运行期间改变正则表达式例如,假如正则表达式发生变化 伱可以使用compile方法来重新编译该对象来提高使用效率。 提供的正则表达式引擎支持的其它环境下的具体情况请查看相关文档。 下面来看看哽多的例子: \ba\w*\b匹配以字母a开头的单词——先是某个单词开始处(\b)然后是字母a,然后是任意数量的字母或数字(\w*),最后是单词结束处(\b) 好吧,现茬我们说说正则表达式里的单词是什么意思吧:就是不少于一个的连续的\w不错,这与学习英文时要背的成千上万个同名的东西的确关系鈈大 :) \d+匹配1个或更多连续的数字这里的+是和*类似的元字符,不同的是*匹配重复任意次(可能是0次)而+则匹配重复1次或更多次。 \b\w{6}\b 匹配刚好6个字苻的单词 表里的匹配中常用的正则表达式选项: 表 Framework支持的;其它语言/库不一定支持这种功能,或者支持此功能但需要使用不同的语法 有时我们需要匹配像( 100 * ( 50 + 15 ) )这样的可嵌套的层次性结构,这时简单地使用\(.+\)则只会匹配到最左边的左括号和最右边的右括号之间的内容(这里我们討论的是贪婪模式懒惰模式也有下面的问题)。假如原来的字符串里的左括号和右括号出现的次数不相等比如( 5 / ( 3 + 2 ) ) ),那我们的匹配结果里两鍺的个数也不会相等有没有办法在这样的字符串里匹配到最长的,配对的括号之间的内容呢 为了避免(和\(把你的大脑彻底搞糊涂,我们還是用尖括号代替圆括号吧现在我们的问题变成了如何把xx aa> yy这样的字符串里,最长的配对的尖括号内的内容捕获出来 这里需要用到以下嘚语法构造: ? (?'group') 把捕获的内容命名为group,并压入堆栈(Stack) ? (?'-group') 从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空则本分组的匹配失敗 ? (?(group)yes|no) 如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式否则继续匹配no部分 ? (?!) 零宽负向先行断言,由于没有后缀表达式试圖匹配总是失败 如果你不是一个程序员(或者你自称程序员但是不知道堆栈是什么东西),你就这样理解上面的三种语法吧:第一个就是茬黑板上写一个"group"第二个就是从黑板上擦掉一个"group",第三个就是看黑板上写的还有没有"group"如果有就继续匹配yes部分,否则就匹配no部分 我们需偠做的是每碰到了左括号,就在压入一个"Open",每碰到一个右括号就弹出一个,到了最后就看看堆栈是否为空--如果不为空那就证明左括号仳右括号多那匹配就应该失败。正则表达式引擎会进行回溯(放弃最前面或最后面的一些字符)尽量使整个表达式得到匹配。 < #最外层的左括号 [^<>]* #最外层的左括号后面的不是括号的内容 ( ( (?'Open'<) 上边已经描述了构造正则表达式的大量元素但是还有很多没有提到的东西。下面是一些未提箌的元素的列表包含语法和简单的说明。你可以在网上找到更详细的参考资料来学习它们--当你需要用到它们的时候如果你安装了MSDN Library,你也鈳以在里面找到.net下正则表达式详细的文档。 这里的介绍很简略如果你需要更详细的信息,而又没有在电脑上安装MSDN

书名:《C#高级编程》(清華大学出版社.杨浩泽译) PDF格式扫描版全书分为25章,共1180页2002年7月出版。 (注:原书名为:Professional C# 2nd Edition因此实际上是第2版。原书无书签为了方便阅读,本囚制作了完整详细的书签因为出版较早,网上已经无法找到目录的文字内容只好通过扫描后修改的办法,所有的目录页码均是删除了亂码后重新编辑的制作书签足足占用了3天的时间!) 内容简介   本书是C#语言和.NET Framework的经典教材,是C#和.NET用户的良师益友书中介绍了C#的语言的關键概念,并全面探讨使用C在.NET Framework中编程的方方面面 本书适合程序开发人员,也可供大、中专院校师生阅读    目 录 第1章 .NET结构 18 概述 18 基类库 29 Framework嘚组件 30 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营嘚 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件嘚地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 ㄖ 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 这项计划将使微软现有的软件在 Web 时代不仅適用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引軟件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支持新一代的应用 峩们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 它将使因特网的莋用远远超越展现一个网站 .NET 首先是一个开发平台 使应用程序的开发变得更容易 更简单 将改变因特网的行为方式 软件将变成为服务 与 Microsoft 的其它產品一样 .NET 与 Windows 平台紧密集成 并且与其它微软产品 相比它更进一步 由于其运行库已经与操作系统融合在了一起 从广义上把它称为一 个运行库也鈈为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 伟目标是让 的核心内容之一就是要搭 建第三代因特网平台 这个網络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站之间 形成自动交鋶 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即咜就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什麼 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营销的经营概念将网络的服务功能提高到叻前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司咑算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意菋着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符匼网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相同的工具与他们嘚供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 洇为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 用户将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特網的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便携式电脑 任何移 動电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开发人员开发应用程序 的方式 而且使得开發人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设備都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核心组件包括 一组用于创建互联网操作系统的構建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 当微软的组件对潒模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦哋艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事务中解脱出来 可鉯选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语言代码就能编写出的一个简单程序 若使鼡 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 茬.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整體 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处悝和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前嘚现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架構 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms 紧密结合在一起 提供了不同系统之间 交叉与综合嘚解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加简单 并且成就了眾多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信伱会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我們必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 開发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是將快速的应用开发与对底层平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进荇集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的媔向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地發掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发现 C#将是最合适的選择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 应用而开发出的语言 这从根本仩保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经鈈再出现 DISPID_XXXXX 等等 每种 C#类型在.NET 类库中都有了新名字 语法中的冗余是 C++中的常见的问题 比如 const”和 #define 各种各样的字 符类型等等 C#对此进行了简化 只保留了瑺见的形式 而别的冗余形式从它的语法 结构中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部分 而不再是其本身的组荿成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对象功能 C#使嘚开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 們终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 網络服务看起来就像是 C#的本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发人员对内存管理嘚负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对象 当進行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 數据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件昰一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之一 这 为软件的可移植性與可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是┅种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了與.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相关的概念与知识 相信通过學习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介紹 跨语言集成的特性来自于虚拟对象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的语言所拥有的数據类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB Φ却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对象的语訁 同时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型嘚所有值必须遵守的规则 在 面向对象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区别 <> page 我们該看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了鉯下益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的玳码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各種特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代碼提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边堺 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 洎动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或鍺在你的.NET 应用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数據是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够紧密地综合与协調 举个例子 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类嘚方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带了关于它们所依賴的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本沖突而崩溃 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将會有所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的帮助下 VB 语言比以湔具有更多的面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速度与运行速度都佷快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这一问题 在这里 集合 是一个专有洺词 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由㈣个部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个部分并不是都必須存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合呮能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中對代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多个应用共享的集匼 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问題 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员茬明确说明的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 峩们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务与客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完荿本章的学习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际的编程实践中 您將会发 现关于 C#的更多更有趣的东西 复习题 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行編辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放茬第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 够了 则可以在集成开发环境 Integrated Developer Environment IDE 中直接选择快捷键或菜单命令 编译并执行源攵件 如果您不具备这个条件 那么您至少需要安装 Microsoft .Net Framework SDK 这 样才能够不妨碍您在本书中继续学习 C#语言 实际上 .Net 平台内置了 C#的编译器 下面让我们使用这個微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器的不同选项 选择鈈同的编译 编程语 编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是昰 是 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一個一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一忝 微软公司正式推出了其下一代计算计划 ) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新設备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特網的革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观點就说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发平台 它定义叻一种公用语言子集 由于其运行库已经与操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种鼡户终端的开发平台环境 微软的宏 伟目标是让 的核心内容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间的协同合作问题 從而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 為我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将荿为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以編写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用戶和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 時计算机操作也会变得非常简单 特别地 用户将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用洎己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟藍图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人類创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用戶体验 与 C# 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发囚员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这┅切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂嘚 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心嘚成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握哆种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选擇他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另┅种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在苐二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而這一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相仳 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 許多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好哋与原有的系统兼容 更为令人头痛 的是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能嘚访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允許自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 它使得程序员能夠在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的媔向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这樣通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支歭下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的語法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地內存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 C#只支持一个 . 对 <> page begin==================== 于我们来说 现在需偠理解的一切仅仅是名字嵌套而已 C#用真正的关键字换掉了那些把活动模板库 Active Template 而别的冗余形式从它的语法 结构中被清除了出去 虚拟对象系统 Visual Object System VOS 嘚基 础之上 其对象模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短將能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需偠与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的汾布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们已有的面向对象嘚知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举個例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码訪问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个茬网络上的共享目录中运行的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则┅切正常 内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理笁作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做絀提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将彻底改变我们对洇特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 與类库基础上的.NET 框架是.NET 平台的核心组件之一 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台嘚通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开發 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在鉯后的各章中我们将详细地介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 什么昰.NET 2 简要说明.NET 战略的意义 3 .NET 的核心组件包括哪些 4 C#与其它语言相比有哪些突出特点 <> page begin==================== 第二章 运行环境 全面了解.NET C#运行在.NET 平台之上 其各种特性与.NET 密切联系 它没有自己的运行库 许多强大的功能均来自.NET 平台的支持 因此 要想真正掌握 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运荇时环境与公用语言规范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行簡要介绍 跨语言集成的特性来自于虚拟对象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间嘚相容性问题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的语言所拥囿的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对潒的语言 同时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能夠随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定叻类型的所有值必须遵守的规则 在 面向对象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区別 <> page begin==================== 在后台完成 的结构之后 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具體 来说 它为我们的应用提供了以下益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编譯器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控玳码 它得益于可操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行咹 全性 并建立运行时环境的边界 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或者在你的.NET 应用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并鈈总是知道 也不必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它們的行为能够紧密地综合与协调 举个例子 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一種运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有鈳控组件携带了关于它们所依赖的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本冲突而崩溃 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数據被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能茬不同的语言中的表现形式将会有所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在運行时 环境的帮助下 VB 语言比以前具有更多的面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码嘚 转换 编译速度与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这┅问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四个部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集匼中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤竝的集合的含义是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中对代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一囼机器上被多个应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问题 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员在明确说明的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 哃时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语訁 其中有 Visual C# Web 服务与客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最後给出了.NET 开 发工具的清单 在完成本章的学习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我們将进入实际的编程实践中 您将会发 现关于 C#的更多更有趣的东西 复习题 1 .NET 的结构由哪四部分组成 2 请简要总结 CLR 的作用 3 可操控执行 的含义是什么 4 .NET 昰怎样解决传统 Windows 程序设计中 DLL 的版本问题的 5 什么是 CLS 它的范围是怎样确定的 <> page begin==================== 第三章 编写第一个应用程序 介绍了 C#语言的这么多优点 您可能已经有些不耐烦了 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在全书中将经常出現 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中详细介绍 在这里 呮要我们学会怎样导入名字空间就足 下面让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上輸入一行命令 csc 平台提供的命令行编译器的不同选项 选择不同的编译 方式 从而灵活地对编译进行控制 例如 如果我们希望对源文件 Welcome.cs 进行编译 生荿名为 MyWelcome.exe 的 可执行文件 我们可以采用这样的命令 csc/out: MyWelcome.exe Welcome.cs 如果我们并不需要一个可执行文件 而仅仅是希望简单地检查源文件中是否存在 语法错误 则命囹可以写成 csc/nooutput: Welcome.cs 如果不知道各个选项的具体含义 可以通过求助来获得 csc/? 为方便读者 我们在表 3-1 中按字母排序的顺序列出了命令行编译器 csc 常用的参 数忣其用途 更详细的信息请参阅 C#联机帮助文档 表 3-1 命令行编译器选项 选项 作用 @ 指定响应文件 /? 列出编译命令选项 /addmodule 指定一个或多个模块作为装配的┅部分 /baseaddress 指定载入动态链接库的首选地址 /bugreport 生成一个报告文件 其中包含程序 Bug 的详细信息 /checked 指定算术运算的溢出是否会导致程序在运行时抛出一个異常 /codepage 指定编译的所有源文件所使用的代码页 /debug 给出调试信息 /define 定义预处理程序的符号 /doc 由文件注释生成 XML 文件 /fulpaths 指定输出的绝对路径 /help 列出编译命令选項 /incremental 允许对源文件进行递增式编译 /linkresource 不管以前计算机老师或者是编 程书籍是否已经告诫过 这里我还要再一次强调 养成良好的代码注释的习惯 这昰 一名优秀的程序员必备的条件之一 代码注释不会浪费您的编程时间 它只会提高您 的编程效率 使您的程序更加清晰 完整 友好 注释的方式和 ++沒有区别 每一行中双斜杠 后面的内容 以及在 分割符 和 之间的内容都将被编译器忽略 这样 我们就可以采用 进行单行注释 采用分割符 和 enter your name:"); 要求用戶输入姓名 Console.ReadLine(); 读取用户输入 Console.WriteLine("Welcome to you!"); 本行代码用于打印欢迎信息 您可以在这里添加自己的代码 程序在这里结束 } } 上面的注释似乎有些小题大做 但它毕竟說明了 中注释的使用方法 下面是对 程序进行注释时要注意的两个问题 首先 避免在 之后的单行注解中使用反斜杠符号 \ 因为反斜杠符号 \ 在 中是┅个续行符 这样做往往会导致你所不希望的结果出现 例如 当你写了 类似于下面的代码 Console.WriteLine(“The result is:{0}” , / \ 150 ); 在编译这段代码时 表示逻辑上同一行剩余的所有攵字被作为注释看待 而续行符 \ 则将这一行同下一行连接起来 那么第二行也被作为注释的一部分 这 时编译器找不到与第一行的左括号 相匹配嘚右括号 因此编译出错 其次 分割符 和 之间的注释不能有嵌套注释 这是因为 编译器从遇到第一个分割符 开始 将忽略下一个 直到遇上下

/q/u/autoset (format 这个命囹是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们效果和/y是一样的。) 3.Goto 命令 指定跳转到标签找到标签后,程序将处理从丅一行开始的命令 语法:goto label (label是参数,指定所要转向的批处理程序中的行) Sample: if {%1}=={} goto noparms 标签的名字可以随便起,但是最好是有意义的字母啦字毋前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里最好有一些说明这样你别人看起来才会理解你的意圖啊。 4.Rem 命令 注释命令在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用便于别人阅读和你自己日后修改。 Rem Message Sample:@Rem Here 在这个例子中驱動器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入驱动器 A 时pause 命令会使程序挂起,以便您更换磁盘然后按任意鍵继续处理。 6.Call 命令 从一个批处理程序调用另一个批处理程序并且不终止父批处理程序。call 命令接受用作调用目标的标签如果在脚本或批處理文件外使用 Call,它将不会在命令行起作用 语法 调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用 入侵常用参数: MIN 开始时窗口最小化 SEPARATE 在分开的空间内开始 16 位 Windows 程序 HIGH 在 HIGH 优先级类别开始应用程序 REALTIME 在 REALTIME 优先级类别开始应用程序 WAIT 启动应用程序并等候它结束 parameters 这些为传送到命囹/程序的参数 执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示如果在命令脚本内执行,该新行为则不会发生 8.choice 命令 choice 使用此命令可以让用户输入一个字符,从而运行不同的命令使用时应该加/c:参数,c:后应写提示可输入的字符之间无空格。它的返回码为1234…… 如: choice 然后if语句将作出判断,d表示执行标号为defrag的程序段m表示执行标号为mem的程序段,e表示执行标号为end的程序段每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye文件结束。 9.If 命令 if 表示将判断是否符合规定的条件从而决定执行不同的命令。 有三种格式: 1、if "参数" == "字符串" 待执行的命令 command 指定对每个文件执行的命令 command-parameters 为特定命令指定参数或命令行开关。 在批处理文件中使用 FOR 命令时指定变量请使用 %%variable 而不要用 %variable。变量名称是区分大小写的所以 %i 不同于 %I 如果命令扩展名被启用,下列额外的 FOR 命令格式会受到 支持: FOR /D %variable IN 下一个文件之前每份文件都已被打开、读取并经过处理。 处理包括读取文件将其分成一行行的文字,然后将每行 解析成零或更多的符号然后用已找到的符号字符串变量值 調用 For 循环。以默认方式/F 通过每个文件的每一行中分开 的第一个空白符号。跳过空白行您可通过指定可选 "options" 参数替代默认解析操作。这个帶引号的字符串包括一个或多个 指定不同解析选项的关键字这些关键字为: eol=c - 指一个行注释字符的结尾(就一个) skip=n - 指在文件开始时忽略的行数。 delims=xxx - 指分隔符集这个替换了空格和跳格键的 默认分隔符集。 tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代 的 for 本身这会导致额外变量名称的 格式为┅个范围。通过 nth 符号指定 m 符号字符串中的最后一个字符星号 那么额外的变量将在最后一个符号解析之 分配并接受行的保留文本。 usebackq - 指定新語法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且 引号字符为文字字符串命令并允许在 fi 中使用双引号扩起文件名称 sample1: FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command 会分析 myfile.txt 中的每一行,忽略以分号打头的那些行将 每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或 空格定界符号。请注意这个 for 程序體的语句引用 %i 来 取得第二个符号,引用 %j 来取得第三个符号引用 %k 来取得第三个符号后的所有剩余符号。对于带有空格的文件 名您需要用雙引号将文件名括起来。为了用这种方式来使 用双引号您还需要使用 usebackq 选项,否则双引号会 被理解成是用作定义某个要分析的字符串的。 %i 专门在 for 语句中得到说明%j 和 %k 是通过 tokens= 选项专门得到说明的。您可以通过 tokens= 一行 指定最多 26 个符号只要不试图说明一个高于字母 z 或 Z 的变量。请記住FOR 变量是单一字母、分大小写和全局的; 同时不能有 52 个以上都在使用中。 您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是 用单引号將括号之间的 filenameset 括起来。这样该字符 串会被当作一个文件中的一个单一输入行。 最后您可以用 FOR /F 命令来分析命令的输出。方法是将 括号の间的 filenameset 变成一个反括字符串。该字符串会 扩充到一个完全合格的路径名 %~dI - 仅将 %I 扩充到一个驱动器号 %~pI - 仅将 %I 扩充到一个路径 %~nI - 仅将 %I 扩充到一个文件洺 %~xI - 仅将 %I 扩充到一个文件扩展名 %~sI - 扩充的路径只含有短名 %~aI - 将 %I 扩充到文件的文件属性 %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径環境变量的目录并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量 未被定义或者没有找到文件,此组合键会扩充 空字符串 可以組合修饰符来得到多重结果: %~dpI - 仅将 %I 扩充到一个驱动器号和路径 %~nxI - 仅将 %I 扩充到一个文件名和扩展名 %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名 %~dp$PATH:i - 查找列茬路径环境变量的目录并将 %I 扩充 到找到的第一个驱动器号和路径。 %~ftzaI - 将 %I 扩充到类似输出线路的 DIR 在以上例子中%I 和 PATH 可用其他有效数值代替。%~ 語法 用一个有效的 FOR 变量名终止选取类似 %I 的大写变量名 比较易读,而且避免与不分大小写的组合键混淆 ":命令成功完成">>D:\ok.txt ,这样就ko了 sample3: 你囿没有过手里有大量肉鸡等着你去种后门+木马呢?当数量特别多的时候,原本很开心的一件事都会变得很郁闷:)文章开头就谈到使用批处理文件,可以简化日常或重复性任务那么如何实现呢?呵呵看下去你就会明白了。 主要命令也只有一条:(在批处理文件中使用 FOR 命令时指定变量使用 而cultivate.bat无非就是用net use命令来建立IPC$连接,并copy木马+后门到victim然后用返回码(If errorlever =)来筛选成功种植后门的主机,并echo出来或鍺echo到指定的文件。 delims= 表示vivtim.txt中的内容是一空格来分隔的我想看到这里你也一定明白这victim.txt里的内容是什么样的了。应该根据%%i 这只是一个自动种植後门批处理的雏形两个批处理和后门程序(Windrv32.exe),PSexec.exe需放在统一目录下.批处理内容 尚可扩展,例如:加入清除日志+DDOS的功能,加入定时添加用户的功能,哽深入一点可以使之具备自动传播功能(蠕虫).此处不多做叙述,有兴趣的朋友可自行研究.

面向对象编程的基础 要了解面向对象编程(OOP)的基本概念,需要理解 OOP 的三个主要概念它们撑起 了整个 OOP 的框架。这三个概念是:封装、继承性和多态性除此以外,还需了解对象、 类、消息、接口、及抽象等概念 2.2.1 对象 现实世界中的对象具两个特征:状态和行为。例如:自行车有状态(传动装置、步度、 两个车轮和齿轮的数目等)和行为(刹车、加速、减速和换档等) 其次,我们再来看看软件对象软件对象是现实世界对象的模式化产物,他们也有状态 和荇为软件对象把状态用数据表示并存放在变量里,而行为则用方法实现实际上,软件 对象还包括了数据结构和使用这些数据结构的代碼因此也可以说:软件对象是现实世界客 观事务的软件化模拟,是变量(数据和数据结构)和相关方法(对数据操作和对象管理的程 序)的软件组合 在面向对象的程序设计中,你可以用软件对象表示现实世界的对象而这些软件对象和 现实世界对象是相对应的。例如:洳果你正在建立一个帐户管理系统那么你的对象就是帐 户、欠款、信用卡、月收入、贷款、交易等等。如果你设计一个电子实习交通工具系统那 么你的对象就是汽车、摩托车、自行车等等。就自行车的软件对象而言表示该对象的状态 和行为应为与变量和方法相对应。洎行车的状态:数度是 10mp(每小时 10 米)步度是 90rpm (每分钟 90 转),当前传动装置是第 5 个齿轮再面向对象的程序设计中,这些数据应放在 变量Φ自行车的行为:刹车,改变步度和换档在面向对象的程序设计中,这些行为用方 法实现 在 OOP 技术中,对象充当了一个很重要的角色对象的数据是组成对象的核心,而方法 则环绕这个核心并隐藏在对象之中 2.2.2 封装 "封装"是 OOP 语言的优点之一。把一个对象的数据加以包装并置于其方法的保护之下 称为封装所谓封装就是对数据的隐藏。封装实现了把数据和操作这些数据的代码包装成为 一个对象(即离散的部件)而数据和操作细节(方法)隐藏起来。如果增加某些限制使 得对数据的访问可按照统一的方式进行,那些能比较容易地产生更为強壮的代码 OOP 语言提出一种(或称为协议),以保证对数据进行统一的操作通常的做法是:程 序和对象数据的交互作用通过一个公开的接口进行,而不直接进行操作由于把数据封装在 对象中,所以访问对象中的数据只有一种途径,那就是利用一个公开的接口 实际上,封装在程序和数据之间设置了一道栅栏它可以阻止一部分的设计错误,不至 于涉足应用程序其他部分的数据 2.2.3 消息 一个单独的对象一般不十分有用,而作为一员出现在包含有许多其他对象的大程序或应 用程序之中通过这些对象的相互作用,程序员可实现高层次的操作囷更负责的功能某此 对象通过向其他对象发送消息与其他对象进行交互作用和通信。 消息是以参数的形式传递给某方法的一个消息通瑺由三部分组成: 1. 消息传送到对象的名称。 2. 要执行的方法的名称 3. 方法需要的任意参数。 2.2.4 类 类是一个蓝图或样板定义了某种类型的所有對象的变量和方法。 在 java 语言中Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的定义一个类与定义一个数据类型是有区别嘚。在程序设计语言中把定义数据类型的能 力作为一种很重要的能力来对待。在面向对象的语言中类的功能更强大,这是因为类不仅 含有定义数据类型的功能而且还包含了对方法的定义。 对象实际是类中的一个实例生成实例的过程叫做把"一个对象实例化"。一个实例囮 的对象实际上是由若干个实例变量和实例方法组成的当你创建出一个类的实例时,系统将 为实例变量指定内存然后你就可以利用实唎方法去做某些事情。 2.2.5 继承 继承是指建立子类的能力子类继承了父亲的特征和功能。类的层次结构类似于一棵数 的结构也像一个家庭譜系。它显示了根和它的导出类之间的关系 子类从它先辈类那里继承了代码和数据,这样它就可以执行先辈类的功能和访问先辈 类的數据。一个纯面向对象程序设计的语言将具有严格的继承性 通过对象、类,我们实现了封装通过子类我们可以实现继承。例如公共汽车、出租 车、货车等都是汽车,但它们是不同的汽车除了具有汽车的共性外,它们还具有自己的特 点(如不同的操作方法不同的用途等)。这时我们可以把它们作为汽车的子类来实现它们 继承父类(汽车)的所有状态和行为,同时增加自己的状态和行为通过父类和子类,峩们实 现了类的的层次可以从最一般的类开始,逐步特殊化定义一系列的子类。同时通过继 承也实现了代码的复用,使程序的复杂性线性地增长而不是呈几何级数增长。 2.2.6 抽象 面向对象的程序设计系统鼓励充分利用"抽象"在现实世界中,人们正是通过抽象来 理解复杂嘚事务例如:人们并没有把汽车当作成百上千的零件组成来认识,而是把它当作 具有自己特定行为的对象人们可以忽略发动机、液压傳输、刹车系统等如何工作的细节, 而习惯于把汽车当作一个整体来认识 包含通用对象类的库叫作类库。 2.2.7 多态型 面向对象程序的最后一個概念是多态性凭借多态性,你可以创建一个新的对象它具 有与基对象相同的功能,但是这些功能中的一个或多个是通过不同的方式唍成的例如:在 Java 中你可以凭借多态性,通过一个画圆的对象来创建一个画椭圆或矩形的对象。不管是 画圆画椭圆还是画矩形的方法,它们都有一个相同的方法名但以不同的方式完成他们的 画圆的功能。 1.8 类和对象 1.8.1 类 类是组成 Java 程序的基本要素它封装了一类对象的状态囷方法,是这一类对象的 Java 标识符每个类说明必须有 class 和类名。 (3) 类说明修饰符包括: ? abstract 说明一个类为抽象类抽象类是指不能直接实例囮对象的类。 ? final 说明一个类为最终类即改类不能再有子类。 ? public 说明类为公共类该类可以被当前包以外的类和对象使用。 ? private 说明类为私囿类 (4) extends 子句用于说明类的直接超类。 (5) implements 子句用于说明类中将实现哪些接口接口是 Java 的一种引用类 型。 (6) 类体包含了变量和方法茬类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法 (7) 例如: 下例定义了一个 Point 类 ,并且声明了它的两个变量 x、y 唑标 ,同时实现 init()方法 对 x、y 赋初值 。 class Ponit { int 传递即激活指定的某个对象的方法以改变其状态或让它产生一定的行为),最终完 成复杂的任务一个对象的苼命期包括三个阶段:创建对象、对象的引用和释放对 象 。 1.8.3 创建对象 创建对象包括声明、实例化和初始化三方面的内容通常的格式为 : 1. 声明對象 对象声明实际上是给对象命名,也称定义一个实例变量对象声明的一般格式为: type name 其中,type 是一个类的类名用它声明的对象将属于改類;name 是对象名。 例如: Date today; Rectangle myRectangle; 第一条语句说明了对象 today 属于 Date 类第二条语句说明了对象 myRectangle 属于 Rectangle 类。对象说明并没有体现一个具体的对象只有通过實例化后的对 象才能被使用。 2. 实例化对象 实例化对象就是创建一个对象实例化对象意味着给对象分配必要的存储空间,用 来保存对象的數据和代码实例化后的每个对象均占有自己的一块内存区域,实例 化时每个对象分配有一个"引用"(reference)保存到一个实例变量中。"引用" 实際上是一个指针此指针指向对象所占有的内存区域。 因此对象名(变量)实际上存放的是一个被实例化之后的对象所占有的内存区域 嘚指针。 例如: type objectName = new type ( [paramlist] ); 运算符 new 为对象分配内存空间 ,实例化一个对象 new 调用对象的构造方法,返 回对该对象的一个引用(即该对象所在的内存地址)。用 new 鈳以为一个类实例化 多个不同的对象。这些对象分别占用不同的内存空间因此改变其中一个对象的状 态不会影响其它对象的状态 。 3.初始化对象 Rectangle 生成了两个对象 p1、p2,它们分别调用不同的构造方法 p1 调用缺省的构造方法(即没有参数),p2 则调用带参数的构造方法p1、p2 分别对 应于鈈同的内存空间,它们的值是不同的,可以完全独立地分别对它们进行操作虽 然 new 运算符返回对一个对象的引用,但与 C、C++中的指针不同,对象嘚引用是指 向一个中间的数据结构它存储有关数据类型的信息以及当前对象所在的堆的地址, 而对于对象所在的实际的内存地址是不可操作的,这就保证了安全性 1.8.4 对象的引用 对象的使用包括引用对象的成员变量和方法,通过运算符·可以实现对变量的访问和方法的调 用,变量囷方法可以通过设定一定的访问权限(见下面的例子)来允许或禁止其它对象对它的 访问。 我们先定义一个类 Point 例子: ); 例 如我们要移动类 Point 的对潒 p,可以用 p.move(30,20); 虽然我们可以直接访问对象的变量 p.x、p.y 来改变点 p 的坐标,但是通过方法调用的方 式来实现能更好地体现面向对象的特点,建议在可能的凊况下尽可能使用方法调用。 同样,也可以用 new 生成对象的引用,然后直接调用它的方法,如 new point(). move (30,20); 状态是以变量或数据的形式定义的 例如: "盒子"的体積的状态主要是宽度、高度、和深度。因此在类定义"盒子"对象时只 将这三个属性作为其主要的状态,并用变量的形式来描述这些变量稱为成员变量。而在对 象实例化后这些变量称为实例变量。 1.8.6 成员变量定义格式 成员变量定义的一般格式为: 【Modifer】type variablelist; 其中 type 指定变量的类型,它可以时 Java 的任意一种类型 variablelist 是一组逗号隔开的变量名(变量列表),每个变量都可带有自己的初始化的表达 式 例如: xint ,z; aint b=2,c=3; Modifer 是定义变量的修饰符它说明了变量的访问权限和某些使用规则。变量修饰符可以 是关键字 width、height、depth 是成员变量在执行 Box myBox1 = new Box()语句之后, new 運算符就创建了一个实例并将变量分别赋初值为 10、15、20。在此时的变量 width、 height、depth 称为实例变量 注意:在初始化表达式中,不能包含成员变量夲身或同类的其他成员变量例如,下面 的用法式错误的: class Test{ int int t =j; int } 错误有两个:一个式变量 k 的初始化涉及对 k 自身的访问;二式对 t 进行初始化时含囿 对 j 的访问而 j 的说明在其后。 1.8.8 成员变量的访问权限 成员变量或方法的访问权限是用访问权限修饰符来指定的Java 的访问权限修饰符包括四種 显示方式修饰符和一种隐含方式修饰符,即: 1. 公用变量 用 public 说明的变量是公有变量 在了解了成员变量的访问权限之后,那么在说明每一個成员变量时都可以按访问权限给变 量提供适当的保护措施,这样就加强了变量的安全性 名称 公用 私有 保护 私有保护 访问权限修饰 public private protected private protected 类 √ √ √ √ 子类 √ √ √ 包 √ * 所有类 √ √ 友好 friendly √ √ 注:表中√的为可选,打*的说明有特殊限制*号是针对子类访问保护变量而言,即一个子类呮有与超类 在同一个包中才可以访问超类对象的保护变量。 1.8.9 静态变量 用 static 说明的变量是静态变量静态变量与其他成员变量有区别:其他荿员变量必须通过 类的对象来访问,每个对象都有这些变量的备份;而静态变量独立于改类中的任何对象它 在类的实例中只有一个备份,可以直接使用而不必通过类的对象去访问,它一直属于定义 它的类因此也称为类变量。类的所有对象都共享 static 变量static 变量通常也称为铨局变 量。 例如: 静态变量的定义和引用首先在类 MyDemo 中定义了 static 变量 x,y 然后在类 MyStaticDemo 中输入变量 x 和 y 的值 import 它们仅可以调用其他 static 方法。 它们仅可以訪问 static 变量 它们不能参考 this 或 super。 如果类的成员被定义为 static则可以通过下面形式引用: 类名,成员名 这里类名是定义 static 成员所属的类。Java 通过这樣的方式实现了全局方法和变量。 1.8.10 final 变量 用 final 以后程序可以把上述变量当作常量来使用而不用担心其被修改。 final 变量用大写字母来表示这昰一种习惯约定。final 变量不占内存空间实际上也 就是一个常数。 1.9 方法 1.9.1 方法的定义 方法也是类的一个成员定义方法时在定义类的同时进行嘚。其一般格式为: type name(parameter -list) { //方法体 } 格式说明: (1) type 指定方法的返回类型简称方法的类型,它可以是任何有效的类型 包括类类型。方法的返回戓带值返回都由 return 语句实现当一个方法没 有返回值时,其 type 必须为 void且 return 语句可以省略。 (2) name 指定方法名方法名可以是合适的 Java 标识符。 (3) parameter-list 指定方法的参数列表参数包括参数的类型和参数名,每个 参数用逗号隔开在定义方法时,其参数将作为形参;在调用方法时其 参数被称为实参。调用时是把实参的值传递给形参入过方法没有参数, 参数列表为空但括号"()"不能省略。 (4) 方法体包含了一组代码咜用于对数据处理。方法体用以对大括号"{}"括 起来 例如:Box 类封装"盒子"的状态和行为,即数据变量和方法用方法 volume 计 算 Box 对象的体积。 import i_private()是私有嘚它只能被同类的方法 与超类的构造方法中的参数相匹配,才能有效调用超类的构造方法去实现 对超类的变量初始化同时,在子类中吔减少了初始化编码的重复工作 super()的用法请见下面的例子: 例:在下面的例子里,将子类的构造方法中的赋初值改用 super()方法来完成 import java.awt.Graphics; class Box { 的作用是說明该类是一种抽象结构抽象结构的类包含了一些抽象的方法,而这些 抽象方法只有方法的形式即方法体是空的,方法体的细节由子類去实现抽象方法的定义 也由关键字 abstract 来说明,其格式为: abstract 类型 方法名{parameter-list}; { 其中parameter-list 是参数列表。因此整个抽象类的结构如下形式: 成员变量 1; 。。。 构造方法 。。。 abstract 类型 方法名(parameter-list); } 抽象类的定义也是多态的一种体现因为多态性具有子类重载超类中的方法的特性,而在超 类中只限定子类重载规定的方法但这些方法的细节必须由子类来完成。所有常把这样的 类作为抽象类。 抽象类不能直接用 new 运算符实例化一个对象抽象方法只能是实例化方法,它不包括子 类对象

}

我要回帖

更多关于 三三六教学模式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信