中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

【VB.net】と【C#.net】のコードの比較について

1.概要

【VB.net】から【C#.net】へ移行して欲しいという依頼が少なからずあります。
これに対応するためには両方の言語に対する知識が必要になります。
私としては言語に優劣はないと思っていますが
流行なのかそういう風習があります・・・
ここでは一部コードの比較を残してみようかと思います。
内容については随時追加していく予定です。

2.比較

関数の終了

Exit Sub

return;

型変換

Dim st As System.IO.Stream = DirectCast(ar.AsyncState, System.IO.Stream)

System.IO.Stream st = (System.IO.Stream)ar.AsyncState;

イベントの追加

' 宣言
Public Event TestErrEvent(ByVal data As String)
' イベントを発生させる
RaiseEvent TestErrEvent(ex.Message)
' イベント追加
AddHandler TestErrEvent, AddressOf Test_Err
' イベント発生時の処理
Private Sub Test_Err(data As String){

}

// 宣言
public delegate void TestErrEventDelegate(string data);
public TestErrEventDelegate TestErrEvent;
// イベントを発生させる
if (TestErrEvent != null)
{
  TestErrEvent(ex.Message);
}
// イベント追加
TestErrEvent += Test_Err;
// イベント発生時の処理
private void Test_Err(string data){

}

DLL関数呼び出し

<DllImport("user32.dll")>
Private Shared Function GetDC(ByVal hwnd As IntPtr) As IntPtr
End Function

[DllImport("user32.dll")]
public static extern IntPtr GetDC(IntPtr hwnd);


※2019/08/16追記

DLL関数呼び出し(Declare)

Public Declare Auto Function FindWindow Lib "USER32.DLL" ( ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr

[DllImport("USER32.DLL", CharSet = CharSet.Auto)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

ArrayList→string[]変換

Dim Values() As String = DirectCast(data.ToArray(GetType(String)), String())

string[] Values = (string[])(data.ToArray(typeof(string)));


※2019/10/11追記

My.Computer.FileSystemクラスをC#で使う

My.Computer.FileSystem.MoveFile("C:\work\1.txt", "C:\test\1.txt", True)

using Microsoft.VisualBasic;

Microsoft.VisualBasic.FileIO.FileSystem.MoveFile(@"C:\work\1.txt", @"C:\test\1.txt", true);