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

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

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

Re[5]: VS2013 Fw4.0 VBでIterator


(過去ログ 136 を表示中)

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

■79994 / inTopicNo.1)  VS2013 Fw4.0 VBでIterator
  
□投稿者/ gyaon (1回)-(2016/06/03(Fri) 12:09:52)

分類:[.NET 全般] 

VisualStudio2013
Fw4.0
ASP.NET(Webアプリケーション)
言語:VB

自分で作成したコレクションクラスにIEnumerable(Of T)を実装しました。
テストプロジェクト(VS2013,Fw4.0)でコンパイルおよび実行できたので
既存のプロジェクト(VS2013,Fw4.0)に全く同じ自作コレクションクラスを作成したところ
IteraatorキーワードとYieldキーワードが「Visual Basic 10.0は反復子をサポートしていません。」とコンパイルエラーになります。

そもそも「Visual Basic 10.0」とは何を指しているのでしょうか?VisualStudioのバージョンでしょうか?
エラーを解消する方法をご教示ください。

---------------------------------------------------
Namespace MyNamespace
<Serializable()> _
Public Class MyClssCollection
Implements IEnumerable(Of MyClss)

Private _items As New List(Of MyClss)


Public Sub Add(item As MyClss)
Me._items.Add(item)
End Sub

Public Iterator Function GetEnumerator() As System.Collections.Generic.IEnumerator(Of MyClss) Implements System.Collections.Generic.IEnumerable(Of MyClss).GetEnumerator
For Each itm As MyClss In Me._items
Yield itm
Next
End Function

Public Function GetEnumerator1() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
Return GetEnumerator()
End Function
End Class
End Namespace
---------------------------------------------------

テストプロジェクトを作成した方法は
VisualStudio2013を起動し
ファイル > 新規作成 > プロジェクト で
テンプレート > VisualBasic > Web > VisualStudio2012 > ASP.NETからのWebアプリケーション から
テスト用プロジェクトを作成しました。

既存のプロジェクトを作成した方法は
VisualStudio2013を起動し
ファイル > 新規作成 > プロジェクト で
テンプレート > VisualBasic > Web > ASP.NET Web フォームアプリケーションから作成したそうです。



引用返信 編集キー/
■79998 / inTopicNo.2)  Re[1]: VS2013 Fw4.0 VBでIterator
□投稿者/ gyaon (2回)-(2016/06/03(Fri) 13:03:02)
コンパイルエラーが発生しなくりましたが、疑問が残りますので
ご存知の方は引き続きご教示お願いいたします。

既存のプロジェクトではApp_Codeフォルダが存在し、
自作クラスはすべてその中に配置することが規約でした。

今回作成した自作コレクションクラスもApp_Codeフォルダ内に配置しておりましたが
App_Code外に配置したところコンパイルできました。

なぜApp_Codeフォルダではコンパイルが通らないのか、ご存知の方がおられましたらご教示お願いいたします。
引用返信 編集キー/
■79999 / inTopicNo.3)  Re[2]: VS2013 Fw4.0 VBでIterator
□投稿者/ ぽぴ王子 (38回)-(2016/06/03(Fri) 13:09:51)
ぽぴ王子 さんの Web サイト
No79998 (gyaon さん) に返信
> コンパイルエラーが発生しなくりましたが、疑問が残りますので
> ご存知の方は引き続きご教示お願いいたします。
>
> 既存のプロジェクトではApp_Codeフォルダが存在し、
> 自作クラスはすべてその中に配置することが規約でした。
>
> 今回作成した自作コレクションクラスもApp_Codeフォルダ内に配置しておりましたが
> App_Code外に配置したところコンパイルできました。
>
> なぜApp_Codeフォルダではコンパイルが通らないのか、ご存知の方がおられましたらご教示お願いいたします。

「App_code」でGoogle検索したところ、以下のブログが見つかりました。参考になりますでしょうか。
http://monogusa.hatenablog.com/entry/2013/03/04/223617
引用返信 編集キー/
■80001 / inTopicNo.4)  Re[2]: VS2013 Fw4.0 VBでIterator
□投稿者/ WebSurfer (929回)-(2016/06/03(Fri) 13:39:15)
No79998 (gyaon さん) に返信
> コンパイルエラーが発生しなくりましたが、疑問が残りますので
> ご存知の方は引き続きご教示お願いいたします。

最初の質問では、問題は「既存のプロジェクト」でコンパイルエラーが出たことだったはず
ですが、話が変わってきたのでしょうか?

> 既存のプロジェクトではApp_Codeフォルダが存在し、
> 自作クラスはすべてその中に配置することが規約でした。
>
> 今回作成した自作コレクションクラスもApp_Codeフォルダ内に配置しておりましたが
> App_Code外に配置したところコンパイルできました。

一番最初の質問のことは忘れて良くて、上記の点のみが今の疑問ということでいいですか?

上記の問題は、多分、「既存のプロジェクト」は Web サイトプロジェクトで作られていて、
「テストプロジェクト」は Web アプリケーションプロジェクトで作られているからではな
いかと思います。

Web アプリケーションプロジェクトでは 2 重コンパイルの問題があるので App_Code フォル
ダは使いません(一部の例外はありますが)。


最初の質問に書いてあった、

> 既存のプロジェクトを作成した方法は
> VisualStudio2013を起動し
> ファイル > 新規作成 > プロジェクト で
> テンプレート > VisualBasic > Web > ASP.NET Web フォームアプリケーションから作成したそうです。

というのは Web アプリケーションプロジェクトの作成手順ですが、「そうです」ということ
は「既存のプロジェクト」は他人が作ったもので、質問者さんご自身の目で具体的にどうなっ
ているか確かめた訳ではないように思えます。よく確認してみることをお勧めします。

ホントに Web アプリケーションプロジェクトなら、App_Code フォルダは使わないので、その
あたりから見直す必要があるかもしれません。
引用返信 編集キー/
■80004 / inTopicNo.5)  Re[3]: VS2013 Fw4.0 VBでIterator
□投稿者/ gyaon (3回)-(2016/06/03(Fri) 14:12:54)
ありがとうございました。

解決いたしました。

既存のプロジェクトはWebアプリケーションで作成されています。
昔からの慣習で「自作クラスはApp_Codeフォルダに配置するもの」として、
わざわざApp_Codeフォルダを作成したようでした。

WebアプリケーションではApp_Codeフォルダは使用しないよう変更しました。

ありがとうございました。
引用返信 編集キー/
■80005 / inTopicNo.6)  Re[4]: VS2013 Fw4.0 VBでIterator
□投稿者/ gyaon (4回)-(2016/06/03(Fri) 14:13:19)
解決済みのチェックを付けわすれました。
解決済み
引用返信 編集キー/
■80041 / inTopicNo.7)  Re[5]: VS2013 Fw4.0 VBでIterator
□投稿者/ WebSurfer (933回)-(2016/06/06(Mon) 12:31:02)
先のレスで、

> Web アプリケーションプロジェクトでは 2 重コンパイルの問題があるので App_Code フォル
> ダは使いません(一部の例外はありますが)。

と書きましたが、その「一部の例外」というのは ASP.NET MVC アプリで使用する Razer 形式
の HTML ヘルパーです。その場合は App_Code フォルダ下に .cshtml ファイルを作成します。

今回の話は ASP.NET Web Forms アプリで、HTML ヘルパーは関係ないと思いますが、今後の参
考に書いておきます。

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -