c# と .net と ・・・

14
青青 青@ShinichiAoyagi C# 青 .NET 青 ・・・ C# 青青青青青青青青青青 2013/10/12 土土 ()

Upload: shinichiaoyagi

Post on 28-Nov-2014

1.329 views

Category:

Documents


0 download

DESCRIPTION

C#の素晴らしさを語る会 2013/10/12(土)のセッション資料です。

TRANSCRIPT

青柳 臣一  @ShinichiAoyagi

C# と .NET と ・・・

C# の素晴らしさを語る会

2013/10/12 (土)

• 青柳 臣一(あおやぎ しんいち)@ShinichiAoyagihttp://shinichiaoyagi.blogspot.jp/

• 職業  C# やら VB やら WPF やらでソフトウエア開発   最近はスマホとか   あと PHP + MySQL で SNS 作ったり

自己紹介

• アンダース・ヘルスバーグのサイン入り

ちょっと自慢

サイン入り C# 2.0 本

サイン入り ケース

CLR ( 1 )

microsoft.com より

• Common Language Runtime– 共通言語ランタイム– CLI(Common Language Infrastructure 、

共通言語基盤 ) のマイクロソフトの実装

• CLI– 仕様はオープン

( ECMA-335 、 ISO 、 JIS )– CPU や環境に依存しない

CLR ( 2 )

BCL (1)

microsoft.com より

• Base Class Library– 基本部分のクラスライブラリ

• String とか Int32 とか

– CLI に規定されている

– ただ「ここまでが BCL 」という明確な定義は無いかも

BCL (2)

• IL (中間言語)– コンパイラが作るのは IL– オブジェクト指向風味なマシン語って感じ

• JIT Compiler– Just In Time– 実行時に IL をコンパイル– ngen.exe (インストール時コンパイル)

IL と JIT Compiler

• C# 言語仕様– ECMA-334 、 ISO 、 JIS

C# もオープン

C# と .NET FrameworkC# .NET Framework CLR

2002 年 1.0 1.0 1.0

2003 年 1.1細々と修正・追加

1.1?

2005 年 2.0partial class 、ジェネリックス、 Nullable

2.0大幅バージョンアップ

2.0ジェネリックス、 Nullable 、 64bit

2006 年 3.0WPF 、 WCF 、 WF

2007 年 3.0var 、拡張メソッド、ラムダ式

3.5LINQ

2010 年 4.0dynamic

4DLR

4dynamic 、チューニング ?

2012 年 5.0await/async

4.5 4.5WinRT 、チューニング ?

• 参照型と値型– ReferenceType と ValueType– class と struct– ヒープとスタック

• GC ( Garbage Collection )– 不要なメモリのゴミ集め

• アンマネージリソースの管理– IDisposable

C# と .NET Framework の基本機能ピックアップ (1)

• foreach– 実は C# コンパイラがいろいろやってます

• 実は IEnumerable でなくてもいい( GetEnumerator メソッドがあればそれを呼んでくれる)

• Enumerator が IDisposable なときは Dispose を呼んでくれる

C# と .NET Framework の基本機能ピックアップ (2)

• ジェネリックス– List<T>

• ヌル許容型– Nullable<T>

• 実はランタイムでいろいろやってます– int? 、 double?– ヌル結合演算子( ?? )

C# と .NET Framework の基本機能ピックアップ (3)

• unsafe– メソッドにつける、ブロックで囲む– コンパイラに /unsafe が必要– ポインタが使える– fixed– stackalloc

• checked 、 unchecked– unchecked { var i = (uint)-1 };

C# と .NET Framework の基本機能ピックアップ (4)