スライド 1

Similar documents
スライド 1

C# の現在・過去・未来

.NET Framework 4.0 世代の Expression Trees

10-C.._241_266_.Z

Microsoft PowerPoint ppt

Microsoft認定資格問題集(70-483_demo)

JAVA とテンプレート

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel


スライド 1

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

. IDE JIVE[1][] Eclipse Java ( 1) Java Platform Debugger Architecture [5] 3. Eclipse GUI JIVE 3.1 Eclipse ( ) 1 JIVE Java [3] IDE c 016 Information Pr

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

PowerPoint Presentation

Prog2_12th

tkk0408nari

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

プログラミング基礎I(再)

ALG ppt

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で

Seasar.NET入門

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

ICONファイルフォーマット

untitled

デジタル表現論・第4回

WPF アプリケーションの 多言語切替

C#の基本2 ~プログラムの制御構造~

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

1_cover

とても使いやすい Boost の serialization

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

平成 29 年度卒業研究 初心者のためのゲームプログラミング用 教材の開発 函館工業高等専門学校生産システム工学科情報コース 5 年 25 番細見政央指導教員東海林智也

DVIOUT-exer

MVP for VB が語る C# 入門

Java (7) Lesson = (1) 1 m 3 /s m 2 5 m 2 4 m 2 1 m 3 m 1 m 0.5 m 3 /ms 0.3 m 3 /ms 0.6 m 3 /ms 1 1 3

Java (5) 1 Lesson 3: x 2 +4x +5 f(x) =x 2 +4x +5 x f(10) x Java , 3.0,..., 10.0, 1.0, 2.0,... flow rate (m**3/s) "flow

プロセス間通信

: : : TSTank 2

WPF アプリケーションの 多言語切替

目的 泡立ち法を例に Comparableインターフェイスの実装 抽象クラスの利用 型パラメタの利用 比較 入替 の回数を計測

JavaプログラミングⅠ

スライド 1

IT プロジェクト

ALG2012-A.ppt

VB.NETコーディング標準


class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

2. データ構造ヒープに保存するデータは 番号付けられて保存される 従って リスト L として保存することとする 3. アルゴリズム 3.1. 要素の追加新しい要素の追加は リストの終端に置くことで開始する つまり 最下層の一番右 または新たに最下層を生成してその一番左となる この後 この要素を正し

IT / KPI IT WF(XOML),BPEL WSDL XSD IT XSD WSDL BPEL XOML XML

基本情報STEP UP演習Java対策

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

java_servlet2_見本

10K

C#の基本

1. はじめに 二分木ヒープ 様々なアルゴリズムにおいて ある要素の集合またはリストから 最小 な要素を取り 出す必要がある そのような場合に使われる標準的データ構造が二分木ヒープ (binary heap) である あるオブジェクトO を考える そのオブジェクトは ラベル O. label と値

3 Java 3.1 Hello World! Hello World public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World");

JavaプログラミングⅠ

JavaプログラミングⅠ

TOEIC

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

DAOの利用

ウィンドウ操作 応用

226

6-1

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

...Visual Studio 2015\Projects\MyHomePage 用サンプル \Database(Access2)\Database(Access2)\MainForm.cs 2 れを含めておかないと Database への更新がきかない oadp.fill(dtbl); dgvk

スライド 1

ALG2012-C.ppt

JavaプログラミングⅠ

Gartner Day

d_appendixB-asp10appdev.indd

システム操作インターフェイス最適化によるテスト自動化ROI向上

目次 概要.. 3 演習 1: 静的 PARALLEL ヘルパークラスを使用した既存のアルゴリズムの並列化 6 タスク 1 実行時間の長いサービスを並列化する 6 演習 2: 並列タスクの作成と実行. 23 タスク 1 並列タスクを特別な設定なしに実行する 23 タスク 2 Wait() メソッドと

ValueHolder... 9 Customer.java Oracle TopLink 10g(10.1.3) È Volume3 2

Program Design (プログラム設計)

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators

Abstract Kinect for Windows RGB Kinect for Windows v Kinect for Windows v2

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

PowerPoint プレゼンテーション

Microsoft Word - Android_SQLite講座_画面800×1280

untitled

JavaScript の使い方

Visual Studio Do-It-Yourself 第 9 回ユーザーコントロール 第 6 回のリソースから第 8 回のテンプレートで さまざまな方法でコントロールをカスタマズできるこ とを学びました 今回のテーマであるユーザーコントロールは 既存の一つのコントロールをカスタマ ズするのではな

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

PowerPoint プレゼンテーション

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

SharpShooter Reports.WPF 基本的な使い方 Last modified on: November 15, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されます

ハッシュテーブル

JavaプログラミングⅠ

ファイル操作

1.1 (1) (2) (3) (4) 2

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

ユニット・テストの概要

グラフィックス

基礎計算機演習 実習課題No6

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

メディプロ1 Javaプログラミング補足資料.ppt

Transcription:

R 流 Visual Studio 2008 C# の 驚異的な生産性を知る 2008 年 03 月 29 日 R 田中一郎 http://blogs.wankuma.com/rti/ Microsoft MVP for Development Tools - Visual C#

アジェンダ はじめに コード比較 新機能の紹介 新機能の応用 まとめ

はじめに つい先日発売した Visual Studio 2008 多くの機能が追加された 言語仕様の大幅な変更 生産性が向上 C# を使って説明

コード比較 最初に C#3,0 の新機能を盛り込んだコードをご紹介します その後に 全く同じことを C#2.0 で実現するためのコードをご紹介します 両者の違いをご確認下さい

<DEMO>

public partial class Form3 : Form { public Form3() { InitializeComponent(); var c = new[] { new { Code = 51, Name = ぽぴ王子, Age = 18, コード比較 C#3.0 new { Code = 34, Name = R 田中一郎, Age = 18, new { Code = 111, Name = "IIJIMAS. Age = 20 ; var q = from x in c where x.age == 18 orderby x.name select new { Code = x.code, Name = x.name ; listbox.datasource = q.toarray(); listbox.valuemember = "Code"; listbox.displaymember = "Name"; listbox.selectedvaluechanged += (sender, e) => Value = listbox.selectedvalue; public object Value { get; private set;

public class Member { private int _Code; public int Code { get { return this._code; set { this._code = value; コード比較 C#2.0 private string _Name; public string Name { get { return this._name; set { this._name = value; private int? _Age; public int? Age { get { return this._age; set { this._age = value;

コード比較 C#2.0 public class Item { private int _Code; public int Code { get { return this._code; set { this._code = value; private string _Name; public string Name { get { return this._name; set { this._name = value;

public partial class Form2 : Form { public Form2() { InitializeComponent(); コード比較 C#2.0 Member popi = new Member(); popi.code = 51; popi.name = ぽぴ王子 ; popi.age = 18; Member rti = new Member(); rti.code = 34; rti.name = R 田中一郎 ; rti.age = 18; Member iijimas = new Member(); iijimas.code = 111; iijimas.name = "IIJIMAS"; iijimas.age = 20; Member[] c = new Member[] {popi, rti, iijimas ;

List<Item> list = new List<Item>(); foreach (Member x in c) { if (x.age == 18) { Item item = new Item(); item.code = x.code; item.name = x.name; list.add(item); list.sort( delegate(item a, Item b) { コード比較 C#2.0 return string.compare(a.name, b.name); ); listbox.datasource = list; listbox.valuemember = "Code"; listbox.displaymember = "Name"; listbox.selectedvaluechanged += delegate(object sender, EventArgs e) { Value = this.listbox.selectedvalue; ;

private object _Value; public object Value { get { return this._value; private set { this._value = Value; コード比較 C#2.0

コード比較のまとめ C#3.0の新機能を上手に使う コードの記述量が減る タイピング時間の減少 可読性の向上 バグを含みにくいコード

新機能の紹介 C#3,0 の新機能を上手に使うことで全体的なコードの記述量が減られることがわかりました では どのような新機能があるのでしょうか?

新機能の紹介 - 暗黙的型付 (Implicitly typed local variables) C#3.0 var i = 5; var s = A ; var v = GetValue(); var popi = new Member(); C#2.0 int i = 5; string s = A ; double v = GetValue(); // GetValue の戻り値の型による Member popi = new Member();

C#3.0 新機能の紹介 - 自動プロパティ (Automatic Properties) public object Value { get; private set; C#2.0 private object _Value; public object Value { get { return this._value; private set { this._value = Value;

新機能の紹介 - オブジェクト初期化子 (Object Initializers) C#3.0 var popi = new Member { Code = 51, Name = ぽぴ王子, Age = 18, C#2.0 Member popi = new Member(); popi.code = 51; popi.name = ぽぴ王子 ; popi.age = 18;

新機能の紹介 - 匿名型 (Anonymous types) C#3.0 var popi = new { Code = 51, Name = ぽぴ王子, Age = 18, C#2.0 Member popi = new Member(); popi.code = 51; popi.name = ぽぴ王子 ; popi.age = 18;

新機能の紹介 - コレクション初期化子 (Collection initializers) C#3.0 var c = new List<Member> { popi, rti, iijimas ; C#2.0 List<Member> c = new List<Member>(); c.add(popi); c.add(rti); c.add(iijimas);

新機能の紹介 - ラムダ式 (Rambda expressions) C#3.0 listbox.selectedvaluechanged += (sender, e) => Value = listbox.selectedvalue; C#2.0 listbox.selectedvaluechanged += delegate(object sender, EventArgs e) { Value = this.listbox.selectedvalue; ;

新機能の紹介 - 拡張メソッド (Extension methods) C#3.0 public static int GetByteLength(this string value) { /* 略 */ public void Hoge() { var bytelength = あいうeo.GetByteLength(); C#2.0 public static int GetByteLength(string value) { /* 略 */ public void Hoge() { var bytelength = GetByteLength( あいうeo );

新機能の紹介 - LINQ(Language Integrated Query) C#3.0 var q = from x in c where x.age == 18 orderby x.name select new { Code = x.code, Name = x.name ;

新機能の紹介 - LINQ(Language Integrated Query) C#2.0 List<Item> list = new List<Item>(); foreach (Member x in c) { if (x.age == 18) { Item item = new Item(); item.code = x.code; item.name = x.name; list.add(item); list.sort(delegate(item a, Item b) { return string.compare(a.name, b.name); );

新機能の応用 C#3,0 の新機能を上手に使うことで全体的なコードの記述量が減られることがわかりました では どのような新機能があるのでしょうか?

<DEMO>

public FormS() { InitializeComponent(); var c = new[] { /* 省略 */ ; // 最初のサンプルと同じなので省略 新機能の応用 var q1 = from x in c where x.age == 18 orderby x.name select new { Code = x.code, Name = x.name ; var q2 = c.where(x => x.age == 18).OrderBy(x => x.name).select(x => new { Code = x.code, Name = x.name ); var q3 = c. 条件 (x => x.age == 18). 整列 (x => x.name). 選択 (x => new { Code = x.code, Name = x.name );

新機能の応用 listbox1.binding(q1.toarray(), "Code", "Name"); listbox2.binding(q2.toarray(), "Code", "Name"); listbox3.binding(q3.toarray(), "Code", "Name"); public static void Binding<T>( this T x, object datasource, string valuemember, string displaymember) where T : ListControl { x.datasource = datasource; x.valuemember = valuemember; x.displaymember = displaymember;

新機能の応用 public static IEnumerable<T> 選択 <T>( this IEnumerable<T> value, Func<T, bool> func) { var r = new List<T>(); foreach(var x in value) if (func(x)) r.add(x); return r; public static IEnumerable<TR> 選択 <TS, TR>( this IEnumerable<TS> value, Func<TS, TR> func) { return value.select(x => func(x));

public static IEnumerable<TS> 整列 <TS, TK>( this IEnumerable<TS> value, Func<TS, TK> func) where TK : IComparable { var a = value.toarray(); for(var i = 0; i < a.length; ++i) { var min = i; for(var j = i + 1; j < a.length; ++j) { if (func(a[j]).compareto(func(a[min])) < 0) min = j; if (i!= min) { var t = a[min]; a[min] = a[i]; a[i] = t; return a; 新機能の応用

まとめ LINQ のための新機能 LINQ だけではない! 上手に使って生産性アップ!

ご清聴 ありがとうございました 2008 年 03 月 29 日 R 田中一郎 http://blogs.wankuma.com/rti/ Microsoft MVP for Development Tools - Visual C#