none
C#でのVB の参照設定 RRS feed

  • 質問

  • C# でTextを半角に変換するために

    http://www.atmarkit.co.jp/fdotnet/dotnettips/254vbfunc/vbfunc.html

    を参考に、

    Microsoft Visual Basic .NET Runtime

    の参照設定を探しても、

    Microsoft Visual Basic は見つかるのですが、

    該当のものが見当たりません。

    Microsoft Visual Basic .NET Runtime はどこに行ってしまったのでしょうか?

    なお、このため、

    using Microsoft.VisualBasic;

    としても、

    string text;

    text = String.StrConv(text, VbStrConv.Narrow, 0);

    のときに、

    エラー 1 'string' に 'StrConv' の定義がありません。

    という、エラーが発生します。

    2007年1月4日 12:32

回答

  • yem さん、こんにちは。

     yem さんからの引用
    Microsoft Visual Basic .NET Runtime はどこに行ってしまったのでしょうか?

    VB 側のプロジェクトを作成すれば、デフォルトで参照設定してありますから、そちらを参考にすれば良いでしょう。

    なお、このため、

    using Microsoft.VisualBasic;

    としても、

    string text;

    text = String.StrConv(text, VbStrConv.Narrow, 0);

    のときに、

    エラー 1 'string' に 'StrConv' の定義がありません。

    という、エラーが発生します。

    これは、参照設定ができている以前の問題で、yem さんのコードがおかしいです。
    StrConv は、Microsoft.VisualBasic.Strings というモジュールに含まれる関数です。

    決して、System.String クラスのメンバではありません。
    出力されたコンパイル エラーはそういう意味です。

    2007年1月4日 12:49
  •  じゃんぬねっと さんからの引用

    VB 側のプロジェクトを作成すれば、デフォルトで参照設定してありますから、そちらを参考にすれば良いでしょう。

    デフォルトの参照設定を見ても Microsoft Visual Basic .NET Runtime がどこにもないですよ?
    と思うかもしれないと思ったためすこしだけ補足します。

    C# から VB 固有の関数を呼び出す場合に、Microsoft.VisualBasic.dll を参照するのは間違いではありません。
    ただ、.NET Freamework 2.0 では、Microsoft.VisualBasic.dll のコンポーネント名が変更されています。
    そのため、「Microsoft Visual Basic .NET Runtime」 というコンポーネント名が見つからなかったのです。

     

    2007年1月4日 14:26
  • yem さん、こんにちは。

     yem さんからの引用
    参考程度にお聞きしたいのですが、なぜVB以外にこのように変換できるクラスがないのでしょうか?(便利なのに)

    そろそろ、半角だとか全角だとかうるさく言う時代ではなくなってきているからでしょう。
    とはいえ、業務系では結構使うことが多かったりしますが。

    まあ、StrConv も API 使っているだけですから、C# でも同じことは可能といえば可能なのですが。

    最後にもう一つ教えていただきたいのですが、Visual Basicの IsNumeric をC# で扱うには、どうしたらよいのでしょうか?

    .NET Framework 2.0 であれば、[値型].TryParse メソッド、
    .NET Framework 1.1 以前であれば、System.Double.TryParse メソッドしかないですね。

    数値かどうかをチェックする (IsNumeric) (wankuma.com)

    その型に応じた検証ができる、.NET Framework 2.0 の [値型].TryParse メソッドが好きです。

    2007年1月6日 6:58

すべての返信

  • yem さん、こんにちは。

     yem さんからの引用
    Microsoft Visual Basic .NET Runtime はどこに行ってしまったのでしょうか?

    VB 側のプロジェクトを作成すれば、デフォルトで参照設定してありますから、そちらを参考にすれば良いでしょう。

    なお、このため、

    using Microsoft.VisualBasic;

    としても、

    string text;

    text = String.StrConv(text, VbStrConv.Narrow, 0);

    のときに、

    エラー 1 'string' に 'StrConv' の定義がありません。

    という、エラーが発生します。

    これは、参照設定ができている以前の問題で、yem さんのコードがおかしいです。
    StrConv は、Microsoft.VisualBasic.Strings というモジュールに含まれる関数です。

    決して、System.String クラスのメンバではありません。
    出力されたコンパイル エラーはそういう意味です。

    2007年1月4日 12:49
  •  じゃんぬねっと さんからの引用

    VB 側のプロジェクトを作成すれば、デフォルトで参照設定してありますから、そちらを参考にすれば良いでしょう。

    デフォルトの参照設定を見ても Microsoft Visual Basic .NET Runtime がどこにもないですよ?
    と思うかもしれないと思ったためすこしだけ補足します。

    C# から VB 固有の関数を呼び出す場合に、Microsoft.VisualBasic.dll を参照するのは間違いではありません。
    ただ、.NET Freamework 2.0 では、Microsoft.VisualBasic.dll のコンポーネント名が変更されています。
    そのため、「Microsoft Visual Basic .NET Runtime」 というコンポーネント名が見つからなかったのです。

     

    2007年1月4日 14:26
  • ありがとうございました。

    Microsoft.VisualBasic.Strings だったのですね!

    text = Microsoft.VisualBasic.Strings.StrConv(text, VbStrConv.Narrow, 0);

    としましたら、変換できました。

    参考程度にお聞きしたいのですが、なぜVB以外にこのように変換できるクラスがないのでしょうか?(便利なのに)

    最後にもう一つ教えていただきたいのですが、Visual Basicの IsNumeric をC# で扱うには、どうしたらよいのでしょうか?

    2007年1月6日 2:41
  • yem さん、こんにちは。

     yem さんからの引用
    参考程度にお聞きしたいのですが、なぜVB以外にこのように変換できるクラスがないのでしょうか?(便利なのに)

    そろそろ、半角だとか全角だとかうるさく言う時代ではなくなってきているからでしょう。
    とはいえ、業務系では結構使うことが多かったりしますが。

    まあ、StrConv も API 使っているだけですから、C# でも同じことは可能といえば可能なのですが。

    最後にもう一つ教えていただきたいのですが、Visual Basicの IsNumeric をC# で扱うには、どうしたらよいのでしょうか?

    .NET Framework 2.0 であれば、[値型].TryParse メソッド、
    .NET Framework 1.1 以前であれば、System.Double.TryParse メソッドしかないですね。

    数値かどうかをチェックする (IsNumeric) (wankuma.com)

    その型に応じた検証ができる、.NET Framework 2.0 の [値型].TryParse メソッドが好きです。

    2007年1月6日 6:58
  • ありがとうございます。

    とても親切な回答で分かりやすくて、ためになりました。

    これからも、どうぞよろしくお願いいたします。

    2007年1月6日 19:14