C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: VB.NETについて


(過去ログ 118 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■69505 / inTopicNo.1)  VB.NETについて
  
□投稿者/ シーマ (1回)-(2014/01/03(Fri) 11:16:02)

分類:[VB.NET/VB2005 以降] 

はじめまして
VB.NETを勉強しはじめました
(VB.Net 2008 Express Edition)

VB6.0やVBAを少しだけかじった事があります
今回は実現に向けたコードについてではなく一般的な事についてお伺いします

1.変数の宣言について
VB6.0時代
Dim strFN As String
strFN = "ABCDE"

という記述が一般的(?)だったかと思いますが
最近、ネットでサンプルコードを見ると

Dim strFN As string = "ABCDE"

という書き方を良く目にします

これは特別意味がある書き方なのでしょうか?また、VB6.0時代も普通の事だったのでしょうか?
現在VB6.0の環境がないため試す事ができません
ちなみにExcel2010 VBAではエラーになるようでした
更に自分の場合、変数の宣言はプロシージャの先頭部分に纏めて記述していたのですが、実際に変数を使用する箇所に記述するコードをよく見ます
これもまた意味があるのでしょうか?みなさんはどのようにされていますか?

2.コンパイル
コンパイル=ビルド
と思って間違いないでしょうか?以前どこかのHPで32bitコンパイルという言葉を目にしました
現在、自分が使用している環境はWindows7 32bit + VB.Net 2008 Express Editionですが、この環境で作ったプログラムは64bit環境で動作させるためには、コンパイルの仕方が違うのでしょうか?それとも64bit環境では動作させる事は無理なのでしょうか?

以上、質問だらけで申し訳ございませんがよろしくお願いいたします

引用返信 編集キー/
■69509 / inTopicNo.2)  Re[1]: VB.NETについて
□投稿者/ WebSurfer (152回)-(2014/01/03(Fri) 15:46:32)
No69505 (シーマ さん) に返信
> はじめまして
> VB.NETを勉強しはじめました
> (VB.Net 2008 Express Edition)

どうしても VB.NET でなければならないという理由がなければ、C# をお勧
めします。


> Dim strFN As string = "ABCDE"
>
> という書き方を良く目にします
>
> これは特別意味がある書き方なのでしょうか?また、VB6.0時代も普通の事だったのでしょうか?

変数の宣言と初期化を 2 行で行うか、1 行で済ませる程度の違いです。詳
しくは MSDN ライブラリを読んでください。例えば下記:

Dim ステートメント (Visual Basic)
http://msdn.microsoft.com/ja-jp/library/7ee5a7s1(v=vs.90).aspx

Visual Basic での変数宣言
http://msdn.microsoft.com/ja-jp/library/ke6sh835(v=vs.90).aspx

参考にしているネットのサンプルコードというのがどういうものか知りませ
んが、断片的なものであればそれで勉強するのはあまり感心しません。本な
どを買って読んで、体系的に勉強することをお勧めします。


> 2.コンパイル
> コンパイル=ビルド
> と思って間違いないでしょうか?以前どこかのHPで32bitコンパイルという言葉を目にしました

「コンパイル」「ビルド」「違い」などをキーワードにググってみると
他にもいろいろ見つかると思いますので、聞く前に自分で調べてみるな
ど、自助努力もしてみましょう。

ここにも過去に質問があります。

http://bbs.wankuma.com/index.cgi?mode=al2&namber=44264&KLOG=75


> 現在、自分が使用している環境はWindows7 32bit + VB.Net 2008 Express Editionですが、この環境で作ったプログラムは64bit環境で動作させるためには、コンパイルの仕方が違うのでしょうか?それとも64bit環境では動作させる事は無理なのでしょうか?

作り方によって 32-bit/64-bit OS のどちらでも動きます。詳しくは以下のページを読んでください。

Part 1. 64 ビット Windows OS の基本知識
http://blogs.msdn.com/b/nakama/archive/2008/10/30/part-1-64-windows-os.aspx

Part 2. .NET Framework 2.0 アプリケーションの 64 ビット対応http://blogs.msdn.com/b/nakama/archive/2008/11/06/part-2-net-framework-2-0-64.aspx

引用返信 編集キー/
■69517 / inTopicNo.3)  Re[2]: VB.NETについて
□投稿者/ シーマ (2回)-(2014/01/05(Sun) 17:00:38)

>
> どうしても VB.NET でなければならないという理由がなければ、C# をお勧
> めします。

自分もCを習得したいのですが、時間がかかりそうなのでとりあえず、VBで作成したいと思います
時間を見てCも勉強したいと思います


>

>
> 変数の宣言と初期化を 2 行で行うか、1 行で済ませる程度の違いです。詳
> しくは MSDN ライブラリを読んでください。例えば下記:

とりあえず、個人の好み位しかない感じでしょうか?
自分は慣れているので、今まで通り2行で書きたいと思います



> 「コンパイル」「ビルド」「違い」などをキーワードにググってみると
> 他にもいろいろ見つかると思いますので、聞く前に自分で調べてみるな
> ど、自助努力もしてみましょう。
>

同じように扱って良いように理解しました



>
> 作り方によって 32-bit/64-bit OS のどちらでも動きます。詳しくは以下のページを読んでください。
>
> Part 1. 64 ビット Windows OS の基本知識
> http://blogs.msdn.com/b/nakama/archive/2008/10/30/part-1-64-windows-os.aspx
>
> Part 2. .NET Framework 2.0 アプリケーションの 64 ビット対応http://blogs.msdn.com/b/nakama/archive/2008/11/06/part-2-net-framework-2-0-64.aspx


Express Editionでは指定できないようですが、ネットで検索したところ、****.vbprojの中身を直接変更(メモ帳等)することで64bit環境で動作させる事が出来ました


いろいろと、ありがとうございました




引用返信 編集キー/
■69524 / inTopicNo.4)  Re[3]: VB.NETについて
□投稿者/ 魔界の仮面弁士 (480回)-(2014/01/06(Mon) 14:33:08)
No69517 (シーマ さん) に返信
>>どうしても VB.NET でなければならないという理由がなければ、C# をお勧
>>めします。
> 自分もCを習得したいのですが、時間がかかりそうなので

C# は、C より習得しやすいと思いますよ。


>>> 更に自分の場合、変数の宣言はプロシージャの先頭部分に纏めて記述していたのですが、

.NET 以前において先頭にまとめることが多かったのは、暗黙変数利用時(Option Explicit 無し)
それも DefInt 等が使われていた時代の名残です。このモードでは、特別扱いしたい変数
(配列にしたい場合など)は、明示的に変数宣言を行う必要があり、そのデータ型を
早期に(暗黙定義されるより前に)決定しておくために、先頭に記載することが多かったようです。


このほか、先頭でしか変数宣言できない他言語(C99 以前の ANSI C など)との互換性や、
変数リソースに制限のある時代のBASICで、資源管理をやりやすくする目的などの説もありますが、
理由はどうあれ、実際、かつての VB2 のヘルプ(Dim ステートメント)には、
|
| ヒント プロシージャ内に Dim ステートメントを記述するときは、
| プロシージャの先頭に記述するのが、プログラム作法上、望ましいことです。
|
との説明があり、VB6 のヘルプにも
|
| メモ プロシージャ内で Dim ステートメントを使用する場合は、
| 通常、Dim ステートメントをプロシージャの最初で記述します。
|
とありました。なので、旧VBにおいて、そのようなコーディングが多いのは事実です。


しかし VB.NET では、コード ブロック内の変数スコープが導入されたこともあり
>>> 実際に変数を使用する箇所に記述するコードをよく見ます
のような書き方が増えています。私も直前派です。

「コード ブロック内の変数スコープ」については、下記などを参照してみてください。
http://support.microsoft.com/kb/311331/ja

変数の「宣言」と「実際に使われ始める位置」が離れてしまうと、その変数が
どこで使われる物なのかあとで分かりにくくなるため、直前で宣言する
(できれば、変数の初期値も同時に与えておく)ことが望ましいという考え方です。

とはいえ、プロシージャの先頭から最後まで長い間使われる重要な変数は、
先頭に纏めることもありますし、そもそも長すぎるプロシージャは、それ自体が
見直すべき対象ですので、どちらのコーディングでも間違いと言うわけではありません。

# ちなみに VBScript だと、変数利用箇所の後に Dim があっても構わないというカオス仕様…。



>>> Dim strFN As string = "ABCDE"
>>> また、VB6.0時代も普通の事だったのでしょうか?

いいえ、VB6 時代にはなかった記述方法です。


> とりあえず、個人の好み位しかない感じでしょうか?

できれば両方の使い方を学んでおいてください。

後で代入する記述方法は、その変数のデータ型が明確な場合に限られます。
匿名型や Linq 構文などの場合、そもそも「As 句」を記載することができないため、
その場合には一行で無ければ書けないことになります。

 Dim postItem = New With {Key .No = 69505, .Title = "VB.NETについて", .Poster = "シーマ"}


ちなみに、VB2008 以降では、
 Dim a As Integer = 10
 Dim b As String = "abc"
といった宣言に対して、As 句を省略して
 Dim a = 10
 Dim b = "abc"
と書けるようになりました。

これは「ローカル型の推論」と呼ばれており、変数宣言時の初期値によって
適切なデータ型がコンパイル時に決定される機能です。この機能を利用する場合は
変数宣言時に初期値を割り当てておく必要があります。

この型推論の機能により、For 文のループ変数の記述方法にも変化が生じています。
http://www.gizcollabo.jp/vbtomo/boards/vbchoshoqa.php?do=leaf&num=8372



>>> コンパイル=ビルド
>>> と思って間違いないでしょうか?
コンパイルやリンクを行う一連の作業を指して、ビルドと呼びます。
強いて言えば『コンパイル≦ビルド』のような感じでしょうか。

VB6.EXE でビルドする際には、VB6 と同じフォルダ内に配置された
VBコンパイラ(C2.EXE)と VBリンカ(LINK.EXE)が内部的に呼ばれています。
(ただし VB6 時代は、この一連の作業をコンパイルと呼んでいました)

VB.NET でビルドする際には、Visual Studio あるいは MSBuild.EXE から
VBコンパイラ(VBC.EXE) が呼ばれています。また、中間言語にコンパイルされた
VB アプリは、実行時に JITコンパイラ によってネイティブコードへ変換されます。



> 現在、自分が使用している環境はWindows7 32bit + VB.Net 2008 Express Editionですが、
> この環境で作ったプログラムは64bit環境で動作させるためには、コンパイルの仕方が
> 違うのでしょうか?それとも64bit環境では動作させる事は無理なのでしょうか?

よく使われるのは、以下の 3 種類ですが、2008 Express で作られたアプリは、
既定で AnyCPU ビルドとなります。

・32bit専用(x86ビルド) … 常に32bit動作(64bit環境では、"WOW64"による32bit環境として動作)
・64bit専用(X64ビルド) … 常に64bit動作(32bit環境では動作しない)
・両対応(AnyCPUビルド) … 64bit環境では64bit動作、32bit環境やWOW64環境では32bit動作。

Express よりも上位のエディションであれば、開発環境から変更できますが、
Express の場合は、既にご存知のように、.vbproj 内の <Platform Target> タグで
指定することになります。

※注※ 実際のタグ名には空白が含まれません。ここの掲示板では、アール・エム・ティーという
 文字列を含んでいると投稿できないため、意図的に空白を加えて投稿しています。
引用返信 編集キー/
■69549 / inTopicNo.5)  Re[4]: VB.NETについて
□投稿者/ シーマ (3回)-(2014/01/07(Tue) 21:36:22)
魔界の仮面弁士 さん、非常に詳しく説明いただきありがとうございます

勉強になります

>といった宣言に対して、As 句を省略して
> Dim a = 10
> Dim b = "abc"
>と書けるようになりました。

↑は知りませんでした



自分も、質問に対して答えられるようになりたいものです
その日が来るかどうかは・・・?ですが

ありがとうございました


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -