100% found this document useful (2 votes)
12 views

C Unleashed 1st Edition Joseph Mayo instant download

The document provides a download link for the 'C# Unleashed 1st Edition' by Joseph Mayo, along with other related ebook titles. It includes a detailed table of contents outlining various topics covered in the book, such as C# basics, object-oriented programming, and class libraries. The document emphasizes the availability of instant digital products in multiple formats for users to explore.

Uploaded by

cystrisaksa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
12 views

C Unleashed 1st Edition Joseph Mayo instant download

The document provides a download link for the 'C# Unleashed 1st Edition' by Joseph Mayo, along with other related ebook titles. It includes a detailed table of contents outlining various topics covered in the book, such as C# basics, object-oriented programming, and class libraries. The document emphasizes the availability of instant digital products in multiple formats for users to explore.

Uploaded by

cystrisaksa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 83

C Unleashed 1st Edition Joseph Mayo pdf download

https://ebookgate.com/product/c-unleashed-1st-edition-joseph-
mayo/

Get Instant Ebook Downloads – Browse at https://ebookgate.com


Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...

Mayo Clinic Cardiology Concise Textbook 4th Edition Joseph


G. Murphy

https://ebookgate.com/product/mayo-clinic-cardiology-concise-
textbook-4th-edition-joseph-g-murphy/

ebookgate.com

Mayo Clinic gastroenterology and hepatology board review


4ed. Edition Stephen C. Hauser

https://ebookgate.com/product/mayo-clinic-gastroenterology-and-
hepatology-board-review-4ed-edition-stephen-c-hauser/

ebookgate.com

J2EE Unleashed 1st Edition Mark Ashnault

https://ebookgate.com/product/j2ee-unleashed-1st-edition-mark-
ashnault/

ebookgate.com

The Apache 2nd Edition Joseph C. Jastrzembski

https://ebookgate.com/product/the-apache-2nd-edition-joseph-c-
jastrzembski/

ebookgate.com
Interest Groups Unleashed 1st Edition Paul S. Herrnson

https://ebookgate.com/product/interest-groups-unleashed-1st-edition-
paul-s-herrnson/

ebookgate.com

Mayo Clinic body MRI case review 1st Edition Glockner

https://ebookgate.com/product/mayo-clinic-body-mri-case-review-1st-
edition-glockner/

ebookgate.com

Microsoft Expression Blend 4 Unleashed 1st Edition Brennon


Williams

https://ebookgate.com/product/microsoft-expression-
blend-4-unleashed-1st-edition-brennon-williams/

ebookgate.com

Microsoft SharePoint 2007 Development Unleashed 1st


Edition Kevin Hoffman

https://ebookgate.com/product/microsoft-sharepoint-2007-development-
unleashed-1st-edition-kevin-hoffman/

ebookgate.com

Visual Basic 2010 Unleashed 1st Edition Alessandro Del


Sole

https://ebookgate.com/product/visual-basic-2010-unleashed-1st-edition-
alessandro-del-sole/

ebookgate.com
C#
Joseph Mayo

Unleashed
PUBLISHER
C# Unleashed Paul Boger
Copyright © 2002 by Sams Publishing
EXECUTIVE EDITOR
All rights reserved. No part of this book shall be reproduced, stored in a
Shelley Kronzek
retrieval system, or transmitted by any means, electronic, mechanical, photo-
copying, recording, or otherwise, without written permission from the publish- DEVELOPMENT EDITOR
er. No patent liability is assumed with respect to the use of the information Susan Hobbs
contained herein. Although every precaution has been taken in the preparation
MANAGING EDITOR
of this book, the publisher and author assume no responsibility for errors or
Charlotte Clapp
omissions. Nor is any liability assumed for damages resulting from the use of
the information contained herein. PROJECT EDITORS
International Standard Book Number: 0-672-32122-x Elizabeth Finney
Leah Kirkpatrick
Library of Congress Catalog Card Number: 00-111066
COPY EDITOR
Printed in the United States of America
Maryann Steinhart
First Printing: November 2001
INDEXER
04 03 02 01 4 3 2 1 D&G Limited, LLC

Trademarks PROOFREADER
D&G Limited, LLC
All terms mentioned in this book that are known to be trademarks or service
marks have been appropriately capitalized. Sams Publishing cannot attest to TECHNICAL EDITORS
the accuracy of this information. Use of a term in this book should not be Kevin Burton
regarded as affecting the validity of any trademark or service mark. Bill Craun

TEAM COORDINATOR
Warning and Disclaimer Pamalee Nelson
Every effort has been made to make this book as complete and as accurate as
possible, but no warranty or fitness is implied. The information provided is on MEDIA DEVELOPER
an “as is” basis. The author and the publisher shall have neither liability nor Dan Scherf
responsibility to any person or entity with respect to any loss or damages aris- INTERIOR DESIGNER
ing from the information contained in this book or from the use of programs Gary Adair
accompanying it.
COVER DESIGNER
Aren Howell

PAGE LAYOUT
D&G Limited, LLC
Contents at a Glance
Introduction 1

PART I C# Basics 9
1 The C# Environment 11
2 Getting Started with C# 19
3 Writing C# Expressions 47
4 Using Statements and Loops to Control Program Flow 69
5 Debugging and Pre-Processing 91

Part II Object and Component Programming with C# 107


6 Object and Component Concepts 109
7 Working with Classes 129
8 Designing Object-Oriented Programs 177
9 Overloading Class Members and Operators 219
10 Handling Exceptions and Errors 237
11 Delegates and Events 255
12 Organizing Code with Namespaces 277
13 Creating structs 289
14 Implementing Interfaces 301
15 Performing Conversions 329

Part III Using Class Libraries with C# 341


16 Presenting Graphical User Interfaces 343
17 File I/O and Serialization 381
18 XML 407
19 Database Programming with ADO.NET 417
20 Writing Web Applications with ASP.NET 439
21 Remoting 459
22 Web Services 483
Part IV Extreme C# 495
23 Multi-Threading 497
24 Browsing the Network Libraries 503
25 String Manipulation 515
26 C# Collections 545
27 Attributes 567
28 Reflection 581
29 Localization and Resources 595
30 Unsafe Code and PInvoke 619
31 Runtime Debugging 635
32 Performance Monitoring 647
33 Integrating C# with COM 679

Part V The C# Environment 693


34 Garbage Collection 695
35 Cross-Language Programming with C# 711
36 The Common Language Runtime 725
37 Versioning and Assemblies 733
38 Securing Code 745

Part VI Appendixes 759


A Compiling Programs 761
B The .NET Frameworks Class Library 767
C Online Resources 773

Index 775
Contents
Introduction 1

Part I C# Basics 9
1 The C# Environment 11
The Common Language Infrastructure (CLI) ......................................12
Standardization ....................................................................................15
The .NET Architecture ........................................................................16
Common Language Runtime (CLR) ..............................................16
Libraries ..........................................................................................16
Languages ........................................................................................17
Where C# Fits In ..................................................................................17
Summary ..............................................................................................17

2 Getting Started with C# 19


Writing a Simple C# Program ..............................................................20
Comments ............................................................................................22
Multi-Line Comments ....................................................................22
Single-Line Comments ....................................................................23
XML Documentation Comments ....................................................23
Identifiers and Keywords ......................................................................24
Identifiers ........................................................................................24
Keywords ........................................................................................26
Style ......................................................................................................26
Preparing a Program To Run ................................................................27
Basic C# Types ....................................................................................28
Variable Declarations ......................................................................29
The Simple Types ............................................................................29
Struct Types ....................................................................................34
Reference Types ..............................................................................34
Enumeration Types ..........................................................................35
String Type ......................................................................................36
C#
vi
UNLEASHED

Definite Assignment ............................................................................37


Basic Conversions ................................................................................38
Arrays ....................................................................................................40
Single-dimension Arrays ................................................................40
N-Dimensional Arrays ....................................................................42
Jagged Arrays ..................................................................................42
Interacting with Programs ....................................................................43
Summary ..............................................................................................46

3 Writing C# Expressions 47
Unary Operators ....................................................................................48
The Plus Operator ............................................................................48
The Minus Operator ........................................................................49
The Increment Operator ..................................................................49
The Decrement Operator ................................................................50
The Logical Complement Operator ................................................50
The Bitwise Complement Operator ................................................50
Binary Operators ..................................................................................51
Arithmetic Operators ......................................................................51
Relational Operators ........................................................................53
Logical Operators ............................................................................55
Assignment Operators ....................................................................58
The Ternary Operator ..........................................................................59
Other Operators ....................................................................................60
The is Operator ..............................................................................60
The as Operator ..............................................................................60
The sizeof() Operator ..................................................................60
The typeof() Operator ..................................................................60
The checked() Operator ..................................................................61
The unchecked() Operator ..............................................................61
Enumeration Expressions ....................................................................61
Array Expressions ................................................................................63
Statements ............................................................................................65
Blocks ..................................................................................................65
Labels ....................................................................................................66
Declarations ..........................................................................................66
Operator Precedence and Associativity ................................................66
Summary ..............................................................................................68

4 Using Statements and Loops to Control Program Flow 69


if Statements ........................................................................................70
Simple if ........................................................................................70
if-then-else ..................................................................................71
if-else if-else ............................................................................71
vii
CONTENTS

switch Statements ................................................................................73


C# Loops ..............................................................................................76
while Loops ....................................................................................77
do Loops ..........................................................................................78
for Loops ........................................................................................79
foreach Loops ................................................................................80
goto Statements ....................................................................................81
break Statements ..................................................................................83
continue Statements ............................................................................84
return Statements ................................................................................84
Summary ..............................................................................................88

5 Debugging and Pre-Processing 91


Pre-Processing Directives ....................................................................92
Define Directive ..............................................................................92
Conditionals ....................................................................................92
Errors ..............................................................................................93
Line Numbers ..................................................................................94
Comments ........................................................................................94
Debugging C# Programs ......................................................................94
The Debugging Approach ..............................................................95
Using the Debugger To Find a Program Error ................................96
Attaching to Processes ..................................................................101
Summary ............................................................................................106

Part II Object and Component Programming with C# 107


6 Object and Component Concepts 109
What Is an Object? ............................................................................110
Object Classification ..........................................................................112
Object Hierarchies ..............................................................................113
Abstraction ..........................................................................................114
Objects within Objects ........................................................................115
Objects with Different Behaviors ......................................................116
Component Interfaces ........................................................................120
Component Properties ........................................................................123
Component Events ..............................................................................125
Summary ............................................................................................128

7 Working with Classes 129


Class Members ....................................................................................130
Instance and Static Members ..............................................................131
Use of Accessibility Modifiers ..........................................................131
Fields ..................................................................................................132
C#
viii
UNLEASHED

Field Initialization ........................................................................132


Definite Assignment ......................................................................133
Constant Fields ..............................................................................134
readonly Fields ............................................................................135
XML Comments ............................................................................135
Constructors ........................................................................................135
Instance Constructors ....................................................................136
Static Constructors ........................................................................141
Destructors ..........................................................................................142
Methods ..............................................................................................143
Instance Methods ..........................................................................144
Method Signature ..........................................................................144
Method Body ................................................................................147
Local Fields ..................................................................................147
Method Parameters ........................................................................148
Static Methods ..............................................................................155
XML Comments ............................................................................156
Properties ............................................................................................156
Property Accessors ........................................................................157
Transparent Access ........................................................................159
Static Properties ............................................................................160
Late Bound Object Creation ..........................................................161
XML Comments ............................................................................162
Indexers ..............................................................................................162
XML Comments ............................................................................164
Full XML Comments ..........................................................................165
Summary ............................................................................................176

8 Designing Object-Oriented Programs 177


Inheritance ..........................................................................................178
Base Classes ..................................................................................178
Abstract Classes ............................................................................180
Calling Base Class Members ........................................................188
Hiding Base Class Members ........................................................191
Versioning ......................................................................................193
Sealed Classes ..............................................................................197
Encapsulating Object Internals ..........................................................198
Data Hiding ..................................................................................198
Modifiers Supporting Encapsulation ............................................199
Other Encapsulation Strategies ....................................................199
Relationship of Encapsulation to Inheritance ..............................200
ix
CONTENTS

Polymorphism ....................................................................................200
Implementing Polymorphism ........................................................201
Hiding Again ................................................................................206
Most-Derived Implementations ....................................................210
Polymorphic Properties ................................................................213
Polymorphic Indexers ....................................................................215
Summary ............................................................................................217

9 Overloading Class Members and Operators 219


Overloading Methods ........................................................................220
Overloading Indexers ..........................................................................223
Overloading Operators ........................................................................227
Resolving Overloaded Members ........................................................234
Summary ............................................................................................235

10 Handling Exceptions and Errors 237


try/catch Blocks ..............................................................................238
finally Blocks ..................................................................................240
Predefined Exception Classes ............................................................241
Handling Exceptions ..........................................................................241
Handling Multiple Exceptions ......................................................242
Handling and Passing Exceptions ................................................243
Recovering from Exceptions ........................................................246
Designing Your Own Exceptions ........................................................249
checked and unchecked Statements ....................................................251
Summary ............................................................................................253

11 Delegates and Events 255


Delegates ............................................................................................256
Defining Delegates ........................................................................256
Creating Delegate Method Handlers ............................................257
Hooking Up Delegates and Handlers ............................................257
Invoking Methods through Delegates ..........................................258
Multi-Cast Delegates ....................................................................258
Delegate Equality ..........................................................................261
Events ..................................................................................................262
Defining Event Handlers ..............................................................262
Registering for Events ..................................................................264
Implementing Events ....................................................................265
Firing Events ................................................................................267
Modifying Event Add/Remove Methods ......................................269
Summary ............................................................................................275
C#
x
UNLEASHED

12 Organizing Code with Namespaces 277


Why Namespaces? ..............................................................................278
Organizing Code ............................................................................278
Avoiding Conflict ..........................................................................279
Namespace Directives ........................................................................280
The using Directive ......................................................................280
The alias Directive ......................................................................281
Creating Namespaces ..........................................................................282
Namespace Members ..........................................................................286
Scope and Visibility ............................................................................286
Summary ............................................................................................288

13 Creating structs 289


Identifying the class/struct Relationship ........................................290
Value Versus Reference ................................................................291
Inheritance ....................................................................................292
Other Differences ..........................................................................293
Trade-Offs ......................................................................................293
Type System Unification ....................................................................294
The Pre-Defined Types as structs ..............................................294
Boxing and Unboxing ..................................................................295
Designing a New Value Type ..............................................................295
Summary ............................................................................................298

14 Implementing Interfaces 301


Abstract Class Versus Interface ..........................................................302
Interface Members ..............................................................................302
Methods ........................................................................................303
Properties ......................................................................................303
Indexers ........................................................................................304
Events ............................................................................................304
Implicit Implementation ....................................................................304
Single Class Interface Implementation ........................................305
Simulating Polymorphic Behavior ................................................309
Explicit Implementation ....................................................................315
Mapping ..............................................................................................321
Inheritance ..........................................................................................324
Summary ............................................................................................327

15 Performing Conversions 329


Implicit Versus Explicit Conversions ..................................................330
Value Type Conversions ....................................................................335
Reference Type Conversions ..............................................................338
Summary ............................................................................................339
xi
CONTENTS

Part III Using Class Libraries with C# 341


16 Presenting Graphical User Interfaces 343
Windows ............................................................................................344
Controls ..............................................................................................348
N-Tier Architecture ............................................................................351
Menus ..................................................................................................373
Summary ............................................................................................379

17 File I/O and Serialization 381


Files and Directories ..........................................................................382
Streams ................................................................................................391
Reading and Writing with Streams ..............................................391
Implementing a Cryptographic Stream ........................................395
Serialization ........................................................................................398
Automatic Serialization ................................................................398
Custom Serialization ....................................................................401
Summary ............................................................................................406

18 XML 407
Writing ................................................................................................408
Reading ..............................................................................................411
Summary ............................................................................................416

19 Database Programming with ADO.NET 417


Making Connections ..........................................................................418
Viewing Data ......................................................................................420
Manipulating Data ..............................................................................425
Calling Stored Procedures ..................................................................429
Retrieving DataSets ............................................................................435
Summary ............................................................................................438

20 Writing Web Applications with ASP.NET 439


A Simple Web Page ............................................................................440
Controls ..............................................................................................441
Server Controls ..............................................................................441
HTML Controls ............................................................................442
Validation Controls ........................................................................443
Making a Web Form ..........................................................................443
A Simple Web Form ......................................................................444
Manipulating Web Form Controls ................................................448
Code-Behind Web Pages ....................................................................452
Summary ............................................................................................457
C#
xii
UNLEASHED

21 Remoting 459
Basic Remoting ..................................................................................460
Remoting Server ............................................................................461
Remoting Client ............................................................................463
Remoting Setup ............................................................................465
Proxys ................................................................................................471
Channels ..............................................................................................475
Lifetime Management ........................................................................478
Summary ............................................................................................481

22 Web Services 483


Web Service Basics ............................................................................484
Web Service Technologies ............................................................484
A Basic Web Service ....................................................................485
Viewing Web Service Info ............................................................486
Using Web Services ............................................................................490
Summary ............................................................................................493

Part IV Extreme C# 495


23 Multi-Threading 497
Creating New Threads ........................................................................498
Synchronization ..................................................................................499
Summary ............................................................................................502

24 Browsing the Network Libraries 503


Implementing Sockets ........................................................................504
A Socket Server ............................................................................504
A Socket Client ............................................................................507
Compiling and Running Server and Client ..................................511
Working with HTTP ..........................................................................512
Summary ............................................................................................514

25 String Manipulation 515


The String Class ................................................................................516
static Methods ................................................................................517
Instance Methods ..........................................................................522
Properties and Indexers ................................................................532
The StringBuilder Class ..................................................................533
Instance Methods ..........................................................................533
Properties and Indexers ................................................................538
String Formatting ..............................................................................540
Numeric Formatting ......................................................................540
Picture Formatting ........................................................................541
xiii
CONTENTS

Regular Expressions ..........................................................................541


Summary ............................................................................................543

26 C# Collections 545
Pre-Existing Collections ....................................................................546
The ArrayList Collection ............................................................546
The BitArray Collection ..............................................................547
The Hashtable Collection ............................................................549
The Queue Collection ....................................................................549
The SortedList Collection ..........................................................550
The Stack Collection ....................................................................551
Collection Interfaces ..........................................................................552
Creating a Collection ..........................................................................553
A List Collection ..........................................................................553
Using the SiteList Collection ......................................................563
Summary ............................................................................................565

27 Attributes 567
Using Attributes ..................................................................................568
Using a Single Attribute ................................................................568
Using Multiple Attributes ..............................................................569
Using Attribute Parameters ................................................................570
Positional Parameters ....................................................................571
Named Parameters ........................................................................571
Using Attribute Targets ......................................................................572
Creating Your Own Attributes ............................................................574
The AttributeUsage Attribute ......................................................574
Getting Attributes from a Class ..........................................................578
Summary ............................................................................................579

28 Reflection 581
Discovering Program Information ......................................................582
Dynamically Activating Code ............................................................588
Reflection.Emit ................................................................................590
Summary ............................................................................................594

29 Localization and Resources 595


Resource Files ....................................................................................596
Creating a Resource File ..............................................................596
Writing a Resource File ................................................................599
Reading a Resource File ................................................................600
Converting a Resource File ..........................................................601
Creating Graphical Resources ......................................................603
C#
xiv
UNLEASHED

Multiple Locales ................................................................................609


Implementing Multiple Locales ....................................................610
Finding Resources ........................................................................616
Summary ............................................................................................617

30 Unsafe Code and PInvoke 619


Unsafe Code ........................................................................................620
What Do You Mean My Code Is Unsafe? ....................................620
The Power of Pointers ..................................................................621
The sizeof() Operator ................................................................625
The stackalloc Operator ..............................................................626
The fixed Statement ....................................................................628
Platform Invoke ..................................................................................631
Summary ............................................................................................633

31 Runtime Debugging 635


Simple Debugging ..............................................................................636
Conditional Debugging ......................................................................638
Runtime Tracing ................................................................................641
Making Assertions ..............................................................................643
Summary ............................................................................................644

32 Performance Monitoring 647


Accessing Built-in Performance Counters ........................................648
Implementing Timers ..........................................................................656
Building a Customized Performance Counter ....................................657
Analyzing Performance with Sampling ..............................................668
Summary ............................................................................................677

33 Integrating C# with COM 679


Communicating with COM from .NET ............................................680
Early-Bound COM Component Calls ..........................................680
Late-Bound COM Component Calls ............................................682
Exposing a .NET Component as a COM Component ......................683
Introduction to .NET Support for COM+ Services ............................685
Transactions ..................................................................................687
JIT Activation ................................................................................688
Object Pooling ..............................................................................689
Other Services ..............................................................................690
Summary ............................................................................................690
xv
CONTENTS

Part V The C# Environment 693


34 Garbage Collection 695
Automatic Memory Management ......................................................696
Inside the Garbage Collector ........................................................697
Garbage Collector Optimization ..................................................698
Finalizing Your Code Properly ..........................................................699
The Problems with Destructors ....................................................699
The Dispose Pattern ......................................................................700
The using Statement ....................................................................701
Controlling Garbage Collection ..........................................................703
Controlling Objects ......................................................................703
Weak References ..........................................................................705
Summary ............................................................................................709

35 Cross-Language Programming with C# 711


The Common Type System (CTS) ....................................................712
The Common Language Specification (CLS) ....................................713
Tips for Making Your Code CLS-Compatible ....................................713
General ..........................................................................................714
Naming ..........................................................................................715
Types ..............................................................................................715
Methods ........................................................................................716
Indexers and Properties ................................................................717
Events ............................................................................................717
Pointers ..........................................................................................718
Interfaces ......................................................................................718
Inheritance ....................................................................................718
Arrays ............................................................................................719
Enums ............................................................................................719
Attributes ......................................................................................720
Assemblies ....................................................................................720
Writing a Cross-Language Program ..................................................721
Summary ............................................................................................724

36 The Common Language Runtime 725


Managed Execution ............................................................................726
Creating Source Code ....................................................................727
Compiling to Intermediate Code ..................................................727
Compiling to Native Code ............................................................727
Executing the Program ..................................................................728
Metadata ..............................................................................................728
Uses of Metadata ..........................................................................729
C#
xvi
UNLEASHED

Managed Services ..............................................................................729


Exception Handling ......................................................................729
Automatic Lifetime Management ................................................730
Interoperability ..............................................................................730
Security ..........................................................................................730
Profiling and Debugging ..............................................................730
Summary ............................................................................................730

37 Versioning and Assemblies 733


Inside Assemblies ..............................................................................734
Manifests ......................................................................................735
Attributes ......................................................................................735
Assembly Features ..............................................................................738
Identity ..........................................................................................738
Scope ............................................................................................738
Versioning ......................................................................................738
Security ..........................................................................................739
Configuration ......................................................................................740
Startup Configuration ....................................................................741
Runtime Configuration ..................................................................741
Deployment ........................................................................................743
Summary ............................................................................................744
38 Securing Code 745
Code-Based Security ..........................................................................746
Evidence ........................................................................................746
Permissions ....................................................................................747
Code Groups ..................................................................................747
Security Policy Levels ..................................................................749
Permission Requests ......................................................................750
Implementing Security Policy ......................................................753
Role-Based Security ..........................................................................755
Security Utilities ................................................................................757
Summary ............................................................................................758

Part VI Appendixes 759


A Compiling Programs 761
Assemblies ..........................................................................................762
Debug ..................................................................................................762
Miscellaneous ....................................................................................763
Optimization ......................................................................................764
Output ................................................................................................764
Preprocessing ......................................................................................765
Resources ............................................................................................765

B The .NET Frameworks Class Libraries 767

C Online Resources 773


C# Sites ..............................................................................................774
.NET Sites ..........................................................................................774

Index 775
About the Author
Joe Mayo is a pioneer within the C# community. Joe created the C# Station Web site
shortly after this new language was introduced. His very popular C# Tutorials are
accessed by Web developers and Web sites throughout the world. Joe is a seasoned
developer with more than 15 years of robust experience. Over the years, he has pro-
grammed in a variety of languages including assembler, C, C++, VBA, and Forte 4GL.
His database experience encompasses Paradox, Dbase III, MS Access, and Oracle.
Frameworks include MFC and Motif. He has programmed several operating systems
including VAX VMS, RSX-11, UNIX, and several versions of MS-DOS and MS
Windows. He has developed applications in standalone mode for desktops, client-server
on LANs, and n-tier applications on LANs and WANs. Joe opened a Web site titled C#
Station in late June 2000. He is currently a software engineer for Quest
Communications.
Dedication
To my beautiful wife, Maytinee

You are the vision, the light


guiding my way

Your strength and support


enable perseverance

Mother of our children and best friend


I love and thank you dearly

—Joe Mayo
Acknowledgments
Although my name appears on the cover of this book, work of such magnitude could
never have occurred without the valuable contributions of many people. To the people at
Sams Publishing, Microsoft, and friends and family I am eternally grateful.
I’d first like to thank Shelley Kronzek, Executive Editor, for finding me and offering this
wonderful opportunity. Her leadership is inspiring. Susan Hobbs, Development Editor,
was totally awesome, keeping me on focus and organized. Maryann Steinhart, Copy
Editor, made my writing look great. Other people at Sams Publishing I’d like to recog-
nize include Katie Robinson, Leah Kirkpatrick, Elizabeth Finney, Pamalee Nelson, and
Laurie McGuire. Thanks also to all the editors, indexers, printers, production, and other
people at Sams who have contributed to this book.
Special thanks goes to Kevin Burton and Bill Craun, technical editors. Their technical
expertise and advice was absolutely top-notch. They provided detailed pointers, and their
perspectives made a significant difference. Thanks to Keith Olsen, Charles Tonklinson,
Cedric, and Christoph Wille for reviewing my early work.
Thanks to all the people at Microsoft who set up author seminars and training. They are
transforming the way we do computing and leading the industry in a move of historic
proportions—an initiative deserving of much praise. Special thanks to Eric Gunnerson
for taking time out of his extremely busy schedule to review my chapters.
This first book is a significant milestone in my life. As such, I must recognize those peo-
ple who contributed to my success. In many ways, they define who I am.
Thanks to family members: Maytinee Mayo, Joseph A. Mayo Jr., Jennifer A. Mayo,
Kamonchon Ahantric, Lacee and June Mayo, Bob Mayo, Margina Mayo, Richard Mayo,
Gary Mayo, Mike Mayo, Tony Gravagno, Tim and Kirby Hoffman, Richard and Barbara
Bickerstaff, Bobbie Jo Burns, David Burns, Mistie Lea Bickerstaff, Cecil Sr. and
Margaret Sloan, Cecil Jr. and Jean Sloan, Lou and Rose Weiner, Mary and Ron Monette,
Jack Freeman Sr., and Bill Freeman.
Thanks to friends and professional associates: Evelyn Black, Harry G. Hall, Arthur E.
Richardson, Carl S. Markussen, Judson Meyer, Hoover McCoy, Bill Morris, Gary Meyer,
Tim Leuers, Angela Dees-Prebula, Bob Jangraw, Jean-Paul Massart, Jeff and Stephanie
Manners, Eddie Alicea, Gary and Gloria Lefebvre, Bob Turbyfill, and Dick Van
Bennekom, Barry Patterson, Otis Solomon, and Brian Allen.
Tell Us What You Think!
As the reader of this book, you are our most important critic and commentator. We value
your opinion and want to know what we’re doing right, what we could do better, what
areas you’d like to see us publish in, and any other words of wisdom you’re willing to
pass our way.
As an Executive Editor for Sams, I welcome your comments. You can e-mail or
write me directly to let me know what you did or didn’t like about this book—as well as
what we can do to make our books stronger.
Please note that I cannot help you with technical problems related to the topic of this
book, and that due to the high volume of mail I receive, I might not be able to reply to
every message.
When you write, please be sure to include this book’s title and author as well as your
name and phone or fax number. I will carefully review your comments and share them
with the author and editors who worked on the book.

Email: feedback@samspublishing.com
Mail: Mark Taber
Executive Editor
Sams Publishing
800 East 96th Street
Indianapolis, IN 46240 USA
Introduction
Welcome to C# Unleashed, a programmer’s guide and reference to the C# (pronounced
“see sharp”) programming language. C# is a brand-new object-oriented programming
(OOP) language that emphasizes a component-based approach to software development.
While component-based programming has been with us, in one form or another, for a
few years now, the vision of what C# enables promises to take us to the next level in
software development. This is the new paradigm shift toward XML Web Services—the
view of software as a service, disconnected, stateless, and conforming to international
open standards.
Software as a service is the vision of the next generation of computing systems. For
example, C# is well suited for building Web services, reusable components on the
Internet that conform to open standards. Software development is no longer constrained
to the monolithic architectures we have been developing over the last several years. Web
services enable applications to use distributed services over the Web, which simplify
development and promote a greater scale of software reuse. C# is a major player in the
Web services arena, promoting the vision of software as a service.
This book not only teaches the C# language itself, but its goal is to show how C# could
be used to develop software as a service. Looking at the evolution of software, it’s evi-
dent how we’ve reached this point in time. For many years, programs were written as
monolithic applications with a single purpose. Through research and experience, we
realized the benefits of modularization, which eventually led to object-oriented methods.
This gave us large-scale re-use and maintainability. Client/server and networking tech-
nology evolved naturally as collaboration and communication became business require-
ments. Enter the Internet and Web technology, providing distributed, stateless, and secure
software technologies, including applets and other Web page objects. The next evolution-
ary step is where C# fits in: automating the Internet.

Why This Book Is for You


If you’ve developed software in any other computer programming language, you will be
able to understand the contents of this book with no trouble. You already know how to
make logical decisions and construct iterative code. You also understand variables and
basic number systems like hexadecimal. Honestly, ambitious beginners could do well
with this book if they’re motivated.
Having developed software for several years, I stepped back into some old shoes many
times during writing this book. A common question I’d ask myself was, “What if I just
C#
2
UNLEASHED

spent the last two years programming Y2K fixes in COBOL?” or “What if I was a PRO-
LOG programmer doing scientific research for a number of years?” Would someone
working with language X understand a certain explanation or example? When the answer
was positive, I felt confident that I had given you fair consideration.
This is a book written for every programmer. Although it has notes for a couple of the
larger potential groups of readers, C++ and Java programmers, it considers all program-
mers. It’s basic enough for you to see every aspect of C# that’s possible, yet it’s suffi-
ciently advanced to provide insight into the modern enterprise-level tasks you deal with
every day. I hope this book leaves you with a sense that you now have a valuable new
tool in your backpack to develop the Web services and distributed solutions that are ulti-
mately our destiny.

Organization and Goals


C# Unleashed is all about writing code in the C# programming language. Many of the
advanced topics could fill books of their own, but the primary focus is not to teach the
details of the advanced topics, although some areas do have significant depth. The goal
within each of the chapters is to show how C# is used to perform a given task. Even in
the more theoretical chapters, the focus is on how each topic applies to writing code
in C#.
This book is divided into six major parts. It begins with the simpler material and those
items strictly related to the C# language itself. Later, the book moves into C#-related
areas, showing how to use libraries. Then it covers more advanced topics, showing how
to develop code for various technologies using C#.

Part I: C# Basics
Part I provides the most basic elements of C# language syntax. It begins by introducing
the environment C# operates in and then showing how to create a couple simple C# pro-
grams. The different C# types and how they’re used to create expressions and statements
are covered. There is a chapter on controlling program flow with branching and iteration.
After enough material has been covered so that the reader understands a moderately
sophisticated program, there is a chapter on how to debug C# programs.
• Chapter 1 C# does not operate in a typical environment where programs are
compiled directly to machine code. It runs in a virtual execution system that man-
ages how the code runs. There are several technologies that enable this environ-
ment to operate the way it does. C# is also being submitted as an open standard.
The material is purposely brief, so you can quickly dive into the main purpose of
the book, writing C# code.
3
INTRODUCTION

• Chapter 2 The basics of C# include how to build a simple program, basic syn-
tax, and information on C# types. C# syntax and types are much like those of its C
and C++ parent languages.
• Chapter 3 Central to computing in any language is the ability to manipulate data
with expressions. C# includes an entire suite of unary, binary, and ternary expres-
sions. Highlights include forming expressions, operator precedence, and working
with enum and array types.
• Chapter 4 Rounding out basics of the C# language are several constructs allow-
ing control of program flow. Besides the traditional if and select statements and
while and for loops, there is an explanation of the new foreach loop. I even touch
upon the infamous goto statement.
• Chapter 5 Advanced programmers, please bear with me. I sincerely believe
that debugging is so important, especially to intermediate programmers, that
there is an entire chapter dedicated to it. There is also an introductory section on
pre-processing directives.

Part II: Object and Component Programming


with C#
Part II covers object and component programming in C#. For some, this is one of the
toughest things to learn, so I start at a very basic level and then go into more depth. In
fact, there is a set of three entire chapters dedicated exclusively to object and component
programming concepts. The rest of the chapters in this part deal with other types of C#
objects and how to use the object-oriented features of C#.
• Chapter 6 A large part of programming with C# is understanding object-
oriented programming (OOP). If you’re an OOP purist, count to 10. This is a
chapter focused on programmers coming from functional, logical, or procedural
paradigms. Many people learning OOP will scratch their heads for a while before
they get the “Ah-ha!” experience. This material is designed to help “Ah-ha!” come
a little more quickly.
• Chapter 7 One of the most used objects in C# is the class. This chapter’s focus
is on the mechanics of creating a class and its members, including constructors,
destructors, fields, methods, properties, and indexers. There is also an entire pro-
gram demonstrating how XML comments are used.
• Chapter 8 Classes define objects that, in turn, have object-oriented behavior.
Discussion and examples drill down into how object-oriented programming is per-
formed with classes.
C#
4
UNLEASHED

• Chapter 9 Method and operator overloading in C# is similar to C and C++ but


has nuances that make it unique. There are several examples that explain how to
overload members and operators and show some of the new constraints and safe-
guards.
• Chapter 10 C# has extensive error handling and exception support. Pertinent
items discussed include exception handling with try/catch/finally blocks, excep-
tion creation and management, and exception recovery.
• Chapter 11 Events and delegates are closely related and provide support for
late-bound method invocation. This chapter presents the delegate object first and
then shows how it is used with the event class member.
• Chapter 12 Namespaces were briefly introduced earlier in the book, but now
they are discussed in detail, including namespace declaration and how to use
namespaces to organize code and avoid identifier naming conflicts.
• Chapter 13 A struct is another C# object type. It’s similar to a class in mechan-
ics but possesses different semantics. Since a struct contains many of the same
members as a class, this chapter focuses on the unique features of a struct and its
difference from the class type.
• Chapter 14 Interface-based programming is superior in exposing the public con-
tract an object exposes to potential clients. This chapter presents thorough and
detailed information on how to implement interfaces in a C# program.
• Chapter 15 C# is a very strongly typed language. The discussion focuses on
how to maintain type safety, while still being able to make conversions between
user-defined types.

Part III: Using Class Libraries with C#


Part III introduces several of the class libraries available to C#.
• Chapter 16 Although the new vision is Web services, there is still a large audi-
ence for desktop graphical user interface (GUI) applications. The Windows Forms
library is presented with emphasis on showing how to create a simple user inter-
face with Windows Forms controls.
• Chapter 17 An entire chapter is devoted to file input/output (I/O), explaining
how C# is used to write to and read from files. There is also a discussion about
streams.
• Chapter 18 XML is integrated thoroughly with the base class libraries, underly-
ing its importance in future applications. Examples concentrate on using existing
libraries with C# to manipulate XML data.
5
INTRODUCTION

• Chapter 19 The primary means of programming databases with C# is through


ADO.NET. The examples show how to use many of the ADO.NET classes for tra-
ditional and Web-based database access.
• Chapter 20 The discussion of ASP.NET brings Web software development into
focus. ASP.NET Web pages can be developed with code written in C#. Examples
include how to program controls and Web programs with C# code.
• Chapter 21 Remoting is an extensible distributed object programming technol-
ogy. C# is excellently suited for developing programs using remoting technology.
This chapter not only shows how to program remote objects, but also how to
employ the technology’s extensibility features.
• Chapter 22 Building Web services with C# is extremely easy. Examples use the
existing ASP.NET infrastructure and .NET utilities to show how simple it is to
develop a Web service.

Part IV: Extreme C#


Part IV gives those advanced topics for extreme performance and enterprise program-
ming projects.
• Chapter 23 Modern programming languages support multithreading and so does
C#. This chapter includes examples of how to create a multithreaded program and
how to implement thread synchronization.
• Chapter 24 The base class library includes classes supporting Internet communi-
cations. This chapter presents methods of communicating via TCP/IP sockets as
well as how to use classes that implement the HTTP protocol. There are examples
of HTTP Web and SMTP e-mail programming.
• Chapter 25 Much of the information manipulation performed in programming
deals with text data. This entire chapter is dedicated to string manipulation with
C#, including the String and StringBuilder classes, string formatting, and
regular expressions.
• Chapter 26 When the array type isn’t enough for an application’s data structure
requirements, there are collections. Examples show how to use several collections
in the base class library as well as how to create a custom collection with code
implementing the required interfaces.
• Chapter 27 Attributes are the part of the C# language that allow you to add
declarative functionality to a program. Attribute usage is explained, as well as how
to create custom attributes.
C#
6
UNLEASHED

• Chapter 28 C# has a capability called reflection that enables a program to exam-


ine information about itself. The examples show how to perform reflection as well
as how to dynamically build programs that can be run from memory or saved to an
executable file.
• Chapter 29 Localization is the process of making a program present information
for different cultures. There are examples of how to localize programs for multiple
cultures.
• Chapter 30 In practical terms, there will be many projects that want to reuse
existing native libraries, interact with operating system code, and perform low-
level operations. This chapter shows how to accomplish these things in C#.
• Chapter 31 Complex systems need mechanisms to detect runtime problems.
Examples in this chapter show how to perform runtime debugging and tracing with
pertinent elements of the base class libraries.
• Chapter 32 Another important runtime task is the ability to capture application
performance data. Performance counters are used to gather statistics, which help in
analyzing how an application performs at runtime under specified conditions.
• Chapter 33 There are a lot of COM and COM+ programmers out there.
Programs in this chapter show how to call COM from C# and how to call C# from
COM. The base class libraries include enterprise service classes enabling C# pro-
grams to use COM+ services. Examples show how to perform tasks using COM+
services such as transactions, object pooling, and others.

Part V: The C# Environment


Part V goes into depth on the C# environment.
• Chapter 34 Memory for C# programs is managed by a high-performance
garbage collector. Discussions illustrate how the garbage collector works and why
it’s efficient. There are examples that demonstrate how to interact with the garbage
collector and different ways to work with objects to help control their clean-up.
• Chapter 35 The environment C# operates in supports cross-language program-
ming. There are examples of how to create code in different languages and compile
them into the same program. The section on the Common Language Specification
(CLS) illuminates the specific areas of the CLS that affect C# programs.
• Chapter 36 To understand how C# programs run and the meaning of managed
code, you must have an understanding of the theory behind the CLR. Much of the
information has already been described as a natural part of other C# language ele-
ments, but this material enhances and solidifies what is known.
7
INTRODUCTION

• Chapter 37 C# programs are deployed as assemblies, so it’s important to under-


stand what assemblies are and how to work with them. This chapter shows what
assemblies are made of and covers the various attributes that define them.
• Chapter 38 The book wraps up with security. The material covers the elements
of code-based security and how they interact to protect a system from code. Other
sections show how to implement code-based and role-based security with both
code and attributes.

Part VI: Appendixes


Part VI consists of supplementary material on compiling programs, an overview of .NET
Class Library components, and some other resources that may be of interest.
• Appendix A Examples of various compiler options are provided in this
appendix.
• Appendix B This appendix provides an overview of the .NET libraries.
• Appendix C This index of selected C# and .NET Web sites is helpful.
C# Basics
PART
I
IN THIS PART
1 The C# Environment 11

2 Getting Started with C# 19

3 Writing C# Expressions 47

4 Using Statements and Loops to Control Program


Flow 69

5 De-Bugging and Pre-Processing 91


The C#
CHAPTER 1 Environment

IN THIS CHAPTER
• The Common Language Infrastructure
(CLI) 12
• Standardization 15

• The .NET Architecture 16

• Where C# Fits In 17
C# Basics
12
PART I

This chapter provides an overview of the environment in which C# operates. This is


important for a couple reasons. While learning C#, a familiar question may reappear as
to what functionality belongs to the libraries and what capabilities are built into the lan-
guage. This question is addressed in this chapter to help evaluate what capabilities are
available to meet requirements.
Another good reason to understand the C# environment relates to standardization.
There will be a need for some software engineers to develop cross-platform appli-
cations. With a good understanding of what elements of an environment contribute
to a standard installation, cross-platform development can proceed in a much smoother
fashion.

The Common Language


Infrastructure (CLI)
The primary purpose of the Common Language Infrastructure (CLI) is to facilitate
the creation and execution of distributed components and services. It accomplishes
this by enabling programs written in different languages to operate together, giving
programs the capability to describe themselves, and providing the execution environ-
ment to support multiple platforms. The CLI is composed of the following four major
sections:
• Common Type System (CTS)
• Common Language Specification (CLS)
• Metadata
• Virtual Execution System (VES)
The CTS was designed to support common data types from a wide variety of program-
ming languages. This opens the door for many languages to join the CLI. In addition, the
CTS supports concepts such as type safety, which produces more robust programs and
better security.
The CLS is a sub-specification of the CTS. Its purpose is to enhance the communication
between programs written in other languages. When a program or class declares it is
CLS-compliant, that means it can be reliably used in a cross-language environment.
The CLI has a set of libraries called the Base Class Library (BCL). The entire BCL is
CLS-compliant.
The C# Environment
13
CHAPTER 1

Metadata provides the capability for code to be self-describing. This is a powerful con-
1
cept, enabling components to expose their capabilities for use in various tools. Metadata
also allows program capabilities to be dynamically implemented through runtime method

ENVIRONMENT
calls. This is used for any late bound requirements and for software development tools.

THE C#
Through the CTS, CLS, and metadata, the CLI is able to support a robust Virtual
Execution System (VES). Services provided by the VES include managed code execution
and security. The VES operates on Common Intermediate Language (CIL) code pro-
duced by CLI-compliant compilers.

Note

Managed code refers to the way the VES handles memory allocation and code
execution. The VES has full control over managed code in order to provide secu-
rity. Managed code is compiled to an intermediate language, CIL, where it can
be verified by the VES. Traditional languages such as C and C++ are considered
unmanaged because they compile to machine code and have only those con-
trols a programmer establishes in the code.
All C# code is managed code.
An often-confused concept is the difference between managed code and unsafe
code. C# has a way of allowing programmers to use certain language elements
that are considered unsafe. These are language elements such as pointers and
memory allocation on the stack. One of the primary advantages of unsafe code
is to interface with APIs that require pointers in their parameters or within a
structure. Although there is potential to do unsafe things in unsafe code, even
unsafe code is managed.

Base Class Libraries


The CLI’s Base Class Library (BCL), an entire suite of libraries, is designed to support
multiple languages. The level of CLI compliance is defined by what subset of these
libraries is implemented. So far, there are three BCL Profiles proposed for the ECMA
standard: the kernel profile, the compact profile, and the complete profile. An implemen-
tation can include more, but not less, support for official compliance certification. Figure
1.1 shows the relationship between the libraries. At the center is the kernel profile. The
compact profile includes all its libraries in addition to what’s in the kernel profile.
Likewise, the complete profile includes itself and all other libraries.

Note
C# Basics
14
PART I

Note

Currently there are plans to ship four languages with .NET. These languages are
Visual Basic.NET, Visual C++.NET, Visual Jscript.NET, and (the one near and dear
to my heart) Visual C#.NET. Currently there are approximately 50 other ISVs that
are considering porting languages to the .NET platform.

FIGURE 1.1
CLI profiles.

The Kernel Profile


The kernel profile is the minimal amount of library support an implementation can pro-
vide to call itself CLI-compliant. This is the smallest footprint that can still support C#
and a VES.

The Compact Profile


The compact profile is specified primarily for small implementations such as embedded
devices. It typically would be used in resource-constrained environments.
The C# Environment
15
CHAPTER 1

The Complete Profile 1


The complete profile includes all 25 packages of the CLI. This is a fairly complete suite

ENVIRONMENT
of libraries, enabling support for a diverse range of services. A typical environment for

THE C#
this profile would be those intended for desktop or server deployment.
Appendix B, “The .NET Frameworks Class Libraries,” contains an overview of libraries
available and details the profiles they are part of.

Standardization
On October 31, 2000, Hewlett-Packard, Intel, and Microsoft jointly submitted C# and the
CLI to the European Computer Manufacturers Association (ECMA) for standardization.
The purpose of this was to establish a standard for future implementations of C# and
the CLI.
This is significant because historically speaking, most languages are created, released,
and available for years before standardization occurs. Then after multiple incompatible
versions have been implemented, vendors play catch-up to mitigate the effects of non-
standard portions of their implementations. Furthermore, applications written with
nonstandard implementations break and need modification to comply with the new
standards-based compilers upon release. In a rare historical occurrence, this is an
opportunity to have a language open to a public standards organization (such as ECMA)
from the beginning, creating an optimistic outlook for a new entry in cross-environment
program compatibility.
Of significant note is the recent mass adoption of the Java programming language/
environment. Although this is not a public standard, it still proves the interest in a
standardized environment with a philosophy of “write once, run anywhere.” I believe
there is great potential for the C# programming language and CLI environment to
achieve these goals also. Standardization increases the probability of cross-environment
adoption of a common standard.
The primary focus in standardizing the CLI and C# is for cross-language compatibility—
so that anyone can write a component in any .NET-compatible language and that same
component may be reused in any other .NET-compatible language. The term reuse
relates to any object-oriented employment of a component to include inheritance, con-
tainment and encapsulation, and polymorphism.
The CLI also promotes standardization by implementing common Internet protocols and
standards into its core libraries. The technologies of HTTP, SOAP, and XML are well
known and accepted. They enable CLI applications such as Web services to interoperate
C# Basics
16
PART I

in a platform-neutral manner with Web services created with any other technology. The
CLI is simply a specification of a framework that enables developers to create standards-
compatible components that interoperate with any other standards-compatible component
implementations.

The .NET Architecture


The .NET (pronounced “dot net”) architecture is Microsoft’s implementation of the CLI,
plus several packages to support user interfaces, data and XML, Web services, and a base
class library. The .NET architecture is broken into three primary subsets: Common
Language Runtime, Libraries, and Languages. Figure 1.2 shows the .NET architecture.

FIGURE 1.2
The .NET
architecture.

Common Language Runtime (CLR)


The Common Language Runtime (CLR) is synonymous with the Virtual Execution
System (VES) in the Common Language Infrastructure (CLI) specification. The primary
goals of the CLR are to simplify development of applications, provide an execution envi-
ronment that is robust and secure, make deployment and management easier, and support
multiple languages.

Libraries
The .NET libraries have much more functionality than the CLI specification. Extra
enhancements include ASP.NET (Web application programming tools), Windows Forms
(interface to the Windows operating system), and ADO.NET (database connectivity
tools). The goals of the .NET libraries were to use common Web standards as their foun-
dation, unify disparate application models, enhance simplicity, and make the entire
framework factored and extensible.
The C# Environment
17
CHAPTER 1

Languages 1
The .NET Framework software development kit ships with four programming languages:

ENVIRONMENT
C++, Visual Basic, JScript, and C#. Many more third-party companies have begun work

THE C#
on additional .NET-compatible languages. What makes the .NET support for languages
so unique is that all languages are first-class players. The goal is to make them work
interchangeably. While this is mostly true, there are differences between languages and
the user must ultimately decide which language best suits his needs. This book will show
how to use C# in filling a very wide range of development requirements.

Where C# Fits In
Traditionally, languages and their libraries have been referred to as single entities.
Programmers knew they were separate, but since the library only worked with that lan-
guage, there was no harm in saying certain functionality was a part of a certain language.
With C# this is different. The libraries belong to the CLI. The language itself is very
simple and it uses the CLI libraries. These are the same libraries used by other CLI-
compliant languages. Therefore, they can’t be considered specifically C# libraries.
C# played a significant part in the development of the .NET Framework libraries. Of
course, there are other library modules written with two other CLI-compliant languages:
Visual Basic.NET and Managed C++. This means that while programming in C# and
using CLI libraries, the classes being used are very likely written in other languages.
Since this is totally transparent, it should be of no concern. However, it does prove that
the cross-language philosophy of the CLI specification does indeed work.

Summary
This chapter introduced the Common Language Infrastructure (CLI). The CLI consists of
a Common Type System (CTS), a Common Language Specification (CLS), metadata,
and a Virtual Execution System (VES).
The significance of standardization and how it could benefit the software development
community was discussed.
I also talked about the .NET Architecture. The software in this book was developed with
.NET.
Finally, there was a discussion on where C# fits into the CLI. C# is a new object-oriented
language, designed from the ground up to support the component concepts intrinsic to
the CLI. The C# programming language played a major role in the development of the
.NET Frameworks.
Getting Started
CHAPTER 2 with C#

IN THIS CHAPTER
• Writing a Simple C# Program 20

• Comments 22

• Identifiers and Keywords 24

• Style 26

• Preparing a Program To Run 27

• Basic C# Types 28

• Definite Assignment 37

• Basic Conversions 38

• Arrays 40

• Interacting with Programs 43


C# Basics
20
PART I

This chapter starts by creating a simple, minimal C# program that will give you a feel for
what C# looks like and will be a stepping-stone to more features. This chapter includes
instructions on how to compile this program. When needed, additional compilation fea-
tures will be presented. Appendix A has a detailed list of compilation options.
This chapter also provides coverage of the C# data types. It tells about the various types
C# provides. There will be plenty of examples of declarations and the kinds of data that
can be stored. It also covers the relationship between types and how to make conver-
sions. The chapter will finish by showing various ways to provide input and output for
programs.

Writing a Simple C# Program


Let’s dig in. For this first program, Listing 2.1 shows the near-minimal amount of code
necessary to write a C# program. When it executes, it will print the words “Howdy,
Partner!” to the console.

LISTING 2.1 A Simple C# Program


1: /*
2: * FileName: HowdyParner.cs
3: * Author: Joe Mayo
4: */
5:
6: // Program start class
7: public class HowdyPartner
8: {
9: // Main begins program execution
10: public static void Main()
11: {
12: // Write to console
13: System.Console.WriteLine(“Howdy, Partner!”);
14: }
15: }

Line 7 of Listing 2.1 shows a class declaration. Classes are what C# uses to declare or
define objects. They describe the attributes and behavior of an object. An object is any-
thing that has attributes and behavior. While classes are definitions, objects are the actual
entities that exist when the program runs. There can normally be many objects based
upon a single class declaration. Objects are the building blocks of the C# programming
language. C# is an object-oriented programming language; therefore, it has a starting
object. That’s what this class represents—the starting object of this program.
Getting Started with C#
21
CHAPTER 2

For C++ Programmers

The Main() method is located inside of a class instead of by itself. Also, the
method’s first letter is capitalized.

For Java Programmers

C# is case sensitive. The first letter of the Main() method is capitalized. Also, the
C# Main() method can declare return types of both int and void. 2

GETTING STARTED
WITH C#
The identifier, or name, of a class follows the class keyword. This class is called
HowdyPartner. Classes can have almost any name, but whatever the name, it should be
meaningful. Details of identifiers and keywords are described in a couple more sections.
Left and right braces indicate the beginning and ending, respectively, of a block. In
Listing 2.1, the beginning of the class block starts on line 8 after the HowdyPartner iden-
tifier, and the end of the class block is on line 15, by itself. In C#, it’s common to begin
and end portions of programs with curly braces.
There’s a method declaration on line 10. This is the Main() method. Every program has a
Main() method that is the starting point for the program. When the program begins, this
is the first method called.
There are a couple identifiers in front of the Main() method. C# Main() methods always
have a static modifier. In C# there are two types of objects—static and instance.
Instance objects are formally declared, and there can be many of the same type with dif-
ferent attributes. However, there can be only a single copy of a static object in existence
for a given program. The only way to execute a method without an instance of its con-
taining object is if that method is static. Since no instance of the starting class exists as
an object when the program starts, a static method must be called. This is why the
Main() method is static.

The other identifier is void. This is actually the Main() method’s return value. Return
values are useful for returning program status to a calling program or utility when a pro-
gram exits. When void is specified, the method does not return a value. In this case, the
Main() method does not return a value. Besides returning a void, the Main() method
could return an integer.
C# Basics
22
PART I

Within the body of the Main() method on line 13 is a single statement that causes the
words “Howdy, Partner!” to be written to the console screen. The statement System.
Console.WriteLine(“Howdy, Partner!”) writes text to the console screen. Figure 2.1
shows the output.

FIGURE 2.1
Output from the
HowdyPartner
program.

Comments
There are three types of commenting syntax in C#—multi-line, single-line, and XML.

Multi-Line Comments
Multi-line comments have one or more lines of narrative within a set of comment delim-
iters. These comment delimiters are the begin comment /*and end comment */ markers.
Anything between these two markers is considered a comment. The compiler ignores
comments when reading the source code. Lines 1 through 4 of Listing 2.1 show a multi-
line comment:
1: /*
2: * FileName: HowdyParner.cs
3: * Author: Joe Mayo
4: */

Some languages allow embedded multi-line comments, but C# does not. Consider the
following example:
1: /*
2: Filename: HowdyPartner.cs
3: Author: Joe Mayo
4: /*
5: Initial Implementation: 04/01/01
6: Change 1: 05/15/01
7: Change 2: 06/10/01
8: */
9: */
Other documents randomly have
different content
The Project Gutenberg eBook of Paysages
Passionnés
This ebook is for the use of anyone anywhere in the United States
and most other parts of the world at no cost and with almost no
restrictions whatsoever. You may copy it, give it away or re-use it
under the terms of the Project Gutenberg License included with this
ebook or online at www.gutenberg.org. If you are not located in the
United States, you will have to check the laws of the country where
you are located before using this eBook.

Title: Paysages Passionnés

Author: Gabriel Faure

Contributor: Alphonse Séché

Illustrator: P.-E. Vibert

Release date: January 14, 2021 [eBook #64290]


Most recently updated: October 18, 2024

Language: French

Credits: Laura Natal Rodrigues at Free Literature (Images generously


made available by Hathi Trust Digital Library.)

*** START OF THE PROJECT GUTENBERG EBOOK PAYSAGES


PASSIONNÉS ***
GABRIEL FAURE
PAYSAGES
PASSIONNÉS
PRÉCÉDÉS D'UNE ÉTUDE
d'ALPHONSE SÉCHÉ

ET

ORNÉS D'UN PORTRAIT DE L'AUTEUR GRAVÉ SUR BOIS


PAR P.-E. VIBERT

PARIS

LIBRAIRIE ACADÉMIQUE PERRIN & Cie

1921

Copyright by PERRIN, 1920.


TABLE DES MATIÈRES

Note de l'éditeur
Gabriel Faure, paysagiste littéraire, par
Alphonse Séché
PAYSAGES PASSIONNÉS
I. À travers Lesbos
II. Le pays de Tristan
III. Cimetière italien
IV. Matin en montagne
V. Les jardins de Bellagio
VI. Souvenirs d'enfance
VII. Avec Stendhal à Parme
VIII. Le soir tombe sur l'Adriatique
IX. La maison de Titien
X. Le rossignol attardé
XI. Le printemps à Tolède
XII. Le village de Pétrarque
XIII. Les jardins de Châlons
XIV. Le long de la mer annunzienne
XV. Les soirs de Sienne
XVI. Pâques dauphinoises
XVII. Paysages musicaux
XVIII. L'automne à Nohant
XIX. Sur la tombe du Tasse
XX. Les roses d'Assise
XXI. Sur la terrasse de Valence
Notes bibliographiques

É
NOTE DE L'ÉDITEUR

En 1909, parut, sous le titre de PAYSAGES PASSIONNÉS, un recueil


de morceaux choisis de GABRIEL FAURE. Ce volume étant depuis
longtemps épuisé, il nous a paru intéressant de donner, sous ce
même titre—qui convient si parfaitement à l'œuvre de l'auteur—un
choix de textes plus complet, portant sur l'ensemble des ouvrages
publiés par GABRIEL FAURE pendant vingt années de vie littéraire
(1900-1920).
Une étude—un portrait littéraire plutôt—de M. ALPHONSE SÉCHÉ,
parue dans la MINERVE FRANÇAISE, ouvre ce volume, à la fin
duquel on trouvera les notes bibliographiques concernant chacun
des fragments publiés.
P. P.

GABRIEL FAURE,
PAYSAGISTE LITTÉRAIRE

Je ne puis lire un livre sans avoir le désir de connaître son auteur. Il


ne m'est point possible de séparer l'homme et l'œuvre; dans celle-ci,
je cherche son créateur; sans que j'y mette un calcul, elle
m'intéresse en fonction de celui qui la fit. L'œuvre est pour moi un
document humain et, quoiqu'elle lui survive, c'est l'homme qu'elle
exprime qui me passionne.
Mais, dira-t-on, n'ignorons-nous pas le nom du statuaire qui sculpta
la Vénus de Milo? Qu'importe, puisque nous avons la statue! J'en
conviens; j'aimerais cependant savoir de quelles mains elle fut
taillée. Serait-elle plus belle? Non, sans doute; mais, je le crois, sa
beauté aurait quelque chose de moins archéologique; le souvenir de
l'artiste animerait ses lignes et les humaniserait: moins divine, peut-
être, elle serait plus femme. Elle ne vaut pas uniquement par
l'harmonie de ses formes, elle est encore représentative du génie
humain et du type de beauté d'une époque. J'aurais voulu posséder
le nom du glorieux mortel capable de concevoir un tel type et de le
fixer à jamais dans la splendeur du marbre.
Les fines statues de Jean Goujon me sont plus chères de ce que leur
auteur m'est connu. En les regardant, je l'évoque; j'imagine le
modèle et lui-même. Voilà quelles femmes il aimait; elles avaient su
fixer l'idéal d'un aussi grand artiste. Comme cela me les rend
proches d'avoir ainsi la faculté de vivre par la pensée en leur
compagnie, en la compagnie de leur sculpteur et de cette société du
XVIe siècle, si raffinée, dont les œuvres de Jean Goujon ont la grâce
et l'élégance.
Littérairement, les vers des Regrets ne gagnent rien en perfection,
du fait que la vie de du Bellay m'est familière; pourtant, parce qu'il
m'est loisible de suivre Joachim dans cette Rome qu'il stigmatise et
où il s'ennuie de son petit Lyré, ses sonnets ont, me semble-t-il, un
attrait qu'ils n'auraient pas si j'ignorais tout du poète.
Les Nuits m'émeuvent d'autant plus que je sais la source de
l'immortelle douleur qui s'y épanche.
Si cela est vrai d'un poème, d'une œuvre d'imagination, à plus forte
raison l'est-ce d'un ouvrage où l'écrivain se place au centre de son
livre, où sa personnalité et sa personne apparaissent à chaque page.
Est-ce la Ville éternelle ou Stendhal que nous venons découvrir dans
les Promenades dans Rome? Lisons-nous l'Itinéraire pour ce qu'il
rapporte de contrées illustres et sacrées que nous ignorons? Nous
ouvrons surtout ce livre à cause de la grande beauté de son écriture;
nous l'ouvrons aussi à cause de son auteur: nous voulons voir
"l'attitude" de Chateaubriand sur la terre des Hellènes et sur la terre
d'Égypte; nous allons du pas de René vers l'Acropole et vers
Jérusalem. "C'est la jeunesse de la vie, ce sont les personnes qui
font les beaux sites," dit-il. Pour Chateaubriand, l'objet le plus
captivant d'un site était lui-même. En face du plus magnifique
spectacle, il ne s'oublie pas; il est comme la raison d'être de ce qu'il
contemple, car rien pour lui n'existe, qui n'a lui-même pour
conscience. Les hommes de sa race ont moins la faculté d'admirer
que celle d'analyser, pour l'exprimer, l'émotion qui leur vient de la
contemplation des œuvres de l'homme ou de la divinité. Tout leur
est prétexte à exaltation; rien n'a d'importance que relativement à
leur exaltation. N'est-elle pas le moyen de leur génie! Quand nous
les lisons, c'est donc eux-mêmes que nous découvrons; les paysages
dont ils nous entretiennent ont la couleur de leur pensée et de leur
âme. Si l'homme nous est étranger, ces paysages perdent toute
signification, puisque nous ne possédons pas la clef qui nous les
rendrait pénétrables.
*
* *
Qui connaît Gabriel Faure lit ses ouvrages sans surprise, et, chose
infiniment précieuse en l'espèce, il leur donne aussitôt sa confiance.
Au moral, au littéraire, il s'accorde pleinement avec ce qu'il est en
façade.
Ni petit ni grand, trapu, robuste et alerte à la façon d'un paysan qui
s'en revient du marché poches sonnantes, les cheveux poivre et sel,
hauts et drus, le front large, les yeux clairs, doux et malicieux, la
bouche charnue, souriant sans contrainte sous la moustache déjà
grisonnante, le nez solidement enté et de bonne greffe, il se dégage
de toute sa personne une réconfortante impression d'intelligence
ordonnée et de santé heureuse dues, l'une et l'autre, à un équilibre
parfait de saines facultés. Regardez cette figure où le soleil rit sous
la peau: pas d'accent violent, mais tout y est en place, harmonieux
et fort. L'excessif, ici, n'est pas reçu. Aucune nervosité, pas de
complications. Gabriel Faure a la franchise intellectuelle de sa
poignée de mains et de son regard qui se pose voluptueusement sur
les choses.
Ni sa mise, ni son front construit d'un rude ciment, ne dénotent
beaucoup de fantaisie. On serait étonné qu'il fût d'esprit aventureux,
bohème ou rêveur, j'entends chimérique. On le sent confortablement
installé en ses vêtements, en sa chair, en ses idées, en son âme. Il
est là bien d'aplomb sur son domaine qu'il cultive méthodiquement,
soigneusement, sans hâte, avec tendresse et entendement. Il lui
vient grande joie apparemment de son travail, ce pourquoi sa santé
et sa face s'épanouissent. Sa mine est d'un sage, un sage soumis
aux aimables préceptes d'Épicure. On songe, en le regardant, à
quelque chat nourri de lait crémeux, qui préfère, aux amours de
gouttière, ronronner une sieste au pied d'une vigne grimpante. Il
doit aimer les petits plats mitonnés, les femmes un peu grasses, et
tout ce qui dans la nature s'arrange assez harmonieusement pour
procurer à l'homme de la volupté—de la volupté, plutôt que de la
passion.
*
* *
J'ai connu autrefois un honorable magistrat, aimable homme et
disert. Il était du midi et savait raconter comme seuls les
méridionaux racontent, avec cette pointe d'accent qui est pour les
mots ce que le soleil est pour les choses. Sa verve colorée autant
qu'abondante, enchevêtrait avec tant de subtilité et de faste le vrai
et le faux qu'on ne tardait pas, encore qu'on fût prévenu, à prêter au
faux plus de créance qu'au vrai. Il possédait sur la Côte d'Azur une
propriété. Revenant de Nice, je m'arrêtai pour le voir. "La maison est
de peu d'apparence, m'avait-il dit, mais la situation!... une vue!... et
la commodité: vous ouvrez la porte, vous descendez: vous êtes dans
la mer." Quand j'arrivai, la nuit était tombée. La propriété de mon
ami me parut fort loin de la gare et quelque peu perchée... Le
lendemain matin, à la première heure, je me précipitai à la fenêtre.
Quelle situation! La maison étouffait sous les arbres des propriétés
voisines. Quelle vue! Le jardin minuscule était prisonnier de murs
bientôt aussi hauts qu'il était large. Et la mer! Je la cherchai en vain.
Mon ami me la montra pourtant. D'une lucarne de grenier, on
l'apercevait à l'horizon entre deux pignons et à travers des branches
que la brise matinale balançait paresseusement. L'après-midi, nous y
fûmes. Il suffisait en effet d'ouvrir la porte et de descendre. Après
vingt minutes de marche, d'ailleurs par des chemins charmants, on
arrivait à la plage.
Par opposition, je me souviens d'un ancien camarade de lycée qui fit
une fin prématurée en épousant une jeune veuve fortunée. Sans
ambition, modeste de goûts, il s'établit non loin de Nantes dans une
vieille demeure du XVIIe siècle, comme il en existe tant en ce
gracieux pays que gâte malheureusement le court esprit de ses
habitants.—J'ai acquis le droit de les juger en naissant parmi eux!—À
quelque temps de son mariage, mon ancien camarade voulut bien
m'inviter à le venir surprendre en sa thébaïde, lorsque j'irais faire
une tournée au pays natal. "J'ai donné tes livres à lire à ma femme,
elle désire vivement te connaître. Viens sans façon, tu seras reçu de
même. La chambre d'ami ouvre sur le potager. C'est la partie la plus
vaste de la propriété qui est petite. En étendant le bras, tu pourras
cueillir le raisin de la treille; elle grimpe jusqu'à la fenêtre, ainsi
qu'un rosier que mon beau-père planta le jour de la naissance de
Louise, ma femme. Le raisin est bien un peu acide, mais les roses
sentent bon, encore qu'elles se fassent de plus en plus rares. Au
coucher du soleil, par ciel pur, les deux tours de la cathédrale sont
visibles à l'horizon..." La lettre continuait sur ce ton familier et
décent; j'acceptai l'invitation. Quelle surprise, une fois là-bas!... Tout
était tel que mon hôte l'avait dit: la chambre, le potager, le rosier et
ses roses, la treille et son acide raisin... Le soir même de mon
arrivée, le ciel permit que j'aperçusse la haute silhouette de la
cathédrale.
Me remémorant ma déception de jadis, je songeai, à part moi, qu'un
ami de peu d'imagination est de rapports plus agréables qu'un autre
qui nous sait captiver par les merveilles de son éloquence...
Je ne suis pas éloigné de penser de même relativement aux
écrivains, à ceux du moins, romanciers ou voyageurs, qui nourrissent
leurs livres de descriptions. En cette matière, qu'il s'agisse de la
nature ou d'œuvres d'art, il convient de n'accepter pas sans réserve
le témoignage des poètes et, en général, des grands lyriques. Leurs
regards magnifient les choses sur lesquelles ils se posent; leur
imagination par surcroît ajoute le miracle du rêve à l'éblouissement
de la vue. Que reste-t-il de la froide réalité, pour nous qui ne la
savons voir qu'en ses formes quotidiennes? Lisons les donc pour la
splendeur de leur verbe et la somptuosité des décors qu'ils
imaginent; évitons de les prendre pour guides. La prudence va
jusqu'à conseiller de n'aller jamais visiter les contrées célébrées par
eux! Nous n'y pouvons trouver que mensonge, non pas que les
poètes mentent: ce sont les choses qui trahissent leurs visions.
Si Venise nous semble terne et sèche, auprès des pages inoubliables
que lui consacra Barrés, si le pays de Madame Chrysanthème nous
déçoit après lecture de Loti, si les Martyrs épuisent notre
enthousiasme pour les paysages antiques, la faute en est-elle à ces
prestigieux créateurs d'illusions? Non, elle est à nous, qui nous
laissons duper par les apparences.
Ils sont plus nombreux qu'on ne croit, les gens qui ne voyagent
jamais. Ce n'est pas incuriosité, c'est paresse, quelquefois aussi
impécuniosité. Ils se rejettent sur la lecture. Sans quitter le coin du
feu, ils font ainsi le tour du monde. Découvrant les pays à travers les
grands écrivains, leur esprit est plein de visions incomparables. Que
gagneraient-ils à voir par eux-mêmes? Rien. Ils le savent, aussi se
gardent-ils de sortir de chez eux. Mais ceux qui sortent! Ils redoutent
les créateurs d'images, les visionnaires. À celui qui dit: "Vous ouvrez
la porte, vous êtes dans la mer;" ils préfèrent celui qui dit: "Les
roses sont rares, le raisin est acide." Le premier est un poète,
assurément, mais, en voyage, la compagnie du second expose à
moins de déconvenue.
Eh bien, Gabriel Faure est plus près de ressembler à mon vieux
camarade de collège qu'à mon honorable ami le méridional. Il est
trop artiste, trop voluptueux, pour garer sa saine raison de toute
griserie poétique, mais il a trop de bon sens, par ailleurs, il est trop
réaliste—c'est encore ici un signe de volupté!—pour n'être pas
appliqué, dans ses livres, à donner des choses une image où nous
puissions sans peine les reconnaître...
*
* *
Gabriel Faure a publié des romans: la Dernière journée de Sapphô,
la Route de volupté, l'Amour sous les lauriers-roses, les Amants
enchaînés. Ces titres sont significatifs; le caractère voluptueux de
l'écrivain s'y inscrit tout entier. Leur harmonie nuancée, d'ailleurs,
écarte toute idée de sensualité brutale, de frénésie passionnelle...
Mon projet n'est point, au reste, de me livrer à l'analyse de l'œuvre
romanesque de Gabriel Faure; je veux seulement noter la place
considérable qu'y tiennent les paysages. C'est que Gabriel Faure
prend, au fond, plus d'intérêt au décor de la vie qu'aux agitations du
cœur. Un roman, pour lui, est toujours un peu prétexte à des
promenades dans la nature. C'est un moyen d'animer ses paysages,
de les passionner. Il procède à la façon des paysagistes classiques
qui ne concevaient pas un tableau sans personnages. Il a des dons
de psychologue, mais il est avant tout un contemplatif, un descriptif.
Très cultivé, ayant le goût des voyages et l'amour des chefs-
d'œuvre, il était naturel qu'il portât ses pas vers l'Italie. N'est-il point
au surplus, comme Stendhal, né au pied des Alpes[1]? Voilà qui
donne envie de les passer!
C'est d'Italie que Gabriel Faure rapporta ses ouvrages les plus
remarquables. Il a écrit sur la Lombardie, l'Ombrie, la Vénétie, le
Piémont, l'Émilie des pages mieux que charmantes. L'Italie est
devenue sa seconde patrie, celle de ses yeux; elle est
l'enchantement de son esprit; il a besoin de son ciel, de ses
monuments, de ses musées, de ses sites. Ceux là qui l'ont célébrée
avant lui sont devenus ses amis. Il se plaît à ses mœurs, à ses
coutumes; il en aime la langue rapide est tintante.
Le psychologue dirige souvent les promenades du peintre. Certes,
Assise est douce, et les soirs de Sienne ont "une infinie suavité;"
mais, n'est-ce pas le souvenir du Poverello et de sainte Catherine qui
l'appelle? Il est trop lettré pour aller dans la nature avec son seul
souci de volupté. Il a trop d'intelligence, il est trop artiste pour ne
pas trouver plus de pathétique et plus d'éloquence aux lieux qui
virent s'allumer ou s'éteindre quelque pensée de génie. À quoi bon
parcourir des contrées illustrées par les événements ou les hommes,
si l'on n'en doit saisir que l'aspect décoratif? La nostalgique
campagne romaine ne nous émeut tant qu'à cause de sa gloire
passée. Il y plane ce recueillement particulier aux paysages très
anciens où se déroulèrent de grandes choses, qui furent les témoins
des travaux, des luttes, des ambitions et des rêves humains. Ils
peuvent, ces paysages, ne pas se ressembler, varier en leurs lignes,
en leurs arbres, en leur ciel: ils ont tous cette quiétude harmonieuse
et grave; ils ont tous cet aspect un peu solennel et heureux, reposé
et méditatif. Ils nous enchantent et nous en imposent; ils nous
enivrent et nous inquiètent. Il y a de la pensée dans leur lumière,
une âme en chaque ombre. En Italie, tout est art, paysages,
souvenirs, monuments; l'histoire y est partout mêlée aux choses
dont on ne sait si elles ont été disposées pour servir de cadre à
l'amour ou susciter nos méditations sur la vanité de la gloire. Par sa
nature, sa culture, son esprit, Gabriel Faure était fait pour
comprendre et dégager la voluptueuse beauté de cette terre illustre.
Aussi bien, il y a beaucoup du critique chez lui. C'est ce qui fait son
originalité, ce qui lui assure un rang à part parmi les paysagistes
littéraires. Il procède rarement à la manière d'un Byron ou d'un
Chateaubriand. L'imagination ne l'emporte pas dans un grand
mouvement désordonné au-dessus de la réalité. Ce n'est guère son
rêve qu'il contemple, il se grise peu de sa vision intérieure. Il s'arrête
devant les choses et, en homme averti et de goût, il les juge, s'en
réjouissant dans la mesure où il leur reconnaît du mérite. Peut-être
n'est-il pas très sensible. Il ne prend pas le lecteur à la façon d'un
Loti, d'un Barrès, d'un d'Annunzio. Il n'est ni le voyageur ignorant qui
n'aperçoit de la nature que la stricte façade, ni le poète, non moins
ignorant, uniquement occupé de la relativité du monde avec lui-
même. Le très vif plaisir qu'on éprouve à le lire vient en partie de la
confiance qu'il inspire. On le devine soucieux de vérité. Le trait
ferme, mais non point sec, de son dessin garantit l'exactitude du
tableau. Il a raisonné ses impressions, ses sensations, avant de
prendre la plume. De là l'ordonnance de son œuvre descriptive, sa
parfaite unité, sa poésie contenue, son harmonie, son intelligence.
Son style est clair et mesuré; jamais de débordement romantique.
Sa phrase a quelque chose du rythme racinien et de l'atticisme cher
à Anatole France. Comme toujours chez lui, la raison s'allie ici à la
volupté. Il voit net et harmonieux. Sa vue guide ses sentiments et
détermine son esthétique. Il écrit comme il voit. Et, lorsqu'il assure
que les tours de la cathédrale sont visibles à l'horizon, on peut le
croire.
*
* *
Ô volupté des heures matinales, dans le virginal décor de l'éveil des
choses, sur les montagnes ensoleillées! Toute la splendeur des
horizons entre par les yeux dans l'âme, et chaque sensation devient
jouissance. Les feuillages qui tremblent et luisent, le murmure du
vent chantant dans les arbres, les parfums de la prairie en fleurs, les
jeux de lumière, les lointains grelots d'un troupeau, tout se
transforme en joie physique et l'on savoure le bonheur de vivre avec
une telle plénitude, que, souvent, on en est oppressé. Les lèvres et
les poumons hument avec délices un air irrespiré. La pensée erre et
bondit dans l'espace, libre et sans entrave, se pose au hasard sur les
choses; on finit par oublier sa personnalité et l'on sent en soi la vie
universelle. On perçoit tous les souffles, tous les bruissements, tous
les chuchotements des milliers de voix imperceptibles dont est tramé
le silence des bois. Le cœur s'ouvre si largement que l'univers ne
suffirait pas à l'emplir. On frémit pour une feuille qui tombe, un
oiseau qui passe, un bourdonnement d'insecte, une odeur plus
pénétrante... Enivrement merveilleux, qui, parfois devient presque
du délire!
Outre qu'elle est particulièrement jolie, cette page offre un exemple
excellent de la manière de Gabriel Faure paysagiste, critique et
voyageur. Elle le montre amoureux voluptueux de la nature, qu'il
analyse minutieusement pour en jouir davantage. Elle témoigne
aussi de sa lucidité d'esprit, dans l'instant où l'enivrement devrait lui
faire perdre la tête. C'est que le critique n'oublie point d'exercer son
contrôle sur lui-même comme sur ce qu'il écrit. N'est-il point visible
encore qu'il ne cesse de penser à son lecteur? C'est pour lui qu'il,
travaille, qu'il se donne la peine de noter ses impressions les plus
vives et les plus ténues. Il s'en voudrait de le décevoir par une
inexactitude. L'éblouir à force de lyrisme n'est pas son but. Partout
et toujours, il s'efforcera de lui inspirer de la sympathie. Ici, il
l'intéresse discrètement par son érudition; là, il le charme par ses
descriptions colorées et musicales. Exalte-t-il la beauté d'un site,
relate-t-il la joie qui lui en vint, c'est avec l'espoir de nous pousser à
le venir admirer. Il serait heureux que nous partagions sa volupté.
Pas de promeneur moins égoïste. Il nous entretient de lui, et,
cependant, l'on jugerait qu'il nous parle de nous-mêmes. Du moins,
il est certain que c'est à nous et pour nous qu'il parle. Il a le
constant désir de nous communiquer ses enthousiasmes et ses
émotions. Tout en mettant ses impressions sur le papier, il nous
donne l'illusion—suprême adresse—de paraître consigner les nôtres.
Il s'institue notre guide. Marchant à nos côtés, il dépense sans
compter son savoir, son goût, son talent, pareil à l'amant qui chante
la douceur de l'heure à la femme aimée, afin qu'elle sente plus
intensément la réalité de son bonheur.
*
* *
Qu'il nous conduise au pays de Stendhal, au pays de Tristan, ou bien
dans les "décors tout trouvés pour des romans provinciaux" où vécut
Georges Sand—car Gabriel Faure ne borne pas sa curiosité à l'Italie;
—qu'il nous entretienne de l'Espagne, de la Bretagne ou du
Dauphiné, il le fait dans les mêmes termes heureux. Son procédé
littéraire reste identique parce qu'il est l'expression directe de sa
nature.
Gabriel Faure jouit des paysages en sage et en lettré; il va son
chemin, attentif, intelligent, prenant des choses tout le plaisir
possible, en pleine possession de sa conscience, loin de toute
surexcitation intellectuelle ou sensuelle. Il est un vivant miroir qui
met son honneur à reproduire avec exactitude les objets qui s'y
réfléchissent.
Je me le représente volontiers sous les traits d'un bon jardinier qui,
pour avoir servi chez un romancier psychologue, aimerait les lettres
et associerait respectueusement le souvenir des grands hommes à la
beauté des paysages. Il parcourt le jardin à petits pas, ratissant
minutieusement les allées, soignant avec amour les bégonias des
plates-bandes et les rosiers de la terrasse. La pelouse par ses soins
est toujours verte et rase, le banc de la tonnelle toujours propre. Et
quand le soleil suspend des banderoles multicolores au panache du
jet d'eau, il sent monter à ses yeux des larmes d'admiration, sourdre
en son être une joie infiniment voluptueuse et sereine.
Alphonse Séché

[1]Gabriel Faure est né à Tournon (Ardèche), en 1877, d'une


famille originaire de la Drôme.

PAYSAGES PASSIONNÉS

À TRAVERS LESBOS

Rhodope, aux pieds de Sapphô, lui parle doucement, presque à


l'oreille.
—Te souviens-tu de nos premières journées à Érèse? Il me semble, à
moi, qu'elles datent d'hier, parce que je les revis à chaque instant
dans ma pensée. Comme j'étais heureuse de connaître cette Sapphô
que, si souvent, j'avais entendu célébrer! Et comme je fus fière,
lorsque je vis que tu t'attachais à moi! Ah! tu l'as peut-être oubliée,
toi, notre première soirée au bord du golfe bruyant. De vastes
oiseaux nocturnes planaient sur nos têtes, volaient vers la mer et
semblaient s'y plonger; puis, enivrés de son parfum, ils se
redressaient d'un coup d'aile et revenaient près de nous. Peu à peu
l'ombre se fit soyeuse et transparente; Phébé parut. Nous vîmes le
mince croissant sortir des flots. Pendant quelques instants, nous
eûmes l'illusion d'une trière en flammes, brûlant dans la nuit. C'est
ce soir-là que tu me proposas de venir jusqu'à Mitylène. "Tu verras,
me disais-tu, tu verras comme l'autre rivage est plus beau, comme il
est doux de s'y aimer." Et, tout en me parlant et me serrant contre
toi, tu t'exaltais. Tu me disais des choses douces et caressantes,
presque comme un amant. Dans la nuit semeuse de songes, il me
semblait que je rêvais. "Oui, tu viendras, tu viendras, répétais-tu
sans cesse, et tu verras comme je t'aimerai. Ici, le sol est rude,
inégal et brusque, comme l'homme et comme ses étreintes. Tu
verras là-bas combien cette île est plus belle et plus harmonieuse.
Tout y est féminin. Le sol s'abaisse graduellement, insensiblement,
en une succession de collines aussi rondes que tes seins." Tu vois, je
me rappelle presque tes phrases mêmes; il me semble encore que
j'entends ta voix chantante et grave. "On dirait, me disais-tu, une
multitude de femmes, languissamment étendues les unes sur les
autres; les vallées régulières et peu profondes sont les creux de
leurs corps, où l'air s'engouffre et s'attarde pour mieux les caresser.
La côte ne ressemble pas à celle-ci; c'est une suite de golfes
recourbés comme des cithares et sonores comme elles. L'étreinte de
la terre et des flots n'y est pas bruyante, sauvage, pleine de cris de
douleur. Le vent n'y hurle pas ainsi que des fauves prisonniers se
heurtant contre des murs. La mer vient mourir sur le rivage avec des
roucoulements amoureux. Oui, tu viendras, ne cessais-tu de me
répéter, et tu verras toutes ces choses. Et c'est là que nous nous
aimerons." Je t'écoutais sans rien dire, ne comprenant pas. J'étais
heureuse d'être près de toi. Je me laissais bercer par ces phrases
douces et parfumées. Elles coulaient sur moi comme une chevelure
ruisselant d'huiles aromatiques. Elles m'étourdissaient, me grisaient
ainsi qu'un vin lourd, étrangement. Je me sentais prise dans ta voix
comme dans les mailles d'un filet. Parfois, j'étais secouée de
frissons, de grands frissons délicieux, surtout quand tu t'approchais
de moi, quand tu me parlais presque è l'oreille. Le souffle de ta
bouche se jouait dans mes cheveux, et c'était plus doux qu'une
caresse. Toi, au contraire, tu me paraissais souffrir: tes paupières
battaient vite et fort, comme les ailes d'un oiseau apeuré; tes
prunelles avaient quelque chose d'ardent et d'étrange; par moments,
tu te raidissais et semblais lutter contre quelqu'un. Tout à coup tu
me saisis de tes deux mains et tu me dis: "Que tu es belle, Rhodope!
Je voudrais que tu pusses te voir; tu serais amoureuse de toi-
même." Et tu te levas, m'entraînant. "Viens, viens; rentrons. Demain
matin, à l'aube, nous partirons." Le lendemain, je t'ai suivie, docile.
Je n'ai même pas essayé de résister; ta volonté plus forte que la
mienne me possédait tout altière... Ah! ce voyage à travers Lesbos,
jamais je ne l'oublierai. Te souviens-tu? nous nous sommes
embarquées sur le navire d'un commerçant qui allait à Pyrrha, où
nous arrivâmes à la tombée de la nuit. Presque sans nous reposer,
nous nous mîmes en route. Je n'étais jamais lasse. "Tu verras, me
disais-tu toujours, tu verras..." Et ta voix suffisait à me donner du
courage. Deux fois nous avons dormi en plein air, deux autres fois
dans la paille, chez des paysans. Te rappelles-tu? l'un d'eux ne
voulait pas nous ouvrir sa grange, nous prenant pour des
mendiantes ou des voleuses; et cet autre qui nous offrit de partager
sa couche... En traversant l'un des cols que nous avions à franchir, tu
me désignas les deux sommets de l'île qui nous dominaient au nord
et au sud, le Lepithymne et l'Olympe, où les veilleurs de nuit
guettèrent les feux qui devaient porter en Hellade la nouvelle de la
prise d'Ilion. Le sixième soir de notre voyage, nous couchâmes à
Hiéra, et, le lendemain, au matin, tu me montras une dernière
montagne: "De là-haut, me dis-tu, nous verrons Mitylène!" Alors,
plus alertes, sans prendre haleine, nous avons gravi la côte. Et
brusquement, en arrivant à la lisière d'un bois d'oliviers, nous eûmes
devant nous l'inoubliable vision: tout le versant oriental de l'île,
Mitylène, la mer Éolienne et, dans le fond, les rives d'Ionie. Nous
restâmes longtemps, sans rien dire, les mains unies. Aucune de nous
n'osait rompre le silence. Nous étions véritablement émues, presque
angoissées. Le soleil, derrière nous, ne nous éblouissait pas de ses
rayons. Il était cependant assez haut pour éclairer tout le paysage,
sans le barrer de grandes ombres. Je le revois encore, comme s'il
s'étendait, là, devant mes yeux. D'abord une infinité de collines
assoupies au soleil, s'inclinant harmonieusement, par une pente très
douce, jusqu'au rivage. Quelques-unes sont fleuries de lavande et de
thym. Des bois d'orangers les parsèment de taches sombres que
traversent des chemins blancs. Sur d'autres, des champs d'oliviers
aux troncs noueux et tordus étalent le moutonnement de leurs
touffes pâles. On voit remuer les femmes qui ramassent dans des
corbeilles les olives tombées. Entre les coteaux serpentent de
minuscules vallons ombragés de lauriers-roses, où coulent les
ruisseaux que l'on aperçoit, par places, scintillant au soleil. Puis,
entre les dernières collines et la mer, une étroite plaine où repose
Mitylène. Autour d'elle, une dizaine de bourgs sont couchés dans la
lumière, semblables à des bêtes paresseuses. Et, plus loin, la mer,
l'immense mer miroitante, avec ses vagues aux claires crinières.
Comme un vol de mouettes lassées, les voiles des pêcheurs
rentraient au port. C'est toi qui parlas la première. "Admire, me dis-
tu, la langueur de ce rivage qui se découpe en golfes réguliers et
largement évasés, pour mieux s'offrir tout aux caresses de l'eau.
Regarde surtout Mitylène, ses murailles peintes et ses toits de
couleur. Elle est plus maquillée qu'une joueuse de flûte. Vois comme
elle s'étend au long des flots, dans la fraîcheur des citronniers, avec
des mollesses de courtisane. Elle s'est bâtie sur une presqu'île; elle a
voulu sentir des deux côtés le baiser humide de la mer." Nous nous
assîmes par terre, dans le bois d'oliviers, adossées contre un rocher
où le soleil mettait des reflets roses. Ses rayons tombaient sur nous
en larges médailles d'or, à travers les branches pensives et pâles où
des cigales criaient. Quelques autres bruits nous parvenaient: un
grelot tintant au loin, la cantilène d'un berger, des appels de femmes
travaillant aux champs. L'air était tout chargé du parfum pénétrant
des lauriers-roses et des lavandes. La brise était si faible que les
feuilles bougeaient à peine, avec un murmure si doux qu'il fallait
prêter l'oreille pour l'entendre. Quelquefois, cependant, un vent plus
violent nous apportait l'odeur aphrodisiaque du sel et les âcres
senteurs des plages où les poissons sèchent sur le sable chaud.
Quand ces souffles tièdes et humides frôlaient la nuque, on avait la
sensation d'une haleine. L'illusion était si forte que je me rappelle,
une fois, avoir tendu mes lèvres pour un baiser...

II

LE PAYS DE TRISTAN

Déjà, ayant dépassé les faubourgs de Douarnenez, le train filait en


pleine campagne, à travers des bois de pins et des landes fleuries.
Mais la ligne était le plus souvent creusée en tranchée, et l'horizon
ne s'étendait pas.
Assis en face l'un de l'autre, Hélène et Maurice poursuivaient leur
rêve intérieur. À chaque secousse du wagon, leurs genoux se
heurtaient et ce contact était pour eux à la fois une gêne et une joie.
De loin en loin, ils ramenaient leurs regards l'un vers l'autre,
lentement, par un insensible mouvement de tête; puis, très vite, ils
se détournaient et s'absorbaient de nouveau dans la contemplation
du paysage fuyant à travers l'encadrement de la portière.
Le soleil couchant empourprait les arbres de reflets cuivrés et
donnait aux granits, couverts de bruyères roses, des flamboiements
d'incendie.
Tout à coup, Mauroy les appela:
—Venez, venez voir!
Ils s'approchèrent et se serrèrent l'un contre l'autre. Ils eurent
comme un enivrement subit à ce nouveau contact plus complet. Ils
goûtèrent la volupté d'un plaisir défendu. Le spectacle achevait de
les griser. C'était pour eux un besoin physique de crier è chaque
instant leur admiration.
La ligne s'était élevée peu à peu et courait maintenant sur le
plateau. À travers les minuscules bois de pins, la baie de
Douarnenez déployait sa courbe immense; presque en face d'eux, le
Méné Hom la dominait de sa haute masse noire. Tout au bout de
l'arc de cercle, le cap de la Chèvre se dessinait. Une large bande
d'un rouge écarlate barrait l'horizon. Au-dessus d'elle, par une série
de raies multicolores, plus étroites et plus mobiles, le ciel et l'océan
se joignaient, et, dans le flamboiement universel, se distinguaient à
peine l'un de l'autre. À mesure que le soleil déclinait, des nuages se
formaient, très bas, comme sortant de l'eau, qui faisaient autant de
taches sombres pareilles à des îles féeriques brusquement surgies.
Une ligne de montagnes inconnues se découpait dans l'embrasement
du ciel; et, par moments, le cap de la Chèvre, la côte de la baie, le
Méné Hom lui-même, se confondaient avec les terres nouvelles et
semblaient faire partie de ce paysage de légende.
Hélène et Maurice subissaient le mirage et se croyaient transportés
sur les rives ignorées d'une mer tropicale, parmi des îles d'améthyste
et d'émeraude, dans un de ces archipels de feu que les marins
racontent avoir parfois aperçus, par les nuits pleines de lune, dans
un halo fugitif.
—Ne vous semble-t-il pas, leur demanda Mauroy, que voici une
merveilleuse et éclatante fresque de Puvis de Chavannes? Sur ce
fond d'or et de pourpre, se dressent les tiges grêles de ces arbres
qui lui étaient chers, de ces pins maritimes dont les grands troncs
décharnés sont couronnés seulement d'une élégante touffe de
feuillage. Oui, en vérité, ce train sacrilège traverse le bois sacré des
muses. Je m'attends è voir une nymphe bondir derrière ces haies.
J'aurais voulu que Puvis vînt sur les bords de cette mer où, depuis la
naissance du monde, se couche, chaque soir, le soleil, et qu'il
illustrât la légende de Tristan et d'Iseut. Les deux amants,
tendrement enlacés, auraient passé dans ce paysage, qui paraît un
décor de théâtre tant il est net et coloré, et qui cependant aurait été
véridique, puisque Tristan et Iseut vécurent ici ou sur des bords
semblables de cette même mer... Tenez, voici peut-être le bois de
pins où le bon roi Marke les surprit, un jour, endormis côte à côte.
Vous connaissez la scène adorable du vieux poème: Marke s'arrête,
furieux, prêt à la vengeance; mais bientôt la pitié succède à la haine;
Tristan est si beau, Iseut est si belle, qu'il s'attendrit; et, comme un
rais de soleil tombe à travers le branchage sur le visage d'Iseut, il
bouche avec son gant la fente par où passe le rayon...
Hélène et Maurice tressaillirent et se sentirent rougir. Une sorte
d'embrasement pareil à celui du ciel et de la mer s'empara d'eux, et
ils s'éloignèrent l'un de l'autre, presque étourdis.
Le soleil entrait alors dans l'océan, énorme, prodigieux,
démesurément agrandi, éclaboussant l'air et l'eau de gerbes de
flammes et d'étincelles. Tout l'horizon flamboyait dans une immense
réverbération d'incendie. Pendant un moment, le ciel fut illuminé
d'un rouge si vif qu'il donna l'impression de lueurs sanglantes. Puis,
peu è peu, les tons violents s'adoucirent, décrurent progressivement
jusqu'à la ligne de rencontre de l'air et de l'eau.
Quand ils débarquèrent à Audierne, la nuit était à peu près tombée.
Du côté du couchant seulement, derrière la colline à laquelle est
adossé le bourg, le ciel avait encore des traînées écarlates et faisait
songer à je ne sais quelle forge où l'on travaillerait la nuit...
*
* *
L'étroit plateau qui rattache la pointe du Raz à la terre n'est qu'un
morne désert granitique où le roc est à nu, où rien ne pousse, pas
même un arbuste, pas même une plante. Devant soi, en droite ligne,
comme continuant la pointe du Raz, des roches aux noms barbares,
Gorlégreiz, Gorlébella, d'autres encore, parsèment le terrible chenal
"que jamais marin ne traversa sans avoir eu peur ou mal," suivant le
dicton du pays; derrière elles, se dessine la côte plate de l'île de
Sein; puis, plus rien, l'infini, la mer sauvage, à perte de vue. Au
nord, la baie des Trépassés, au fond de laquelle miroite l'étang de
Laoual, sur l'emplacement où fut autrefois Is la maudite; puis la
pointe de Van, le cap de la Chèvre, et, tout è fait à l'horizon, la
pointe Saint-Mathieu, au large de laquelle on devine Ouessant. Au
sud, s'étale l'arc de cercle de la baie d'Audierne, inhospitalière et
rude, jusqu'aux rochers de Penmarc'h, où, par les nuits sans brume,
on voit briller le phare d'Eckmühl.
Aucun autre rivage, si ce n'est la côte méridionale de l'île de Groix,
ne donne la même impression farouche et grandiose. On se sent le
jouet de forces mystérieuses et inconnues. Il semble que la fatalité
seule soit maîtresse des hommes. C'est là que l'on peut le mieux se
faire une idée de l'âme celtique. Au sein de cette âpre nature, les
événements prennent un caractère inexorable. L'amour et la mort
surtout y paraissent toujours voulus par quelque inflexible divinité.
L'homme est ballotté au gré des mobiles destins, comme une barque
au caprice des vagues. Pour lui, rien n'est fixe, rien n'est assuré, et
chaque lendemain devient une anxieuse interrogation. Il vit dans
une perpétuelle méfiance. L'eau, l'air, tout est son ennemi. Le sol lui-
même, parfois, ne lui offre qu'une douteuse sécurité. Certaines
terres basses s'effondrent et disparaissent à chaque raz de marée:
un jour viendra, par exemple, où Penmarc'h ne sera plus, comme Is,
qu'une cité marine dormant au fond des eaux d'un sommeil
tourmenté; et parfois, par les nuits calmes, les pauvres marins
errants tressailliront, en entendant de lointaines cloches sonner à
d'invisibles clochers... Ce caractère fatal est le meilleur argument en
faveur de l'origine celtique de la légende de Tristan et Iseut. Ce
paysage, cette mer, ce ciel, cette atmosphère, toute cette nature en
un mot est la preuve vivante qu'elle ne pouvait naître que sur ces
bords ou sur les rivages pareils de la Cornouaille anglaise, dont la
côte a tant de ressemblance avec celle-ci qu'elle paraît être sa sœur
jumelle. En apercevant ces caps sauvages, ces énormes rochers,
cette mer aux vagues fantastiques et aux marées inconnues d'eux,
on dit que les légionnaires de César s'écrièrent: "Ici finit l'empire de
nos dieux!" C'est cette même impression de teneur et d'effroi que
nous éprouvons encore, nous autres, Latins; mais cette nature
farouche s'harmonise entièrement avec les ardeurs impétueuses et
toujours inassouvies de l'âme celte. Elle est bien fille du sol gaélique,
cette poésie triste et pénétrante où l'amour devient le centre même
de la vie. Alors que, sous des deux plus sereins, l'amour est surtout
chose gaie, légère, frivole et sans lendemain, il est ici un sentiment
douloureux et passionné, profond et terrible, tumultueux comme
l'Océan. La légende de Tristan et d'Iseut a toutes les fureurs de cette
mer, personnage d'ailleurs toujours présent et actif dans le drame.
C'est sur elle, pendant une traversée, que les amants boivent le
breuvage magique; c'est en face d'elle que s'écoule leur vie
amoureuse, incertaine et agitée comme elle; c'est elle qui les sépare
aux jours d'exil; c'est elle aussi qui les réunit et ramène Iseut vers
Tristan qui se meurt. Le navire portant la blonde fille d'Irlande a
passé devant ces rivages et doublé ce cap redoutable. Et là-bas, vers
le sud, cette tache claire à peine perceptible: ce sont les rochers de
Penmarc'h, sur lesquels Tristan se faisait porter chaque jour, pour
voir apparaître de plus loin la blanche voile d'allégresse...

III

CIMETIÈRE ITALIEN

Comme ils passaient devant la porte d'un cimetière, Mme Fréneuse


dit:
—Entrons un moment, voulez-vous?
Lucile, souffrante ce jour-là, avait préféré ne pas prendre part à la
promenade qu'ils faisaient tous les trois, chaque jour, sur les rives du
lac. René et Madeleine étaient partis, un peu gênés à l'idée qu'ils
devaient rester loin d'elle pendant quelques heures; puis le malaise
s'était dissipé dans la clarté radieuse du matin, et une sorte d'ivresse
les avait peu à peu gagnés d'être libres et seuls pour la première
fois. Mais ils évitaient de traduire, par des paroles ou des regards,
les émotions qu'ils ressentaient.
René poussa la porte. Madeleine entra devant lui et se signa. Le
cimetière était désert. Seul, un vol de moineaux s'enfuit à leur
approche, avec des piaillements aigus. Infatigables gardiens, les
cyprès funèbres veillaient sur les morts; leurs glaives endeuillés
s'élevaient, en un morne et rigide alignement, le long des allées
bordées de buis. Entre leurs troncs noirs se dressaient les marbres
clairs des monuments mortuaires ou d'humbles croix de bois. Des
grilles entouraient les tombes; des feuillages et des fleurs
s'accrochaient aux fers déjà rouillés.
—Comme on doit mieux dormir ici, dit René, que dans ces modernes
et somptueux cimetières où s'étale si affreusement le mauvais goût
des Italiens d'aujourd'hui! Il me serait dur de penser que je
reposerai un jour au milieu de ces hommes en redingote de marbre
et de ces femmes en robes à volants, pleurant et minaudant, un
mouchoir à la main, dans ces attitudes de grossier réalisme
bourgeois qui rappelle les bonshommes de cire du musée Grévin.
Combien l'ombre de ces cyprès doit être plus légère et plus douce!
—Moi, dit Madeleine, j'ai toujours fait le rêve d'être enterrée dans un
de ces petits enclos funèbres où les paysans dauphinois
ensevelissent leurs morts, au milieu même des champs où ils
vécurent.
Autour du cimetière et sur les terrasses lumineuses qui s'étageaient
au-dessus de lui, les arbustes en fleurs, les lauriers-roses, les arbres
chargés de fruits, les mûriers, les oliviers d'argent terni, les orangers
déployaient leur végétation luxuriante. Des vignes grimpaient aux
troncs des arbres; quelques treilles n'avaient pas encore été
vendangées, et les raisins trop mûrs, gonflés à éclater, répandaient
une odeur lourde. La breva, qui commençait à souffler, traînait après
elle les senteurs des jardins sur lesquels elle avait passé. La vie
partout triomphait. Sous les cyprès s'élançant vers le ciel comme des
prières, régnaient, au contraire, une paix claustrale, un silence de
mort. Et, de ce contraste, un trouble étrange venait à René.
Il s'arrêta, passa la main sur ses yeux.
—Qu'avez-vous? demanda Madeleine.
—Jamais je n'ai pu pénétrer dans un cimetière sans être ému; mais
nulle part comme en celui-ci, entre toutes ces images du néant et
cette exubérance de la nature, je n'avais senti plus vivement
combien sont voisines la mort et la vie. En entrant ici, je me suis vu
pareil aux seigneurs de la fresque de Pise, qui, au retour d'une
chasse, après avoir savouré la joie de vivre et les parfums des bois,
rencontrant des cadavres, respirent la pourriture et la mort. Et je me
suis souvenu d'une idée de Barrès, qui regrettait que les cimetières
de ces villages ne fussent pas situés au bord même des lacs, pour
qu'ils puissent recevoir les caresses des vagues rejetées sur les rives
par les barques joyeuses. Ces visions de la mort doubleraient le
plaisir des couples amoureux et leur donneraient l'exaltation
qu'éprouvent les amants vénitiens, quand ils se signent au passage
de leur gondole devant les murs rouges de San Michele, ou errent,
en se tenant par la main, sous les ifs funéraires de l'île franciscaine.
Il est bien naturel, en effet, que la volupté s'accroisse lorsqu'on
songe qu'elle est périssable et que la seconde qui vient peut à
jamais la ravir. Ah! qu'ils étaient prévoyants, ces amants d'autrefois
qui donnaient en cadeau à leur maîtresse un memento-mori! Le petit
squelette délicatement ciselé, tournant à chaque instant leur
méditation vers la mort, rendait plus ardent leur désir.
Madeleine, sans rien dire, la tête baissée, marchait aux côtés de
René. Elle aussi subissait violemment le contraste du décor à la fois
funèbre et voluptueux. Et les paroles du jeune homme lui donnaient
comme un étourdissement.
—N'est-ce pas Michelet, demanda-t-elle, qui conduisait sa fiancée au
Père-Lachaise pour lui parler d'amour parmi les tombes?
—Oui. L'amour se plaît dans le voisinage de la mort; et, souvent,
tous deux marchent la main dans la main, la main tiède et rose de
l'amour dans les doigts décharnés de la mort. Je ne sais où j'ai lu
que Don Juan commanda à Valdès Léal ce tableau, qui est à la
Caridad de Séville, où l'on voit un évêque et un gentilhomme
couchés dans leurs cercueils, dévorés par des larves immondes,
minutieusement reproduites; l'amant des mille et trois se plaisait,
assure-t-on, à exacerber la volupté de ses regrets en imaginant son
beau visage, qu'il avait vu tant de fois se refléter dans des prunelles
luisantes de désir, pareillement décomposé et mangé par les vers.
Quand Henri Heine nous parle, dans ses Mémoires, de son amour
pour la fille du bourreau de Düsseldorf, il se rappelle surtout les
tresses de ses cheveux, ces tresses si rouges qu'elles avaient des
reflets de sang et si longues qu'elles pouvaient se nouer sous le
menton de la jeune fille en lui donnant l'aspect d'une décapitée...
Mais nulle part la mort et la volupté ne sont moins séparables qu'ici.
Je regrette de n'avoir pas apporté les œuvres de Leopardi; je vous
aurais lu le poème où le solitaire de Recanati proclame la
douloureuse fraternité de l'amour et de la mort, dans des vers de
facture si sévère qu'ils rappellent les paysages du triste pays des
Marches. "Nés en même temps, l'amour et la mort sont frères."
Cette idée fut toujours chère aux âmes italiennes. Déjà Dante, au
cours de la Vita Nuova, exalte sa passion en imaginant Béatrice
recouverte d'un linceul; et déjà, sur les vieux murs du campo santo
de Pise, dans ce Triomphe de la Mort, dont je vous parlais tout à
l'heure, derrière la virago aux ailes de chauve-souris, le peintre a mis
un bosquet touffu où, à l'ombre dorée des orangers, comme en une
scène galante du Décaméron, des amants insouciants se divertissait
et savourent les plaisirs de l'amour.
Ils étaient arrivés au bout d'une allée. Un arbousier, en plein soleil,
couvert de baies rouges, semblait un arbre de corail. Sur une tombe,
entourée d'une riche balustrade de marbre, un saule laissait
mollement tomber les pleurs de son feuillage. À côté, la longue
chevelure d'un eucalyptus ondoyait au vent avec des reflets
argentés. L'odeur vanillée d'un laurier-rose ombrageant une tombe
se mêlait à l'odeur âcre des buis et des cyprès. Par bouffées, le vent
leur apportait les senteurs des jardins proches.
—Ah! dit-elle, ces parfums... ici...
Elle prononça ces mots d'une façon si tramante que René eut la
sensation d'un frôlement charnel. Puis elle se redressa, gonfla ses
narines pour mieux aspirer les arômes troublants. Ses lèvres
s'entr'ouvrirent.
—Ah! dit-elle encore.
Elle baissa la tête, exhala un soupir profond, comme accablée par
une volupté trop forte. Ses yeux rencontrèrent ceux de René. Ils
frémirent jusqu'aux moelles et se sentirent pâlir.
—Arrêtons-nous un instant, dit-elle.
Elle s'assit sur la balustrade de marbre. Un petit lézard vert qui se
chauffait au soleil s'enfuit précipitamment. Les branches du saule
pendaient autour d'elle; pour se donner une contenance, elle
essayait de les nouer et de les tresser. Très émue, elle attendait qu'il
parlât.
Il était resté debout devant elle. Sur le chemin, les quenouilles des
cyprès, à peine remuées par le vent, faisaient de grandes ombres
parallèles.
Une femme du peuple, toute jeune, nu-tête et vêtue de noir, entra
dans le cimetière. Ses zoccoli qui, suivant la mode du pays, ne lui
couvraient que la pointe des pieds, claquaient sur le sol. Elle vint
tout près d'eux et déposa un bouquet sur une tombe fraîchement
creusée que marquait une simple croix de bois. La présence
d'étrangers la gêna. Elle ne s'agenouilla qu'un instant, murmura une
courte prière et s'en alla, essuyant furtivement ses larmes.
Quand elle fut sortie, Mme Fréneuse alla regarder l'inscription sur la
croix.
Welcome to Our Bookstore - The Ultimate Destination for Book Lovers
Are you passionate about books and eager to explore new worlds of
knowledge? At our website, we offer a vast collection of books that
cater to every interest and age group. From classic literature to
specialized publications, self-help books, and children’s stories, we
have it all! Each book is a gateway to new adventures, helping you
expand your knowledge and nourish your soul
Experience Convenient and Enjoyable Book Shopping Our website is more
than just an online bookstore—it’s a bridge connecting readers to the
timeless values of culture and wisdom. With a sleek and user-friendly
interface and a smart search system, you can find your favorite books
quickly and easily. Enjoy special promotions, fast home delivery, and
a seamless shopping experience that saves you time and enhances your
love for reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!

ebookgate.com

You might also like