特集:新IDE「VS 2012」レビュー

Visual Studio 2012の新機能

デジタルアドバンテージ 一色 政彦
2012/09/04
Page1 Page2 Page3 Page4

C#/VB言語の新機能

 ここでは、C#とVBに共通する主なものだけを取り上げる。ちなみに、以下のほかには、VBでのみ追加された新機能などがある。具体的には、C#ではすでに実装されている「Yield文」などだ。

非同期プログラミング(Asynchronous Programming )

 C#&VB言語には、async/awaitキーワードが追加され、簡単かつ直感的に非同期処理のコードを記述できるようになった。具体的には「C# 5.0&VB 11.0新機能『async/await非同期メソッド』入門」を一読してほしい。

呼び出し元情報(Caller Information)

 C#&VB言語では、メソッドに対する呼び出し元の、ソース・ファイルのパス(CallerFilePath属性)や、そのファイル内の行番号(CallerLineNumber属性)、メンバ名(CallerMemberName属性)などの呼び出し元情報を取得できるようになった。次のコードは、呼び出し元情報を取得するコンソール・アプリケーションのサンプルだ。

using System;
using System.Runtime.CompilerServices;
using System.Diagnostics;

class Program
{
  static void Main(string[] args)
  {
    TraceMessage("トレース情報を書く。");

    Console.ReadLine();
  }

  public static void TraceMessage(
    string msg,
    [CallerMemberName] string name = "",
    [CallerFilePath] string path = "",
    [CallerLineNumber] int num = 0)
  {
    Trace.WriteLine("メッセージ: " + msg);
    Trace.WriteLine("メンバ名: " + name);
    Trace.WriteLine("ファイル・パス: " + path);
    Trace.WriteLine("行番号: " + num);
  }
}
Imports System.Runtime.CompilerServices

Module Module1

  Sub Main()

    TraceMessage("トレース情報を書く。")

    Console.ReadLine()

  End Sub

  Public Sub TraceMessage(
      msg As String,
      <CallerMemberName> Optional name As String = Nothing,
      <CallerFilePath> Optional path As String = Nothing,
      <CallerLineNumber()> Optional num As Integer = 0)

    Trace.WriteLine("メッセージ: " & msg)
    Trace.WriteLine("メンバ名: " & name)
    Trace.WriteLine("ファイル・パス: " & path)
    Trace.WriteLine("行番号: " & num.ToString())

  End Sub

End Module
呼び出し元情報を取得するコンソール・アプリケーションのサンプル・コード(上:C#、下:VB)

 これを実行すると、次のようになる。

呼び出し元情報を取得するサンプルの出力結果([出力]ウィンドウ)

.NET Framework 4.5の新機能

 .NET 4.5の新機能についても、特に知っておいてほしいものだけを取り上げる。

非同期ファイルI/O

 .NET 4.5では、ファイル入出力を非同期処理するためのAPIが追加されている。具体的には、Streamクラス(System.IO名前空間)にReadAsync/WriteAsync/CopyToAsync/FlushAsync/ReadLineAsync/ReadToEndAsyncメソッドが追加されており、Streamクラスから派生したFileStreamクラス(System.IO名前空間)やMemoryStreamクラス(System.IO名前空間)でもこれらのメソッドが利用できる。これらのメソッドを活用することで、ファイルの読み込み中にアプリケーションがフリーズしてしまうのを、簡単に避けられるようになる。

System.Net.Http名前空間

 .NET 4.5では、HTTPベースのWeb APIを呼び出すときなどに使える、今風のHTTPクライアント機能を提供するSystem.Net.Http名前空間が追加された。また、それに付随するHTTPヘッダ関連を取り扱うSystem.Net.Http.Headers名前空間も追加されている。

 例えばSystem.Net.Http名前空間に所属するHttpClientクラスは、.NET 4.0以前のWebClientクラス(System.Net名前空間)に近い機能を提供する。最近はやりのREST形式のWeb APIでは、HTTPリクエストでGET/POST/PUT/DELETEなどのメソッドを使い分けるが、そのようなクライアントを実装する場合は、WebClientクラスなどの従来のものよりも新しいHttpClientクラスの方が便利だ。またHttpClientクラスは、全てのリクエストが非同期メソッドとなっており、「開発者に非同期処理の実装を強制できる」というメリットもある。

 以上、VS 2012の新機能を画像を多用して簡単に紹介した。ただし、全てを紹介できたわけではない。特にC++言語やF#言語、ALM(Application Lifecycle Management)関連など、大幅に省いているものがいくつかある。VS 2012の新機能についてさらに詳しく知りたい場合には、まずは「MSDN:Visual Studio 2012 の新機能」という資料を参照するとよいだろう。end of article

 

 INDEX
  特集:新IDE「VS 2012」レビュー
  Visual Studio 2012の新機能
    1.新しいプロジェクト・テンプレート/新しい項目テンプレート
    2.検索関連の新機能/[ソリューション エクスプローラー]関連の新機能/そのほかのIDEの新機能
    3.ASP.NET関連の新機能/WPF関連の新機能/Windowsストア・アプリ関連の新機能
  4.C#&VB言語の新機能/.NET Framework 4.5の新機能


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間