fc2ブログ

青柳 臣一 ブログ(趣味系)

[VB10] Visual Basic 2010 の新機能

VB10 (VB2010 って言った方がいいんだろうか?) を追っかけてる人には何を今さらっていう話題なんでしょうが、ついさっき知って軽くショックを受けたのでw

VB10 の新機能が What's New in Visual Basic 2010 にあります。

最初の自動実装プロパティは C# に以前からある機能に似てますね。
ただ、C# と違うのは

Public Property Name As String

とすると自動的に _Name という Private なフィールドが作られるそうです。
もちろんコード内で _Name にアクセスすることもできるし、デバッガでウォッチするようなこともできるそうです。ただし、インテリセンスには出ないようになってるとのこと。
C# では予測できない長い名前が生成されるのに比べると考え方がずいぶん違いますね。

続いて コレクション・イニシャライザ

Dim winterMonths = {"December", "January", "February"}

こんな風に書けると。
C# とほとんど同じですね。というか、VB で { } を使うのってどうなの?という気がしちゃうんですがw
それよりも、Dim が C# の var とほとんど同じ意味だってことがいまだになじまないなぁ。
(上記は As Object() ではなく、きちんと型推論されて As String() になります)

そして暗黙的な行継続。ここ の中ほどの “Implicit Line Continuation”。
ついに VB でも “_” 無しで改行できるようになるんですね。
が、細かいルールがあるようで表になってます。
”_” 無しで改行できるのは

  • カンマ “,” の後。
  • “(“ の後、”)” の前。
  • “{“ の後、”}” の前。
  • XML リテラルの中の “<%=“ の後、”%>” の前。
  • 文字列結合演算子の “&” の後。
  • 代入演算子 (=, &=, +=, <<= など) の後。
  • 二項演算子 (+, ?, Mod, <, <=, And, AndAlso など) の後。
  • “Is” と “IsNot” の後。
  • メンバ名の “.” の後、メンバ名の前。ただし、With ステートメントや初期化リストの中では “_” が必要とかなんとか。
  • XML リテラルの中の “.”、”.@”、”…” の後。ただし、With キーワードの中では “_” が必要とかなんとか。
  • 属性を示す “<” の後、”>” の前。ただし、アセンブリレベルとモジュールレベルの属性のときは “_” が必要。
  • LINQ の “From”、”Order By”、”Select” などの前後。ただし、”Order By” などを途中で改行してはダメ。
  • For Each ステートメントの In の後。
  • コレクション・イニシャライザの From キーワードの後。

だそうです。
うーん、なんと言うか、努力賞ものですね。
まぁ、「ここなら改行して良さそう」 と思えるようなところでは改行して大丈夫みたいなので使う分には混乱は少なそうではありますが。

それと 複数行のラムダ式

Dim increment1 = Function(x) x + 1
Dim increment2 = Function(x)
                     Return x + 2
                 End Function
Console.WriteLine((Function(num As Integer) num + 1)(5))

(複数行なのは 2つ目の increment2 だけですが)
この複数行のラムダ式のときの Function . . . End Function は普通の Function . . . End Function と同じように扱われるから行末に “_” は要らないのかな?
いや、実はラムダ式は式だから行末に “_” が必要だけど、上記の暗黙的な行継続によって “_” を省略できてるだけってことなのかな?

他にも新機能はあるようですが省略。

コメント

いただいていいでしょうか?

>”_” 無しで改行できるのは
ここからの下り。
わんくま勉強会用にいただいていいでしょうか?
自己流で訳そうと思っていたのですが簡潔にまとまっているので・・・

> わんくま勉強会用にいただいていいでしょうか?

もちろん、構いませんよ。
いいかげんな要約ですが、ご自由にお使いください。

あと、行継続について↓にも書きましたので、よろしかったそちらもどうぞ。
http://shinichiaoyagi.blog25.fc2.com/blog-entry-173.html

  • 2009/06/18(木) 09:33:56 |
  • URL |
  • 青柳 臣一 #-
  • [ 編集]

わんくまは詐欺団です。
気をつけて。

  • 2010/01/11(月) 19:12:21 |
  • URL |
  • ぼく #-
  • [ 編集]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://shinichiaoyagi.blog25.fc2.com/tb.php/171-e1860ac6
この記事にトラックバックする(FC2ブログユーザー)

VB10の複数行のラムダ式

VB10の複数行のラムダ式

  • 2009/06/18(木) 06:11:04 |
  • まさるblog

[C#][VB] VBでのラムダ式 (.net framework 3.5)

DevExpressのブログにてポストされていたので 今更ながら、VBでのラムダの書き方をメモメモ。 C#と大きく違う点は、単一の式しかかけない事。 Imports System Imports System.Collections.Generic Namespace Test Public Class Sample Public Shared Sub Main() Dim names A

  • 2009/10/26(月) 13:58:15 |
  • いろいろ備忘録日記

-

管理人の承認後に表示されます

  • 2010/01/04(月) 12:16:42 |

【Love VB】 レッツWPF M-V-VM モデル with Visual Basic 2010 (VB10)

【Love VB】 レッツWPF M-V-VM モデル with Visual Basic 2010 (VB10)

  • 2010/01/04(月) 15:09:57 |
  • PCだいちゅき