2012年04月04日

VB vs C# コンバート

VB と C# では、言語仕様の関係から、必ずしも同等のコードを記述できないケースがある。
以下、現状、把握できているケース。

◆VBの引数付きプロパティは、C#に変換できない。
C#ではコレクションを返し、呼び出し側でハンドリングする事を想定していると思われる。

cf.
http://ufcpp.net/study/csharp/oo_property.html#indexed


◆VBのオプショナル引数を関数は、C#に変換できない。
VisualStudio2008(.Net3.5)までは、C#でオプショナル引数が使えない。(C# 3.0の仕様)
この為、オーバーロード関数などで対応する必要あり。
尚、VisualStudio2010(.Net4)からは、使用可能。(C# 4.0の仕様)

cf.
http://ufcpp.net/study/csharp/sp4_optional.html#optional

※その他、各言語間のキーワード比較は以下を参照。
http://msdn.microsoft.com/ja-jp/library/zwkz3536.aspx
http://dobon.net/vb/dotnet/vb2cs/vb2cstable.html
posted by rocknfields at 17:47| .Netコーディング (C#, VB etc)

BitMaskをenum定義する

EnumにFlags属性を付与すると、Bitデータとして定義する事ができ、Enumメンバーをビット演算やビットマスクに使用可能となる。

== C# =========================

[Flags]
public enum BitTest
{
LSB = 0x00,
2bit = 0x01,
3bit = 0x02,
4bit = 0x04,
5bit = 0x08,
:
}

== VB =========================

<Flags()> _
Public Enum BitTest
LSB = &H0
2bit = &H1
3bit = &H2
4bit = &H4,
5bit = &H8,
:
End Enum

cf.
http://www.atmarkit.co.jp/fdotnet/dotnettips/1052enumflags/enumflags.html
http://msdn.microsoft.com/ja-jp/library/cc138362.aspx
posted by rocknfields at 17:22| .Netコーディング (C#, VB etc)