Visual C# の新機能

更新 : 2008 年 7 月

Visual C# 2008 Service Pack 1 の新機能

C# 言語

機能

説明

コンパイラのさまざまな改良点

C# コンパイラには、言語仕様との矛盾を取り除くために多くの改良が施されています。改良の一部は互換性に影響する変更ですが、その他は単なるソフトウェアの更新または機能拡張です。互換性に影響する変更の詳細については、「Visual C# 2008 の互換性に影響する変更点」を参照してください。Service Pack 1 でのその他のバグ修正の詳細については、「変更と修正される Visual Studio 2008 Service Pack 1 ベータの問題の Visual C# の一覧」を参照してください。

Visual C# IDE

機能

説明

有効な意味的エラー

Visual C# 2008 Service Pack 1 には、コードに関するより完全な一連のエラー情報を提供する新機能として、有効な意味的エラーを表示する機能が導入されました。この機能は、以前はビルド後にしか報告されなかった式レベルのエラーを検出します。また、コードを記述している際中に、赤色の波線で下線を付けてエラー個所が示されます。波線の下線の詳細については、「コードの編集 (Visual C#)」を参照してください。

LINQ クエリ デバッグ

Service Pack 1 では、LINQ クエリのデバッグが大幅に強化されました。

  • クエリ式の各行をステップ実行しているときに、[ウォッチ] ウィンドウおよび DataTips で範囲変数を確認できるようになりました。

  • 匿名型の名前が、デバッガで隠されることはなくなりました。デバッグ中に、匿名型の名前をキャストやインスタンス化で表示できます。これにより、匿名型の一時的なインスタンスをデバッグ セッション中に作成できるようになりました。匿名型との間でのキャストは、正しく評価されます。

  • [ウォッチ式の追加] 用に生成される文字列が改良されて、元のリリース バージョンの Visual Studio 2008 よりも頻繁に評価できる式が生成されるようになりました。

詳細については、Microsoft の Web サイトの「Sree's ventures in code space」を参照してください。

ソリューション内のすべてのファイルについてタスク一覧コメントを表示

以前のリリースの Visual Studio では、タスク一覧にタスク コメントが表示されるのは開いているファイルだけでした。Visual Studio 2008 Service Pack 1 では、ソリューション内の開いているファイルも閉じているファイルもすべて、タスク コメントが C# の統合された開発環境 (IDE) に表示されます。詳細については、「方法 : タスク一覧のコメントを作成する」を参照してください。

Windows Presentation Foundation プロジェクトでの名前の変更リファクタリング

Visual Studio 2008 Service Pack 1 では、名前の変更リファクタリング機能を使用して、XAML で定義されている参照の名前を変更できます。名前の変更リファクタリングの詳細については、「名前の変更」を参照してください。

LINQ

機能

説明

[M:Enumerable.Cast`1] メソッドの改良

Visual C# 2008 Service Pack 1 では、プリミティブ値変換と明示的に定義されたユーザー変換を無効にすることにより、Enumerable.Cast<T> メソッドのパフォーマンスが向上します。プリミティブ値変換の例として、int データ型から long データ型への変換が挙げられます。

[M:Enumerable.Where`1] メソッドと [M:Enumerable.Select`1] メソッドのパフォーマンス向上

Visual C# 2008 Service Pack 1 では、Where 標準クエリ演算子と Select 標準クエリ演算子のパフォーマンスが向上しています。

Visual C# 2008 の元のリリース バージョンにおける新機能

C# 3.0 言語

C# 3.0 言語およびコンパイラには、言語に関するいくつかの新機能が導入されています。これらの新しい言語構成要素は、さまざまなコンテキストで個別に役立つと共に、統合言語クエリ (LINQ: Language-Integrated Query) では全体として役立つ操作を提供します。LINQ の詳細については、「The LINQ Project」を参照してください。

C# 3.0 言語の新機能の一覧を次の表に示します。

機能

説明

暗黙的に型指定されるローカル変数およびローカル配列

ローカル変数で使用する場合、var キーワードで、初期化ステートメントの右側の式から変数または配列要素の型を推論することをコンパイラに指示します。

オブジェクト初期化子

コンストラクタを明示的に呼び出さずにオブジェクトを初期化できます。

コレクション初期化子

Add または別のメソッドに対する特定の呼び出しを行う代わりに、初期化リストでコレクションを初期化できます。

拡張メソッド

インスタンス メソッドの構文を使用して呼び出すことができる静的メソッドを使用して、既存のクラスを拡張します。

匿名型

コレクションに追加し、var を使用してアクセスできる、名前のない構造化型をすばやく作成できます。

ラムダ式

デリゲートまたは式のツリーにバインドできる入力パラメータを持つインライン式を使用できます。匿名関数 (C# プログラミング ガイド) も参照してください。

クエリ キーワード

クエリ式に次の句を指定するキーワードです。

  • from 句

  • where 句 (省略可能)

  • 並べ替え句 (省略可能)

  • join 句 (省略可能)

  • select 句または group 句

  • into 句 (省略可能)

自動実装プロパティ

簡略化した構文を使用してプロパティを宣言できます。

部分メソッド定義

部分型に部分メソッドを含めることができるようになりました。

C# 3.0 コンパイラ

  • /win32Manifest コンパイラ スイッチおよび /noWin32Manifest コンパイラ スイッチ。
    これらの新しいコンパイラ スイッチは、Windows Vista 上で実行するプログラムの要求実行レベルの指定に使用します。

Visual C# IDE

機能

説明

マルチ ターゲット

Visual Studio 2008 では、プロジェクトの .NET Framework のバージョンを .NET Framework 2.0、3.0、または 3.5 に指定できます。アプリケーションが対象とする .NET Framework は、そのコンピュータでアプリケーションの実行に必要となるバージョンの .NET Framework です。詳細については、「特定の .NET Framework を対象にする」を参照してください。

新しいプロジェクトの種類とテンプレート

Windows Presentation Foundation、Windows Communication Foundation、および Web プロジェクトにはいくつかの新しいプロジェクト テンプレートが用意されています。詳細については、「Visual C# エディションのプロジェクト テンプレート」および「Visual Studio の既定のプロジェクト テンプレート」を参照してください。

C# 3.0 に対する IntelliSense のサポート

Visual C# コード エディタには、C# 3.0 の次の新しい言語構成要素をサポートするための、ステートメント入力候補と自動クイック ヒントが用意されています。

  • 暗黙的に型指定されるローカル変数

  • クエリ式

  • 拡張メソッド

  • オブジェクト初期化子とコレクション初期化子

  • 匿名型

  • ラムダ式

  • 部分メソッド

詳細については、「Visual C# の IntelliSense」を参照してください。

C# 3.0 に対するリファクタリングのサポート

リファクタリング機能の、[名前の変更]、[シグネチャの変更]、[メソッドの抽出]、および [ローカルの昇格] が更新され、次の新しい言語構成要素をサポートするようになりました。

  • クエリ式

  • 拡張メソッド

  • ラムダ式

また、リファクタリングには、リファクタリング操作によって予期しない結果が発生するのを防止できる、新しいオプションと警告が用意されています。詳細については、「リファクタリング」を参照してください。

コードのフォーマット

コード エディタは、クエリ式を含め、いくつかの新しい C# 3.0 言語構成要素の書式オプションをサポートします。詳細については、「[書式設定] ([オプション] ダイアログ ボックス - [テキスト エディタ] - [C#])」を参照してください。

using ステートメントの整理

Visual C# コード エディタには、using 宣言および extern 宣言を簡単に並べ替える方法、および使用しないこれらの宣言を簡単に削除する方法が用意されています。

参照

その他の技術情報

統合言語クエリ (LINQ: Language-Integrated Query)

Is C# becoming a functional language?

.NET Framework 3.5 の新しいライブラリ クラス

履歴の変更

日付

履歴

理由

2008 年 7 月

Visual C# 2008 Service Pack 1 に関するセクションを追加

SP1 機能変更