Visual Studio 2010 Samples for C# 4.0
These are the official samples for Visual Studio 2010 C# 4.0.
New Features in C# 4.0 is a high level description of the additions to the C# language, and the samples are designed to show off the new language features, particularly around the dynamic scenario.
Please submit bugs through
Microsoft Connect, or provide comments on the Q/A tab.
Visual Studio 2010 C# Samples
We break out the C# samples into two different categories:
- Language Samples
- LINQ Samples
The C# 4.0-specific samples are called:
- Named and Optional
- Office Sample
- Python Sample
- Simple Variance.
Here is the complete list of language samples:
- Anonymous Delegates: Demonstrates the use of unnamed delegates to reduce application complexity.
- Arrays: Shows how to use arrays.
- Attributes: Shows how to create custom attribute classes, use them in code, and query them through reflection.
- Collection Classes: Shows how to make non-generic collection classes that can be used with the foreach statement.
- COM Interop Part I: Shows how to use C# to interoperate with COM objects.
- COM Interop Part II: Shows how to a use a C# server together with a C++ COM client.
- Commandline: Demonstrates simple command-line processing and array indexing.
- Condiational Methods: Demonstrates conditional methods, which provide a powerful mechanism by which calls to methods can be included or omitted depending on whether a symbol is defined.
- Delegates: Shows how delegates are declared, mapped to static and instance methods, and combined into multicast delegates.
- Events: Shows how to declare, invoke, and configure events in C#.
- Explicit Interface: Demonstrates how to explicitly implement interface members and how to access those members from interface instances.
- Generics: Shows how to make generic collection classes that can be used with the foreach statement.
- Hello World: A Hello World application.
- Indexers Part I: Shows how C# classes can declare indexers to provide array-like access to objects.
- Indexers Part II: Shows how to implement a class that uses indexed properties. Indexed properties enable you to use a class that represents an array-like collection.
- Libraries: Shows how to use compiler options to create a DLL from multiple source files; also, how to use the library in other programs
- Named and Optional (C# 4.0): Demonstrates Named and Optional parameters, an alternative to method overloads
- Nullable: Demonstrates value types, such as double and bool, that can be set to null
- Office Sample (C# 4.0): Demonstrates how Dynamic and COM Interop make it easy to call Microsoft Office in C# 4.0
- OLEDB: Demonstrates how to use a Microsoft Access database from C# by creating a dataset and adding tables to it.
- Operator Overloading: Shows how user-defined classes can overload operators
- Partial Types: Demonstrates how classes and structures can be defined in multiple C# source-code files
- PInvokeShows how to call exported DLL functions from C#
- Properties: Shows how properties are declared and used; also demonstrates abstract properties
- Python Sample (C# 4.0): Learn how to call a Python script by using the Dynamic feature in C# 4.0
- Security: Discusses .NET Framework security and shows two ways to modify security permissions in C#: using permission classes and permission attributes
- Simple Variance (C# 4.0): See how Covariance and Contravariance are supported in generic interfaces and delegates
- Structs: Shows how to use structs in C#.
- Threading: Demonstrates various thread activities such as creating and executing a thread, synchronizing threads, interacting between threads, and using a thread pool
- Unsafe: Shows how to use unmanaged code (code that uses pointers) in C#
- User Conversions: Shows how to define conversions to and from user-defined types
- Versioning: Demonstrates versioning in C# by using the override and new keywords
- XML Documents: Shows how to document code by using XML
- Yield: Demonstrates how to use the yield keyword to filter items in a collection
These samples help you learn LINQ quickly. They also act as a reference and guide for those with existing LINQ experience. A few handy utilities are also included. They are available in the
- DynamicQuery: Code to create LINQ queries at run time.
- LinqToNorthwind: A basic example of how to use LINQ To SQL to query a database
- LinqToXmlDataBinding: Bind LINQ to XML code to WPF controls
- ObjectDumper: A utility for writing the output from a LINQ query to the screen in text mode
- PasteXmlAsLinq: A Visual Studio addin that automatically converts XML to LINQ to XML.
- QueryVisualizer: Allows LINQ to SQL developers to see the SQL for their query, and also to see the results of the query in a grid.
- Reflector: Use LINQ to right queries against the objects in your code using the Reflection APIs
- RSS: This sample acts as a tiny web server that aggregates several RSS feeds
- SampleQueries: This is the most important sample and contains about 500 examples of how to use each of the query operators in LINQ to Objects, LINQ to SQL, LINQ to XML and LINQ to DataSet.
- SimpleLambdas: Several examples of how to write and use lambda expressions
- SimpleLinqToObjects: The hello world of the LINQ samples. This shows you how easy it is to do simple queries of in-memory objects using LINQ to Objects.
- SimpleLinqToXml: Get started using LINQ to XML.
- WebServiceLinqProvider(TerraService): A custom LINQ provider and client for the TerraServer-USA Web service.
- Whitepapers: The following papers are stored in this directory in Word format:
- LINQ Project Overview
- LINQ to SQL Overview for C# and VB
- Standard Query Operators
- LINQ to XML Overview
- WinFormsDataBinding: Learn how to display LINQ queries with grids in a Windows form. It includes a one to many query example.
- XQuery: Another simple LINQ to XML sample query. This sample shows the minimal code necessary to write a LINQ to XML query
LINQ Samples Database Connectivity Issues
The default connect string for the samples should work without modification if you have SQL Server Express installed on your development machine. Here is an alternate connect string that you can modify for your own purposes if you are not using SQL Express
but have SQL Server available. You will probably need to modify the word test wherever it appears in the sample connect string.
string connString =
On some SQL Express installations, you may not have the rights to start a user instance. If you get an error message to that effect, try removing the clause ";user instance = true" from the connection string.
Be sure that the copies of the northwind database that you are accessing are not marked read only. If necessary, browse to the copy of NORTHWIND.MDF you are trying to access, right click on the file, choose properties. Clear the
On some slow machines, or when using a virtual pc, users have reported that some database applications give errors the first time they run. Try running the sample two or three times.
The customized copies of the Northwind database included with the samples ship without an LDF (log) file. This is done intentionally, so that the LDF and MDF files do not get out of sync. When you run a sample that uses the database, or attach to the database
from the Server Explorer inside Visual Studio, the LDF file will be created automatically. You may have trouble connecting to the MDF file if you are using the SQL Server Management Studio without first creating a log file.