C_Sharp
★制服でHなバイト★
1日5万円★日払い★

[Wikipedia|▼Menu]
□記事を途中から表示しています
[最初から表示]


オブジェクト初期化の簡略化

オブジェクトの初期化が式として簡潔に記述できるようになった。var p = new Point { X = 640, Y = 480 };// 上の文は次のように解釈される:Point p = new Point();p.X = 640;p.Y = 480;

また、コレクションの初期化も同様に簡潔に記述できるようになった。var l = new List<int> {1, 2, 3};var d = new Dictionary<string, int> {{"a", 1}, {"b", 2}, {"c", 3}};// 上の文は次のように解釈される:List<int> l = new List<int>();l.Add(1);l.Add(2);l.Add(3);Dictionary<string, int> d = new Dictionary<string, int>();d.Add("a", 1);d.Add("b", 2);d.Add("c", 3);


自動実装プロパティ

プロパティをより簡潔に記述するための自動実装プロパティが導入された。プロパティの定義に get; set; と記述することで、プロパティの値を保持するための匿名のフィールド (プログラマは直接参照することはできない) と、そのフィールドにアクセスするためのアクセサが暗黙に定義される。また,get;とset;のどちらか片方だけを記述することは出来ない。以下のコード:public int Value { get; set; }

は、以下のようなコードに相当する動作をする:private int __value;public int Value{ get { return __value; } set { __value = value; }}

但し、上のコードでは匿名のフィールドに便宜的に __value と命名している。実際はプログラマはこのフィールドにアクセスすることはできない。


匿名型

一時的に使用される型を簡単に定義するための匿名型が導入された。以下に例を挙げる:new { Name = "John Doe", Age = 20 }

上の式は、以下の内容のクラスを暗黙に定義する。定義されたクラスは匿名であるが故にプログラマは参照できない。public string Name { get; }public int Age { get; }

同じ型、同じ名前のプロパティを同じ順序で並べた匿名型は同じであることが保証されている。即ち、以下のコード:var her = new { Name = "Jane Doe", Age = 20 }var him = new { Name = "John Doe", Age = 20 }

において、her.GetType() == him.GetType() は true である。


配列宣言の型省略

new キーワードを用いた配列の宣言の際、型を省略できるようになった。匿名型の配列を宣言する際に威力を発揮する。var a = new[] {"foo", "bar", null};// 上の文は次のように解釈される:string[] a = new string[] {"foo", "bar", null};// 以下の文:var a = new[] {"foo", "bar", 123};// は次のように解釈されることなく、誤りとなる:object[] a = new object[] {"foo", "bar", 123};


クエリ式

LINQ をサポートするために、クエリ式が導入された。これは SQL の構文に類似しており、最終的に通常のメソッド呼び出しに変換されるものである。以下に例を示す:var passedStudents = from s in students where s.MathScore + s.MusicScore + s.EnglishScore > 200 select s.Name;

上のコードは以下のように変換される:var passedStudents = students .Where(s => s.MathScore + s.MusicScore + s.EnglishScore > 200) .Select(s => s.Name);

C# 3.0で追加された構文の多くは式であるため、より巨大な式(当然クエリ式も含まれる)の一部として組み込むことができる。旧来複数の文に分けたり、作業用の変数を用意して記述していたコードを単独の式としてより簡潔に記述できる可能性がある。


実装

C#の言語仕様は標準化団体Ecma Internationalを通じて公開・標準化されており、第三者がマイクロソフトとは無関係に実装することができる。 現段階で、C#の実装は次の4つが知られている。

デファクトスタンダードである、マイクロソフトによるVisual C# コンパイラ。

マイクロソフトによる ⇒Shared Source Common Language Infrastructure。共通言語基盤(CLI)とC#コンパイラがソースコードで公開されている。

Mono ProjectによるMono内の Mono Compiler Suite (mcs)。

DotGNU ProjectによるPortable.NET内の the C-Sharp code compiler (cscc)。


名称

規格によると、C#は「C Sharp」(シーシャープ)と発音し、「C#」(LATIN CAPITAL LETTER C (U+0043)の後にNUMBER SIGN # (U+0023))と書く。音楽のシャープ(♯, MUSIC SHARP SIGN (U+266F))ではなくナンバーサイン (#)を採用したのは、フォントやブラウザなどの技術的な制約に加え、標準的キーボードには前者の記号が存在しないためである。

"#"接尾辞は、既存言語から派生した多くの.NET言語にも使用されている。これには、J#(Javaのマイクロソフトによる実装)、A#(Adaから)、F#(おそらくMLファミリに使われた型システムのSystem Fから)が含まれる。この接尾辞はGtk#(GTK+などのGNOMEライブラリの.NETラッパ)、Cocoa#(Cocoaのラッパ)などのライブラリにも使用されている。

C#という名称の解釈として、「(A?Gで表された)直前の音を半音上げる」という音楽記号の役割に着目し、「C言語を改良したもの」を意味したのではないか、というものがある。これは、C++の名称が「C言語を1つ進めたもの」という意味でつけられたことにも似ている。

アンダース・ヘルスバーグは、「C#」が「C++++」(すなわち「C++をさらに進めたもの」)にみえるのが由来である、と語っている。


関連項目

.NET Framework

オブジェクト指向言語の比較

プログラミング言語の比較


外部リンク

C# 言語仕様 (MSDN)

C# 3.0 言語仕様(Microsoft Word形式)

ECMA-334 C# Language Specification(pdf)

JISC(規格番号X3015でプログラム言語C#の規格を閲覧できる)

Microsoft Visual C#

MCS: The Ximian C# compiler

Baltie - C# IDE for children and young ⇒Baltie

Portable.NET

Full C# Online book

Microsoft Shared Source Common Language Infrastructure 2.0 Release



脚注^Standard ECMA-334 C# Language Specification
^ ISO/IEC 23270:2003 C# Language Specification
^ JIS X 3015 プログラミング言語C#
^null 許容型のボックス化 (C# プログラミング ガイド) MSDNライブラリ

・話・編・歴.NET Frameworkカテゴリ

アーキテクチャ共通言語基盤 - アセンブリ - メタデータ - 基本クラスライブラリ


■毎日更新無料動画!
■未公開流出画像満載

[次ページ]
[オプション/リンク一覧]
[記事の検索]
[おまかせ表示]
[トップページ]
[ニュースをチェック!]
[列車運行情報]
Size:36 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:Mamenoki