SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 .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; }
}

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
usingキーワード

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

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

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Mark Strawmyer(Mark Strawmyer)

 大企業および中規模企業向け.NETアプリケーションの開発に携わるシニアアーキテクト。インディアナ州インディアナポリスにあるCrowe Chizekでテクノロジリーダーを務め、Microsoftのソリューションをベースとしたアーキテクチャ、設計および開発を専門とする。C#によるアプリケーション開発で、Microsoft MVPに5年連続で選出されるという栄誉を手にした。連絡先はmstrawmyer@crowechizek.com

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3659 2009/03/25 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング