印刷用ページ       送信     
クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Dynamic Programming in C# and Visual Basic

このチュートリアルでは、 C# 4.0 と Visual Basic 10.0 の新しい機能である Dynamic によって、ホスト言語で動的ディスパッチが提供されることを予想したオブジェクトモデルの自然な使用がどのように実現されるかについて説明します。この機能のデモは、 Python 言語用に記述されたライブラリにアクセスする IronPython シナリオ に従ってい ます。独自のスクリプトをホストし、アプリケーションのオブジェクトモデルにアクセスする高度な IronPython シナリオは、このチュートリアルでは扱いません。

:

  • Office の使用は、プログラミングのチュートリアルに含まれています。
  • Silverlight Visual Studio 2010 の今後のプレビューリリースで紹介されます。

前提条件 :

この IronPython シナリオでは、次のリソースを使用します。

IronPython シナリオ

このチュートリアルでは、 IronPython ライブラリに C# からアクセスする方法を示します。

IronPython 相互運用プロジェクトをセットアップするには

1.    Visual Studio 2010 を起動し、新しい C# コンソールアプリケーションを作成します。

2.    IronPython.dll 、 IronPython.Modules.dll 、および Microsoft.Scripting.dll への 参照を追加します ( これらのファイルは、すべて .NET 4.0 Beta 1 フォルダの %PROGRAMFILES%\IronPython 2.6 CTP に あり ます ) 。

3.    Python Lib フォルダをプロジェクトの bin\Debug フォルダにコピーします ( たとえば、 .NET 4.0 Beta 1\Lib フォルダの %PROGRAMFILES%\IronPython 2.6 CTP を C:\IronPythonProject\bin\Debug フォルダにコピーします ) 。

4.    次の using ステートメントを Program.cs/Module1.vb ファイルの先頭に追加します。

using IronPython.Hosting;

using Microsoft.Scripting.Hosting;

Imports IronPython.Hosting

Imports Microsoft.Scripting.Hosting

C#/VB の IronPython モジュールをインポートするには

5.    ホストされる IronPython 環境を表す新しい ScriptRuntime を作成するコードを追加します。この ScriptRuntime を使用して Python コードを読み込むことができます。ここでは、 shuffle 関数を含むライブラリモジュール random を読み込みます。

次のコードを Main メソッドに追加します。

Console.WriteLine("Loading random.py...");

ScriptRuntime py = Python.CreateRuntime();

dynamic random = py.UseFile("random.py");

Console.WriteLine("random.py loaded!");

var items = Enumerable.Range(1, 7).ToArray();

Console.WriteLine("Loading random.py...")

Dim py As ScriptRuntime = Python.CreateRuntime()

Dim random As Object = py.UseFile("random.py")

Console.WriteLine("random.py loaded!")

Dim items = Enumerable.Range(1, 7).ToArray()

6.    次のコードを Main メソッドの末尾に追加します。このコードは、 items 配列のランダムな順序を生成する shuffle 関数を繰り返し呼び出します。

for (int s = 0; s < 10000; s++)

{

    random.shuffle(items);

    Console.Write("Sequence {0}: ", s);

    foreach (int i in items)

    {

        Console.Write("{0} ", i);

    }

    Console.WriteLine();

}

For s As Integer = 1 To 10000

    random.shuffle(items)

    Console.Write("Sequence {0}: ", s)

    For Each i In items

        Console.Write("{0} ", i)

    Next

    Console.WriteLine()

Next

7.    アプリケーションをビルドして実行します。 Python の random モジュールが 1 ~ 7 の数値をランダムな順序で 10,000 回繰り返しシャッフルします。 Python ランタイムの初回の初期化時に起動コストが発生しますが、以降のループの反復は非常に高速で実行されます。

Page view tracker