Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

C# 3.0プログラミングのヒント

C# 3.0とVisual Studio 2008 C# IDEに関係するさまざまなヒント

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/03/25 14:00

 本稿では、C# 3.0やVisual Studio 2008でのプログラミングに役立つテクニックを、5つの項目に分けて紹介していきます。C#の実際の開発に活かしていただければ幸いです。

目次

はじめに

 .NET入門コラムの連載記事にようこそ。タイトルにあるように、今回はC#でのプログラミングに役立つヒントを中心に話を進めます。まずC# 3.0のプログラミング言語としての要点をひととおり眺めた上で、Visual Studio 2008 C#の統合開発環境(IDE)がどのような点で生産性の向上に寄与するか調べ、読者にとって興味があると思われるVisual Studioの便利なプラグインをいくつか紹介します。今回の記事は.NET入門コラムのこれまでの連載記事とやや趣を異にしますが、これはこれで有用だと思います。

C# 3.0の基礎

 C# 3.0はMicrosoft .NET 3.5 Frameworkの一部としてリリースされました。その主たる目的は、LINQ(Language INtegrated Query)の基盤を提供し、それによって統一されたデータアクセス機能を実現することにあります。個々の強化点は、単独で利用しても有益なものです。本稿では以下の各項目について関連するテクニックを紹介します。

  • 自動実装プロパティ
  • usingキーワード
  • ローカル型推論
  • オブジェクト初期化子とコレクション初期化子
  • 拡張メソッド

自動実装プロパティ

 自動実装プロパティとは、プライベートなフィールドを取得(get)または設定(set)するプロパティアクセサを実装するための簡略構文です。これにより、フィールドに基づくプロパティを作成するときに、実際にフィールドを作成しなくて済みます。このプロパティはコンパイル時にコンパイラによって自動的に生成されます。このプロパティには本体もフィールドもないため、単純にプロパティを取得するか設定する目的でのみ使用できます。プロパティの本体がないということは、ブレークポイントや妥当性検査のロジックを使用できないことを意味します。さらに、フィールドがないということは、デフォルト値がないことを意味します。Visual Studioでは「prop [tab][tab]」とタイプすると、自動実装プロパティを生成するためのコードスニペットが挿入されます。これでコードをずっと簡潔なものにすることができます。フィールドに基づくプロパティを従来のスタイルで書くと次のようなコードになります。

private int myProperty = 0;
public int MyProperty
{
   get { return this.myProperty; }
   set { this.myProperty = value; }
}

 同じフィールドを自動実装プロパティの形式で書くと次のように簡略化されます。

public int MyProperty
{
   get; set;
}

 ただし、手を抜いて任せっきりにするのはよくありません。Customerというクラスを定義する次のコードを見てください。ここではCustomerKeyプロパティを定義しています。通常、この種のキーフィールドは読み取り専用の項目とされ、一度設定したら変更することはありません。これを自動実装プロパティを使って簡単に片付けると、コードに望ましくない動作の余地を残すことになります。

class Customer
{
   public string CustomerKey { get; set; }
   public string ContactName { get; set; }
   public string City { get; set; }
}

 このような場合、setプロパティをプライベートとし、その値をコンストラクタで制御するようにコードを書き換えればよいと思われるかもしれません。確かにこれでCustomerKeyフィールドは外部からは保護されますが、このクラスは内部的にまだ変更される可能性を残しています。

class Customer
{
   public Customer(string customerKey)
   {
      CustomerKey = customerKey;
   }

   public string CustomerKey { get; private set; }
   public string ContactName { get; set; }
   public string City { get; set; }
}

 実際のところ、CustomerKeyプロパティに自動実装プロパティはどうやら向いていないようで、このコードは次のようなスタイルで書く必要があります。この例で採り上げたクラスはかなり単純なものですが、これは自動実装プロパティを積極的に利用すべきながら、その扱いには慎重さが求められることを端的に示しています。

class Customer
{
   public Customer(string customerKey)
   {
      this.CustomerKey = customerKey;
   }
   private readonly string customerKey;
   public string CustomerKey
   {
      get return this.customerKey;
   }

   public string ContactName { get; set; }
   public string City { get; set; }
}

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Mark Strawmyer(Mark Strawmyer)

     大企業および中規模企業向け.NETアプリケーションの開発に携わるシニアアーキテクト。インディアナ州インディアナポリスにあるCrowe Chizekでテクノロジリーダーを務め、Microsoftのソリューションをベースとしたアーキテクチャ、設計および開発を専門とする。C#によるアプリケーション開発で...

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5