38
.NET Framework入門 2013/03/09 Visual Studio勉強会 @kamukiriri

VS勉強会 .NET Framework 入門

Embed Size (px)

DESCRIPTION

2013/03/09 第1回Visual Studio 勉強会

Citation preview

Page 1: VS勉強会 .NET Framework 入門

.NET Framework入門

2013/03/09 Visual Studio勉強会

@kamukiriri

Page 2: VS勉強会 .NET Framework 入門

目次

0. 自己紹介

1. はじめに

2. .NET Frameworkって?

3. 覚えておくと便利な機能

4. さいごに

Page 3: VS勉強会 .NET Framework 入門

0. 自己紹介

HN: kamu(@kamukiriri)

仕事:元.NET系業務システム開発者

現iOSアプリ開発者

プログラミング暦:

C#, VB.NET, Objective-C, Javascript,

PHP, VB6, VBA, VBS, etc...

Page 4: VS勉強会 .NET Framework 入門

1. はじめに(1)

この発表の内容は、「.NET Framework入門」

ですが、.NET Frameworkの使い方を具体的に

説明する為に、以下の言語を例として使用します

・Visual C# (以後C#)・Visual Basic.NET (以後VB.NET)

Page 5: VS勉強会 .NET Framework 入門

1. はじめに(2)

その為、C++/CLIをはじめとする他の.NET系言語

では事情が異なる内容も含まれているかもしれません

もしそういう事や他の間違いに気付かれた方は、

是非、質疑応答の際などに教えてください!

Page 6: VS勉強会 .NET Framework 入門

2. .NET Frameworkって?(1)

Visual Studioのメインターゲットである

C#やVB.NET等の言語で作られたプログ

ラムの実行環境であり開発環境

→VSでの開発に必要不可欠な存在

Page 7: VS勉強会 .NET Framework 入門

2. .NET Frameworkって?(2)

大きな特徴

・どの言語も同じ実行環境で動く

・開発には基本クラスライブラリ (BCL)を用いる

(=プログラミングのための部品の集合)

・言語間に互換性がある

(データ型が同じ、C#で作ったクラスをVB.NETで使える等)

Page 8: VS勉強会 .NET Framework 入門

2. .NET Frameworkって?(3)

つまり・・・

C#で開発する事も、VB.NETで開発する

事も、.NET Framework(のBCL)で開発

していると言う意味では同じ事

Page 9: VS勉強会 .NET Framework 入門

2. .NET Frameworkって?(4)

「VBでxxしたいけどサンプルないなあ」

→「C#ならあった!」

「VBのあの機能をC#でも使えたらなあ」

→「C#でも使えた!」

・・・という事が結構あります

Page 10: VS勉強会 .NET Framework 入門

3. 覚えておくと便利な機能

独断と偏見で選んだ重要機能たち

3-1. null許容型

3-2. ジェネリック コレクション

3-3. LINQ

Page 11: VS勉強会 .NET Framework 入門

null許容型とは?

.NETでは数値型や日付型のように、null(VBでは

Nothing)の代入できないデータ型がある

このnullの代入できない型にnullが代入できる(か

のように扱う)ようにするのがnull許容型

(※.NET Framework2.0以降)

3-1. null許容型(1)

Page 12: VS勉強会 .NET Framework 入門

3-1. null許容型(2)

補足:nullの入らない型

.NETのデータ型(変数の型)は、以下の2種類に大

別することができる

・値型 :数値、日付など。

実体を保持し、nullが入らない。

・参照型:文字列、GUIコントロールなど。

参照を保持し、nullが入る。

Page 13: VS勉強会 .NET Framework 入門

3-1. null許容型(3)

null許容型を使う主な場面

外部から取得したデータを変数に格納したいが、必ず値が取得できるとは限らないとき

・ユーザーに入力してもらう画面項目が省略可能な場合

・データベース上のnull許可項目から値を取得する場合

Page 14: VS勉強会 .NET Framework 入門

3-1. null許容型(4)

null許容型を宣言する

C#:int? number;Nullable<int> number;

VB.NET:Dim number As Integer? 'VB2008以降

Dim number As Nullable(Of Integer)

Page 15: VS勉強会 .NET Framework 入門

3-1. null許容型(5)

null許容型を使う(C#)

int? number = 1;number = number + 1 //2number = nullif (number == null){ //true

number = number + 1 //null}

Page 16: VS勉強会 .NET Framework 入門

3-1. null許容型(6)

null許容型を使う(VB.NET)

Dim number As Integer? = 1;number = number + 1 //2number = NothingIf number Is Nothing Then //True

number = number + 1 //NothingEnd If

Page 17: VS勉強会 .NET Framework 入門

3-1. null許容型(7)

null許容型の注意点

・紹介した使い方は言語のサポートありきの構文

 →純粋にNullable構造体の機能だけで処理を

   書くのは少し面倒

・あくまで元々の型(数値や日付)とは別の型

 →代入の際はキャストで変換するか、

   Valueプロパティで元々の値を取得する

Page 18: VS勉強会 .NET Framework 入門

3-2. ジェネリックコレクション(1)

ジェネリックコレクションとは?(1)

なんからのコレクション(=値の集合)を表現する場

合、よく使われるのが配列変数

しかし、(C#やVBの)配列変数は固定長なので時と

して不便・大き目の配列にすると、有効な値の範囲を管理するのが手間・必要なサイズが増える度に作り直すとパフォーマンスが低下

Page 19: VS勉強会 .NET Framework 入門

3-2. ジェネリックコレクション(2)

ジェネリックコレクションとは?(2)

そこで、.NET Framework 1.1以前では、可変長な

コレクションとして、ArrayListなどが使われていた

しかし、ArrayListはObject型でしか要素を扱えず、

やはり不便だった・値を取得する際に毎回キャストする手間がかかる・何でもかんでも入るのでバグの発生や保守性低下の恐れ

Page 20: VS勉強会 .NET Framework 入門

3-2. ジェネリックコレクション(3)

ジェネリックコレクションとは?(3)

そんな中.NET Framework 2.0で登場したのが、

List<T>などのジェネリックコレクション

ジェネリックコレクションは、可変長かつ実際に格納する型を明示できる→実行速度などを気にする必要がなければ、配列ではなくこち

らを使っておく方が便利

Page 21: VS勉強会 .NET Framework 入門

3-2. ジェネリックコレクション(4)

主なジェネリックコレクション

List<T> :配列と同じように扱える

Dictionary<T> :キーと値のペアを保存する

 (いわゆる連想配列、辞書、ハッシュ)

他にもキューやスタックなどの一般的なデータ構造が揃っている

Page 22: VS勉強会 .NET Framework 入門

3-2. ジェネリックコレクション(5)

ジェネリックコレクションを使う(C#)

List<string> list = new List<string>();list.Add("a"); list.Add("b"); for (int i = 0; i < list.Count; i++){

Console.WriteLine("{0}", list[i].ToUpper()) //A, B

}

Page 23: VS勉強会 .NET Framework 入門

3-2. ジェネリックコレクション(6)

ジェネリックコレクションを使う(VB.NET)

Dim list As List(Of String) = New List(Of String)list.Add("a")list.Add("b")For i As Integer 0 To list.Count-1

Console.WriteLine("{0}", list(i).ToUpper()) //A, B

Next

Page 24: VS勉強会 .NET Framework 入門

LINQとは?

正式名称は「統合言語クエリ」

データの集合(データソース)から特定のデータを抜

き出したり、加工したりするための仕組み

コレクションの操作やデータベース問い合わせに使用できる

(※.NET Framework3.5以降)

3-3. LINQ(1)

Page 25: VS勉強会 .NET Framework 入門

LINQの対象

配列やジェネリックコレクションでも使用できる

他にも、

・XML用の「LINQ to XML」・DB用の「ADO.NET Entity Framework」

などがある

3-3. LINQ(2)

Page 26: VS勉強会 .NET Framework 入門

LINQの特徴(1)

LINQの機能は、対象となるオブジェクトのメソッド

として提供されている

また、メソッドは統一的に作られているので、異なるデータソースを同じ様に扱うことが出来る

3-3. LINQ(3)

Page 27: VS勉強会 .NET Framework 入門

LINQの特徴(2)

従来はループを用いて書く必要があった処理を、

メソッド1つで実現できる

LINQのメソッドの例:

・Where():特定の条件を満たす要素を抽出する

・All():全ての要素が特定の条件を満たすかどうか調べる

・Select():各要素を別の値に加工する

3-3. LINQ(4)

Page 28: VS勉強会 .NET Framework 入門

LINQを使う(C#)

List<int> list = new List<int>{1, 2, 3, 4, 5, 6};IEnumerable<int> query

= list.Where(x=>x%2 == 0);foreach (var number in query ){

Console.WriteLine("{0}", number) //2 ,4, 6}

3-3. LINQ(5)

Page 29: VS勉強会 .NET Framework 入門

補足:条件の記述について(1)

List<int> list = new List<int>{1, 2, 3, 4, 5, 6};IEnumerable<int> query

= list.Where(x=>x%2 == 0);foreach (var number in query ){

Console.WriteLine("{0}", number) //2 ,4, 6}

3-3. LINQ(6)

Page 30: VS勉強会 .NET Framework 入門

補足:条件の記述について(2)

IEnumerable<int> query = list.Where(isEven);

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~bool isEven(int x){

return x % 2 == 0}

3-3. LINQ(7)

Page 31: VS勉強会 .NET Framework 入門

LINQを使う(VB.NET)

Dim list As List(Of Integer) = New List(Of Integer) From {1, 2, 3, 4, 5, 6};

IEnumerable(Of Integer) query= list.Where(Function(x)=>x mod 2 = 0);

For Each number As Integer In listConsole.WriteLine("{0}", number ) '2 ,4, 6

Next

3-3. LINQ(8)

Page 32: VS勉強会 .NET Framework 入門

クエリ式

言語が対応していればSQLライクに記述できる

C#:List<int> list = new List<int>{1, 2, 3, 4, 5, 6};var query = from number in list where number % 2 == 0 select number; //2 ,4, 6

3-3. LINQ(9)

Page 33: VS勉強会 .NET Framework 入門

LINQの注意点(1)

・LINQの処理は遅延実行される

 →抽出や加工の結果が実際に必要になった

   タイミングで処理される(foreachで使用した時など)

3-3. LINQ(10)

Page 34: VS勉強会 .NET Framework 入門

LINQの注意点(1)

List<int> list = new List<int>{1, 2, 3, 4, 5, 6};IEnumerable<int> query

= list.Where(x=>x%2 == 0);list[0] = 0; //0, 2, 3, 4, 5, 6foreach (var number in query )

Console.WriteLine("{0}", number) //0, 2 ,4, 6

3-3. LINQ(11)

Page 35: VS勉強会 .NET Framework 入門

LINQの注意点(2)

・クエリ式はSQLと互換性があるわけではない

 →あくまでそれっぽく書けるだけ

   特にJOINやサブクエリ(みたいな書き方)は

   SQLよりややこしい(主観)

3-3. LINQ(12)

Page 36: VS勉強会 .NET Framework 入門

4. さいごに(1)

今回ご紹介した機能やその使い方は、

.NET Frameworkの本当に極一部、取っ掛かりの

部分にすぎません

(LINQに関しては特に!)

便利な機能はたくさん他にも沢山あります!

Page 37: VS勉強会 .NET Framework 入門

4. さいごに(2)

困った時はとにかく・・・

MSDNライブラリを読みましょう!!

http://msdn.microsoft.com/library/default.aspx

・日本語!

・全バージョンをカバー!

・豊富なサンプル!

Page 38: VS勉強会 .NET Framework 入門

.NET Framework入門

ご清聴ありがとうございました