次のコードが示すように、C#の組み込み型であるstring、VB.NETの組み込み型であるStringは、どちらも.NET FrameworkにおけるSystem.Stringクラスのエイリアス(別名)であるため、両者は全く同じ型となります。

組み込み文字列型とSystem.String
Imports System

Class Sample
  Shared Sub Main()
    ' VB.NETのString型は.NET FrameworkのSystem.Stringクラスのエイリアス
    Dim s1 As String = "foo"
    ' s1とs2はどちらもSystem.Stringとなる
    Dim s2 As System.String = "bar"
    ' System.Stringをstringに代入することができる(その逆もまた可)
    Dim s3 As String = New System.String(New Char(){"b", "a", "z"})

    ' GetType()が返す型はいずれもSystem.Stringとなる
    Console.WriteLine("{0} {1}", s1, s1.GetType())
    Console.WriteLine("{0} {1}", s2, s2.GetType())
    Console.WriteLine("{0} {1}", s3, s3.GetType())
  End Sub
End Class
実行結果
foo System.String
bar System.String
baz System.String

したがって、string型/String型として宣言した変数と、System.Stringとして宣言した変数はどちらも同じ型となるため、相互に代入可能で、かつどちらも同じメソッド・プロパティを使用することができ、全く同じように扱うことができます。

各言語の組み込み型と.NET Frameworkの型との対応については型の種類・サイズ・精度・値域 §.基本的なデータ型と対応する各言語の型を参照してください。

静的メソッドを呼び出す場合も同様で、文字列型またはSystem.Stringクラスのメソッドとして呼び出しても全く同じ動作となります。