2007年12月24日
川俣晶の縁側ソフトウェア技術雑記total 4190 count

Visual Studio 2008 & C# 3.0を軽く慣らし運転

Written By: 川俣 晶連絡先

 Visual Studio 2008のインストールが完了しているので、ちょっと仕事を中断して慣らし運転。

インテリセンスがあっても2回書きたくないクラス名 §

 「インテリセンスがあっても2回書きたくないクラス名」の変数をvarで宣言してみる。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

class Program

{

    static void Main(string[] args)

    {

        var a = new List<List<List<List<string>>>>();

        Console.WriteLine(a.ToString());

    }

}

コレクションからコレクションを作るメソッド §

 データの塊からデータの塊を作る一種の集合演算ですね。

 2007/12/25追記 ConvertAllメソッドは.NET Framework 2.0からあるメソッドで、全く新しくありません。うっかり見落としてました! なのでこの項目は見ないでください。

 C# 2.0を使い込んで気付いた「本来あるべき正当な進化形」であれば備えているはずの機能です。string型からint型へ変換させてみます。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

class Program

{

    static void Main(string[] args)

    {

        var a = new List<string>();

        a.Add("Hello");

        a.Add("World!");

        var b = a.ConvertAll<int>(delegate(string s)

        {

            return s.Length;

        });

        Console.WriteLine(b[0]);

        Console.WriteLine(b[1]);

    }

}

コレクションの最大値 §

 ループしないで最大値が得られるわけですね。

 しかも最大値の根拠はその場で匿名メソッドで与えられます。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

class Program

{

    static void Main(string[] args)

    {

        var a = new List<string>();

        a.Add("もんた");

        a.Add("まーっくす!");

        var b = a.Max(delegate(string x)

        {

            return x.Length;

        });

        Console.WriteLine(b);

    }

}

ラムダ式も使おう §

 もう、めんどくさい匿名メソッドの書式とはバイバイね。

 上のソースをラムダ式に書き換え!

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

class Program

{

    static void Main(string[] args)

    {

        var a = new List<string>();

        a.Add("もんた");

        a.Add("まーっくす!");

        var b = a.Max(x => x.Length);

        Console.WriteLine(b);

    }

}

LINQも軽く走らせてみよう §

 SQLのようなキーワードを使うので心理的抵抗感が高いが、仕掛けとしては悪くないLINQも軽く走らせてみよう。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

class Program

{

    static void Main(string[] args)

    {

        var a = new List<string>();

        a.Add("ぺるっこらぶりん。くるくるLinqる");

        a.Add("ぷぷるおふ");

        a.Add("てくまくまやこん");

        var numQuery =

            from n in a

            where n.Contains("Linq")

            select n;

        foreach( string s in numQuery ) Console.WriteLine(s);

    }

}

 きりがないので、今日はここまで!

 もうちょっと目先の用事が片付いたら、C# 3.0で本格的にコードを書き始めましょう。

感想 §

 最初、なんじゃこりゃ~と思ったC# 3.0ですが。

 いろいろ面倒な処理をずっと簡潔に書けるのは素直に長所です。こうして慣らし運転として小さなサンプルソースを書いてみても、var, ラムダ式, LINQ等が持つ、読み書きする文字数の低減効果は素晴らしいですね。

 やはり、書くときも読むときも、文字は少ない方が楽です。(その意見に賛成できない勤勉な奴は、同族ではない)

 しかも、型の厳密さは失われていません。変数は全部Variant型扱い……といった乱暴な方法で文字数を減らしている訳ではありません。

 ただ、ここまで来るともう、C#を「C風の構文を持った言語」と見なすことはできませんね。おそらく、Cの知識だけでソースを見て何となくムードを掴むことすら不可能な領域に突入してしまったと思います。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2008年
01月
05日
Vista Sidebar GadgetのSystem.Shell.ItemオブジェクトでZIPフォルダを処理させない方法
3days 0 count
total 2964 count
【技術雑記】の前のコンテンツ
2007年
10月
03日
Visual Studio 2005で1行が長いテキストを横スクロール無しで編集する方法
3days 0 count
total 5151 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20071224133959
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.