• Tidak ada hasil yang ditemukan

251 Head First C#, 2nd Edition

N/A
N/A
Protected

Academic year: 2019

Membagikan "251 Head First C#, 2nd Edition"

Copied!
840
0
0

Teks penuh

(1)
(2)
(3)

Advance Praise for

Head First C#

“I’ve never read a computer book cover to cover, but this one held my interest from the first page to the

last. If you want to learn C# in depth and have fun doing it, this is THE book for you.” — Andy Parker, fledgling C# programmer

“It’s hard to really learn a programming language without good engaging examples, and this book is full of them! Head First C# will guide beginners of all sorts to a long and productive relationship with C# and the .NET Framework.”

—Chris Burrows, developer for Microsoft’s C# Compiler team

“With Head First C#, Andrew and Jenny have presented an excellent tutorial on learning C#. It is very approachable while covering a great amount of detail in a unique style. If you’ve been turned off by more conventional books on C#, you’ll love this one.”

—Jay Hilyard, software developer, co-author of C# 3.0 Cookbook

“I’d reccomend this book to anyone looking for a great introduction into the world of programming and C#. From the first page onwards, the authors walks the reader through some of the more challenging concepts of C# in a simple, easy-to-follow way. At the end of some of the larger projects/labs, the reader can look back at their programs and stand in awe of what they’ve accomplished.”

—David Sterling, developer for Microsoft’s Visual C# Compiler team

“Head First C# is a highly enjoyable tutorial, full of memorable examples and entertaining exercises. Its lively style is sure to captivate readers—from the humorously annotated examples, to the Fireside Chats, where the abstract class and interface butt heads in a heated argument! For anyone new to programming, there’s no better way to dive in.”

— Joseph Albahari, C# Design Architect at Egton Medical Information Systems, the UK’s largest primary healthcare software supplier,

co-author of C# 3.0 in a Nutshell

“[Head First C#] was an easy book to read and understand. I will recommend this book to any developer wanting to jump into the C# waters. I will recommend it to the advanced developer that wants to understand better what is happening with their code. [I will recommend it to developers who] want to find a better way to explain how C# works to their less-seasoned developer friends.”

—Giuseppe Turitto, C# and ASP.NET developer for Cornwall Consulting Group

“Andrew and Jenny have crafted another stimulating Head First learning experience. Grab a pencil, a computer, and enjoy the ride as you engage your left brain, right brain, and funny bone.”

—Bill Mietelski, software engineer

“Going through this Head First C# book was a great experience. I have not come across a book series which actually teaches you so well.…This is a book I would definitely recommend to people wanting to learn C#”

(4)

Praise for other

Head First books

“Kathy and Bert’s Head First Java transforms the printed page into the closest thing to a GUI you’ve ever seen. In a wry, hip manner, the authors make learning Java an engaging ‘what’re they gonna do next?’ experience.”

—Warren Keuffel, Software Development Magazine

“Beyond the engaging style that drags you forward from know-nothing into exalted Java warrior status, Head First Java covers a huge amount of practical matters that other texts leave as the dreaded “exercise

for the reader….” It’s clever, wry, hip and practical—there aren’t a lot of textbooks that can make that claim and live up to it while also teaching you about object serialization and network launch protocols. ”

— Dr. Dan Russell, Director of User Sciences and Experience Research IBM Almaden Research Center (and teaches Artificial Intelligence at Stanford University)

“It’s fast, irreverent, fun, and engaging. Be careful—you might actually learn something!” — Ken Arnold, former Senior Engineer at Sun Microsystems

Co-author (with James Gosling, creator of Java), The Java Programming Language

“I feel like a thousand pounds of books have just been lifted off of my head.”

—Ward Cunningham, inventor of the Wiki and founder of the Hillside Group

“Just the right tone for the geeked-out, casual-cool guru coder in all of us. The right reference for practical development strategies—gets my brain going without having to slog through a bunch of tired stale professor -speak.”

— Travis Kalanick, Founder of Scour and Red Swoosh Member of the MIT TR100

“There are books you buy, books you keep, books you keep on your desk, and thanks to O’Reilly and the Head First crew, there is the penultimate category, Head First books. They’re the ones that are dog-eared, mangled, and carried everywhere. Head First SQL is at the top of my stack. Heck, even the PDF I have for review is tattered and torn.”

— Bill Sawyer, ATG Curriculum Manager, Oracle

“This book’s admirable clarity, humor and substantial doses of clever make it the sort of book that helps even non-programmers think well about problem-solving.”

— Cory Doctorow, co-editor of Boing Boing Author, Down and Out in the Magic Kingdom

(5)

Praise for other

Head First books

“I received the book yesterday and started to read it…and I couldn’t stop. This is definitely très ‘cool.’ It

is fun, but they cover a lot of ground and they are right to the point. I’m really impressed.” — Erich Gamma, IBM Distinguished Engineer, and co-author of

Design Patterns

“One of the funniest and smartest books on software design I’ve ever read.” — Aaron LaBerge, VP Technology, ESPN.com

“What used to be a long trial and error learning process has now been reduced neatly into an engaging paperback.”

— Mike Davidson, CEO, Newsvine, Inc.

“Elegant design is at the core of every chapter here, each concept conveyed with equal doses of pragmatism and wit.”

— Ken Goldstein, Executive Vice President, Disney Online

“I ♥ Head First HTML with CSS & XHTML—it teaches you everything you need to learn in a ‘fun coated’ format.”

— Sally Applin, UI Designer and Artist

“Usually when reading through a book or article on design patterns, I’d have to occasionally stick myself in the eye with something just to make sure I was paying attention. Not with this book. Odd as it may sound, this book makes learning about design patterns fun.

“While other books on design patterns are saying ‘Bueller… Bueller… Bueller…’ this book is on the float belting out ‘Shake it up, baby!’”

— Eric Wuehler

(6)

Other related books from O’Reilly Programming C# 4.0

C# 4.0 in a Nutshell C# Essentials

C# Language Pocket Reference

Other books in O’Reilly’s Head First series Head First Java

Head First Object-Oriented Analysis and Design (OOA&D) Head Rush Ajax

Head First HTML with CSS and XHTML Head First Design Patterns

Head First Servlets and JSP Head First EJB

Head First PMP Head First SQL

Head First Software Development Head First JavaScript

Head First Ajax Head First Statistics Head First Physics Head First Programming Head First Ruby on Rails Head First PHP & MySQL Head First Algebra

(7)

Beijing • Cambridge • Kln • Sebastopol • Taipei • Tokyo

Andrew Stellman

Jennifer Greene

Head First

C#

Second Edition

Wouldn’t it be dreamy if there was a C# book that

(8)

Head First C#

Second Edition

by Andrew Stellman and Jennifer Greene

Copyright © 2010 Andrew Stellman and Jennifer Greene. All rights reserved. Printed in the United States of America.

Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.

O’Reilly Media books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://my.safaribooksonline.com). For more information, contact our corporate/institutional sales department: (800) 998-9938 or corporate@oreilly.com.

Series Creators: Kathy Sierra, Bert Bates Cover Designers: Louise Barr, Karen Montgomery Production Editor: Rachel Monaghan

Proofreader: Emily Quill Indexer: Lucie Haskins

Page Viewers: Quentin the whippet and Tequila the pomeranian

Printing History: November 2007: First Edition. May 2010: Second Edition.

The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. The Head First series designations, Head First C#, and related trade dress are trademarks of O’Reilly Media, Inc.

Microsoft, Windows, Visual Studio, MSDN, the .NET logo, Visual Basic and Visual C# are registered trademarks of Microsoft Corporation.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc., was aware of a trademark claim, the designations have been printed in caps or initial caps.

While every precaution has been taken in the preparation of this book, the publisher and the authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. No bees, space aliens, or comic book heroes were harmed in the making of this book.

(9)

This book is dedicated to the loving memory of Sludgie the Whale, who swam to Brooklyn on April 17, 2007.

(10)

viii

Jennifer Greene

studied philosophy in college but, like everyone else in the field, couldn’t find a job doing it. Luckily, she’s a great software engineer, so she started out working at an online service, and that’s the first time she really got a good sense of what good software development looked like.

She moved to New York in 1998 to work on software quallity at a financial software company. She managed a team of testers at a really cool startup that did artificial intelligence and natural language processing.

Since then, she’s traveled all over the world to work with different software teams and build all kinds of cool projects.

She loves traveling, watching Bollywood movies, reading the occasional comic book, playing PS3 games (especially LittleBigPlanet!), and owning a whippet.

Andrew Stellman

, despite being raised a New Yorker, has lived in Pittsburgh twice. The first time was when he graduated from Carnegie Mellon’s School of Computer Science, and then again when he and Jenny were starting their consulting business and writing their first book for O’Reilly.

When he moved back to his hometown, his first job after college was as a programmer at EMI-Capitol Records—which actually made sense, since he went to LaGuardia High School of Music and Art and the Performing Arts to study cello and jazz bass guitar. He and Jenny first worked together at that same financial software company, where he was managing a team of programmers. He’s had the privilege of working with some pretty amazing programmers over the years, and likes to think that he’s learned a few things from them.

When he’s not writing books, Andrew keeps himself busy writing useless (but fun) software, playing music (but video games even more), experimenting with circuits that make odd noises, studying taiji and aikido, having a girlfriend named Lisa, and owning a pomeranian.

the authors

Jenny and Andrew have been building software and writing about software engineer

ing together since they

first met in 1998. Their first book,

Applied Software Project Management

, was published by O’Reilly in

2005. They published their first book in the Head First series,

Head First PMP

, in 2007.

They founded Stellman & Greene Consulting in 2003 to build a really neat soft

ware project for

scientists studying herbicide exposure in Vietnam vets. When they’re not building soft

ware or writing

books, they do a lot of speaking at conferences and meetings of software engineer

s, architects and

project managers.

Check out their blog,

Building Better Software

:

http://www.stellman-greene.com

Jenny

Andrew

Thanks for buying our book! We really love writing about this stuff, and we

hope you get a kick out of reading it… …because we know

you’re going to have a great time learning C#.

(11)

table of contents

ix

Table of Contents (Summary)

Table of Contents (the real thing)

Your brain on C#.

You’re sitting around trying to learn something, but your brain keeps telling you all that learning isn’t important. Your brain’s saying, “Better leave room for more important things, like which wild animals to avoid and

whether nude archery is a bad idea.” So how do you trick your brain into thinking that your life really depends on learning C#?

Intro

Who is this book for? xxx

We know what you’re thinking xxxi

Metacognition xxxiii

Bend your brain into submission xxxv What you need for this book xxxvi

Read me xxxvii

The technical review team xxxviii

Acknowledgments xxxix

Intro xxix

1 Get productive with C#: Visual Applications, in 10 minutes or less 1 2 It’s All Just Code: Under the hood 41 3 Objects: Get Oriented: Making code make sense 85 4 Types and References: It’s 10:00. Do you know where your data is? 125 C# Lab 1: A Day at the races 169 5 Encapsulation: Keep your privates… private 179 6 Inheritance: Your object’s family tree 215 7 Interfaces and abstract classes: Making classes keep their promises 269 8 Enums and collections: Storing lots of data 327

C# Lab 2: The Quest 385

9 Reading and Writing Files: Save the byte array, save the world 407 10 Exception Handling: Putting out fires gets old 463 11 Events and Delegates: What your code does when you’re not looking 507 12 Review and Preview: Knowledge, power, and building cool stuff 541 13 Controls and Graphics: Make it pretty 589 14 Captain Amazing: The Death of the Object 647 15 LINQ: Get control of your data 685

C# Lab 3: Invaders 713

(12)

table of contents

x

Visual Applications, in 10 minutes or less

1

Want to build great programs really fast?

With C#, you’ve got a powerful programming language and a valuable tool

at your fingertips. With the Visual Studio IDE, you’ll never have to spend hours writing obscure code to get a button working again. Even better, you’ll be able to focus on getting your work done, rather than remembering which method parameter was for the name of a button, and which one was for its label. Sound appealing? Turn the page, and let’s get programming.

get productive with C#

Why you should learn C# 2 C# and the Visual Studio IDE make lots of things easy 3 Help the CEO go paperless 4 Get to know your users’ needs before you start

building your program 5

(13)

table of contents

xi

Under the hood

You’re a programmer, not just an IDE user.

You can get a lot of work done using the IDE. But there’s only so far it can take you. Sure, there are a lot of repetitive tasks that you do when you build an application. And the IDE is great at doing those things for you. But working with the IDE is only the beginning. You can get your programs to do so much more—and writing C# code is how you do it. Once you get the hang of coding, there’s nothing your programs can’t do.

it’s all just code

2

When you’re doing this… 42

…the IDE does this 43

Where programs come from 44

The IDE helps you code 46

When you change things in the IDE, you’re also changing

your code 4849

Anatomy of a program 50

Your program knows where to start 5253 Two classes can be in the same namespace 59 Your programs use variables to work with data 60 C# uses familiar math symbols 62 Use the debugger to see your variables change 63 Loops perform an action over and over 65

Time to start coding 66

(14)

table of contents

xii

3

Making Code Make Sense

Every program you write solves a problem.

When you’re building a program, it’s always a good idea to start by thinking about what

problem your program’s supposed to solve. That’s why objects are really useful. They let you structure your code based on the problem it’s solving, so that you can spend your time thinking about the problem you need to work on rather than getting bogged down in the mechanics of writing code. When you use objects right, you end up with code that’s

intuitive to write, and easy to read and change.

objects: get oriented!

new Na vigato

r() new Na

vigator()

new Navigator()

How Mike thinks about his problems 86 How Mike’s car navigation system thinks about his problems 87 Mike’s Navigator class has methods to set and modify routes 88 Use what you’ve learned to build a program that uses a class 8990 Mike can use objects to solve his problem 92 You use a class to build an object 93 When you create a new object from a class, it’s called an instance

of that class 94

A better solution…brought to you by objects! 95 An instance uses fields to keep track of things 100

(15)

table of contents

xiii

4

It’s 10:00. Do you know where your data is?

Data type, database, Lieutenant Commander Data…

it’s all important stuff.

Without data, your programs are useless. You need information from your users, and you use that to look up or produce new information to give back to them. In fact, almost everything you do in programming involves working with data in one way or another. In this chapter, you’ll learn the ins and outs of C#’s data types, see how to work with data in your program, and even figure out a few dirty secrets about objects (pssst…objects are data, too).

types and references

The variable’s type determines what kind of data it can store 126 A variable is like a data to-go cup 128 10 pounds of data in a 5 pound bag 129 Even when a number is the right size, you can’t just assign it to

any variable 130

When you cast a value that’s too big, C# will adjust it automatically 131 C# does some casting automatically 132 When you call a method, the arguments must be compatible

with the types of the parameters 133 Combining = with an operator 138 Objects use variables, too 139 Refer to your objects with reference variables 140 References are like labels for your object 141 If there aren’t any more references, your object gets

garbage-collected 142

Multiple references and their side effects 144 Two references means TWO ways to change an object’s data 149 A special case: arrays 150 Welcome to Sloppy Joe’s Budget House o’ Discount Sandwiches! 152 Objects use references to talk to each other 154 Where no object has gone before 155

Build a typing game 160

fido

Lucky

fido

(16)

table of contents

xiv

Joe, Bob, and Al love going to the track, but they’re

tired of losing all their money. They need you to build a

simulator for them so they can figure out winners before

they lay their money down. And, if you do a good job,

they’ll cut you in on their profits.

C# Lab 1

A Day at the Races

The spec: build a racetrack simulator 170

(17)

table of contents

xv

5

Keep your privates… private

Ever wished for a little more privacy?

Sometimes your objects feel the same way. Just like you don’t want anybody you don’t trust reading your journal or paging through your bank statements, good objects don’t let other objects go poking around their fields. In this chapter, you’re going to learn about the power of encapsulation. You’ll make your object’s data private, and add methods to protect how that data is accessed.

encapsulation

Kathleen is an event planner 180 What does the estimator do? 181

Kathleen’s Test Drive 186

Each option should be calculated individually 188 It’s easy to accidentally misuse your objects 190 Encapsulation means keeping some of the data in a class private 191 Use encapsulation to control access to your class’s methods

and fields 192

But is the realName field REALLY protected? 193 Private fields and methods can only be accessed from

inside the class 194

(18)

table of contents

xvi

6

Your object’s family tree

Sometimes you DO want to be just like your parents.

Ever run across an object that almost does exactly what you want your object to do? Found yourself wishing that if you could just change a few things, that object would be perfect? Well, that’s just one reason that inheritance is one of the most powerful concepts and techniques in the C# language. Before you’re through with this chapter, you’ll learn how to subclass an object to get its behavior, but keep the flexibility to make changes to that behavior. You’ll avoid duplicate code, model the real world

more closely, and end up with code that’s easier to maintain.

inheritance

Kathleen does birthday parties, too 216 We need a BirthdayParty class 217 Build the Party Planner version 2.0 218 When your classes use inheritance, you only need to write

your code once 226

Kathleen needs to figure out the cost of her parties, no matter what kind of parties they are. 226 Build up your class model by starting general and getting

more specific 227

How would you design a zoo simulator? 228 Use inheritance to avoid duplicate code in subclasses 2290 Think about how to group the animals 231 Create the class hierarchy 232 Every subclass extends its base class 233 A subclass can override methods to change or replace methods

it inherited 238

Any place where you can use a base class, you can use one of

(19)

table of contents

xvii

7

Making classes keep their promises

Actions speak louder than words.

Sometimes you need to group your objects together based on the things they can do rather than the classes they inherit from. That’s where interfaces come in—they let you work with any class that can do the job. But with great power comes great responsibility, and any class that implements an interface must promise to fulfill all of its obligations…or the compiler will break their kneecaps, see?

interfaces and abstract classes

Let’s get back to bee-sics 270 We can use inheritance to create classes for different types of bees 271 An interface tells a class that it must implement certain methods

and properties 272

Use the interface keyword to define an interface 273 Classes that implement interfaces have to include ALL of the

interface’s methods 275

(20)

table of contents

xviii

8

Storing lots of data

When it rains, it pours.

In the real world, you don’t get to handle your data in tiny little bits and pieces. No, your data’s going to come at you in loads, piles, and bunches. You’ll need some pretty powerful tools to organize all of it, and that’s where collections

come in. They let you store, sort, and manage all the data that your programs need to pore through. That way, you can think about writing programs to work with your data, and let the collections worry about keeping track of it for you.

enums and collections

Strings don’t always work for storing categories of data 328 Enums let you work with a set of valid values 329 Enums let you represent numbers with names 330 We could use an array to create a deck of cards… 333 Lists are more flexible than arrays 336 Generics can store any type 340 Collection initializers work just like object initializers 344 Let’s create a List of Ducks 345 Lists are easy, but SORTING can be tricky 346 IComparable <Duck> helps your list sort its ducks 347 Use IComparer to tell your List how to sort 348 Create an instance of your comparer object 349 IComparer can do complex comparisons 350 Overriding a ToString() method lets an object describe itself 353 Update your foreach loops to let your Ducks and Cards

print themselves 354

You can upcast an entire list using IEnumerable 356 You can build your own overloaded methods 357 The Dictionary Functionality Rundown 364 Build a program that uses a Dictionary 365 And yet MORE collection types… 377 A queue is FIFO—First In, First Out 378 A stack is LIFO—Last In, First Out 379

(21)

table of contents

xix

C# Lab 2

The Quest

Your job is to build an adventure game where a mighty

adventurer is on a quest to defeat level after level of

deadly enemies. You’ll build a turn-based system, which

means the player makes one move and then the enemies

make one move. The player can move or attack, and then

each enemy gets a chance to move and attack. The game

keeps going until the player either defeats all the enemies

on all seven levels or dies.

(22)

table of contents

xx

9

Save the byte array, save the world

Sometimes it pays to be a little persistent.

So far, all of your programs have been pretty short-lived. They fire up, run for a while, and shut down. But that’s not always enough, especially when you’re dealing with important information. You need to be able to save your work. In this chapter, we’ll look at how to write data to a file, and then how to read that information back in from a file. You’ll learn about the .NET stream classes, and also take a look at the mysteries of hexadecimal and binary.

reading and writing files

69 117 114 101 107 97 33

(23)

table of contents

xxi

10

Putting out fires gets old

Programmers aren’t meant to be firefighters.

You’ve worked your tail off, waded through technical manuals and a few engaging Head First books, and you’ve reached the pinnacle of your profession: master programmer. But you’re still getting panicked phone calls in the middle of the night from work because your program crashes, or doesn’t behave like it’s supposed to. Nothing pulls you out of the programming groove like having to fix a strange bug… but with exception handling, you can write code to deal with problems that come up. Better yet, you can even react to those problems, and keep things running.

exception handling

Brian needs his excuses to be mobile 464 When your program throws an exception, .NET generates an

Exception object. 468

All exception objects inherit from Exception 472 The debugger helps you track down and prevent exceptions

in your code 473

Use the IDE’s debugger to ferret out exactly what went wrong in the

Excuse Manager 474

Handle exceptions with try and catch 479 What happens when a method you want to call is risky? 480 Use the debugger to follow the try/catch flow 482 If you have code that ALWAYS should run, use a finally block 484 One class throws an exception, another class catches the exception 491 Bees need an OutOfHoney exception 492 An easy way to avoid a lot of problems:

using gives you try and finally for free 495 Exception avoidance: implement IDisposable to

do your own cleanup 496

(24)

table of contents

xxii

11

What your code does when you’re not looking

events and delegates

Your objects are starting to think for themselves.

You can’t always control what your objects are doing. Sometimes things…happen. And when they do, you want your objects to be smart enough to respond to anything that pops up. And that’s what events are all about. One object publishes an event, other objects subscribe, and everyone works together to keep things moving. Which is great, until you want your object to take control over who can listen. That’s when callbacks will come in handy.

Ever wish your objects could think for themselves? 508 But how does an object KNOW to respond? 508 When an EVENT occurs…objects listen 509 Then, the other objects handle the event 511

Connecting the dots 512

The IDE creates event handlers for you automatically 516 Generic EventHandlers let you define your own event types 522 The forms you’ve been building all use events 523 One event, multiple handlers 524 Connecting event senders with event receivers 526 A delegate STANDS IN for an actual method 527

Delegates in action 528

(25)

table of contents

xxiii

12

Knowledge, power, and building cool stuff

review and preview

Learning’s no good until you BUILD something.

Until you’ve actually written working code, it’s hard to be sure if you really get some of the tougher concepts in C#. In this chapter, we’re going to use what we’ve learned to do just that. We’ll also get a preview of some of the new ideas coming up soon. And we’ll do all that by building phase I of a really complex application to make sure you’ve got a good handle on what you’ve already learned from earlier chapters. So buckle up…it’s time to build some software!

(26)

table of contents

xxiv

13

Make it pretty

controls and graphics

Sometimes you have to take graphics into your own hands.

We’ve spent a lot of time relying on controls to handle everything visual in our applications. But sometimes that’s not enough—like when you want to animate a picture. And once you get into animation, you’ll end up creating your own controls for your .NET programs, maybe adding a little double buffering, and even drawing directly onto your forms. It all begins with the Graphics object, bitmaps, and a determination to not accept the graphics status quo.

You’ve been using controls all along to interact with your programs 590 Form controls are just objects 591 Use controls to animate the beehive simulator 592 Add a renderer to your architecture 594 Controls are well suited for visual display elements 596 Build your first animated control 599 Create a button to add the BeeControl to your form 602 Your controls need to dispose their controls, too! 603 A UserControl is an easy way to build a control 604 Your simulator’s renderer will use your BeeControl to draw

animated bees on your forms 606 Add the hive and field forms to the project 608

Build the renderer 609

(27)

table of contents

xxv

14

CAPTAIN AMAZING

THE DEATH

OF THE OBJECT

Your last chance to DO something…your object’s finalizer 654 When EXACTLY does a finalizer run? 655 Dispose() works with using, finalizers work with garbage collection 656 Finalizers can’t depend on stability 658 Make an object serialize itself in its Dispose() 659 A struct looks like an object… 663

…but isn’t an object 663

(28)

table of contents

xxvi

15

Get control of your data

LINQ

It’s a data-driven world…you better know how to live in it.

Gone are the days when you could program for days, even weeks, without dealing with

loads of data. But today, everything is about data. In fact, you’ll often have to work with data from more than one place…and in more than one format. Databases, XML, collections from other programs…it’s all part of the job of a good C# programmer. And that’s where LINQ comes in. LINQ not only lets you query data in a simple, intuitive way, but it lets you group data, and merge data from different data sources.

An easy project… 686

…but the data’s all over the place 687 LINQ can pull data from multiple sources 688 .NET collections are already set up for LINQ 689 LINQ makes queries easy 690 LINQ is simple, but your queries don’t have to be 691

LINQ is versatile 694

(29)

table of contents

xxvii

C# Lab 3

Invaders

In this lab you’ll pay homage to one of the most popular,

revered and replicated icons in video game history, a

game that needs no further introduction. It’s time to

build Invaders.

(30)

table of contents

xxviii

i

The top 11 things we wanted to include

in this book

leftovers

The fun’s just beginning!

We’ve shown you a lot of great tools to build some really powerful software with C#. But there’s no way that we could include every single tool, technology, or technique in this book—there just aren’t enough pages. We had to make some really tough choices about what to include and what to leave out. Here are some of the topics that didn’t make the cut. But even though we couldn’t get to them, we still think that they’re important and useful, and we wanted to give you a small head start with them.

#1. The Basics 736

#2. Namespaces and assemblies 742 #3. Use BackgroundWorker to make your UI responsive 746 #4. The Type class and GetType() 749 #5. Equality, IEquatable, and Equals() 750 #6. Using yield return to create enumerable objects 753

#7. Refactoring 756

#8. Anonymous types, anonymous methods, and

lambda expressions 758

#9. Serializing data using DataContractSerializer 760

#10. LINQ to XML 762

(31)

xxix

how to use this

book

Intro

I can’t believe they put

that

in a C# programming book!

(32)

xxx intro

how to use this book

1

2

3

Who is this book for?

Who should probably back away from this book?

If you can answer “yes” to all of these:

If you can answer “yes” to any of these: this book is for you.

this book is not for you.

[Note from marketing: this book is

for anyone with a credit card.]

Do you want to learn C#?

Do you like to tinker—do you learn by doing, rather than just reading?

Do you prefer stimulating dinner party conversation

to dry, dull, academic lectures?

1

2

3

Does the idea of writing a lot of code make you bored and a little twitchy?

Are you a kick-butt C++ or Java programmer looking for a reference book?

(33)

you are here 4 xxxi the intro

Great. Only 700 more dull, dry, boring pages.

We know what you’re thinking.

And we know what your

brain is thinking.

“How can this be a serious C# programming book?” “What’s with all the graphics?”

“Can I actually learn it this way?”

Your brain craves novelty. It’s always searching, scanning, waiting for something unusual. It was built that way, and it helps you stay alive. So what does your brain do with all the routine, ordinary, normal things you encounter? Everything it can to stop them from interfering with the brain’s real job—recording things that matter. It doesn’t bother saving the boring things; they never make it past the “this is obviously not important” filter.

How does your brain know what’s important? Suppose you’re out for a day hike and a tiger jumps in front of you, what happens inside your head and body?

Neurons fire. Emotions crank up. Chemicals surge. And that’s how your brain knows…

This must be important! Don’t forget it!

But imagine you’re at home, or in a library. It’s a safe, warm, tiger-free zone. You’re studying. Getting ready for an exam. Or trying to learn some

tough technical topic your boss thinks will take a week, ten days at the most.

Just one problem. Your brain’s trying to do you a big favor. It’s trying to make sure that this obviously non-important content doesn’t clutter up scarce resources. Resources that are better spent storing the really big things. Like tigers. Like the danger of fire. Like how you should never have posted those “party” photos on your Facebook page. And there’s no simple way to tell your brain, “Hey brain, thank you very much, but no matter how dull this book is, and how little I’m registering on the emotional Richter scale right now, I really do want you to keep this stuff around.”

Your brain think

s

THIS is imp

ortant.

Your brain think

s

THIS isn’t w

orth

(34)

xxxii intro how to use this book

We think of a “Head First” reade

r as a learner.

So what does it take to learn something? First, y

ou have to get it, then make sure

you don’t forget it. It’s not about pushing facts into y

our head. Based on the

latest research in cognitive science, neurobiology

, and educational psychology,

learning takes a lot more than text on a page. W

e know what turns your brain on.

Some of the Head First learning principles:

Make it visual. Images are far more memorable than words alone, and make learning much more effective (up to 89% improvement

in recall and

transfer studies). It also makes things more understandable.

Put the

words within or near the graphics they relate to, rathe

r than on

the bottom or on another page, and learners will be up to

twice as likely to

solve problems related to the content.

Use a conversational and personalized style.

In recent studies,

students performed up to 40% better on post-learning tests

if the content spoke

directly to the reader, using a first-person, conversational sty

le rather than

taking a formal tone. Tell stories instead of lecturing. Use cas

ual language.

Don’t take yourself too seriously. Which would

you pay more attention to: a

stimulating dinner party companion, or a lecture?

Get the learner to think more deeply. In other words, unle

ss you

actively flex your neurons, nothing much happens in your h

ead. A reader

has to be motivated, engaged, curious, and inspired to solve

problems, draw

conclusions, and generate new knowledge. And for that, you

need challenges,

exercises, and thought-provoking questions, and activities th

at involve both

sides of the brain and multiple senses.

Get—and keep—the reader’s attention. We’ve all had the “I

really want to learn this but

I can’t stay awake past page one” experience. Your brain pays

attention to things that are out of

the ordinary, interesting, strange, eye-catching, unexpected.

Learning a new, tough,

technical topic doesn’t have to be boring. Your brain will lear

n much more quickly if

it’s not.

Touch their emotions. We now know that your ability to reme

mber

something is largely dependent on its emotional content. You

remember what

you care about. You remember when you feel

something. No, we’re not talking

heart-wrenching stories about a boy and his dog. We’re talkin

g emotions like

surprise, curiosity, fun, “what the…?” , and the feeling of “I Ru

le!” that comes when

you solve a puzzle, learn something everybody else thinks is

hard, or realize you

know something that “I’m more technical than thou” Bob from

(35)

you are here 4 xxxiii the intro

If you really want to learn, and you want to learn more quickly and more deeply, pay attention to how you pay attention. Think about how you think. Learn how you learn.

Most of us did not take courses on metacognition or learning theory when we were growing up. We were expected to learn, but rarely taught to learn.

But we assume that if you’re holding this book, you really want to learn how to build programs in C#. And you probably don’t want to spend a lot of time. If you want to use what you read in this book, you need to remember what you read. And for that, you’ve got to understand it. To get the most from this book, or any book or learning experience, take responsibility for your brain. Your brain on this content. The trick is to get your brain to see the new material you’re learning

as Really Important. Crucial to your well-being. As important as a tiger. Otherwise, you’re in for a constant battle, with your brain doing its best to keep the new content from sticking.

Metacognition: thinking about thinking

I wonder how I can trick my brain into remembering

this stuff…

So just how DO you get your brain to treat C# like it was a hungry tiger?

There’s the slow, tedious way, or the faster, more effective way. The slow way is about sheer repetition. You obviously know that you are able to learn and remember even the dullest of topics if you keep pounding the same thing into your brain. With enough

repetition, your brain says, “This doesn’t feel important to him, but he keeps looking at the same thing over and over and over, so I suppose it must be.”

The faster way is to do anything that increases brain activity, especially different types of brain activity. The things on the previous page are a big part of the solution, and they’re all things that have been proven to help your brain work in your favor. For example, studies show that putting words within the pictures they describe (as opposed to somewhere else in the page, like a caption or in the body text) causes your brain to try to makes sense of how the words and picture relate, and this causes more neurons to fire. More neurons firing = more chances for your brain to get that this is something worth paying attention to, and possibly recording.

A conversational style helps because people tend to pay more attention when they perceive that they’re in a conversation, since they’re expected to follow along and hold up their end. The amazing thing is, your brain doesn’t necessarily care that the “conversation” is between you and a book! On the other hand, if the writing style is formal and dry, your brain perceives it the same way you experience being lectured to while sitting in a roomful of passive attendees. No need to stay awake.

(36)

xxxiv intro how to use this book

Here’s what WE did:

We used pictures, because your brain is tuned for visuals, not text. As far as your brain’s concerned, a picture really is worth a thousand words. And when text and pictures work together, we embedded the text in the pictures because your brain works more effectively when the text is within the thing the text refers to, as opposed to in a caption or buried in the text somewhere.

We used redundancy, saying the same thing in different ways and with different media types, and multiple senses, to increase the chance that the content gets coded into more than one area of your brain.

We used concepts and pictures in unexpected ways because your brain is tuned for novelty, and we used pictures and ideas with at least some emotional content, because your brain is tuned to pay attention to the biochemistry of emotions. That which causes you to feel something is more likely to be remembered, even if that feeling is nothing more than a little humor, surprise, or interest.

We used a personalized, conversational style, because your brain is tuned to pay more attention when it believes you’re in a conversation than if it thinks you’re passively listening to a presentation. Your brain does this even when you’re reading.

We included more than 80 activities, because your brain is tuned to learn and remember more when you do things than when you read about things. And we made the exercises challenging-yet-do-able, because that’s what most people prefer.

We used multiple learning styles, because you might prefer step-by-step procedures, while someone else wants to understand the big picture first, and someone else just wants to see an example. But regardless of your own learning preference, everyone benefits from seeing the same content represented in multiple ways.

We include content for both sides of your brain, because the more of your brain you engage, the more likely you are to learn and remember, and the longer you can stay focused. Since working one side of the brain often means giving the other side a chance to rest, you can be more productive at learning for a longer period of time.

And we included stories and exercises that present more than one point of view, because your brain is tuned to learn more deeply when it’s forced to make evaluations and judgments.

We included challenges, with exercises, and by asking questions that don’t always have a straight answer, because your brain is tuned to learn and remember when it has to work at something. Think about it—you can’t get your body in shape just by watching people at the gym. But we did our best to make sure that when you’re working hard, it’s on the right things. That you’re not spending one extra dendrite processing a hard-to-understand example, or parsing difficult, jargon-laden, or overly terse text.

We used people. In stories, examples, pictures, etc., because, well, because you’re a person. And your brain pays more attention to people than it does to things.

When you define a class, you define its methods, just like a blueprint defines the layout of the house.

(37)

you are here 4 xxxv the intro

So, we did our part. The rest is up to you. These tips are a starting point; listen to your brain and figure out what works for you and what doesn’t. Try new things.

1

3

4

5 Drink water. Lots of it.

Your brain works best in a nice bath of fluid. Dehydration (which can happen before you ever feel thirsty) decreases cognitive function.

Make this the last thing you read before bed. Or at least the last challenging thing.

6

7

9 Write a lot of software!

There’s only one way to learn to program: writing a lot of code. And that’s what you’re going to do throughout this book. Coding is a skill, and the only way to get good at it is to practice. We’re going to give you a lot of practice: every chapter has exercises that pose a problem for you to solve. Don’t just skip over them—a lot of the learning happens when you solve the exercises. We included a solution to each exercise—don’t be afraid to peek at the solution if you get stuck! (It’s easy to get snagged on something small.) But try to solve the problem before you look at the solution. And definitely get it working before you move on to the next part of the book.

Listen to your brain.

8 Feel something.

Your brain needs to know that this matters. Get involved with the stories. Make up your own captions for the photos. Groaning over a bad joke is still better than feeling nothing at all.

Pay attention to whether your brain is getting overloaded. If you find yourself starting to skim the surface or forget what you just read, it’s time for a break. Once you go past a certain point, you won’t learn faster by trying to shove more in, and you might even hurt the process.

Talk about it. Out loud.

Speaking activates a different part of the brain. If you’re trying to understand something, or increase your chance of remembering it later, say it out loud. Better still, try to explain it out loud to someone else. You’ll learn more quickly, and you might uncover ideas you hadn’t known were there when you were reading about it.

Part of the learning (especially the transfer to long-term memory) happens after you put the book down. Your brain needs time on its own, to do more processing. If you put in something new during that processing time, some of what you just learned will be lost.

Read the “There are No Dumb Questions”

That means all of them. They’re not optional sidebars—they’re part of the core content! Don’t skip them.

Slow down. The more you understand, the less you have to memorize.

Don’t just read. Stop and think. When the book asks you a question, don’t just skip to the answer. Imagine that someone really is asking the question. The more deeply you force your brain to think, the better chance you have of learning and remembering.

Cut this out and stick it

on your refrigerator.

Here’s what YOU can do to

bend

your brain into submission

2 Do the exercises. Write your own notes.

(38)

xxxvi intro how to use this book

We wrote this book using Visual C# 2010 Express Edition, which uses C# 4.0 and .NET Framework 4.0. All of the screenshots that you see throughout the book were taken from that edition, so we recommend that you use it. If you’re using Visual Studio 2010 Professional, Premium, Ultimate or Test Professional editions, you’ll see some small differences, which we’ve pointed out wherever possible. You can download the Express Edition for free from Microsoft’s website—it installs cleanly alongside other editions, as well as previous versions of Visual Studio.

SETTING UP VISUAL STUDIO 2010 EXPRESS EDITION

It’s easy enough to download and install Visual C# 2010 Express Edition. Here’s the link to the Visual Studio 2010 Express Edition download page:

http://www.microsoft.com/express/downloads/

You don’t need to check any of the options in the installer to get the code in this book to run, but feel free to if you want.

Download the installation package for Visual C# 2010 Express Edition. Make sure you do a complete installation. That should install everything that you need: the IDE (which you’ll learn about),.NET Framework 4.0, and other tools.

Once you’ve got it installed, you’ll have a new Start menu option: Microsoft Visual C# 2010 Express Edition. Click on it to bring up the IDE, and you’re all set.

What you need for this book:

(39)

you are here 4 xxxvii the intro

Read me

This is a learning experience, not a reference book. We deliberately stripped out everything that might get in the way of learning whatever it is we’re working on at that point in the book. And the first time through, you need to begin at the beginning, because the book makes assumptions about what you’ve already seen and learned.

The activities are NOT optional.

The exercises and activities are not add-ons; they’re part of the core content of the book. Some of them are to help with memory, some for understanding, and some to help you apply what you’ve learned. Don’t skip the written problems. The pool puzzles are the only things you don’t have to do, but they’re good for giving your brain a chance to think about twisty little logic puzzles.

The redundancy is intentional and important.

One distinct difference in a Head First book is that we want you to really get it. And we want you to finish the book remembering what you’ve learned. Most reference books don’t have retention and recall as a goal, but this book is about learning, so you’ll see some of the same concepts come up more than once.

Do all the exercises!

The one big assumption that we made when we wrote this book is that you want to learn how to program in C#. So we know you want to get your hands dirty right away, and dig right into the code. We gave you a lot of opportunities to sharpen your skills by putting exercises in every chapter. We’ve labeled some of them “

Do this!

”—when you see that, it means that we’ll walk you through all of the steps to solve a particular problem. But when you see the Exercise logo with the running shoes, then we’ve left a big portion of the problem up to you to solve, and we gave you the solution that we came up with. Don’t be afraid to peek at the solution—it’s not cheating! But you’ll learn the most if you try to solve the problem first.

We’ve also placed all the exercise solutions’ source code on the web so you can download it. You’ll find it at http://www.headfirstlabs.com/books/hfcsharp/

The “Brain Power” exercises don’t have answers.

For some of them, there is no right answer, and for others, part of the learning experience of the Brain Power activities is for you to decide if and when your answers are right. In some of the Brain Power exercises you will find hints to point you in the right direction.

We use a lot of diagrams t

o

make tough concepts easi

er

to understand.

You should do ALL of the

“Sharpen your pencil” activiti

es

Activities marked with the

Exercise (running shoe) logo

are really important! Don’t

skip them if you’re serious

about learning C#.

If you see the Pool Puzzle logo,

the activity is optional, and if

you don’t like twisty logic, you

won’t like these either.

(40)

xxxviii intro

The technical review team

the review team

Lisa Kellner

Technical Reviewers:

When we wrote this book, it had a bunch of mistakes, issues, problems, typos, and terrible arithmetic errors. OK, it wasn’t quite that bad. But we’re still really grateful for the work that our technical reviewers did for the book. We would have gone to press with errors (including one or two big ones) had it not been for the most kick-ass review team EVER.…

First of all, we really want to thank Chris Burrows and David Sterling for their enormous amount of technical guidance. We also want to thank Lisa Kellner—this is our sixth book that she’s reviewed for us, and she made a huge difference in the readability of the final product. Thanks, Lisa! And special thanks to Nick Paladino. Thanks! Chris Burrows is a developer at Microsoft on the C# Compiler team who focused on design and implementation of language features in C# 4.0, most notably dynamic.

David Sterling has worked on the Visual C# Compiler team for nearly 3 years.

Nicholas Paldino has been a Microsoft MVP for .NET/C# since the discipline’s inception in the MVP program and has over 13 years of experience in the programming industry, specifically targeting Microsoft technologies.

Not pictured (but just

as awesome are the

reviewers from the first

edition): Joe Albahari,

Jay Hilyard, Aayam

Singh, Theodore, Peter

Ritchie,Bill Meitelski

Andy Parker, Wayne

Bradney, Dave Murdoch,

Bridgette Julie Landers.

And special thanks

to Jon Skeet for his

thorough review and

suggestions for the first

edition!

David Sterling

Nick Paladino

Chris Burrows

David really helped us out,

especially with some very

neat IDE tricks.

We’re especia

lly grateful f

or

(41)

you are here 4 xxxix the intro

Acknowledgments

Our editor:

We want to thank our editors, Brett McLaughlin and Courtney Nash, for editing this book. Brett helped with a lot of the narrative, and the comic idea in Chapter 14 was completely his, and we think it turned out really well. Thanks!

Lou Barr

Brett McLaughlin

There are so many people at O’Reilly we want to thank that we hope we don’t forget anyone. Special thanks to production editor Rachel Monaghan, indexer Lucie Haskins, Emily Quill for her sharp proofread, Ron

Bilodeau for volunteering his time and preflighting expertise, and Sanders Kleinfeld for offering one last sanity check—all of whom helped get this book from production to press in record time. And as always, we love Mary Treseler, and can’t wait to work with her again! And a big shout out to our other friends and editors, Andy Oram and Mike Hendrickson. And if you’re reading this book right now, then you can thank the greatest publicity team in the industry: Marsee Henon, Sara Peyton, Mary Rotman, Jessica Boyd, Kathryn Barrett, and the rest of the folks at Sebastopol. Lou Barr is an amazing graphic designer who went above and beyond on this one, putting in unbelievable hours and coming up with some pretty amazing visuals. If you see anything in this book that looks fantastic, you can thank her (and her mad InDesign skillz) for it. She did all of the monster and alien graphics for the labs, and the entire comic book. Thanks so much, Lou! You are our hero, and you’re awesome to work with.

Sanders Kleinfeld

The O’Reilly team:

(42)

xl intro

Safari® Books Online

Safari Books Online is an on-demand digital library that lets you easily search over 7,500 technology and creative reference books and videos to find the answers you need quickly. With a subscription, you can read any page and watch any video from our library online. Read books on your cell phone and mobile devices. Access new titles before they are available for print, and get exclusive access to manuscripts in development and post feedback for the authors. Copy and paste code samples, organize your favorites, download chapters, bookmark key sections, create notes, print out pages, and benefit from tons of other time-saving features. O’Reilly Media has uploaded this book to the Safari Books Online service. To have full digital access

to this book and others on similar topics from O’Reilly and other publishers, sign up for free at http://my.safaribooksonline.com/?portal=oreilly.

(43)

this is a new chapter 1

Don’t worry, Mother. With Visual Studio and C#, you’ll be able to program so fast that you’ll never

burn the pot roast again.

get productive with c#

1

Visual Applications, in 10

minutes or less

Want to build great programs really fast?

With C#, you’ve got a powerful programming language and a valuable tool

(44)

2 Chapter 1

Why you should learn C#

C# and the Visual Studio IDE make it easy for you to get to the business of writing code, and writing it fast. When you’re working with C#, the IDE is your best friend and constant companion.

c# makes it easy

What you get with Visual Studio and C#…

With a language like C#, tuned for Windows

programming, and the Visual Studio IDE, you can focus on what your program is supposed to do immediately:

Here’s what the IDE automates for you…

Every time you want to get started writing a program, or just putting a button on a form, your program needs a whole bunch of repetitive code.

using System;

using System.Collections.Generic; using System.Windows.Forms;

this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout();

// // button1 //

this.button1.Location = new System.Drawing.Point(105, 56); this.button1.Name = “button1”;

this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0;

this.button1.Text = “button1”;

this.button1.UseVisualStyleBackColor = true;

this.button1.Click += new System.EventHandler(this.button1_Click); //

// Form1 //

this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 267); this.Controls.Add(this.button1);

this.Name = “Form1”; this.Text = “Form1”; this.ResumeLayout(false); }

It takes all this code just to draw

a button on a form. Adding a few

more visual elements to the form

could take 10 times as much code.

Data access

C#, the .NET framew

ork,

and the Visual Studio IDE

have pre-built structur

es

that handle the tedious

code that’s part of mos

t

programming tasks.

.NET Framework solutions

The result is a better

looking application that

takes less time to write.

Form Obj

ects

(45)

you are here 4 3 get productive with c#

Build an application, FAST. Creating programs in C# is a snap. The language is powerful and easy to learn, and the Visual Studio IDE does a lot of work for you automatically. You can leave mundane coding tasks to the IDE and focus on what your code should accomplish.

1

Create and interact with databases. The IDE includes an easy-to-use interface for building databases, and integrates seamlessly with SQL Server Compact Edition and many other popular database systems.

3

Design a great looking user interface. The Form Designer in the Visual Studio IDE is one of the easiest design tools to use out there. It

does so much for you that you’ll find that making stunning user interfaces is one of the most satisfying parts of developing a C# application. You can build full-featured professional programs without having to spend hours writing a graphical user interface entirely from scratch.

2

Focus on solving your REAL problems. The IDE does a lot for you, but you are still in control of what you build with C#. The IDE just lets you focus on your program, your work (or fun!), and your customers. But the IDE handles all the grunt work, such as:

≥ Keeping track of all your projects

≥ Making it easy to edit your project’s code

≥ Keeping track of your project’s graphics, audio, icons, and other resources

≥ Managing and interacting with databases

All this means you’ll have all the time you would’ve spent doing this routine programming to put into building killer programs.

4

When you use C# and Visual Studio, you get all of these great features, without having to do any extra work. Together, they let you:

You’re going to see exactly

what we mean next.

(46)

4 Chapter 1

Name: Company: Telephone:

Email:

Client: Last call:

Laverne Smith

XYZ Industries

(212)555-8129

Laverne.Smith@XyZindustriescom

Yes

05/26/07

The Objectville Paper Company just hired a new CEO. He loves hiking, coffee, and nature…and he’s decided that to help save forests, he wants to become a paperless executive, starting with his contacts. He’s heading to Aspen to go skiing for the weekend, and expects a new address book program by the time he gets back. Otherwise…well…it won’t be just the old CEO who’s looking for a job.

Help the CEO go paperless

the boss needs your help

(47)

you are here 4 5 get productive with c#

Window s instal

ler

SQL Database

The CEO wants to be able to run his

program on his desktop and laptop, so

an installer is a must.

We already know tha

t Visual C#

makes working with da

tabases

easy. Having contac

ts in a

database lets the CEO and

the sales team all acc

ess the

information, even though ther

e’s

only one copy of the da

ta.

Get to know your users’ needs before

you start building your program

Before we can start writing the address book application—or any

application—we need to take a minute and think about who’s going to be using it, and what they need from the application.

The CEO needs to be able to run his address book program at work and on his laptop, too. He’ll need an installer to make sure that all of the right files get onto each machine.

1

The Objectville Paper Company sales team wants to access his address book, too. They can use his data to build mailing lists and get client leads for more paper sales.

The CEO figures a database would be the best way for everyone in the company to see his data, and then he can just keep up with one copy of all his contacts.

2

(48)

6 Chapter 1

here’s your goal

SELECT command

INSERT command

UPDATE command

DELETE command

PictureBox o

bje

c

t

TableAda

pter ob

je

ct

BindingSo

urce ob

je

ct

.NET Visual Objects

.NET Database

Objects

Database diagram

Here’s what you’re going to build

You’ll be building a W

indows form wi

th a

bunch of visual controls on i

t.

The application has a

separate data layer

that interacts with

the database.

You’re going to need an application with a graphical user interface, objects to talk to a database, the database itself, and an installer. It sounds like a lot of work, but you’ll build all of this over the next few pages.

Here’s the structure of the program we’re going to create:

Each of these objects

represents a control

on the address book

form we’ll create.

We’ll need objects to talk to

our tables, a diagram t

o let our

application know what the database

structure is, and more.

System.Window

s.Fo

rm o

bje

c

t

ToolBar ob jec

t

data entry obj

ects

DataSe t obj

ect

BindingNavig

ator

ob

je

(49)

you are here 4 7 get productive with c#

SQL Database

Table

Stored Procedures

Data Storage

Deployment Package

Window

s installe r Database

.exe

Program file

The data is all stored in a table in

a SQL Server Compact database.

Once the program’s built,

it’ll be packaged up into a

Windows installer.

Here’s the database itself, which

Visual Studio will help us create

and maintain.

Gambar

TablesStored Procedures
Figure out how to fix your program so it pops up Contacts again.
figure out that reason! In this case, we can look up the page in the specification manual that the programmer followed.
Figure out what each animal does that the Animal class does
+7

Referensi

Dokumen terkait

Kuatnya dinamika persoalan yang dihadapi UMMI jauh ke depan akan menghadirkan kendala dalam menetapkan rancangan pengembangan di masa yang akan datang. Menghadapi

Pada hari ini Rabu t anggal dua puluh sembilan Juni t ahun dua ribu lim a belas, Pokja ULP / Panitia Pengadaan Barang dan Jasa Kem ent erian Lingkungan Hidup

Upaya pemberantas narkoba pun sudah sering dilakukan, namun masih sedikit kemungkinan untuk menghindarkan narkoba dari kalangan remaja maupun dewasa, bahkan anak-anak usia SD dan

4 ESBL adalah enzim yang dapat menyebabkan resistensi terhadap hampir seluruh antibiotik beta laktam, termasuk penisilin, sefalosporin, dan..

Renita Manurung, M.T., Koordinator Tugas Akhir Departemen Teknik Kimia dan dosen pembimbing II yang telah banyak memberikan masukan, motivasi dan bimbingan serta

Maka dari itu, untuk memperbaiki kelemahan dalam belajar secara efektif peneliti menerapkan media gambar agar dapat meningkatkan motivasi dan hasil dalam belajar IPA

Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber... Sistem ini hanya digunakan oleh perorangan dan pegawai yang

The stigma and discrimination of the surrounding community to children with HIV/AIDS at Halfway House of Lentera, Surakarta in this study was in accordance with