Beginning Visual C# 2012 Programming

Authors:

Language: English
Publication date:
912 p. · 18.5x23.4 cm · Paperback
Step-by-step beginner?s guide to Visual C# 2012

Written for novice programmers who want to learn programming with C# and the .NET framework, this book offers programming basics such as variables, flow control, and object oriented programming. It then moves into web and Windows programming and data access (databases and XML). The authors focus on the tool that beginners use most often to program C#, the Visual C# 2012 development environment in Visual Studio 2012.

  • Puts the spotlight on key beginning level topics with easy-to-follow instructions for Microsoft Visual C# 2012
  • Explores how to program for variables, expressions, flow control, and functions
  • Explains the debugging process and error handling as well as object oriented programming, and much more

Beginning Microsoft Visual C# 2012 Programming offers beginners a guide to writing effective programming code following simple step-by-step methods, each followed by the opportunity to try out newly acquired skills.

INTRODUCTION xxxi

PART I: THE C# LANGUAGE

CHAPTER 1: INTRODUCING C# 3

What Is the .NET Framework? 3

What’s in the .NET Framework? 4

Writing Applications Using the .NET Framework 4

CIL and JIT 4

Assemblies 5

Managed Code 5

Garbage Collection 6

Fitting It Together 6

Linking 7

What Is C#? 7

Applications You Can Write with C# 8

C# in this Book 8

Visual Studio 2012 8

Visual Studio Express 2012 Products 9

Solutions 9

Summary 10

CHAPTER 2: WRITING A C# PROGRAM 13

The Visual Studio 2012 Development Environment 14

Console Applications 16

The Solution Explorer 18

The Properties Window 19

The Error List Window 19

Desktop Applications 20

Summary 23

CHAPTER 3: VARIABLES AND EXPRESSIONS 25

Basic C# Syntax 26

Basic C# Console Application Structure 28

Variables 29

Simple Types 29

Variable Naming 33

Naming Conventions 34

Literal Values 34

Variable Declaration and Assignment 36

Expressions 37

Mathematical Operators 37

Assignment Operators 41

Operator Precedence 42

Namespaces 42

Summary 45

CHAPTER 4: FLOW CONTROL 49

Boolean Logic 49

Boolean Assignment Operators 52

Bitwise Operators 53

Operator Precedence Updated 57

The goto Statement 58

Branching 59

The Ternary Operator 59

The if Statement 59

Checking More Conditions Using if Statements 62

The switch Statement 63

Looping 65

do Loops 66

while Loops 68

for Loops 70

Interrupting Loops 74

Infi nite Loops 75

Summary 75

CHAPTER 5: MORE ABOUT VARIABLES 79

Type Conversion 80

Implicit Conversions 80

Explicit Conversions 81

Explicit Conversions Using the Convert Commands 84

Complex Variable Types 86

Enumerations 87

Defi ning Enumerations 87

Structs 90

Defi ning Structs 90

Arrays 92

Declaring Arrays 93

foreach Loops 95

Multidimensional Arrays 96

Arrays of Arrays 97

String Manipulation 98

Summary 102

CHAPTER 6: FUNCTIONS 105

Defi ning and Using Functions 106

Return Values 108

Parameters 109

Parameter Matching 111

Parameter Arrays 111

Reference and Value Parameters 113

Out Parameters 115

Variable Scope 116

Variable Scope in Other Structures 118

Parameters and Return Values versus Global Data 120

The Main( ) Function 121

Struct Functions 123

Overloading Functions 124

Using Delegates 125

Summary 128

CHAPTER 7: DEBUGGING AND ERROR HANDLING 131

Debugging in Visual Studio 132

Debugging in Nonbreak (Normal) Mode 132

Outputting Debugging Information 133

Tracepoints 137

Diagnostics Output Versus Tracepoints 139

Debugging in Break Mode 140

Entering Break Mode 140

Monitoring Variable Content 142

Stepping Through Code 144

Immediate and Command Windows 146

The Call Stack Window 146

Error Handling 147

try…catch…finally 147

Listing and Configuring Exceptions 152

Notes on Exception Handling 152

Summary 153

CHAPTER 8: INTRODUCTION TO OBJECT-ORIENTED

PROGRAMMING 157

What Is Object-Oriented Programming? 158

What Is an Object? 158

Properties and Fields 159

Methods 160

Everything’s an Object 161

The Life Cycle of an Object 161

Constructors 161

Destructors 162

Static and Instance Class Members 162

Static Constructors 162

Static Classes 163

OOP Techniques 163

Interfaces 163

Disposable Objects 164

Inheritance 165

Polymorphism 167

Interface Polymorphism 168

Relationships Between Objects 168

Containment 168

Collections 169

Operator Overloading 169

Events 170

Reference Types Versus Value Types 170

OOP in Desktop Applications 171

Summary 174

CHAPTER 9: DEFINING CLASSES 177

Class Defi nitions in C# 177

Interface Defi nitions 180

System.Object 182

Constructors and Destructors 184

Constructor Execution Sequence 185

OOP Tools in Visual Studio 188

The Class View Window 188

The Object Browser 190

Adding Classes 191

Class Diagrams 192

Class Library Projects 193

Interfaces Versus Abstract Classes 196

Struct Types 198

Shallow Copying Versus Deep Copying 200

Summary 200

CHAPTER 10: DEFINING CLASS MEMBERS 203

Member Defi nitions 203

Defi ning Fields 204

Defi ning Methods 204

Defi ning Properties 205

Adding Members from a Class Diagram 210

Adding Methods 210

Adding Properties 212

Adding Fields 212

Refactoring Members 212

Automatic Properties 213

Additional Class Member Topics 213

Hiding Base Class Methods 213

Calling Overridden or Hidden Base Class Methods 215

The this Keyword 216

Using Nested Type Defi nitions 216

Interface Implementation 218

Implementing Interfaces in Classes 219

Explicit Interface Member Implementation 220

Additional Property Accessors 220

Partial Class Defi nitions 221

Partial Method Defi nitions 222

Example Application 224

Planning the Application 224

The Card Class 224

The Deck Class 224

Writing the Class Library 224

Adding the Suit and Rank Enumerations 225

Adding the Card Class 226

Adding the Deck Class 227

A Client Application for the Class Library 230

The Call Hierarchy Window 231

Summary 232

CHAPTER 11: COLLECTIONS, COMPARISONS, AND CONVERSIONS 235

Collections 236

Using Collections 236

Defi ning Collections 241

Indexers 242

Adding a Cards Collection to CardLib 244

Keyed Collections and IDictionary 247

Iterators 248

Iterators and Collections 252

Deep Copying 253

Adding Deep Copying to CardLib 255

Comparisons 256

Type Comparisons 256

Boxing and Unboxing 257

The is Operator 258

Value Comparisons 260

Operator Overloading 261

Adding Operator Overloads to CardLib 265

The IComparable and IComparer Interfaces 269

Sorting Collections 271

Conversions 274

Overloading Conversion Operators 274

The as Operator 275

Summary 276

CHAPTER 12: GENERICS 279

What Are Generics? 280

Using Generics 281

Nullable Types 281

Operators and Nullable Types 282

The ?? Operator 283

The System.Collections.Generic Namespace 287

List 287

Sorting and Searching Generic Lists 289

Dictionary 294

Modifying CardLib to Use a Generic Collection Class 295

Defi ning Generic Types 296

Defi ning Generic Classes 296

The default Keyword 298

Constraining Types 298

Inheriting from Generic Classes 304

Generic Operators 305

Generic Structs 306

Defi ning Generic Interfaces 306

Defi ning Generic Methods 306

Defi ning Generic Delegates 308

Variance 308

Covariance 309

Contravariance 310

Summary 310

CHAPTER 13: ADDITIONAL OOP TECHNIQUES 313

The :: Operator and the Global Namespace Qualifi er 313

Custom Exceptions 315

Adding Custom Exceptions to CardLib 315

Events 316

What Is an Event? 316

Handling Events 317

Defi ning Events 319

Multipurpose Event Handlers 323

The EventHandler and Generic EventHandler Types 325

Return Values and Event Handlers 326

Anonymous Methods 326

Expanding and Using CardLib 327

A Card Game Client for CardLib 327

Attributes 334

Reading Attributes 334

Creating Attributes 335

Summary 336

CHAPTER 14: C# LANGUAGE ENHANCEMENTS 339

Initializers 340

Object Initializers 340

Collection Initializers 342

Type Inference 344

Anonymous Types 346

Dynamic Lookup 350

The dynamic Type 350

IDynamicMetaObjectProvider 354

Advanced Method Parameters 354

Optional Parameters 354

Optional Parameter Values 355

The OptionalAttribute Attribute 356

Optional Parameter Order 356

Named Parameters 356

Named and Optional Parameter Guidelines 360

Extension Methods 360

Lambda Expressions 364

Anonymous Methods Recap 364

Lambda Expressions for Anonymous Methods 365

Lambda Expression Parameters 368

Lambda Expression Statement Bodies 368

Lambda Expressions as Delegates and Expression Trees 369

Lambda Expressions and Collections 370

Caller Information Attributes 372

Summary 375

PART II: WINDOWS PROGRAMMING

CHAPTER 15: BASIC DESKTOP PROGRAMMING 381

XAML 382

Separation of Concerns 382

XAML in Action 383

Namespaces 383

Code-Behind Files 384

The Playground 384

WPF Controls 385

Properties 386

Dependency Properties 387

Attached Properties 388

Events 388

Handling Events 389

Routed Events 390

Routed Commands 390

Control Types 392

Control Layout 393

Stack Order 393

Alignment, Margins, Padding, and Dimensions 393

Border 394

Canvas 394

DockPanel 395

StackPanel 397

WrapPanel 398

Grid 398

The Game Client 401

The About Window 401

Designing the User Interface 401

The Image Control 401

The Label Control 402

The TextBlock Control 402

The Button Control 402

The Options Window 405

The TextBox Control 406

The CheckBox Control 406

The RadioButton Control 407

The ComboBox Control 408

The TabControl 409

Handling Events in the Options Window 411

Data Binding 413

The DataContext 414

Binding to Local Objects 414

Static Binding to External Objects 414

Dynamic Binding to External Objects 415

Starting a Game 418

The ListBox Control 418

Summary 421

CHAPTER 16: ADVANCED DESKTOP PROGRAMMING 425

The Main Window 425

The Menu Control 426

Routed Commands with Menus 426

Creating and Styling Controls 429

Styles 430

Templates 430

Value Converters 434

The IValueConverter Interface 434

ValueConversionAttribute 434

Triggers 435

Animations 436

Timelines without Key Frames 436

Timelines with Key Frames 437

WPF User Controls 438

Implementing Dependency Properties 439

Putting It All Together 447

Refactoring the Domain Model 447

The View Models 451

Completing the Game 459

Summary 466

CHAPTER 17: WINDOWS STORE APPS 469

Getting Started 469

Windows 8 Developer License 470

How to Get the License 470

Windows Store Apps versus Desktop Applications 471

Developing Windows Store Apps 472

View Modes 472

Full-Screen Mode 473

Snapped Mode 473

Fill Mode 473

Screen Orientation 473

The Missing Caption Bar 473

Menus and Toolbars 473

The App Bar 474

Charms 475

Tiles and Badges 476

App Lifetime 476

Lock Screen Apps 476

App Development 476

WPF and Windows Store App XAML Diff erences 476

Namespace Changes 477

Eff ects 477

Opacity Mask 477

Style Triggers 477

Commands 478

Templates and Pages 478

Blank Page 478

Basic Page 478

Grouped Items and Group Details Pages 478

Item Details Page 479

Items and Split Pages 479

Sandboxed Apps 479

Disk Access 479

Serialization, Streams, and Async Programming 480

Navigation Between Pages 483

Managing State 485

Converting KarliCards, Part 1 485

Creating the CardLib Project 486

Converting the View Models 489

Visual Changes 493

Drop Shadow and Opacity Masks 493

Style Triggers 493

Converting User Controls 493

Common Elements of Windows Store Apps 499

The AppBar Control 500

The Settings Panel 501

Tiles, Badges, and Splash Screens 503

Converting KarliCards, Part 2 504

The Windows Store 509

Checking the Store Requirements 509

Summary 510

CHAPTER 18: DEPLOYING DESKTOP APPLICATIONS 513

Deployment Overview 514

ClickOnce Deployment 514

Implementing ClickOnce Deployment 515

Installing the Application with ClickOnce 522

Creating and Using Updates of the Application 524

InstallShield Limited Edition 524

The Project Assistant 524

Step 1: Application Information 525

Step 2: Installation Requirements 525

Step 3: Installation Architecture 526

Step 4: Application Files 526

Step 5: Application Shortcuts 527

Step 6: Application Registry 528

Step 7: Installation Interview 528

Summary 530

PART III: WEB PROGRAMMING

CHAPTER 19: ASP.NET WEB PROGRAMMING 535

Overview of Web Applications 536

ASP.NET Runtime 536

Creating a Simple Page 536

Server Controls 544

ASP.NET Postback 545

ASP.NET AJAX Postback 550

Input Validation 553

State Management 557

Client-Side State Management 558

View State 558

Cookie 559

Server-Side State Management 560

Session 560

Application 561

Cache 562

Styles 562

Master Pages 566

Site Navigation 571

Authentication and Authorization 573

Authentication Confi guration 574

Using Security Controls 577

Reading from and Writing to a SQL Server Database 580

Summary 589

CHAPTER 20: DEPLOYING WEB APPLICATIONS 591

Internet Information Services 591

IIS Confi guration 592

Copying a Website 594

Publishing a Web Application 597

Summary 600

PART IV: DATA ACCESS

CHAPTER 21: FILE SYSTEM DATA 605

Streams 605

The Classes for Input and Output 606

The File and Directory Classes 607

The FileInfo Class 608

The DirectoryInfo Class 610

Path Names and Relative Paths 611

The FileStream Object 611

File Position 612

Reading Data 613

Writing Data 615

The StreamWriter Object 617

The StreamReader Object 618

Reading Data 620

Delimited Files 621

Asynchronous File Access 625

Reading and Writing Compressed Files 625

Serialized Objects 628

Monitoring the File System 632

Summary 636

CHAPTER 22: XML 639

XML Documents 640

XML Elements 640

Attributes 641

The XML Declaration 641

The Structure of an XML Document 642

XML Namespaces 642

Well-Formed and Valid XML 643

Validating XML Documents 644

Schemas 644

The XSD dialog box shown in the XmlDocument Class 645

Using XML in Your Application 647

XML Document Object Model 647

The XmlDocument Class 648

The XmlElement Class 648

Changing the Values of Nodes 652

Selecting Nodes 656

XPath 657

Summary 661

CHAPTER 23: INTRODUCTION TO LINQ 663

First LINQ Query 664

Declaring a Variable for Results Using the var Keyword 665

Specifying the Data Source: from Clause 666

Specify Condition: where Clause 666

Selecting Items: select Clause 666

Finishing Up: Using the foreach Loop 667

Deferred Query Execution 667

Using the LINQ Method Syntax 667

LINQ Extension Methods 667

Query Syntax versus Method Syntax 668

Ordering Query Results 669

Understanding the orderby Clause 670

Ordering Using Method Syntax 671

Querying a Large Data Set 672

Using Aggregate Operators 674

Querying Complex Objects 678

Projection: Creating New Objects in Queries 681

Projection: Method Syntax 682

Using the Select Distinct Query 683

Using the Any and All Methods 684

Ordering by Multiple Levels 685

Multi-Level Ordering Method Syntax: ThenBy 687

Using Group Queries 687

Using Take and Skip 689

Using First and FirstOrDefault 691

Using the LINQ Set Operators 692

Using Joins 694

Summary 696

CHAPTER 24: APPLYING LINQ 699

LINQ Varieties 699

Using LINQ with Databases 700

Installing SQL Server and the Northwind Sample Data 700

Installing SQL Server Express 701

Installing the Northwind Sample Database 701

First LINQ to Database Query 701

Navigating Database Relationships 704

Using LINQ with XML 706

LINQ to XML Functional Constructors 707

Constructing XML Element Text with Strings 710

Saving and Loading an XML Document 710

Loading XML from a String 712

Contents of a Saved XML Document 713

Working with XML Fragments 713

Generating XML from Databases 715

How to Query an XML Document 717

Using LINQ to XML Query Members 718

Elements( ) 718

Descendants( ) 719

Attributes( ) 721

Summary 723

PART V: ADDITIONAL TECHNIQUES

CHAPTER 25: WINDOWS COMMUNICATION FOUNDATION 727

What Is WCF? 728

WCF Concepts 728

WCF Communication Protocols 729

Addresses, Endpoints, and Bindings 729

Contracts 731

Message Patterns 732

Behaviors 732

Hosting 732

WCF Programming 733

The WCF Test Client 740

Defi ning WCF Service Contracts 742

Data Contracts 743

Service Contracts 743

Operation Contracts 744

Message Contracts 745

Fault Contracts 745

Self-Hosted WCF Services 750

Summary 756

CHAPTER 26: WINDOWS WORKFLOW FOUNDATION 759

Hello World 759

Workfl ows and Activities 761

If Activity 761

While Activity 762

Sequence Activity 762

Arguments and Variables 763

Custom Activities 767

Workfl ow Extensions 769

Activity Validation 773

Activity Designers 774

Summary 776

APPENDIX A: EXERCISE SOLUTIONS 779

INDEX 827

Karli Watson is an author and IT contractor in London.

Jacob Vibe Hammer is a software architect and developer at Kamstrup A/S, Denmark. He has coauthored several books.

Jon D. Reid is the director of systems engineering at Indigo Biosystems, Inc.

Morgan Skinner joined Microsoft in 2001.

Daniel Kemper is a software engineer specializing in reporting and rich client technologies.

Christian Nagel is a Microsoft Regional Director and Microsoft MVP, an associate of thinktecture, and founder of CN innovation.

Wrox Beginning guides are crafted to make learning programming languages and technologies easier than you think, providing a structured, tutorial format that will guide you through all the techniques involved.