マニュアルコンバート派のための、C# コードと VB.NET コードの比較表です。
当サイトの管理人が C# コードを VB.NET コードに書き換えるために調べたものを整理してまとめました。
変数
変数の型
C# | VB.NET |
bool | Boolean |
byte | Byte |
char | Char |
decimal | Decimal |
double | Double |
dynamic | Object(Option Strict Off が前提) |
float | Single |
int | Integer |
long | Long |
object | Object |
sbyte | SByte |
short | Short |
string | String |
uint | UInteger |
ulong | ULong |
ushort | UShort |
変数の宣言と初期化
C# | VB.NET |
var s; | Dim s |
int num = 1; | Dim num As Integer = 1 |
配列の宣言と初期化
C# | int[] numbers = new int[3] { 4, 5, 6 }; int[] numbers = new int[] { 4, 5, 6 }; |
VB.NET | Dim numbers As Integer() = New Integer(2) {4,5,6} Dim numbers As Integer() = New Integer() {4,5,6} Dim numbers As Integer() = {4,5,6} |
C# の new int[3] は、 3 つの要素(入れ物)を作るという意味。結果として numbers[0], numbers[1], numbers[2] が作られる。
VB.NET の New Integer(2) は、最大のインデックスが 2 までの要素を作る。結果として numbers(0), numbers(1), numbers(2) が作られる。
List の宣言と初期化
C# | var intList = new List<int>(); |
VB.NET | Dim intList = New List(Of Integer) Dim intList As New List(Of Integer) |
C# | List<int> list = new List<int> {1,2,3,4,5,6,7,8,9,10,}; |
VB.NET | Dim list As List(Of Integer) = _ New List(Of Integer) From {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} |
Dictionary の宣言と初期化
C# | var dic = new Dictionary<int, string> { { 1, “aaa”}, { 2, “bbb”}, { 3, “ccc”}, }; |
VB.NET | Dim dic = New Dictionary(Of Integer, String) From { {1, “aaa”}, {2, “bbb”}, {3, “ccc”} } |
関数
戻り値が無い関数
C# | private void abc() { Console.WriteLine(“abc”); } |
VB.NET | Private Sub abc Console.WriteLine(“abc”) End Sub |
戻り値のある関数
C# | public string someFunction() { return someString; } |
VB.NET | Public Function someFunction As String Return someString End Function |
関数の引数
C# | public string someFunction(string s) { return someString; } |
VB.NET | Public Function someFunction(s As String) As String Return someString End Function |
引数の値渡し
C# | VB.NET |
特別な記述の必要なし |
特別な記述の必要なし |
引数の参照渡し
C# | VB.NET |
ref または out |
ByRef |
ref は ByRef とほぼ同等だが、呼び出し元の関数内で変数の初期化が必要。
out も似ているが、変数の初期化は不要。ただし out は関数内からその外に値を渡す場合に使うので、呼び出される関数内で必ず値をセットする必要がある。
ref も out も、呼び出し元の関数と呼び出される関数の両方でキーワードを明示的に使用する必要がある。
C# | public static void Sample(ref int arg) { //何かの処理 } public static void Main() |
C# | public static void Sample(out int arg) { arg = 1; // 値を割り当てないとエラーになる } public static void Main() |
VB.NET | Public Shared Sub Sample(ByRef arg As Integer) ‘何かの処理 End Sub Public Shared Sub Main() |
値渡しの強制
C# | VB.NET |
該当なし |
Public Shared Sub Sample(ByRef arg As Integer) Public Shared Sub Main() |
可変長引数
C# | void Sample(params string[] param) { //何かの処理 } |
VB.NET | Sub Sample(ParamArray ByVal params As String()) ‘何かの処理 End Sub |
関数のアクセス修飾子
C# | VB.NET |
internal | Friend |
private | Private |
public | Public |
protected | Protected |
関数のその他の修飾子
C# | abstract |
VB.NET |
MustOverride 派生クラスでオーバーライドする必要がある基本クラスのプロパティやプロシージャ。 |
MustInherit インスタンス化できず、基本クラスとしてのみ使用できるクラス。 |
C# | sealed |
VB.NET |
NotOverridable 派生クラスでオーバーライドできないプロパティまたはプロシージャ。 |
NotInheritable 基本クラスとして使用できないクラス。 |
C# | VB.NET |
指定不要 | Overloads または指定不要 |
名前は既存のメンバと同じだが、引数リストが既存のメンバとは異なるプロパティやメソッドであることを示す。 |
C# | VB.NET |
new | Shadows |
宣言したプログラミング要素が、基本クラスで同じ名前を持つ要素、またはオーバーロードされた要素のセットをシャドウすることを示す。宣言された要素は、他の任意の種類の要素でシャドウできる。シャドウされた要素は、その要素をシャドウする派生クラスでは使用できない。 |
C# | protected override void OnClick(EventArgs e) { //何かの処理 } |
VB.NET | Protected Overrides Sub OnClick(ByVal e As EventArgs) ‘何かの処理 EndSub |
C# | VB.NET |
static | Shared |
virtual | Overridable |
class DerivedClass: BaseClass | Class DerivedClass Inherits BaseClass |
class DerivedClass: BaseInterface | Class DerivedClass Implements BaseInterface |
クラス
コンストラクタ
C# | public class SomeClass { //コンストラクタ //クラス名と同じ名前 public SomeClass() { //何かの処理 } } |
VB.NET | Public Class SomeClass ‘コンストラクタ Public Sub New() ‘何かの処理 End Sub End Class |
デストラクタ
ファイナライザ
C# | public class SomeClass { //デストラクタ //クラス名に ~ を付ける ~SomeClass() { //何かの処理 } } |
VB.NET | Public Class SomeClass Protected Overrides Sub Finalize() ‘何かの処理 End Sub End Class |
IDisposable
C# | public class SomeClass : IDisposable { public void Dispose() { //何かの処理 } } |
VB.NET | Public Class SomeClass Implements IDisposable Sub Dispose() _ |
イベントハンドラ
登録
C# | Button1.Click += new EventHandler(Button1_Click); //Forms? Button1.Click += new RoutedEventHandler(Button1_Click); //WPF Button1.Click += Button1_Click; |
VB.NET | AddHandler Button1.Click, AddressOf Button1_Click |
C# | AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); |
VB.NET | AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf CurrentDomain_AssemblyResolve |
解除
C# | Button1.Click -= new EventHandler(Button1_Click); //Forms? Button1.Click -= new RoutedEventHandler(Button1_Click); //WPF Button1.Click -= Button1_Click; |
VB.NET | RemoveHandler Button1.Click, AddressOf Button1_Click |
キャスト
C# | (type)variable |
VB.NET | CType(variable, type)、DirectCast(variable, type)、 CBool / CByte / CChar / CDate / CDbl / CDec / CInt / CLng / CObj / CSByte / CShort / CSng / CStr / CUInt / CULng / CUShort |
C# | int i = (int)doubleVal |
VB.NET | Dim i As Integer = CType(doubleVal, Integer) Dim i As Integer = DirectCast(doubleVal, Integer) Dim i As Integer = CInt(doubleVal) |
名前空間のインポート
C# | VB.NET |
using | Imports |
C# | using System.Collections.Generic; |
VB.NET | Imports System.Collections.Generic |
構造体
C# |
struct SomeStruct |
VB.NET | Structure SomeStructure ‘何かの処理 End Structure |
Flags、FlagsAttribute
C# | // Enum型をビット・フィールド化 [Flags] public enum SampleOptions { A = 0x00, B = 0x01, C = 0x02, } |
VB.NET | ‘ Enum型をビット・フィールド化 <Flags()> _ Public Enum SampleOptions A = &H0 B = &H1 C = &H2 End Enum |
Flags 属性(=FlagsAttribute クラス)を付けると、「ビットごとの OR 演算」が可能なビット・フィールドとして使えるようになる。Flags は FlagsAttribute の省略形。
クラスのプロパティ
非表示フィールドを自動実装
C# |
public class SomeClass public SomeClass() //コンストラクタ |
VB.NET | Public Class SomeClass Public Property Num As Integer = 0 End Class |
インスタンス化と同時に初期化
C# | var sc= new SomeClass() { Num = 1}; |
VB.NET | Dim sc = New SomeClass With {.Num = 1} |
非表示フィールドを自動実装 (Read Only)
C# |
public class SomeClass public SomeClass() //コンストラクタ |
VB.NET | Public Class SomeClass Public ReadOnly Property Num As Integer = 0 End Class |
Read & Write
C# | public class SomeClass { private int _Num = 0; public int Num { get { return _Num; } set { _Num = value; } } } |
VB.NET | Public Class SomeClass Private _Num As Integer = 0 Public Property Num() As Integer Get Return _Num End Get Set(ByVal value As Integer) _Num = value End Set End Property End Class |
Read Only
C# | public class SomeClass { private int _Num = 0; public int Num { get { return _Num; } } } |
VB.NET | Public Class SomeClass Private _Num As Integer = 0 Public ReadOnly Property Num() As Integer Get Return _Num End Get End Property End Class |
Write Only
C# | public class SomeClass { private int _Num = 0; public int Num { set { _Num = value; } } } |
VB.NET | Public Class SomeClass Private _Num As Integer = 0 Public WriteOnly Property Num() As Integer Set(ByVal value As Integer) _Num = value End Set End Property End Class |
条件分岐
switch vs Select
C# | VB.NET |
switch(~){ //何かの処理 case ~ //何かの処理 default:~ //何かの処理 } |
Select Case ~ ‘何かの処理 Case ~ ‘何かの処理 Case Else ~ ‘何かの処理 End Select |
if vs If
C# | VB.NET |
if (item == 1) { //何かの処理 } else if (item == 2) { //何かの処理 } else { //何かの処理 } |
If item = 1 Then ‘何かの処理 ElseIf item = 2 Then ‘何かの処理 Else ‘何かの処理 End If |
演算子
連結演算子
C# | VB.NET |
return s + “.txt”; |
Return s & “.txt” または Return s + “.txt” |
論理演算子
C# | VB.NET |
& | And |
&& | AndAlso |
| | Or |
|| | OrElse |
!(否定) | Not |
ビット演算子
C# | VB.NET |
| | Or |
& | And |
^ | Xor |
~ | Not |
三項演算子
C# | Console.WriteLine( val == null ? “null” : val ); |
VB.NET | Console.WriteLine( If(val Is Nothing, “null”, val) ) |
左の条件式が True の場合は中央の式が評価され、False の場合は右の式が評価される。
C# | String msg = score <= 70 ? “うーん” : score >= 90 ? “いえい!” : “まぁまぁ”; |
VB.NET | Dim msg As String = If(score <= 70, “うーん”, If(score >= 90, “いえい!”, “まぁまぁ”)) |
入れ子にした三項演算子。
比較演算子
C# | VB.NET |
== | = |
!= | <> |
算術演算子
割り算の余り
C# | int num = 6 % 5; // = 1 |
VB.NET | Dim num As Integer = 6 Mod 5 ‘ = 1 |
System.Math.DivRem でも可。
インクリメント、デクリメント
C# | VB.NET |
i++; | i += 1(C# の ++i; 相当の表現は無い) |
i–; | i -= 1(C# の –i; 相当の表現は無い) |
反復処理
while vs While
C# | VB.NET |
while (num < 3) { Console.WriteLine(num); num++; } |
Do While num < 3 Console.WriteLine(num) num += 1 Loop ————————– While num < 3 Console.WriteLine(num) num += 1 End While |
for vs For
C# | VB.NET |
for (int i = 1; i <= 5; i++) { //何かの処理 } |
For i As Integer = 1 To 5 ‘何かの処理 Next |
foreach vs For Each
C# | VB.NET |
var intList = new List<int>(); foreach (int item in intList) |
Dim intList = New List(Of Integer) For Each item As Integer In intList |
デリゲート、無名関数
デリゲートとは、メソッドを参照するための型のこと。
無名関数は匿名関数と呼ばれることもあるが、「匿名」には「隠す」の意味合いがあるので、あまり適切な表現とは言えないらしい。(「無名関数」のほうが好ましい)
delegate vs Delegate
C# |
delegate int SampleDelegateType(int x, int y); public int SampleFunc(int x, int y) public void Test() |
VB.NET |
Delegate Function SampleDelegateType(x As Integer, y As Integer) As Integer Public Function SampleFunc(x As Integer, y As Integer) As Integer Public Sub Test() |
Action(戻り値の無いメソッド)
C# | // メソッド SomeFunc を参照する Action 型のデリゲートを作成 Action SomeFuncDelegate = new Action(SomeFunc); Action SomeFuncDelegate = (Action)SomeFunc; Action SomeFuncDelegate = SomeFunc; |
VB.NET | ‘ メソッド SomeFunc を参照する Action 型のデリゲートを作成 Dim SomeFuncDelegate As New Action(AddressOf SomeFunc) Dim SomeFuncDelegate As Action = AddressOf SomeFunc |
C# | // string 型の引数を取るメソッドのデリゲート Action<string> SomeFuncDelegate = new Action<string>(SomeFunc); // 実行 SomeFuncDelegate(“some string”); |
VB.NET | ‘ String 型の引数を取るメソッドのデリゲート Dim SomeFuncDelegate As New Action(Of String)(AddressOf SomeFunc) Dim SomeFuncDelegate As Action(Of String) = AddressOf SomeFunc ‘ 実行 SomeFuncDelegate(“some string”) |
C# | Action helloWorld = () => MessageBox.Show(“hello world”); helloWorld(); |
VB.NET | Dim helloWorld As Action = Sub() MessageBox.Show(“hello world”) Call helloWorld |
Func(戻り値のあるメソッド)
C# | Func<int, int, string> FuncTest = (a, b) => (“合計は ” + (a + b).ToString()); MessageBox.Show(FuncTest(1, 2)); |
VB.NET | Dim FuncTest As Func(Of Integer, Integer, String) = Function(a, b)(“合計は ” & (a + b).ToString) MessageBox.Show(FuncTest(1, 2)) |
LINQ、ラムダ式
LINQ = 統合言語クエリ (Language-Integrated Query)
=> は「ラムダ演算子(lambda operator)」「ラムダ宣言子(lambda declarator)」「ラムダ宣言演算子(lambda declaration operator)」「アロー演算子(arrow operator)」「 goes to」「go to」等 と読む。
C# | VB.NET |
()=> 式 | Function() 式 または Sub() 式 |
(i) => i + j //引数 i を取る無名関数が i + j の結果を返す。 |
Function(i) i + j |
() => { Return something; } |
Function() Return something End Function |
() => { DoNotReturn; } |
Sub() DoNotReturn End Sub |
(n) => { Return n * 100; } |
Function(n) Return n * 100 End Function |
C# | button1.Click += (sender, e) => MessageBox.Show(“ラムダ式”); |
VB.NET | AddHandler Button1.Click, Sub(_sender, _e) MessageBox.Show(“ラムダ式”) |
C# |
button1.Click += (sender, e) => |
VB.NET | AddHandler Button1.Click, _ Sub(_sender, _e) MessageBox.Show(“!”) End Sub |
(例)List.Where
C# | List<int> list = new List<int> {1,2,3,4,5,6,7,8,9,10,}; IEnumerable<int> result = list.Where((n) => n % 2 == 0); |
C# | List<int> list = new List<int> {1,2,3,4,5,6,7,8,9,10,}; IEnumerable<int> result = list.Where(n => n % 2 == 0); |
VB.NET | Dim list As List(Of Integer) = New List(Of Integer) From {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Dim result As IEnumerable(Of Integer) = list.Where(Function(n) n Mod 2 = 0) |
list の各要素を無名関数の引数 n に渡し、n を 2 で割った余りが 0 になる要素のコレクションを返す。
C# | void TestSub() { List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, }; IEnumerable<int> result = list.Where(TestFunc); } —– bool TestFunc(int n) { return (n % 2 == 0); } |
VB.NET | Sub TestSub Dim list As List(Of Integer) = New List(Of Integer) From {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Dim result As IEnumerable(Of Integer) = list.Where(AddressOf TestFunc) End Sub —– Function TestFunc(n As Integer) As Boolean Return (n Mod 2 = 0) End Function |
(例)OrderBy
C# | wordArray.OrderBy(n => n.Length) |
VB.NET | wordArray.OrderBy(Function(n) n.Length) |
wordArray の要素を n に入れてイテレートし、n のテキスト長でソート。
C# | wordArray.OrderBy(n => n.Length).ThenBy(n => n) |
VB.NET | wordArray.OrderBy(Function(n) n.Length).ThenBy(Function(n) n) |
wordArray の要素を n に入れてイテレートし、n のテキスト長でソートし、更にあいうえお順でソート
(例)Select、匿名オブジェクト
C# |
var words = new string[] { “ellen”, “east” }; var wordsUCaseLCase = from w in words foreach (var w in wordsUCaseLCase) |
VB.NET |
Dim words = New String() {“ellen”, “east”} Dim wordsUCaseLCase = From w In words _ For Each w In wordsUCaseLCase |
NULL
NULL の判定
C# | VB.NET |
if (val == null) { … } |
If val Is Nothing Then … End If |
if (val != null) { … } |
If val IsNot Nothing Then … End If |
NULL 合体演算子
C# | MessageBox.Show(val ?? “null”); |
VB.NET | (相当する演算子は無い) MessageBox.Show(If(val Is Nothing, “null”, val)) |
?? 演算子の左辺が NULL の場合は右辺の式で評価され、NULL 以外の場合は左辺の値が使用される。
C# | var result = 1 + val ?? 2; NULL 合体演算子は優先順位が低いので、先に 1 + val が計算され、result = 2 になる。 |
VB.NET | (相当する演算子は無い) Dim val As Integer? = Nothing Dim result = If(1 + val Is Nothing, 2, val) |
NULL 合体代入
C# | s ??= “some string”; C# 8.0 より。 |
VB.NET | (相当する演算子は無い) |
s が NULL ならば、”some string” を代入。
NULL 条件演算子
C# | Console.WriteLine(numbers?.Length); |
VB.NET | Console.WriteLine(numbers?.Length) |
numbers が NULL の場合は NULL を返し、そうでない場合はメンバ Length の値を返す。
C# | Console.WriteLine( numbers?[0] ); |
VB.NET | Console.WriteLine( numbers?(0) ) |
numbers が NULL の場合は NULL を返し、そうでない場合はインデックス 0 のメンバの値を返す。
NULL 許容型
C# | int? val = null; |
VB.NET | Dim val As Integer? = Nothing |
通常は NULL 値を格納できない値型の型名の後ろに ? をつけて NULL 値を格納できるようにする。
C# | void Foo(TimeSpan? span = null) { //何かの処理 } |
VB.NET |
Sub Foo(Optional span As TimeSpan? = Nothing) |
拡張メソッド
C# | public static int Add(this int m, int n) => m + n; |
VB.NET | ‘Extension属性を付加するのに必要 ‘Imports System.Runtime.CompilerServices <Extension()> |
クラス自体は変更せず、そのクラスにインスタンスメソッドが追加されたように見せかけるもの。サンプルコードの第一引数の型が拡張される型。C# の場合は型の前に this を付ける。
C# | public static bool In(this string str, params string[] param) { return param.Contains(str); } |
VB.NET | ‘Extension属性を付加するのに必要 ‘Imports System.Runtime.CompilerServices <Extension()> _ |
上記 VB.NET サンプルの [In] について:
コード内に記述するクラスやメソッド、変数などの識別子には、通常、その言語で予約されているキーワードと同じ名前を使用できない。しかし、C# では識別子の前に @ を付けることにより、VB.NETでは識別子を角カッコ [ ] で挟むことにより、キーワードを識別子として使用できる。これらの識別子は、C#では「逐語的識別子」、VB.NETでは「エスケープ識別子」と呼ばれる。
Win 32 API、DLL
C# |
//using System.Runtime.InteropServices; |
VB.NET | ‘Imports System.Runtime.InteropServices <DllImport(“kernel32.dll”, SetLastError := True)> _ Private Function Beep (ByVal dwFreq As Integer, ByVal dwDuration As Integer) As Boolean End Function |
C# の場合、DllImport 属性を付けた Win32 API や DLL 関数の宣言では、関数の実体が外部にあることを表す extern 修飾子と、静的なメンバであることを表す static 修飾子を必ず指定する。
VB.NET では C# の extern に相当する表現は不要。
C# | [DllImport(“kernel32.dll”, CharSet=CharSet.Auto)] static extern IntPtr FindFirstFile(string lpFileName, out WIN32_FIND_DATA lpFindFileData); |
VB.NET | <DllImport(“kernel32.dll”, CharSet := CharSet.Auto)> _ Private Shared Function FindFirstFile(ByVal lpFileName As String, ByRef lpFindFileData As WIN32_FIND_DATA) As IntPtr End Function |
ジェネリック
ジェネリック クラス
C# | public class MyGenericClass<T> { List<T> _list = new List<T>(); // Addメソッド public void Add(T item) { _list.Add(item); } //何かの処理 } |
VB.NET | Public Class MyGenericClass(Of T) Dim _list As New List(Of T) ‘Addメソッド Public Sub Add(ByVal item As T) _list.Add(item) End Sub ‘何かの処理 End Class |
ジェネリック メソッド
C# |
static void SomeGenericMethod<T>(IEnumerable<T> collection) |
VB.NET | Sub SomeGenericMethod(Of T)(collection As IEnumerable(Of T)) ‘何かの処理 End Sub |
C# | T SomeGenericMethod<T>() { //何かの処理 } |
VB.NET | Function SomeGenericMethod(Of T)() As T ‘何かの処理 End Function |
数値サフィックス
100L(Long 型の 100)など。
その他
説明 | C# | VB.NET |
コメント | // |
‘ |
ブロックコメント | /* … */ | なし |
XML コメント | /// | ”’ |
コレクションの要素へのアクセス | [ ] | ( ) |
16進リテラル | 0xFF00FF | &HFF00FF |
8進リテラル | なし | &O4217 |
逐次的リテラル文字列 |
@ //エスケープシーケンスの無効化
//複数行にわたって文字列を書く |
該当なし |
文字列補完 (string interpolation) |
Console.WriteLine($“Today is {Now.DayOfWeek}.”); Console.WriteLine($“It’s {Now:HH:mm} now.”); |
($ の使い方は C# と同じ) |
領域指定 | #region TitleString //何かの処理 #endregion |
|
排他的ロック | lock (lockObject) { //何かの処理 } |
SyncLock lockObject |
カスタム属性 | [attributeName(“attributeParameter”)] public class SomeClass { //何かの処理 } |
<attributeName(“attributeParameter”)> |
改行 | var result = System .IO .File .Exists( @”D:\” + “test.txt” ); |
Dim result = |
C# | VB.NET |
@text (例)string @string = “abc”; |
[text] (例)Dim [String] As String = “abc” |
予約語を識別子(変数)として使えるようにする。C#では「逐語的識別子」、VB.NETでは「エスケープ識別子」と呼ばれる。 |
C# | VB.NET |
obj.GetType() | |
現在のインスタンスの System.Type を取得 |
C# | VB.NET |
typeof(<型>) (例)typeof(string) (VB.NET の TypeOf との違いに注意) |
GetType(<型>) (例)GetType(String) |
指定された<型>の System.Type オブジェクトを返す |
C# | VB.NET |
if (arrayVar is Array) { //何かの処理 } |
If TypeOf arrayVar Is Array Then ‘何かの処理 End If (C# の typeof との違いに注意) |
変数の型をチェックする、キャスト可能か調べる |
C# | VB.NET |
該当なし(<変数>.GetType().Name) | |
指定した変数のデータ型名を文字列型 (String) で返す |
C# | VB.NET |
dynamic 動的型付け変数(型)を宣言するキーワード 。 dynamic testVar; |
Option Strict Off を前提とするならば Object 型が同様の振る舞いをする。遅延バインディング。 Dim testVar ‘As Object |
C# | VB.NET |
this | Me |
現在実行中のインスタンスにアクセスする |
C# | VB.NET |
base | MyBase |
呼びだされた派生クラスのひとつ上の基底クラスにアクセスする |
C# | VB.NET |
該当なし | MyClass |
呼び出されたクラスにアクセスする |
Me / MyBase / MyClass の違いを実感するには、じゃんぬねっと様のこちらの記事「VB.NET の Me、MyClass、MyBase の違い」で紹介されているコードサンプルが分かりやすいと思います。
C# |
static void SomeMethod<T>(IEnumerable<T> collection) |
VB.NET | Sub SomeMethod(Of T)(collection As IEnumerable(Of T)) ‘何かの処理 End Sub |
C# | using (StreamReader sr = new System.IO.StreamReader(@”C:\test.txt”, GetEncoding(932))) { //何かの処理 } |
VB.NET | Using sr As New StreamReader(“C:\test.txt”, GetEncoding(932)) ‘何かの処理 End Using |
参考にした記事
dobon.net – VB.NET、C#変換表、@IT、その他多数。
ありがとうございました。