ゆるふわで雑な日記

Microsoft系の技術情報を中心にゆるふわに綴っていく予定です

C#er meet VB(こなみかん&駄文な羅列)

愚痴に近い何かになりそうな予感しかしませんが、仕事でよくVBを書く機会に遭遇するので、戸惑いと文句を備忘録的に書いてみる(よくあるやつ)

  1. Dimが通常宣言と型推論を兼ねてて何が何だかわからない。(VB派の方、何が正解ですか?Dim i As Integer = 0 or Dim i = 0 もっとわからないのは Dim h As New Hoge() or Dim h = Hoge())
  2. NameSpaceがPropertiesに隠蔽されてて闇(隠蔽されてるのを書いても無視されて更に闇)
  3. using ImportsがPropertiesに隠蔽されてて…以下略
  4. Iteratorが使えない!と思っていたらVS2012(Framework4.5)からMethodやPropertyだけでなくラムダ式でも使えるようになった…う、うらやましくなんか!!
  5. ラムダ式型推論ができるが、そもそも宣言が冗長
  6. RaiseEventはnullチェックとかしなくていい
  7. そもそもnullがNothing
  8. a Is bで参照の等価判定
  9. 代入も比較も「=」演算子を使うので何が何だか…
  10. 代入は文(式ではない)ので値を返さない
  11. using Importsにstatic class Moduleが指定できる(C#6.0より対応)あ!!VBなら某Linq to BigQueryの冗長さも一足先に解放(VBラムダ式がそもそも冗長)
  12. volatile is どこ? = ない(lock SyncLockで代用する)
  13. 整数型同士の除算の結果が浮動小数点型(double)になる(\演算子で除算するとC#と同じ結果(切捨て))
  14. AnonymousTypeの要素にKeyが指定でき、自動実装される値の等価とGetHushCodeに考慮される(Keyの等価が値の等価で、KeyからHushCodeが生成される)これは少しうらやましい
  15. コンストラクタがSub New()!
  16. コンストラクタチェーンで呼び出す他のコンストラクタの呼び出しタイミングが自由
  17. PropertyにIndexersみたいに添字が指定できる

他はよくわかりませんが…あ! Catch Whenとかもあったな…

まあ、よくわからんのですが、何とかやってますという話。