IronPython事始め

MSDN .NET APIのサンプルコードについて

IronPythonで.NETなVBやC#のコードを動かす時には、だいたいそのまま書き換える事ができます。 注意しておくのは次のような事でしょうか。

1. boolean値の扱い

C#のサンプルをみていると、truefalseが出てきますが、IronPythonではVisualBasicと同様にTrueFalseが使えます。

2. イベントハンドラの受け渡し

MSDNの.NET APIリファレンスにあるコード例では引数にイベントハンドラを指定していますが、その部分の引数は省いて、次の行で.Clickプロパティにメソッドへのリファレンスを追加しています。

オリジナルのVisualBasicコード抜粋

  ...
  Dim windowNewMenu As New ToolStripMenuItem("New", Nothing, 
                 New EventHandler(AddressOf windowNewMenu_Click))
  ...

変更後

  ...
  windowNewMenu = ToolStripMenuItem("New", None)
  windowNewMenu.Click += windowNewMenu_onclick
  ...

ただしToolStripMenuItemクラスのコンストラクタは0〜3つの引数を取ります。 無理にNoneを渡さなくともToolStripMenuItem("New")で十分です。

3. null値の取り扱い

いくつかの実現方法があるようですが、まったく同じ値を取り出す方法としてSystem.IntPtr.Zeroを使う方法が以前からあるようです。

先ほどのSystem.Windwos.Forms.ToolStripItemクラスのコード例には、VisualBasicでNothing、C#でnullを渡しています。 IronPythonで試したところNoneで期待通りの動きをしています。

もしAPIで明示的にIntPtr型のnull値を渡す必要がある場合には、System.IntPtr.Zeroが使えるはずですが、評価した場合にIntPtrを想定していない場合にどんな動きをするのかわからないので、まずはNoneを試すのが良さそうです。


Created: 2010-03-11, Last modified: 2010-03-19

2009,2010 © Yasuhiro ABE <yasu@yasundial.org>

Valid XHTML + RDFa RDFa it (RDF/XML)!

正当なCSSです!

Creative Commons License www.yasundial.org by Yasuhiro ABE is licensed under a Creative Commons Attribution 2.1 Japan License. Permissions beyond the scope of this license may be available at http://www.yasundial.org/info/license.html.