投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/5/10 05:16:26
> #FっていうMSが作った言語があるんですか?全然知りませんでした…
#F ではなく、F# です。2008 用もダウンロード可能です。

http://msdn.microsoft.com/ja-jp/magazine/cc164244.aspx
http://ja.wikipedia.org/wiki/F_Sharp


>>コンストラクタの名前がクラス毎に異なるので、ちょっと面倒。
> 何が面倒かが少し不明ですが、
VB 2008 のコード エディタでは、左上のコンボボックス(クラス名ボックス)から
該当するクラスを選ぶと、右上のコンボボックス(メソッド名ボックス)には
最初にコンストラクタ(New)が表示されますよね。

Class ZZZ
    Sub aaa()   'aaa メソッド 
    End Sub

    Sub New()   'コンストラクタ 
    End Sub

    Sub [New]() 'New メソッド 
    End Sub

    Sub bbb()   'bbb メソッド 
    End Sub
End Class


たとえこのように書いたとしても、右上のコンボボックスには、
コンストラクタ(とファイナライザ)が最初に表示され、その後に
メソッドがアルファベット順に aaa, bbb, New と表示されます。

コンストラクタは自動的に先頭に表示されるため、容易に見つけ出せます。
(たとえ New メソッドがあったとしても、それと混同すること無く見つけ出せます)


ところが C# のエディタはそうではなく、右上のコンボボックスは、
すべてアルファベット順に表示される仕様です。しかもコンストラクタの名前は、
VB では "New" 固定ですが、C# ではクラスごとに異なる名前になっているため、
右上のコンボボックスるから探すのは (VB よりも)少しだけ面倒なのです。


> 僕はクラスの先頭に書くので探すのも簡単だし、
通常は 1ファイルに1クラスなので、それで十分探せるのですが、
クラス内にさらに private class を保有している場合のように、
1 ファイルに複数のクラスが宣言されていると、その宣言箇所を探すために
コード上部の 2 つのコンボボックスに頼ることになります。

ところが、左上だけではクラスの宣言部にジャンプしてくれませんし、
右上のコンボボックスは、先述の理由により、VB 版よりも使い勝手に
劣るため、コンストラクタの位置を見つけ出しにくくなっているのです。

その点で、「ちょっとだけ」C# 版は使いにくいな…と思っています。ついでに言えば
Partial Class を利用した場合の動作も、VB 版の方が分かりやすいと思います。

そのかわり C# では、[表示]-[コード定義ウィンドウ] という強力な機能が
使えるのですけれどね。(VB では、このウィンドウを開いても何も表示されません)


> VB2010に入れてほしい機能という内容で
それは無理だと思いますよ。

修正量が少なく、かつ、実装効果の高い機能ならば反映されるかもしれませんが、
VS10 の機能はほぼ確定しているので、クリティカルな修正でない限り、基本的には
大きな変更や追加機能は、2010 には入らないでしょう。たとえば下記もその一つです。
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=431200

しかしその次の VS11 であれば、今ならまだ要望が入り込む余地があるかと思います。
実装予定の機能はすでに幾つか候補が挙げられていますが、こちらはまだ検討段階ですし。
(もしくはその次の VS12 ですかね)


でもまぁ、個人的に将来的に採り入れて欲しい機能は幾つかあります。

たとえば、"Option Strict" のブロック版とか。
たとえば、普段は Option Strict On にして開発したいけれど、一時的に
レイトバインドで記述したいような時に、「Strict~End Strict」で囲まれた
ブロックの間でのみ、レイトバインドを許可するようにするとか。

あと、C# にはあるけれど VB には未実装の機能の中で羨ましいのが、
複数行コメント、逐次的文字列リテラル、yield とか。

VB の掲示板なのに、C# 話を持ち出してしまってすみません。


>(VBにもありましたよね。今はC#@苦戦中なので)
> 私もC#使っているのでその部分とごっちゃになっているのかもしれません。
C# を使うと、VB との違いに悩まされる事もしばしばありますね。
(個人的には、特に LINQ 構文の違いに悩まされたりします)