Differences between revisions 8 and 9

Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:

== C# tips ==
いつか別ペイジにします

=== リフレクション ===

==== コンストラクタの呼び方 ====
たとえば、Base <- Derived という派生関係があったとして、Derivedのインスタンスをランタイムで作製するには、
{{{
using System;
//...
Base base = (Base)Activator.CreateInstance(typeof(Derived));
}}}
もちろん、コンパイルタイムにDerivedがわかっていれば良いのだけれど、ユーザー入力を元にインスタンシエイトするクラスが変わるときにはとても便利。

.NET Framework / CLI

CLI (Common Language Infrastructure) および.NET FrameworkMonoDotGNU Portable .NET、そしてCLI用の言語C#C++/CLIIronPythonなどの話。


C# tips

いつか別ペイジにします

リフレクション

コンストラクタの呼び方

たとえば、Base <- Derived という派生関係があったとして、Derivedのインスタンスをランタイムで作製するには、

using System;
//...
Base base = (Base)Activator.CreateInstance(typeof(Derived));

もちろん、コンパイルタイムにDerivedがわかっていれば良いのだけれど、ユーザー入力を元にインスタンシエイトするクラスが変わるときにはとても便利。

ヘルプ

Mono でプログラミングしているとMSDNが手元にない状態になるので、ここからみましょう。

CLIでプログラムを組んでいて一番困るのは、Dispose関連でしょうか。 Disposeをどのように実装すべきかの指針はこちらが参考になりそうです。


環境

CLI環境 (という言葉がどうなのかは置いておいて) は.NET Frameworkだけではないですよ。こちらはともにフリーの環境です。

Mono

  • Mono Project による、CLI環境

  • Novellがサポートしているそうな。
  • 主な対応言語は
    • C# まあ、もちろん
    • Java、Boo (静的型付けのPythonみたい)、Nemerle、VB、Python、Oberon、PHP、Object Pascal が大きく書いてある
    • マイナーどころでは、#Smalltalk、DeltaForth、DotLisp

Mono 感想

(gblog から転載)

Mono をインストールしてみました。Monoって言ってもいろいろありますが、いわゆる、.NET Framework 互換環境の Mono です。

から1.2.6を落としてきいの、インストールしいので、まったく問題なく動きます。 公式サイトのチュートリアルをやってますが、いい感じですね。 チュートリアルでは、プログラムの実行は

mono hello.exe

と書けと書いてますが、HelloWorld程度なら、Gtk# を使わないものはそのまま

hello.exe

で動くみたい。 さて、IDEはどれがいいのだろう。

SharpDevelop

Mono用にIDEとして、SharpDevelop 2.2 を落としてきました。

これはすごい。UIは VisualStudio 以外の何者でもない。VisualStudio を使い慣れた人なら、何の問題もなく開発できるでしょう。むしろ、フォームのデザイナ・コードの切り替えがタブになっているので、逆に使いやすいともいえます。「おぉぉ!」という感嘆の声が止まりませんでした。

日本語入力も問題なさそう。ソースコードに日本語を含めると、UTF-8で保存しますか、と聞かれるので yes と答えておけば、問題なく表示された。デバッグも出来るし、これさえあればC#での開発は十分、という感じ。

とにもかくにも、C#、Mono、Winforms を使えば、Windows、Linux、MacOS X のマルチプラットフォームで開発が簡単に、しかもフリーソフトウェアだけで出来るわけで。いい時代になったものです。


DotGNU Project

  • GNUプロジェクトが推進する DotGNU Project

  • CLI環境 DotGNU Portable .NET を作っています。


言語

CLI環境用の言語たち

Nemarle

  • 公式サイト: Nemarle Homepage

  • Wikipediaを見ていて知った言語。どうやらこんな言語らしい: (公式サイトの文言を適当に拾いました)
    • 高級言語
    • 静的型付け
    • 関数型プログラミング
    • オブジェクト指向
    • 手続き型プログラミング
    • C#風文法
    • メタプログラミング
  • .NET か Mono で動くようです。
  • あとはC#なみのインテリセンスがあれば…C#の強みってつまり、ソースコードを書くときに (VB並みの) 支援をVisualStudioから得られることだと思うのだよな。


F#


その他

wiredBeep/topics/Programming/DotNET (last edited 2009-10-18 13:53:12 by beeplex)