2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C#, C♯, C#相談室 Part62

1 :デフォルトの名無しさん:2010/09/18(土) 10:57:11
前スレ
C#, C♯, C#相談室 Part61
http://hibari.2ch.net/test/read.cgi/tech/1280008155/

Visual C# 2010 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>1-5くらい

2 :デフォルトの名無しさん:2010/09/18(土) 11:14:44
クラスでラッピング楽しいじゃん

3 :デフォルトの名無しさん:2010/09/18(土) 11:57:15
メモリマップドファイル方式(実際に使うときだけマッピング)の配列をインデクサ
でアクセスして、が一番無難な気がする。仮想領域サイズにも優しいし。

4 :デフォルトの名無しさん:2010/09/18(土) 11:59:57
C#でテキストエディタ作るのはウルトラバカ?

5 :デフォルトの名無しさん:2010/09/18(土) 12:03:56
>>4
Azukiの人に謝れ

6 :デフォルトの名無しさん:2010/09/18(土) 12:21:20
あずきってterapadみたいなもんじゃん

7 :デフォルトの名無しさん:2010/09/18(土) 12:24:08
>>4
誰気にすることなく作りたいものを作ればヨシ

8 :デフォルトの名無しさん:2010/09/18(土) 12:32:20
WPFで書かれたテキストエディタコンポーネントなら欲しいな

WPFアプリケーションにGDIを使ったテキストエディタを埋め込むと違和感が出るから

9 :デフォルトの名無しさん:2010/09/18(土) 14:05:01
前スレで X64 環境でも 2G/4G を越えられない。の話をした者です。

どうも CLR の実装で X64 モードでも 32bit の制限が存在するようです。
しかしだとしたら X64 の存在意義が微妙ですね

10 :デフォルトの名無しさん:2010/09/18(土) 14:26:38
あらら

11 :デフォルトの名無しさん:2010/09/18(土) 14:33:26
>>9
でもさ・・・
配列として大きく確保できなくても分割すれば扱えるんだから
その辺はかなりの物じゃないの?

メモリに置けないからってストレージにアクセス行くことを考えると
クラスで管理することのコストなんてかなり小さいと思うけど

12 :デフォルトの名無しさん:2010/09/18(土) 14:54:47
そもそも、CLRにはLOHの問題があるので、
巨大なメモリ領域との相性が悪い

分割のオーバーヘッドが気になるような処理は
アンマネージドでやれって事なんだろう

WPFも画像処理はみんなアンマネージドだしね

> しかしだとしたら X64 の存在意義が微妙ですね
巨大なアンマネージドメモリを使おうとすると、32bitモードは使い物にならないよ

13 :デフォルトの名無しさん:2010/09/18(土) 14:59:42
>WPFも画像処理はみんなアンマネージドだしね
そうだったのですか。
「すこし」大きめの BLOB データを扱うデータベースアプリの作成が目的だったのですが
X64 で動かせばマネージドで処理できる。というのが間違いだったようですね。

こりゃ、考え直さないといけないですね。
ありがとうございました

14 :デフォルトの名無しさん:2010/09/18(土) 16:06:22
http://ideone.com/8O9tS
を書いてみたんだけど、CreateFromFile がコケる…

System.ApplicationException: MemMapArray.new() error ---> System.IO.DirectoryNotFoundException: パスの一部が見つかりません。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(SafeFileHandle fileHandle, String mapName,
HandleInheritability inheritability, MemoryMappedFileSecurity memoryMappedFileSecurity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity, MemoryMappedFileAccess access)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity)
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 26
--- 内部例外スタック トレースの終わり ---
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 29
場所 MemoryMappedTest.Program.Main(String[] args) 場所 C:\User\VS2010\Projects\test\MemoryMappedTest\Program.cs:行 10

file = "C:\\Users\\<ユーザ名(英数字のみ)>\\AppData\\Local\\Temp\\tmp61C6.tmp"
またWindows7なんだけど、もしかしてVista以降だとPath.GetTempFileName()が使い物にならなくなってる?


15 :デフォルトの名無しさん:2010/09/18(土) 16:07:55
UACの関連とか?

16 :デフォルトの名無しさん:2010/09/18(土) 16:08:47
ああ、いや、File.Delete() とかは使えてるから、MemoryMappedFile がユーザ別の
フォルダに対応していないのか。

17 :デフォルトの名無しさん:2010/09/18(土) 16:17:17
いや、違う・・・普段使ってる場所 (c:\usr\tmp.dat) に作っても駄目だ。
http://ideone.com/o8Toz
何を指定するんだろう、コレ?

18 :デフォルトの名無しさん:2010/09/18(土) 16:25:45
delfhe?そんなような名前の言語とC#でテキストエディタ作るならC#はがいい?

19 :デフォルトの名無しさん:2010/09/18(土) 16:29:42
日本語で

20 :デフォルトの名無しさん:2010/09/18(土) 16:44:35
日本語でテキストエディタ作るの
ひまわりとかか

21 :デフォルトの名無しさん:2010/09/18(土) 16:52:39
>>14
ファイルが空っぽ(長さ0バイト)なんだから当たり前じゃないのかそれ....

22 :デフォルトの名無しさん:2010/09/18(土) 16:56:10
ファイル名指定は駄目そう、と見切りつけて FileStream 版。

http://ideone.com/zzNU9

でも、new MemMapArray<int>(100) で・・・

System.ApplicationException: MemMapArray.new() error ---> System.IO.IOException:
このコマンドを実行するのに十分な記憶域がありません。

場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(SafeFileHandle fileHandle, String mapName, HandleInheritability inheritability, MemoryMappedFile
Security memoryMappedFileSecurity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(FileStream fileStream, String mapName, Int64 capacity, MemoryMappedFileAccess access, Memory
MappedFileSecurity memoryMappedFileSecurity, HandleInheritability inheritability, Boolean leaveOpen)
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 25
--- 内部例外スタック トレースの終わり ---
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 29
場所 MemoryMappedTest.Program.Test(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedTest\Program.cs:行 11

引数勘違いしてるのかな?_| ̄|○

23 :デフォルトの名無しさん:2010/09/18(土) 16:56:13
>>19
http://hibari.2ch.net/test/read.cgi/tech/1225957942/

24 :デフォルトの名無しさん:2010/09/18(土) 17:04:26
>>14

> File.Create(file).Close();

ただ単に、
ファイルが作られる前にcloseしてるだけじゃないの?

25 :デフォルトの名無しさん:2010/09/18(土) 17:05:34
書き間違い…

ファイルが作られる前にcloseしてるからじゃないの?

26 :デフォルトの名無しさん:2010/09/18(土) 17:12:00
>>24-25
さすがにちゃんとコード見ろと言いたい

27 :デフォルトの名無しさん:2010/09/18(土) 17:12:06
ん、同じ容量で作っておかないと駄目?それはそうかも、と

http://ideone.com/xnBcs

しかし

System.ApplicationException: MemMapArray.new() error ---> System.IO.DirectoryNotFoundException: パスの一部が見つかりません。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(SafeFileHandle fileHandle, String mapName, HandleInheritability inheritability, MemoryMappedFile
Security memoryMappedFileSecurity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(FileStream fileStream, String mapName, Int64 capacity, MemoryMappedFileAccess access, Memory
MappedFileSecurity memoryMappedFileSecurity, HandleInheritability inheritability, Boolean leaveOpen)
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 29
--- 内部例外スタック トレースの終わり ---
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 33
場所 MemoryMappedTest.Program.Test(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedTest\Program.cs:行 11

FileStream 渡してるのに DirectoryNotFoundException ってナニソレ・・・

28 :デフォルトの名無しさん:2010/09/18(土) 17:15:27
this.size = size;
これって何?

29 :デフォルトの名無しさん:2010/09/18(土) 17:16:45
インスタンス変数のfileにメソッド引数のfileを代入。
Dispose()でファイル抹消するため。

30 :デフォルトの名無しさん:2010/09/18(土) 17:17:53
あ、サイズか。同様。SetValue()とかで範囲チェックするため。

31 :デフォルトの名無しさん:2010/09/18(土) 17:18:37
あーsizeって引数なのかごめんw

32 :デフォルトの名無しさん:2010/09/18(土) 17:34:49
>>27
とりあえず、MemoryMappedFile.CreateFromFile のmapNameパラメータに
Path.GetTempFileName()で取得したパスを指定しているのは変だと思う。

33 :24:2010/09/18(土) 17:41:50
まことにすまんかったw

ちゃんと見てませんでした

さて…
では答えは?

mapName
型 : System.String
メモリ マップト ファイルに割り当てる名前

をファイルネームと勘違いしているから!
これは任意の文字列でいい
ただ、これには使っていい文字とダメな文字があるはず。それを使ってるからアウト

と書いてるうちに誰かがレスしてるね…

34 :デフォルトの名無しさん:2010/09/18(土) 17:47:53
winapi32のCreateFileMappingを使ってるはず

名前を指定するのは共有メモリとして使いたい場合

35 :デフォルトの名無しさん:2010/09/18(土) 18:16:02
そんなモンは任意の文字列とは言わんw
とはいえ、マニュアルが言葉足りないのは常。nullに変更。

http://ideone.com/aOfRy

進んだけど、今度は CreateViewAccessor() で…

System.UnauthorizedAccessException: パスへのアクセスは拒否されました。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedView.CreateView(SafeMemoryMappedFileHandle memMappedFileHandle, MemoryMappedFileAccess access, Int64 offset, Int64 size)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateViewAccessor(Int64 offset, Int64 size, MemoryMappedFileAccess access)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateViewAccessor(Int64 offset, Int64 size)
場所 MemoryMap.MemMapArray`1.SetValue(Int64 index, T value) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 49
場所 MemoryMap.MemMapArray`1.set_Item(Int64 index, T value) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 41
場所 MemoryMappedTest.Program.Test(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedTest\Program.cs:行 10

はて、FileStream渡してるのになぁ。

36 :デフォルトの名無しさん:2010/09/18(土) 18:23:08
スタックトレースのコピペがうざい。
初心者スレ行けば?

37 :デフォルトの名無しさん:2010/09/18(土) 18:25:44
初心者スレでもお断り過ぎる

38 :デフォルトの名無しさん:2010/09/18(土) 18:33:25
ファイル名での指定ではc:\usr\tmp.datとかにしても、マップ名にnullを指定しても、
相変わらず「パスの一部が」で駄目と確認。

http://ideone.com/t0PJ5

System.ApplicationException: MemMapArray.new() error ---> System.IO.DirectoryNotFoundException: パスの一部が見つかりません。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(SafeFileHandle fileHandle, String mapName, HandleInheritability inheritability, MemoryMappedFile
Security memoryMappedFileSecurity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity, MemoryMappedFileAccess access)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity)
場所 MemoryMap.MemMapArray`1..ctor(String file, Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 32
--- 内部例外スタック トレースの終わり ---
場所 MemoryMap.MemMapArray`1..ctor(String file, Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 35
場所 MemoryMappedTest.Program.Test(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedTest\Program.cs:行 9


39 :デフォルトの名無しさん:2010/09/18(土) 18:44:10
http://ideone.com/UIr5o

これでも駄目。あとはUACの関連とか?
メイン関数は

http://ideone.com/OXO53

なので、出来たら教えてくれ。自分は諦めた。

40 :デフォルトの名無しさん:2010/09/18(土) 19:18:55
>>38
スタックトレースを貼るな

41 :デフォルトの名無しさん:2010/09/18(土) 19:41:51
mainの中でやりたい処理だけを書いたような、ちっこいプログラムなら見る気もするけど、
意味なくクラスとか使ってるんで、見る気なくした。

42 :デフォルトの名無しさん:2010/09/18(土) 20:35:23
>>38
当たり前ソース見直せ

>>39
そう

それととんでもないことしてるぞ

43 :デフォルトの名無しさん:2010/09/18(土) 20:43:48
質問者じゃないけど、そんな「ほのめかし」要らないだろう。
わからないのなら黙っとけ。
わかりもしねえのに口調だけ上から目線とか馬鹿じゃなかろうか

44 :デフォルトの名無しさん:2010/09/18(土) 20:45:47
知識なくても42みたいに俺わかってるんだぜアピールレスできるもんな誰でも

45 :デフォルトの名無しさん:2010/09/18(土) 20:46:32
例の精神障害者じゃないの

46 :デフォルトの名無しさん:2010/09/18(土) 20:55:20
人違いだ
ゆとりどもめ
>>38
>mmf = MemoryMappedFile.CreateFromFile(file, FileMode.Open, file, tsize*size);
直してないだろ

>>39
ユーザーフォルダではかけるでしょ

47 :デフォルトの名無しさん:2010/09/18(土) 23:54:07
次のコードを記述し特定ディレクトリを開く事が出来ました。
しかし、既にそのディレクトリがエクスプローラー上で
開かれている場合には開きたくありません。

どの様にすれば、
タスクバー上に既に特定ディレクトリが開かれているかを判定する事が出来ますでしょうか?


ProcessStartInfo psi =new System.Diagnostics.ProcessStartInfo();
psi.FileName = @"C:\";
psi.Verb = "explore";
Process.Start(psi);



48 :デフォルトの名無しさん:2010/09/19(日) 00:11:25
ウィンドウ列挙して、Explorerかどうか&キャプションが特定ディレクトリかどうかを
判定すればいいんじゃね?

49 :デフォルトの名無しさん:2010/09/19(日) 01:20:50
>>48
Windows API は使わずに.Netで提供されている機能を使用して
実現したいと思います。

50 :デフォルトの名無しさん:2010/09/19(日) 01:28:14
では、Windows APIを使ってるエクスプローラーをプロセスから削除してください。

51 :デフォルトの名無しさん:2010/09/19(日) 01:31:58
勝手に実現しろよボケェ

52 :デフォルトの名無しさん:2010/09/19(日) 01:35:21
>>49
.NETで提供されている機能もWin32APIで実現されてるんだし
Win32APIを呼び出す機能も.NETで提供されてるよ?
まあExplorerの列挙ならShell32.dll使った方が便利だけど こういう時dynamicは本当に楽だな

53 :デフォルトの名無しさん:2010/09/19(日) 11:46:01
質問者じゃないけどほのめかしはいいよ

54 :デフォルトの名無しさん:2010/09/19(日) 11:47:47
.NETの機能だけじゃ無理。

55 :デフォルトの名無しさん:2010/09/19(日) 12:12:40
>>52
うーんやっぱり.Netだけじゃムリポですか。
Windows API を使うとコードが汚くなるから嫌なのです。

56 :デフォルトの名無しさん:2010/09/19(日) 12:24:04
>>55
OSに依存しまくっているからなあ。

57 :デフォルトの名無しさん:2010/09/19(日) 12:53:54
> Windows API を使うとコードが汚くなる
よく分からん発想だなぁ
適当にクラスとか作って隠蔽しちまえばいいじゃん?

58 :デフォルトの名無しさん:2010/09/19(日) 13:31:48
>>57
コード内にAPI宣言等が存在する事自体が嫌い。

59 :デフォルトの名無しさん:2010/09/19(日) 13:56:12
なんだいつもの荒らしか

60 :デフォルトの名無しさん:2010/09/19(日) 13:58:23
俺は他人にわかりにくいソースが好きだから
なるべくAPI使うよ

61 :デフォルトの名無しさん:2010/09/19(日) 13:59:33
Silverlightで遊んでると本家.NETでPInvokeやアンマネージコード大嫌いになった

62 :デフォルトの名無しさん:2010/09/19(日) 17:44:19
creategraphicsで取得したgはdisposeしたほうがいいですか?

63 :デフォルトの名無しさん:2010/09/19(日) 17:49:09
なんのcreategraphicsかしらんけどControl.CreateGraphicsのことならYes
まあControl.CreateGraphicsを使うことを見直す方が先かもしれんがな

64 :デフォルトの名無しさん:2010/09/19(日) 17:53:56
なんでGCなのにいちいちdisposeしないといけないんだろうな
使えないなぁ

65 :デフォルトの名無しさん:2010/09/19(日) 18:03:48
System.DrawingはアンマネージGDI+の非常に薄いラッパーだから仕方ない
文句があるならWPF使え

66 :デフォルトの名無しさん:2010/09/19(日) 18:10:56
>>64
GCされるときはされる。

67 :デフォルトの名無しさん:2010/09/19(日) 18:14:46
アンマネージリソースをWinFormsフレームワーク側できっちり管理してくれてれば
BrushやGraphicsをDisposeしなくていいようにも作れたはずだよな
実際WPFだってもちろん最終的にはアンマネージリソース使うわけだけど
WinFormsみたいに局所的な管理じゃなくてフレームワーク全体で管理してるから
ほとんどDisposeは要らないようになってる

68 :デフォルトの名無しさん:2010/09/19(日) 18:35:17
PenやFontやBrushは現状でも(Win9xでもない限り)現実には明示的にDisposeしなくても
ほぼ無問題のようだけど、Graphicsは若干事情が違うんじゃないの?

ランタイムが包括的に管理すればDispose不要にできるとかそんな性質のものとも思えんが

69 :デフォルトの名無しさん:2010/09/19(日) 18:54:23
いやOSで管理できないとダメ

他のアプリのDCとか余裕で横取りできるから危ない

70 :69:2010/09/19(日) 18:56:57
>>67
あてです

71 :デフォルトの名無しさん:2010/09/19(日) 19:10:06
>>58
だからさAPI呼ぶ専用のクラス作って
代替え案でたら置き換えればいいじゃん

72 :デフォルトの名無しさん:2010/09/19(日) 19:53:44
http://code.msdn.microsoft.com/WindowsAPICodePack
API Code Packでも使えば。

73 :デフォルトの名無しさん:2010/09/19(日) 20:49:19
>>68
DisposeはGCが走るときに通るから別に必ず呼ばなくてはいけないってことではない。
ただ少ない資源を明示的に管理したいときには呼びましょうねってこった。

いずれ廃棄されるけど、廃棄タイミングがわからないと、
次に使うときに困るものとかな。

74 :デフォルトの名無しさん:2010/09/19(日) 21:05:14
初心者スレみたいな話題・・・

75 :デフォルトの名無しさん:2010/09/19(日) 23:36:12
C++/CLIでラッパークラス作ってC#で呼び出せばいいじゃん

76 :デフォルトの名無しさん:2010/09/19(日) 23:41:28
>>75
???

77 :デフォルトの名無しさん:2010/09/19(日) 23:47:21
C#だけしかやってない人ってプログラマとしてのスペックは低そうだな


78 :デフォルトの名無しさん:2010/09/19(日) 23:48:22
どれも均等にできない人よりマシ

79 :デフォルトの名無しさん:2010/09/19(日) 23:53:45
VBプログラマとかってまだ生きてるの?
.NET世代になって自分が出来ないのを棚にあげて.NETを糞扱いしてたよね

80 :デフォルトの名無しさん:2010/09/19(日) 23:56:41
C#がここまで大きくなったのは意外だった
2.0くらいで消えると思ってたよ

81 :デフォルトの名無しさん:2010/09/20(月) 00:06:16
>>77
まじでそうおもう?

仕様だってC++並みに太ってきてんだけどな。

C#だって思う通りの事やりたければ基盤の.NET
事だった相当調べないと実現できねーぞ。

おまえ単なる「奥深い」症候群じゃね?

82 :デフォルトの名無しさん:2010/09/20(月) 00:07:16
さすがにC++並は無いわ

83 :デフォルトの名無しさん:2010/09/20(月) 00:15:35
そうだね
C++よりでかいし


84 :75:2010/09/20(月) 00:22:20
すまん、ちょっと前のAPIの話ね

85 :デフォルトの名無しさん:2010/09/20(月) 00:24:36
比べてる時点で君らはC#だけのプログラマじゃないわけじゃん

86 :デフォルトの名無しさん:2010/09/20(月) 00:33:25
まあこの程度の比較なら実際に使えなくてもできそうだけどな

87 :デフォルトの名無しさん:2010/09/20(月) 01:32:37
きれいにまとめてるって意味では C++ よりずいぶん小さいし、
LINQ とかの高機能面みれば、C++ よりずいぶん進んでる部分もあるし。

88 :デフォルトの名無しさん:2010/09/20(月) 01:47:27
>>87
どーでもいいがLINQまだ使った事が無いけど
便利?

便利で実用性があるなら勉強しようと思う。

89 :デフォルトの名無しさん:2010/09/20(月) 01:55:17
クエリ構文は慣れないと難しいだろうけど
Enumerableの拡張メソッドなんかは便利だよ

90 :デフォルトの名無しさん:2010/09/20(月) 01:56:06
便利だけど、わからない人が一人いたら、つかえねぇ!!ってくらい。わからない人には黒魔術

91 :デフォルトの名無しさん:2010/09/20(月) 02:00:16
世界で出回っている仕事の2,3割はC#になっているのは事実。

92 :デフォルトの名無しさん:2010/09/20(月) 02:06:59
C#一番得意なのにJavaとC++の仕事しかしたことない

93 :デフォルトの名無しさん:2010/09/20(月) 02:10:15

それは得意とかいわん

94 :デフォルトの名無しさん:2010/09/20(月) 02:11:01
一番得意だよ

95 :デフォルトの名無しさん:2010/09/20(月) 02:18:08

実務経験が無いのに得意とかいってる奴は
童貞の癖してSEXは気持ちいいと言ってるのと同じ

96 :デフォルトの名無しさん:2010/09/20(月) 02:22:16
わかってないなぁ

97 :デフォルトの名無しさん:2010/09/20(月) 02:26:14
売春したことないけどSEXは気持ちいい

98 :デフォルトの名無しさん:2010/09/20(月) 02:42:16
Parallel.Foreach使った場合って最小でどのバージョンの.netで動く?

99 :デフォルトの名無しさん:2010/09/20(月) 03:04:14
>>95-97誘導 催眠オナニー気持良すぎ カウント41
ttp://venus.bbspink.com/test/read.cgi/hneta/1284299158/

100 :デフォルトの名無しさん:2010/09/20(月) 03:17:47
>>98
http://msdn.microsoft.com/ja-jp/library/system.threading.tasks.parallel.aspx
4.0から。

101 :デフォルトの名無しさん:2010/09/20(月) 07:25:48
>>93
お前は業務プログラマもしくは人事だろ

根っからのプログラマなら実務経験年数よりも実務外の経験値が強力な意味を持つことは(ry
実務何年たっても使えないヤツは使えないんだよ

102 :デフォルトの名無しさん:2010/09/20(月) 09:43:19
そんな事を2chで語る無意味さを理解できない無能が何か言いたいようです↓

103 :デフォルトの名無しさん:2010/09/20(月) 10:30:32
>>88
C# は実用性の塊だから安心していい。
なれたらむちゃくちゃ便利で、もう Java とか C++ 書けない。

Python とか Ruby には似たような機能あるけど
(yield 的な機能とか、メソッドチェインでデータ処理する機能とか)、
この手の言語の利用者も口をそろえて Java とか C++ は使いたくないって言うし。

>>92
2・3割はまだ言い過ぎかなぁ。
いまだ、Java の方が3倍くらい案件多いみたいだし。
最も、Java は下がる一方、C# は伸びる一方だけども。
抜くのは4・5年後かなぁ。

あと、組み込みとかゲームとか、C か C++ しか使えない環境もまだまだ多いし。

104 :デフォルトの名無しさん:2010/09/20(月) 10:32:17
>>68
必ずしもGraphicsがGDI+のGraphicsと一対一で対応してる必要はないんだよね。
たとえばWPFでは、UI要素は実際に使用されてる間だけ内部でアンマネージリソースが割り当てられる。
フレームワーク的に都合の悪いAPIは最初から公開しなければいい。
薄いラッパーのメリットももちろんある。WinForms自体そういうコンセプトなのでそもそもどうしようもない。
その良し悪しは別。

105 :デフォルトの名無しさん:2010/09/20(月) 10:46:11
いつかGCでdisposeされるならほっとこっと

106 :デフォルトの名無しさん:2010/09/20(月) 11:20:50
ポインタと再帰が理解できないアホが何を使っても同じ

107 :デフォルトの名無しさん:2010/09/20(月) 14:48:17
でっかい釣り針だなww 乗ってやろう。
そういう 106 は GoF すら知らないのであった・・・

108 :デフォルトの名無しさん:2010/09/20(月) 15:00:25
あーあー、釣られちゃったよ

109 :デフォルトの名無しさん:2010/09/20(月) 15:03:42
得意気にGoFとか言っちゃうのがまた痛々しいな

110 :デフォルトの名無しさん:2010/09/20(月) 15:31:47
ゴフッ

111 :デフォルトの名無しさん:2010/09/20(月) 15:35:32
  / ̄ ̄ヽ
 / (●) ..(●   うるふです
 |   'ー=‐' i
  >     く 

  / ̄ ̄ヽ
 / (◎) ..(◎   ごふっ
 |   'ー=‐' i
  >     く 


    / ̄ ̄ヽ  ┏┓
   / (●) ..(● ┏┛
   |   'ー=‐' i  ・
    >     く
 _/ ,/⌒)、,ヽ_
   ヽ、_/~ヽ、__)  \

112 :デフォルトの名無しさん:2010/09/20(月) 15:41:50
JavaはGoogle vs Oracleの一件とかあるからますます敬遠されるかもね

113 :デフォルトの名無しさん:2010/09/20(月) 15:50:18
常識な用語を書くと得意気なのか。知らなかったよ。

114 :デフォルトの名無しさん:2010/09/20(月) 15:53:18
SunとApache Harmonyが争そってたあたりから雲行きは既に怪しかった

115 :デフォルトの名無しさん:2010/09/20(月) 16:08:09
乗ってやろう(ドヤ顔)のあたりで既に得意気だよな。
GoFはあまり関係ないと思う。

116 :デフォルトの名無しさん:2010/09/20(月) 16:21:26
お前ら釣られすぎ

117 :デフォルトの名無しさん:2010/09/20(月) 16:31:22
スレと関係ないんだけどさ、俺「釣り」とか「釣り師」っていうのは、

 釣り師 ↓     
.            /| ←竿
     ○  /  |
.    (Vヽ/    |
    <>     |
゙'゙":"''"''':'';;':,':;.:.,.,__|_________
             |
  餌(疑似餌)→.§ >゚++< 〜
                 の組み合わせだと思ってたんだけど、

最近自称釣り師がダイレクトで自分の本音を攻撃されて「釣れた!」とか
言ってるの多いよね。
 これは、どっちかというと、



          ,〜〜〜〜〜〜 、
|\     ( 釣れたよ〜・・・)
|  \    `〜〜〜v〜〜〜´
し   \
゙'゙":"''"''':'';;':,':;.:.,.,  ヽ○ノ
          ~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                 ト>゚++<
              ノ)

かと思うんだけど、どうよ?

118 :デフォルトの名無しさん:2010/09/20(月) 16:31:37
どや顔と言えばこの人
http://www.youtube.com/watch?v=1cAY4hW-ljA

119 :デフォルトの名無しさん:2010/09/20(月) 16:37:54
Enumerable.Cast<T>ってT dest = (T)src;じゃないのね

120 :デフォルトの名無しさん:2010/09/20(月) 16:42:45
TSource is TDestがtrueじゃないと駄目

121 :デフォルトの名無しさん:2010/09/20(月) 16:44:34
違う、TSourceがobjectでもいいけど実際にTDestにキャストできないと駄目

122 :デフォルトの名無しさん:2010/09/20(月) 16:50:45
というか>>119の言わんとしてることが分からない。
もしかしてexplicitのこと?

123 :デフォルトの名無しさん:2010/09/21(火) 09:17:00
static IEnumerable<T> ExplicitCast<T>(this IEnumerable source) {
foreach (object item in source) yield return (T)(dynamic)item;
}

var doubleValues = new int[] { 1, 2, 3 }.ExplicitCast<double>();
こういうこと? Select使えという話だが

124 :デフォルトの名無しさん:2010/09/21(火) 14:11:40
初心者スレの次スレどなたか立てて下さい
http://hibari.2ch.net/test/read.cgi/tech/1281236906/

125 :デフォルトの名無しさん:2010/09/21(火) 22:10:14
画面(Form1)起動時に二重起動のチェックをして、
既に起動中のプログラムがある場合、
起動中のプログラムをアクティブにするという処理をしたいです。

色々調べて、↓を参考に作成しました。
すると、★印のところで、画面のハンドルが取れるときと取れない場合がありました。

・取れる場合:起動中画面のVisibleがtrueで画面表示されている状態(アクティブではない)。
・取れない場合:画面のVisibleがFlaseでタスクトレイにアイコンが表示されている状態。

前提条件として、画面(Form1)は閉じる処理を行うと、タスクトレイに常駐します。
画面の閉じる処理で行ってるのは、Visibleプロパティをfalseにしているだけです
取れない場合、どのようにすれば良いのでしょうか?


126 :デフォルトの名無しさん:2010/09/21(火) 22:13:06
どうやって取ってんの?

127 :125:2010/09/21(火) 22:15:01
125の続きです。よろしくお願いします。

// 以下の名前空間をインポートする
using System.Diagnostics;
using System.Runtime.InteropServices;

public class MyProcess {
[DllImport("USER32.DLL", CharSet=CharSet.Auto)]
private static extern int ShowWindow( System.IntPtr hWnd, int nCmdShow );

[DllImport("USER32.DLL", CharSet=CharSet.Auto)]
private static extern bool SetForegroundWindow( System.IntPtr hWnd );

private const int SW_NORMAL = 1;

128 :125:2010/09/21(火) 22:15:57
126の続きです。よろしくお願いします。

/// ------------------------------------------------------------------------------------
/// <summary>
/// 同名のプロセスが起動中の場合、メイン ウィンドウをアクティブにします。</summary>
/// <returns>
/// 既に起動中であれば true。それ以外は false。</returns>
/// ------------------------------------------------------------------------------------
public static bool ShowPrevProcess() {
Process hThisProcess = Process.GetCurrentProcess();
Process[] hProcesses = Process.GetProcessesByName(hThisProcess.ProcessName);
int iThisProcessId = hThisProcess.Id;

foreach (Process hProcess in hProcesses) {
if (hProcess.Id != iThisProcessId) {
★ ShowWindow(hProcess.MainWindowHandle, SW_NORMAL);
★ SetForegroundWindow(hProcess.MainWindowHandle);
return true; }
}
return false; }
}

[System.STAThread()]
private static void Main() {
// 同名のプロセスが起動していない時は起動する
if (!MyProcess.ShowPrevProcess()) {
Application.Run(new Form1());
}
}


129 :デフォルトの名無しさん:2010/09/21(火) 22:16:24
初心者スレ行けよ。

130 :デフォルトの名無しさん:2010/09/21(火) 22:17:02
SPY++で見て、メインウィンドウがなければ無理。

131 :デフォルトの名無しさん:2010/09/21(火) 22:17:57
よくありがちなのは、名前付きパイプで通信、とかそんなんだな。

132 :デフォルトの名無しさん:2010/09/21(火) 22:20:08
Microsoft.VisualBasic.dll参照して
Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
派生させれば単一インスタンスも楽勝なんだが。コマンドライン引数も渡せるし。

133 :デフォルトの名無しさん:2010/09/21(火) 22:23:44
SetForgroundWindowって今はBlinkしかしないんじゃなかったっけ

134 :デフォルトの名無しさん:2010/09/21(火) 22:31:36
AttachThreadInput()すれば行けると思う。

135 :デフォルトの名無しさん:2010/09/21(火) 22:52:08
GPLって面倒臭いんだね


136 :デフォルトの名無しさん:2010/09/21(火) 23:08:23
そりゃ盗人(stole man)の法ですから

137 :デフォルトの名無しさん:2010/09/21(火) 23:11:35
という自演を見た

138 :デフォルトの名無しさん:2010/09/21(火) 23:14:44
>>133
状況によって動作が異なる。

139 :デフォルトの名無しさん:2010/09/22(水) 08:00:03
>>138
状況をくあしく

140 :デフォルトの名無しさん:2010/09/22(水) 08:26:27
>>139
アクティブウィンドウを切り替える権限を持ったプロセスから呼び出した場合は
点滅するのではなくて、アクティブウィンドウが切り替わる。
通常はアクティブなウィンドウを持つプロセスがこの権限を持っている。
この権限を持つプロセスは、ほかのプロセスに権限を与える事も出来る。

141 :デフォルトの名無しさん:2010/09/22(水) 12:12:28
静的メソッド と インスタンスメソッド どっちの方が実行速度が速いですか?
※内部アルゴリズム等は全く同じとします。

個人的にはいちいちインスタンスを作ってから実行するのは面倒なので
静的メソッドをよく使っています。

142 :デフォルトの名無しさん:2010/09/22(水) 12:35:02
変わらないんじゃね?
ただし、なぜかメモリ使用量は静的メソッドの方が多くなるらしい

143 :デフォルトの名無しさん:2010/09/22(水) 12:39:18
体感できないと思うけど
http://msdn.microsoft.com/ja-jp/library/ms245046.aspx
>メソッドを静的としてマークすると、コンパイラはこれらのメンバーに対する
>非仮想呼び出しサイトを出力します。非仮想呼び出しサイトを出力することで、
>現在のオブジェクト ポインターが null ではないことを確認する各呼び出しの
>実行時のチェックが行われなくなります。パフォーマンス重視のコードでは、
>これにより大きくパフォーマンスを向上できます。

144 :デフォルトの名無しさん:2010/09/22(水) 13:38:45
>>142 >>143
結局どちらの方が早いのでしょうか?
>>142
さんのおっしゃる様に実際は変らないのでしょうか?

145 :デフォルトの名無しさん:2010/09/22(水) 14:18:38
百万回呼ばれるとかでなけりゃどうせ誤差の範囲内。
プロファイル取ってボトルネックになってるとこをチューニングする時になってはじめて意識すれば十分。

146 :デフォルトの名無しさん:2010/09/22(水) 14:41:24
たとえば string AddString(string a, string b) { return a + b; }
こんなメソッドがあったとして、このメソッド呼び出しのオーバーヘッドと、メソッドの中で実際に行われる
文字列連結処理にかかる時間を比較するとどれくらいだと思う?
たぶん1:数千とか1:数十万とかそんな感じだよ。
もしstaticに変えることでその1が0.5になったところで実際には全く速くならないの。

147 :デフォルトの名無しさん:2010/09/22(水) 16:32:51
影響が出るようならMathクラスなんかstaticにしないだろう

148 :デフォルトの名無しさん:2010/09/22(水) 17:43:59
だから結局どっちがはやいんだ?

プログラム言語を作れるレベルの人に聞かないと拉致があかないかもね。

149 :デフォルトの名無しさん:2010/09/22(水) 17:51:48
そう思うならここで聞くなハゲが。

150 :デフォルトの名無しさん:2010/09/22(水) 18:04:14
メンバー専用エリアなんかでパスワードを忘れた場合に
パスワード再発行すると思うんですが、下のような流れで

登録時のメールアドレス又はアカウントを送信

メールアドレスへパスワード変更フォームのアドレスを送信

フォームでパスワードの変更

ってのはどうやって実装するのがいいんでしょ。
めっちゃざっくりで申し訳ないんですがどういった手順で考えれば効率的でいいのかヒント教えてもらればうれしいんですが。
よろしくお願いします。


151 :149:2010/09/22(水) 18:05:29
>>150
そんなショボイ質問をする奴は作らない方が無難
ハゲには無理


152 :デフォルトの名無しさん:2010/09/22(水) 18:11:20
っていうかその流れの通りに書けばいいだけだろ
コード要求してるの?

153 :デフォルトの名無しさん:2010/09/22(水) 18:13:46
ASPならPasswordRecoveryなんてのが

154 :デフォルトの名無しさん:2010/09/22(水) 19:23:57

>>152
コードというよりは
153さんがいうような、これ使えばいいよっていうのを教えてもらいたかったもので。

>>153

ありがとうございます。参考にしてみます。

155 :デフォルトの名無しさん:2010/09/22(水) 21:29:32
SocketSniffみたいなことをしたいのですがC#で出来ます?
プロセス名からパケットを見たい

156 :デフォルトの名無しさん:2010/09/22(水) 21:41:12
>>148
呼び出しだけ見れば、圧倒的にstaticが速い。高速化のためにstaticメソッドにしたりもする。
しかし、多くの場合は誤差の範囲。

157 :デフォルトの名無しさん:2010/09/22(水) 21:43:54
>>156
ありがとうございます。
ようやくまともな方が現れてほっとしました。

158 :デフォルトの名無しさん:2010/09/22(水) 21:48:12
SocketSniffの説明にDLLもサービスも必要なく単体で動作しますとある
これで2000〜7まで対応するとなるとWinSockをフックしかないような

159 :デフォルトの名無しさん:2010/09/22(水) 21:50:11
>>145で同じ人が同じことを言ってるがねえ。

160 :デフォルトの名無しさん:2010/09/22(水) 23:02:13
exe名を入れると、通信してるパケットがずらーっと出る
それだけのC#のサンプルってないですか?

161 :デフォルトの名無しさん:2010/09/22(水) 23:11:54
あるわけないだろ

162 :デフォルトの名無しさん:2010/09/22(水) 23:23:49
SocketSniffのインポート関数にCreateRemoteThreadあるからフックで合ってるっぽいな。
サンプルがどうとか言ってるレベルで手を出せるものじゃないよ。

163 :デフォルトの名無しさん:2010/09/22(水) 23:28:28
http://hp.vector.co.jp/authors/VA050396/tech_08.html
これが理解できるなら行ける

164 :デフォルトの名無しさん:2010/09/22(水) 23:29:29
>>156
ほとんど変わんねーよ。
どこが圧倒的なんだか。

ちなみにこんな情報もある。
ttp://msdn.microsoft.com/ja-jp/magazine/cc507639.aspx


165 :デフォルトの名無しさん:2010/09/22(水) 23:33:12
非仮想メソッドまたは静的メソッドの呼び出し
→単一の呼び出し命令にコンパイルされる、最も高速な種類の呼び出しです。


166 :デフォルトの名無しさん:2010/09/22(水) 23:36:46
>>164
初心者にも分かるようにURL先の内容を3行にまとめてください

167 :デフォルトの名無しさん:2010/09/22(水) 23:37:40
>ほとんど変わんねーよ。

1行で纏まってると思うのですが…

168 :デフォルトの名無しさん:2010/09/22(水) 23:44:25
>>165で2行だろ。


169 :デフォルトの名無しさん:2010/09/22(水) 23:46:15
二つあわせて3行だ

170 :デフォルトの名無しさん:2010/09/22(水) 23:51:52
呼びだすところだけ見れば、2倍以上の差。

171 :デフォルトの名無しさん:2010/09/22(水) 23:53:50
>>163
全く歯が立ちません><
sharppcap関係を見てます

172 :デフォルトの名無しさん:2010/09/23(木) 01:21:52
それ"誤差の範囲内"の証明だよな。
2倍のコストなんて中身のコストに比べれば無いも同然。
結局
>プロファイル取ってボトルネックになってるとこをチューニングする時になってはじめて意識すれば十分。
って事じゃん

173 :デフォルトの名無しさん:2010/09/26(日) 20:10:35
WCFでリモートのサービスを取得したい時、Uriが間違っていても
その間違いがわかるのは、実際にサービス(のインターフェース)
にアクセスしたときなんでしょうか?

てっきり、ChannnelFactory<T>.CreateChannel()でエラーが出ると思っていた
のです…。サービスにアクセスする前にUriの間違いを判別することは
できないでしょうか。


174 :デフォルトの名無しさん:2010/09/26(日) 22:50:13
そのアプリは実働中にサービスのエンドポイントがコロコロ変わるんですか?

175 :デフォルトの名無しさん:2010/09/26(日) 22:53:05
無理だろ

176 :デフォルトの名無しさん:2010/09/27(月) 17:21:44
すいません、スレチだということは分かっていますが・・・。

今、ASP.netのスレッドってないんですか?

コーディングでなく環境周りの話なので、こちらでないことは十分に理解してるんですが、WebProg板にどーしても見つからんのです。

177 :デフォルトの名無しさん:2010/09/27(月) 17:32:55
専門スレじゃなければ質問できるとこはあるんでないの
こことか
http://hibari.2ch.net/test/read.cgi/php/1284805237/

178 :デフォルトの名無しさん:2010/09/27(月) 17:35:42
そんなとこで聞いたらPHPerに殴られちゃいます

179 :デフォルトの名無しさん:2010/09/27(月) 17:48:08
ぴーえっちぱー

180 :デフォルトの名無しさん:2010/09/27(月) 18:09:49
DB板だと範囲違うかな・・・違うだろうな

ADO.NETの質問・雑談スレ2
http://hibari.2ch.net/test/read.cgi/db/1234077152/

181 :デフォルトの名無しさん:2010/09/27(月) 18:10:23
おっとADOだったw

182 :デフォルトの名無しさん:2010/09/27(月) 18:12:24
C#やってるとスレタイが読めなくなってくるのかもな

183 :デフォルトの名無しさん:2010/09/27(月) 20:49:29
構造体の効率についての質問です。

struct Big {
 long a, b, c, d, e, f, g, h, i, j;
}

struct A {
struct Big big;
}
struct B {
struct A a;
}
struct C {
struct B b;
}
stcut C c;

こういうのがあるとき、
c.b.a.big.aと値を参照するとき、
何度も何度もコピーされているのでしょうか。

こういうとき、省略される、安心しろ、
という記述もマイクロソフトの文書であったような気がしますが、
なにかあやふやです。ご存知の方はいませんか?

184 :デフォルトの名無しさん:2010/09/27(月) 20:51:05
知らんけど
XNAとかで問題になりそうよね
省略されてると思いたいな

185 :デフォルトの名無しさん:2010/09/27(月) 21:10:07
質問させてください。
delegateの命名規則に関するHPなり書籍なりありませんか?
ネットで検索したのですが、色々な意見があり、いまいちこれが答えというものにたどり着けませんでした。

また、実装方法に関して質問させてください。
ttp://www.atmarkit.co.jp/fdotnet/csharp20/csharp20_05/csharp20_05_04.htmlのページで勉強させてもらっているのですが、
このページでは従来interfaceもしくはAbstractクラスで行っている事をdelegateに置き換えることを進めています。
C#では、delegateを使う方がメジャーなのでしょうか?


よろしくお願いいたします。


186 :デフォルトの名無しさん:2010/09/27(月) 21:24:28
・名前付けのガイドライン
・・クラス、構造体、およびインターフェイスの名前
http://msdn.microsoft.com/ja-jp/library/ms229040%28v=VS.100%29.aspx

けど最近のデリゲートこれに従ってないよね
Predicate<T>とか
結構いいかげんっぽいね

@ITでは「両者はうまく適材適所で使い分けていくとよいだろう。」と書いてあるし
別に置き換えを薦めているようには見えない

187 :デフォルトの名無しさん:2010/09/27(月) 21:25:25
>>183
フィールドならコピーされない。プロパティならコピーされる。

>>185
Microsoftのガイドラインは
MSDNの「クラス、構造体、およびインターフェイスの名前」
ま、「クラスライブラリ開発のデザインガイドライン」
つまり他のアセンブリから見える範囲のみの規定だから
そうでないなら好き勝手にしろ、と言うのがMicrosoftのスタンスだな
私はそれをそのままprivateなもんにも適用してるけど

> C#では、delegateを使う方がメジャーなのでしょうか?
引数と返値で完結するようなもんならdelegateでもいいんじゃない?程度

188 :デフォルトの名無しさん:2010/09/27(月) 21:28:13
>>187
どうもありがとう!

> フィールドならコピーされない。プロパティならコピーされる。

これはJIT関係とみていいんでしょうか。
昔見たはずのマイクロソフト文章を探してるんですが、
.NET関係にも、msdn関係にも、どうも見当たりません。

どこかでそういうのを見たハズなんですが…。

189 :185:2010/09/27(月) 21:53:47
回答ありがとうございました。
参考にさせていただきます。



190 :デフォルトの名無しさん:2010/09/28(火) 01:03:28
>>183,187,188
プロパティなら、そもそもその構文、コンパイル通らない。


191 :デフォルトの名無しさん:2010/09/28(火) 18:22:26
ISerializableメンバを実装したオブジェクトをシリアライズしたものを
デシリアライズするとき、コンストラクタが呼ばれずフリーズしてしまう
ことがあります。調べると、staticフィールドがあるときに発生するようです。
これは、よく知られたことなのでしょうか?正直理由がわからないので、
どういう理屈か説明いただけないでしょうか?

192 :デフォルトの名無しさん:2010/09/28(火) 18:31:17
単にそれだけならそんなことにはならないな

193 :デフォルトの名無しさん:2010/09/28(火) 20:36:39
すみません。再確認したらstaticフィールドなしでも動かなかったり。
ToString()メソッドを消したら動いたり、継承クラスだったら動いたり
と完全にわけがわかりません…。
ジェネリック型なのがまずいのでしょうか。

194 :デフォルトの名無しさん:2010/09/28(火) 20:54:43
再現性のあるコードを出せ

195 :デフォルトの名無しさん:2010/09/28(火) 23:09:08
テストに関して質問させてください。

NUnitを使ってテストをしているのですが、テストコードからinternal修飾子にアクセスできないため、とりあえず、internalでよいものもpublicにしてテストをしています
これを、解決する上手い方法はあるのでしょうか?
よろしくお願いいたします。

196 :デフォルトの名無しさん:2010/09/28(火) 23:13:02
InternalVisibleToAttribute

197 :デフォルトの名無しさん:2010/09/28(火) 23:15:08
ごめんちょっと間違えた、InternalsVisibleToAttribute

198 :デフォルトの名無しさん:2010/09/29(水) 00:06:59
>>197
ありがとうございます。
Javaのときみたいに、reflection調べようかと思っていました。
助かりました。

199 :デフォルトの名無しさん:2010/09/29(水) 12:22:53
>>191
実装ミス


200 :デフォルトの名無しさん:2010/09/29(水) 15:50:41
実装ミスですよ

201 :デフォルトの名無しさん:2010/09/29(水) 22:25:20
実装ミスかあ

202 :デフォルトの名無しさん:2010/09/30(木) 09:17:26
Zip so miss....

203 :デフォルトの名無しさん:2010/09/30(木) 12:23:02
( ゚д゚)ポカーン

204 :デフォルトの名無しさん:2010/10/01(金) 00:11:31
クラス名とプロパティ名が被ってしまいます
Size型を返すSizeプロパティとか
かといってwindow.WindowSizeみたいに自明な接頭語付けるのは避けたい

みんなどうしてるの

205 :デフォルトの名無しさん:2010/10/01(金) 00:15:30
>>204
かぶっても問題ないでしょ


206 :デフォルトの名無しさん:2010/10/01(金) 00:16:59
余裕でSize型のSizeプロパティ採用しますけど何か?
Image.Sizeとかそんなんばっかりじゃん

207 :デフォルトの名無しさん:2010/10/01(金) 00:31:16
1行目と2行目で指してるものが違うよね

1行目(クラス名=プロパティ名)
class Size{

public object Size { get; set; } // これは無理

}

2行目(プロパティ名=型名)
class TekitounaClass{

public Size Size { get; set; } // これはOK

}

208 :デフォルトの名無しさん:2010/10/01(金) 00:44:18
http://msdn.microsoft.com/ja-jp/library/ms229012.aspx
>プロパティには、その型と同じ名前を付けるようにしてください。

209 :デフォルトの名無しさん:2010/10/01(金) 01:08:55
>>208
コピペ君って馬鹿だな。

>>204
確かに他の人が言うようにプロパティが型名と同じ名前でも何も問題はないけど、
特に自分のプロパティ経由して取得した値のメンバを読んでる場合とか、
型の静的メソッドに見えたりして一瞬思考を取られる感じがあるのも確か。

なので個人的には、やっぱりインターフェイスだけでなくクラスも構造体もEnumも
型名は全部プリフィクス付けるのがやっぱり良いような気がする。
まあこんなことしてる人は殆んど見たことないけど。

210 :デフォルトの名無しさん:2010/10/01(金) 01:29:47
>型の静的メソッドに見えたりして一瞬思考を取られる感じが
>あるのも確か。
お前だけ。少なくとも VS 上だと型は色分けされるから。


211 :デフォルトの名無しさん:2010/10/01(金) 02:12:15
コピペ君って馬鹿だな。

の人が例のあの人だと最近気づいた

212 :デフォルトの名無しさん:2010/10/01(金) 02:21:20
>>211
例の人って?

213 :デフォルトの名無しさん:2010/10/01(金) 03:03:30
知らない方がいいだろ

214 :デフォルトの名無しさん:2010/10/01(金) 07:24:05
>>211
気になるだろ

215 :デフォルトの名無しさん:2010/10/01(金) 09:35:35
おれも気になる

216 :デフォルトの名無しさん:2010/10/01(金) 15:51:27
すいません。教えてください。
フォームのタイトルバーやフォームの枠を含めた左上と、フォームのクライアント座標の左上
との差分を取得したいです。
LocationとDesktopLocationを取得すればよいと思ったのですが、同じ値になっています。
MDIの子フォームなのですが、どのように取得したらよいでしょうか。


217 :デフォルトの名無しさん:2010/10/01(金) 16:04:26
スクリーン座標に変換すると良いよ
MDI子の左上座標は自分のLocationをMDI親のPointToScreenで変換
MDI子のクライアント座標は0,0を自分のPointToScreenで変換

218 :216:2010/10/01(金) 16:36:19
>>217
おおー
ありがとうございました!!!

219 :デフォルトの名無しさん:2010/10/01(金) 19:13:11
>>212
>>211が被害妄想狂なんでしょw
なんかいつも見えない敵(だってそんなものは本当は実在しないから)と戦ってる奴なんて2chにはありふれてる。

220 :デフォルトの名無しさん:2010/10/01(金) 19:52:11
>>208みたいなガイドラインは少々デメリットがあろうが統一されてることに意味があるんだよ

221 :デフォルトの名無しさん:2010/10/01(金) 19:55:57
>>220
クラスと同じ名前のプロパティーにべつにデメリットはないだろ。

222 :デフォルトの名無しさん:2010/10/01(金) 20:36:14
コピペ君って馬鹿だな。の人は一瞬引っかかるそうだよ
知らんけど

223 :デフォルトの名無しさん:2010/10/01(金) 20:42:29
コピペ君ってバカだなってスクリプトかと思ってた。
普通にしゃべれるんだ。

224 :デフォルトの名無しさん:2010/10/01(金) 20:48:45
普段から喋ってるじゃねえか。

225 :デフォルトの名無しさん:2010/10/01(金) 21:34:26
2つのリストボックス1、2があって
リスト1で選択した項目をリスト2に移したいんですけど
複数選択時のリストの項目の削除の仕方がわかりませんでした
具体的にどんなコードを書いたらいいでしょうか?

226 :デフォルトの名無しさん:2010/10/01(金) 21:45:03
for(int i = listBox.SelectedIndices.Count - 1; i >= 0; i ++)
{
listBox.Items.RemoveAt(listBox.SelectedIndices[i]);
}

ってのはどう?
動作確認してないけど

227 :デフォルトの名無しさん:2010/10/01(金) 21:49:00
すまん、i--ね

228 :デフォルトの名無しさん:2010/10/01(金) 21:51:01
i--じゃねーの

229 :デフォルトの名無しさん:2010/10/01(金) 22:46:06
>>226
ありがとうございます
動作確認してませんけどw

学校いったら試してみます

230 :204:2010/10/01(金) 23:46:48
ありがとう
同じ名前ってなんかなーと思ったけどそれが普通なら受け入れるか

231 :デフォルトの名無しさん:2010/10/02(土) 02:44:30
PanelのBorderStyleでFixedSingleを指定した場合、右側の線だけ消すとかはできないんでしょうか?


232 :デフォルトの名無しさん:2010/10/02(土) 02:53:02
無理
Paintイベントで自分で書け

寝る

233 :デフォルトの名無しさん:2010/10/02(土) 10:29:11
おはようございます。
VC#2008EEで、pictureBoxのsizemodeについて質問です。
状況説明をします。
SizeMode = Zoomに設定しています。
pictureBoxのペイントメソッドでpictureBoxの縦横をClientRectangleの値に書き換えます。
その後DrawImageしているのですが、Zoomの説明のとおりの動作をしません。
つまり、縦横比は保持したまま最大のサイズに補正してくれません。
以下その部分のコードです。何か足りていない等ありましたらご指摘をお願いいたします。

private void pictureBox1_Paint(object sender, PaintEventArgs e){
if (_img != null){
pictureBox1.Width = ClientRectangle.Width;
pictureBox1.Height = ClientRectangle.Height;
e.Graphics.DrawImage(_img, 0, 0, pictureBox1.Width, pictureBox1.Height);
}
}

以上、宜しくお願いいたします。

234 :デフォルトの名無しさん:2010/10/02(土) 10:32:55
そりゃそうだ
SizeModeはImageプロパティを使った場合にしか関係ない
DrawImage使いたいんだったら自分で適切なサイズを計算して描画する
もしくはBitmapに描画してからImageプロパティに設定

235 :デフォルトの名無しさん:2010/10/02(土) 10:41:39
即レスありがとうございます。

そういう事だったのですね。
DrawImage使わずにpictureBox1.Image = _img;
と再度することで解決しました。
DrawImage使いたいんだったら、という下りで気付かされました。

以下のようになりました。

private void pictureBox1_Paint(object sender, PaintEventArgs e){
if (_img != null){
pictureBox1.Width = ClientRectangle.Width;
pictureBox1.Height = ClientRectangle.Height;
    pictureBox1.Image = _img; //変更箇所↓
    //e.Graphics.DrawImage(_img, 0, 0, w, h); //変更箇所↑
}
}

大変助かりました。ありがとうございました!!

236 :デフォルトの名無しさん:2010/10/02(土) 19:14:25
どういたしまして
次回も期待してくれ

237 :デフォルトの名無しさん:2010/10/02(土) 19:25:27
次回作にご期待ください

238 :デフォルトの名無しさん:2010/10/03(日) 11:53:33
俺たちの戦いはこれまでだ

239 :デフォルトの名無しさん:2010/10/04(月) 02:34:12
test

240 :デフォルトの名無しさん:2010/10/04(月) 03:50:10
>>235
誰も突っ込んでないが、どう見ても3行ともPaintイベントでやる処理じゃないし

241 :デフォルトの名無しさん:2010/10/04(月) 08:53:30


242 :デフォルトの名無しさん:2010/10/04(月) 23:27:17
DataBindingの事で質問させていただきます

class Class1
{
public string Value
{
set;
get;
}
}

class Form1 : Form
{
Class1 c = new Class1();
public Form1()
{
InitializeComponent();
textBox1.DataBindings.Add("text", c ,"Value");
}
}

このようなソースを書いているのですが、いくらValueを変更してもtextBox1に反映されません。
どの部分がおかしいでしょうか?

243 :デフォルトの名無しさん:2010/10/04(月) 23:31:19
Class1にINotifyPropertyChangedを実装する必要がある
Valueのsetで現在の値と違う値が設定されようとしていたらイベントを発生させる
自動プロパティは使えない

244 :デフォルトの名無しさん:2010/10/04(月) 23:31:59
それでどうやって変更されたことがtextBoxに伝わるんだよ

245 :デフォルトの名無しさん:2010/10/04(月) 23:50:35
早い返答ありがとうございます
ttp://msdn.microsoft.com/ja-jp/library/system.componentmodel.inotifypropertychanged(VS.80).aspx
上記のページを参考にしつつ、下記のように変更することで解決しました

private string _val;
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public string Value
{
set
{
if (value != _val)
{
_val = value;
NotifyPropertyChanged("Value");
}
}
get
{
return _val;
}
}

本当にありがとうございました

246 :デフォルトの名無しさん:2010/10/05(火) 17:26:16
friendっぽい方法を思いついたんだけどどうだろう?
関数自体見えるからだめ?

public class Test
{
private class KeyClass { }
private static Type _Key = typeof(KeyClass);
public class ClassA
{
private object obj = null;
public bool Set(Type Key, object new_obj)
{
if (Key != _Key)
return false;
obj = new_obj;
return true;
}
}
public class ClassB
{
private object obj = null;
public ClassB(object obj)
{
this.obj = obj;
}
public bool CopyTo(ClassA A)
{
return A.Set(_Key, obj);
}
}
}


247 :デフォルトの名無しさん:2010/10/05(火) 17:58:28
気持ち悪い

248 :デフォルトの名無しさん:2010/10/05(火) 19:35:15
interface IHoge {
 void Hoge();
}
class Foo {
 private string bar;
 private class Hoge : IHoge {
  public Foo foo;
  void Hoge() { retirm foo.bar; }
 }
 public IHoge CreateHoge() { return new Hoge { foo = this }; }
}
教科書的にはこうやるのが正解

249 :デフォルトの名無しさん:2010/10/05(火) 22:27:31
基本的にファイナライザは無効にしておいて、後でオブジェクトが特定の状態になった場合だけ
ファイナライザの呼び出しを有効にしたいです。
普通にファイナライザを定義しておいてコンストラクタでGC.SuppressFinalize(this)
必要に応じてReRegisterForFinalizeというのは思いついたのですが、もっと良い方法があれば教えてください。

250 :デフォルトの名無しさん:2010/10/06(水) 01:10:28
>>249
ファイナライザを呼ばれちゃいけない期間は参照を保持しておけばいいだろ。

251 :デフォルトの名無しさん:2010/10/06(水) 06:32:30
>>248
なんかめちゃくちゃだなw

252 :デフォルトの名無しさん:2010/10/06(水) 06:35:07
>>248
どの教科書だよ。

253 :デフォルトの名無しさん:2010/10/06(水) 11:32:20
もちろん黒の

254 :249:2010/10/06(水) 11:35:44
>>250
わかりにくくてすみません。GCは妨げたくありません。
今作ってるクラスでは、GCされた際にファイナライザを実行する必要がない状態と
実行してほしい状態があります。ほとんどの場合は常に前者なので、
ファイナライザが常に呼び出される状態にあることによる
パフォーマンスの低下を避けたいというのが目的です。
後で思いついたのですが、ファイナライザを実装するためのクラスを別に作って
ファイナライザが必要な時はそのインスタンスと相互参照させておけば綺麗に作れそうです。

255 :デフォルトの名無しさん:2010/10/06(水) 11:42:48
TCPソケット通信についての質問

WindowsサービスアプリでTCPソケット受信を行いたい
のですが何故か受信が出来ないためAcceptTcpClient()
で応答が返ってきません。同じコードをFormアプリ
でやると受信は出来ます。サービスアプリの場合は下記コード
では無理ですか?

OnStart()
{
Thread serviceMainThread = new Thread(func1);
serviceMainThread.Start();
}

func1
{
Listener = new TcpListener(IPAddress.Any, 1111);
Listener.Start();

TcpClient Client = Listener.AcceptTcpClient();

〜受信時処理〜
}

256 :デフォルトの名無しさん:2010/10/06(水) 12:09:43
その質問は初心者スレのほうがいいな

257 :255:2010/10/06(水) 12:46:15
初心者スレ行ってきます!

258 :デフォルトの名無しさん:2010/10/06(水) 12:59:11
>>255
スレッド保持してないから
serviceMainThread.Start();
のあとすぐに終わるだけ

259 :デフォルトの名無しさん:2010/10/06(水) 13:20:33
>>256
答えられないんだからROMっとけやクズ

260 :255:2010/10/06(水) 13:55:41
>>258
回答ありがとうございます。
すみません書き込んだコードがミスでした。
確かに書き込んだコードだとスレッド保持してないですね。

先程解決しましてポート解放がちゃんと出来ていなかった
のが原因です。
Form起動アプリだとファイアウォールのブロック解除の
画面が出てそちらで解除していたため受信出来ていただけでした。

失礼致しました。

261 :デフォルトの名無しさん:2010/10/06(水) 14:52:04
             __   __
                /〃    | __
             /\  _ |                __
                      __  , -――-、  /\ノ
                      ヽ/\l::::::::::::::::::::\ /: : /
         ,..-―-、/)       |: : :|::::::::::::::::::::::/: : /
     /⌒Y    (_ノ  /)       |: : :|:::::::::::::::::::::|: : : /
      ̄l ̄l、     ) /`〉     ヽ:: :|::::::::::::::::::::l: : :/
         l: : :`ー--‐'‐'´: :/        \|∧ハ/l/: ::〈
       \: : : : : : : : : :く         |: : : : : : : : : : `ー-┐  ,.、
         l: : : : : : : : : :`ー―┐ ,、   |: : : : : : : : : : : : : : |二lニノ
         ヽ.: : : : : : : : : : : : : :|ニノ   |: : : : : : : : : : : : : : |
           ヽ: : : : : : : : : : : : :|      ヽ: : : : : : : : : : : /
           \: : : : : : : : :/       \ : : : : : : /
              ̄ ̄ ̄ ̄    ノ|      ̄ ̄ ̄       ノ)
                   ノしノ  し'(           ノ)__ノ (ノ(
                   '――――-'′         '-――一-'′


262 :デフォルトの名無しさん:2010/10/06(水) 16:40:46
ファイルがアクセス中ではないことを確認してからファイル名を変えたいのですが、いい方法は無いでしょうか?
現状は暫定として、IOExceptionをキャッチして一秒スリープさせてからファイル名を変更しています
何か良い方法は無いでしょうか?

263 :デフォルトの名無しさん:2010/10/06(水) 16:43:46
それでいいんじゃね

264 :デフォルトの名無しさん:2010/10/06(水) 19:39:23
別のスレッドでやるならいいんじゃね
GUIスレッドでそれやったら確実にフリーズするが

265 :デフォルトの名無しさん:2010/10/06(水) 23:16:44
>>226
それで動きました!
ありがとうございました!

266 :262:2010/10/07(木) 14:29:20
やっぱりその方法ですかねぇ
確実にエラーを出さない上に時間がかからない方法があれば良かったのですが・・・

267 :デフォルトの名無しさん:2010/10/07(木) 15:38:28
アクセス中で無いことを確認してから名前を変更するまでの間にアクセスがあったらどうすんだよ
この方法が普通だろ

268 :デフォルトの名無しさん:2010/10/07(木) 16:44:59
ずーっとアクセス中だったらどうするの?


269 :デフォルトの名無しさん:2010/10/07(木) 17:12:33
>>268
EXCEL使えばいい

270 :デフォルトの名無しさん:2010/10/07(木) 17:13:41
そのプログラムの仕様によるだろ
エラーを報告するとか、永久に待ち続けるとか好きなように

271 :デフォルトの名無しさん:2010/10/07(木) 17:58:39
諦めが肝心

272 :262:2010/10/07(木) 19:51:24
一秒スリープ後もアクセス中だったら諦めることにします
相談に乗ってくれてありがとうございました

273 :デフォルトの名無しさん:2010/10/07(木) 20:44:17
>>272
そもそも本当に一秒待つ意味があるのかどうか考えた方がよくないか?
俺は全く無意味にしか思えないけど....

274 :デフォルトの名無しさん:2010/10/07(木) 20:47:33
// おまじない

275 :デフォルトの名無しさん:2010/10/07(木) 21:00:08
例外キャッチしたら諦めろよ・・・

276 :デフォルトの名無しさん:2010/10/07(木) 23:46:15
キャッチアンドリリース

277 :デフォルトの名無しさん:2010/10/08(金) 01:47:48
契っては投げ、契っては投げ

278 :デフォルトの名無しさん:2010/10/08(金) 03:11:00
開いてるファイルを人間が編集して人間が閉じるんだったら1秒待つ意味は無いけど
ファイルをプログラムが開いてプログラムが編集してプログラムが閉じるんだったら1秒待つ意味はあるんじゃないか

279 :デフォルトの名無しさん:2010/10/08(金) 03:20:44
そんな特殊ケースが想定される状況だったらそういう作りでもいいんじゃない。
普通はやんないけど

280 :262:2010/10/08(金) 08:34:33
>>278
そんな感じです
自分の環境下では一秒待てば確実に名前を変更できるます

281 :デフォルトの名無しさん:2010/10/09(土) 21:38:20
autoscrollが付いてるコントロールってフォームしかないんでしょうか?

282 :デフォルトの名無しさん:2010/10/09(土) 21:42:41
具体的に何がやりたいのか言えよ

283 :デフォルトの名無しさん:2010/10/09(土) 22:12:05
はみ出している部分をスクロールで表示させる。です。

284 :デフォルトの名無しさん:2010/10/09(土) 22:21:21
んなもんはAutoScrollの存在を聞いてる時点でわかっとるわ
Form以外で使いたいっていってんだろ

面倒だからもういいわ
Panelにでも貼って使え

285 :デフォルトの名無しさん:2010/10/09(土) 23:43:22
初心者スレと相談室スレはどちらがレベルの高い人が集まってますか?

286 :デフォルトの名無しさん:2010/10/09(土) 23:50:12
回答者は同じだ

287 :デフォルトの名無しさん:2010/10/09(土) 23:54:38
まったく意味無いよね

288 :デフォルトの名無しさん:2010/10/10(日) 00:03:35
意味が無かったわけではない
スレが活発で見辛くなるスレの場合、似たようなスレで分散化するという役割はあった

遅い進行の場合、意味が無いよな

289 :デフォルトの名無しさん:2010/10/11(月) 03:38:05
C#,C#の宿題片付けます。のスレが意外とレベルの高い人が集まってる。

290 :デフォルトの名無しさん:2010/10/11(月) 09:12:59
ここしばらくスレ停まってるけどね

291 :デフォルトの名無しさん:2010/10/11(月) 12:22:16
初心者スレがもうすぐ埋まりそうなんだが
次立てるの?それともこっちに誘導する?

292 :デフォルトの名無しさん:2010/10/11(月) 12:24:22
冗談じゃない

293 :デフォルトの名無しさん:2010/10/11(月) 13:00:03
毎回誘導の話出るけど、馬鹿なの?

294 :デフォルトの名無しさん:2010/10/11(月) 13:11:54
うん

295 :デフォルトの名無しさん:2010/10/11(月) 13:12:29
上で分かれてる意味が無いって書かれてるんだが

296 :デフォルトの名無しさん:2010/10/11(月) 13:14:52
で?

297 :デフォルトの名無しさん:2010/10/11(月) 22:24:26
初心忘れるべからず

298 :デフォルトの名無しさん:2010/10/12(火) 00:56:17
以前ここで、toolstripbuttonが謎の失踪をとげたと書いた者なのですが
ご解答は 神隠し 以外でお願い致します。

いつも通り、ファイルをダブルクリックし、C#の画面を出して、
デザインとプログラムを表示させようとすると

(指定したファイルは?)移動または削除された可能性があります。

と出てしまい、一切の編集・閲覧をすることが出来なくなってしまいました。
もちろん、移動も削除もまったくしていません。
ファイル自体はきちんと存在しています。
なのに、編集しようと.csをダブルクリックすると上記のメッセージが出てきます。

稚拙な文章で、わかりづらいかもしれませんが、
知恵をお貸し下さい。
非常に困っています。

299 :デフォルトの名無しさん:2010/10/12(火) 01:18:27
神は言っている。ここでプログラミングをする定めではないと

300 :デフォルトの名無しさん:2010/10/12(火) 01:19:48
蒸発

301 :デフォルトの名無しさん:2010/10/12(火) 01:26:51
>>298
だから、下らない言い訳書いてる暇があったら、自分の書いた文章を最低10回は
読み返してちったあ推敲しろって本当。

拡張子が".cs"はC#のソースファイルだけど、それは理解してるの?
問題は拡張子が".cs"のファイルをダブルクリックしてもファイルの中身がVSのエディタに
表示されないってこと?

でも、C#のソースファイルを開いただけなら「移動または削除された可能性があります。」
なんてメッセージが表示されるはずがないと思うけど....

302 :デフォルトの名無しさん:2010/10/12(火) 01:32:39
ソリューションを開いた後、ソリューションエクスプローラー上の.csファイルをダブルクリックしたら、かな。

C#つーかVisualStudioスレ向けでは

303 :デフォルトの名無しさん:2010/10/12(火) 01:33:17
大方*.Designer.csがどっか逝ったかコピーし忘れたんだろ

304 :デフォルトの名無しさん:2010/10/12(火) 01:45:54
丁寧なわかりにく文章と、ぶしつけだけどわかりやすい文章なら
絶対後者の方がいいという好例。

>>298
天狗の仕業じゃー

305 :デフォルトの名無しさん:2010/10/13(水) 22:53:50
T4 Template凄いな
Rubyなんかとは真逆を突っ走っててすばらしい

306 :デフォルトの名無しさん:2010/10/14(木) 20:53:07
Enumerable.Intersect使いたいんだけど
これ一回のためにIEqualityComparerをわざわざ作るの
少し面倒なんだけど
何かいい手はないのかな・・・?
Func<T> predicate みたいなので条件をラムダ式でかけたら
すごくスマートなんだけど・・・


307 :デフォルトの名無しさん:2010/10/14(木) 20:58:11
ないよ

308 :デフォルトの名無しさん:2010/10/14(木) 21:17:04
datagridview の datasourceに
List<T>を入れています。
Tは自作クラスです。
List<T>が変更された場合
datagridviewをその変更を反映したいです。
そういうメソッド等ありますでしょうか?
datasourceにセットしなおす以外でありますか?

309 :デフォルトの名無しさん:2010/10/14(木) 21:23:28
>>306
そう言う汎用クラスを一つ作っておけばいい
コンストラクタの引数にFunc<T, T, bool>渡すようにして

>>308
DataGridView.Refreshでも呼ぶか、
BindingSourceを間に噛ませてResetItem/ResetBindingsする
List<T>の要素の追加削除じゃなくてTのメンバの変更なら
TにINotifyPropertyChangedを実装させてプロパティのsetでPropertyChanged発生させてもいい

310 :デフォルトの名無しさん:2010/10/14(木) 21:26:09
IEqualityComparerにはGetHashCodeも必要
Equalsだけならラムダ式を引数にとるようになってただろうな

311 :デフォルトの名無しさん:2010/10/14(木) 21:38:21
DataSourceがObservableCollection受け取れば万事解決なのに
使えねえ奴

312 :デフォルトの名無しさん:2010/10/14(木) 21:38:57
WinFormsはv2.0以降放置だから仕方ない

313 :デフォルトの名無しさん:2010/10/14(木) 21:44:54
308程度のことならBindingListで問題なさそうだけど、何が不満なんだ?

314 :デフォルトの名無しさん:2010/10/14(木) 22:13:11
BindingListじゃ308の要件みたしてないだろw
BindingListでどうやんだよw

315 :デフォルトの名無しさん:2010/10/14(木) 22:18:18
「どうやるのか教えてください」だろ!

316 :デフォルトの名無しさん:2010/10/14(木) 22:26:58
どうやるのか教えてください。

317 :デフォルトの名無しさん:2010/10/14(木) 22:34:14
やなこった

318 :314:2010/10/14(木) 22:39:47
>>314
ソースとしてとしてList<T>を使ってるのに
さらにBindingListに入れなおすのか?
DataSourceセットし直しがやだっつってんのに
それ以上重いことさせんの?w
BindingSourceならそのまま入れれるけどさ。
まあDataSourceセットし直しがやだっつてるんだから
ResetBindingsも全更新だから
質問主の要件は満たしてないかもな


319 :デフォルトの名無しさん:2010/10/14(木) 23:55:54
なんという自演

320 :デフォルトの名無しさん:2010/10/15(金) 08:18:07
笑わせてもらった

321 :デフォルトの名無しさん:2010/10/15(金) 09:08:31
あるあるwwwww
1人議論して間違った事言って識者に突っ込んで貰うのを待つパターンwwwww

322 :デフォルトの名無しさん:2010/10/15(金) 22:15:12
そして質問者は逃亡。
自分の質問に対して数時間レスがないと催促するが、
自分からのレスは永久放置でもかまわないってかよ。


323 :デフォルトの名無しさん:2010/10/16(土) 00:32:09
スレッドセーフなリストを探しています。
やりたいことは、
スレッド毎にページをダウンロードして
ページの中にある複数の要素を取得し、リストに追加します。
最終的にすべてのページをダウンロード完了したら
リストをソートします。

リストの条件としては
・ジェネリック
・スレッドセーフ
・ソート
です。

該当するリストクラスはないでしょうか?
環境は3.5です。

324 :デフォルトの名無しさん:2010/10/16(土) 00:38:38
4.0で入ったんだけどね。

325 :デフォルトの名無しさん:2010/10/16(土) 00:39:45
作るのは楽そうだな

326 :デフォルトの名無しさん:2010/10/16(土) 00:40:33
シンクロなんとかリストってクラスなかったか

327 :デフォルトの名無しさん:2010/10/16(土) 00:42:16
んにゃ
SynchronizedCollectionだったか

328 :デフォルトの名無しさん:2010/10/16(土) 00:45:08
>>324
2008だと.NET4は無理ですよね・・・?
ちなみに4でのそのクラスはなんという名前なのでしょうか?

329 :デフォルトの名無しさん:2010/10/16(土) 01:16:31
言っちゃ悪いけど、もうそんな質問してる時点で基本がまったく分かってないことが
バレバレだよな。

こんな基本も理解せずにマルチスレッド使うなんてキチガイに刃物そのもの

330 :デフォルトの名無しさん:2010/10/16(土) 01:21:44
>>328
いまだに VS 2008 とか使うから・・・
http://msdn.microsoft.com/ja-jp/library/dd287108.aspx

331 :デフォルトの名無しさん:2010/10/16(土) 01:50:22
>>330
PCが5年前のものなので仕方なしです。
BlockingCollection<T>なんての追加されたんですね
4なのが残念です。

>>329
323のどこら辺からどうして基本がわかってないと思われましたか?
もしただの煽りでないのなら教えて頂けるとうれしいです。

332 :デフォルトの名無しさん:2010/10/16(土) 02:01:10
>>331
329は、かまってちゃんだから、throw new Exception()で、おね。

333 :デフォルトの名無しさん:2010/10/16(土) 02:10:49
ドラッグ&ドロップでコントロールを移動したり外したりできるアプリがあるけど、あれは何使ってるんだ?

334 :デフォルトの名無しさん:2010/10/16(土) 02:12:37
Win32API

335 :デフォルトの名無しさん:2010/10/16(土) 08:39:43
>>332
through new Exception()がいいんじゃねw

336 :デフォルトの名無しさん:2010/10/16(土) 11:21:58
>>331
PCが5年前でも2010入れればいいじゃない。
それは言い訳にならない。

337 :デフォルトの名無しさん:2010/10/16(土) 11:30:07
普通にロックすればいいだろ

338 :デフォルトの名無しさん:2010/10/16(土) 11:55:14
スレッドセーフの意味わかってるなら
3.5でも自分でどうとでも組めるだろ

339 :デフォルトの名無しさん:2010/10/16(土) 14:08:45
プロデューサコンシューマパターンかと思ったけど違うみたいね
また来るんじゃない?
AddしたらSizeが2以上増える事があるんですけどって

340 :デフォルトの名無しさん:2010/10/16(土) 14:10:41
自分でロックして管理できないようなら
いくらコレクションがスレッドセーフでも絶対に他のところでトラブルを出すだろうな

341 :デフォルトの名無しさん:2010/10/16(土) 14:38:37
ダウンロードが並列なだけなら単に List<T>#Add() の前後で lock すれば済むんじゃないの?


342 :デフォルトの名無しさん:2010/10/16(土) 14:48:56
ソートって事はダウンロード完了まで待ってるやつがいるんだろ?
だったらスレッドごとにリスト持たせて、後でマージした方が安全楽チン

343 :デフォルトの名無しさん:2010/10/16(土) 14:52:37
>>323
そもそも、その処理ならスレッドセーフなリストは必要ない。
各スレッドが個別にリストを持てば済む話じゃないか。
どうせソートするんだから、そのとき一つのリストにまとめればいい。

344 :デフォルトの名無しさん:2010/10/16(土) 14:53:44
うわ、思いっきりかぶった。

345 :デフォルトの名無しさん:2010/10/16(土) 15:06:46
ジェネリックでスレッドセーフなコレクションなら
System.Collections.Generic.SynchronizedCollection
があるぞ。ソートできないけどね。


346 :デフォルトの名無しさん:2010/10/16(土) 15:13:19
343とは仲良く出来そうだW

347 :デフォルトの名無しさん:2010/10/16(土) 15:28:48
最近C#をはじめたJava屋なのですが、JavaのArrayBlockingQueueに相当するクラスってC#にありますか?
できれば.NET Framework 2.0で動くやつがいいです。
要件は優先度が高い順に、
・キューが空の場合、キューにエントリが追加されるまで待機し、キューの先頭を返す。
・キューが許容値オーバーの時にキューに空きができるまで待機するメソッドがある。
・スレッドセーフ
・Genrerics対応
です。

348 :デフォルトの名無しさん:2010/10/16(土) 15:29:34
蹴り殺すぞ小僧

349 :デフォルトの名無しさん:2010/10/16(土) 15:34:21
くだらなすぎるので以後放置で。

350 :デフォルトの名無しさん:2010/10/16(土) 15:35:27
>>347追記
「キューが空の場合、キューにエントリが追加されるまで待機し、キューの先頭を返す」をスリープ
しないでスレッドセーフに実装するのが自作だと大変そうなのです(あくまでもキューにエントリを
足したスレッドが、待機中のスレッドをひとつだけ、「必要に応じて」起こす実装がいいです)。
実装例があったらそれでもかまわないのですが・・

351 :デフォルトの名無しさん:2010/10/16(土) 15:36:21
これで「屋」って、技術屋も質が落ちたな。

352 :デフォルトの名無しさん:2010/10/16(土) 15:47:40
使ったことないけど.NET4のBlockingCollection<T>がまさにそのものみたいだよ
コンストラクタの引数にConcurrentQueue<T>を渡せばブロッキングしてくれるっぽい

353 :デフォルトの名無しさん:2010/10/16(土) 15:52:19
>>352
なるほど。。.NET 4の新規クラスってことは、2.0では作るしかないって事ですね。。
ありがとうございます。

354 :デフォルトの名無しさん:2010/10/16(土) 15:53:03
.NET2.0がいいならMonoのソースコードがあるからそれ使えばいいと思う
クラスライブラリはMITライセンスだったはず

355 :デフォルトの名無しさん:2010/10/16(土) 16:14:48
>>354
ありがとうございます。ただデッドロックが起きる可能性がないことを
ソースレビュワーにたいして明らかな形で立証するのはちょっと難し
いと思っています。次のようなものを考えたのですが、問題があります。
行数が足りないのでとりあえず要素を取り出す側
public class BlockingQueue<T> {
 private readonly List<T> list;
 private readonly object LockObj = new object();
 private int capacity = 0;
 public BlockingQueue(int sz) {capacity = sz; this.list = new List<T>(sz);}
 public T take(TimeSpan timelimit) {
  bool queueWasFullFlag = false;
  try {
   Monitor.Enter(this.LockObj);
   Monitor.Wait(this.LockObj, timelimit);
   int sz = this.Length;
   if ( sz == 0 ) {return null;
   }else if ( sz == this.capacity ) {
    queueWasFullFlag = true;
   }
   return this.list.remove(0);
  }finally {
   Monitor.Exit(this.LockObj);
   if ( queueWasFullFlag ) Monitor.Pulse(this.LockObj);
  }
 }


356 :デフォルトの名無しさん:2010/10/16(土) 16:21:36
上記の後要素を追記するメソッドを足して、要素数がcapacityに到達したら
LockObjをモニタで待機・・・と考えました。
しかしtake側と追記(put)側で処理を待機する時に同じモニタを参照すると、
「キューがいっぱいだったから、put側スレッドを起こすためにLockObjに
Pulseを送ろう」とした場合に、運が悪いとtake側がおきてしまう恐れがあ
ります。(putが並行して走っているかもしれないし、takeが並行して走って
いる可能性もある。両方並行もありうる)
Monitor.Enterに渡すロックオブジェクトはput側、take側それぞれ別の
オブジェクトにしないといけないと思うのですが、そうなると二つ以上の
のダミーオブジェクトを二つ以上のスレッドが同時にロックするケースが
避けられず、いかなるタイミングでもデッドロックしないように実装し、
しかもそれを立証する(タイミングが絡むため試験での立証だけでは
不十分)のは、大変だとおもうんだけどなぁ。

357 :デフォルトの名無しさん:2010/10/16(土) 16:27:07
>>347
>・キューが空の場合、キューにエントリが追加されるまで待機し、キューの先頭を返す。
待機させのにどうやって先頭を返すのかと小一時間矛盾を弄りたい

マジレスすると Producer Consumer でググってコピペ
そいで >>356 については Guarded Suspensionパターンで条件判定

Javaでもやる定石パターン


358 :デフォルトの名無しさん:2010/10/16(土) 16:33:01
>>355追記
ソースだいぶ間違ってるみたいだけど要するに
【take側】
・LockObjを排他した状態で要素が空だったら待機。
・空でなければ先頭を返す。
・要素FULLであればput側をひとつだけ起こす。待機している
 スレッドがない場合は何も起きないがそれでよい。
・でもtake側が起きる可能性はputが寝たままになるからゼロでないと困る
【put側】
・LockObjを排他し、要素FULLなら待機
・要素FULLでなければ末尾にエントリを追加して終了
・ロック獲得時点で要素数ゼロだった場合、take実行中の
 スレッドがいればそれをひとつだけ起こしたいが、うっかり
 takeを実行中の別スレッドが起きるのはやはりNG

359 :デフォルトの名無しさん:2010/10/16(土) 16:40:16
>>357
takeとputは当然、別のスレッドによって実行されています。
・上記とは別に設定ファイルなどで上限を仕切られた多数のスレッド(ワーカースレッド)
 があらかじめ起動しており、キューのtake()メソッドを実行する形で待機している
・画面イベントやソケットのacceptを行うメインスレッドが、処理要求発生時にキューに
 要求情報をput
 →put完了時に待機中だったワーカースレッドがひとつだけ起き上がり、処理を実行。
  処理完了後再びキュー#take()メソッドを実行して処理待ちに入る。
・ただし要素をputする側のスレッドは、2本以上存在するケースもありうる。

360 :デフォルトの名無しさん:2010/10/16(土) 16:45:21
そういうのは普通AutoResetEventとか使う
取得用/追加用のイベントをそれぞれ用意して、

取得用イベント
・追加時にSet
・取得時にWaitOne、要素がまだ残っているならまたSet

追加用イベント
・取得時にSet
・追加時にWaitOne、まだ空きがあるならまたSet

361 :デフォルトの名無しさん:2010/10/16(土) 16:47:55
>>360
うおー!!これだ!!ありがとうございます!!!

362 :デフォルトの名無しさん:2010/10/16(土) 16:52:13
>>358
基本実装
public class ProducerConsumerQueue<T> {
private readonly LinkedList<T> list;
private readonly int capacity;
private readonly object lockObj = new object();
public ProducerConsumerQueue(int size) {
list = new LinkedList<T>();
this.capacity = size;
}

public T Take() {
lock (lockObj) {
while (list.Count == 0) { // ガード条件
Monitor.Wait(lockObj); // 空の間は待機
}
var top = list.First.Value;
list.RemoveFirst();
Monitor.PulseAll(lockObj); // とりあえず全WaitThreadに通知
return top;
}
}



363 :デフォルトの名無しさん:2010/10/16(土) 16:52:57
public void Put(T item) {
lock (lockObj) {
while (list.Count == capacity) { // ガード条件
Monitor.Wait(lockObj); // Fullの間は待機
}
list.AddLast(item); // ケツに追加
Monitor.PulseAll(lockObj);
}
}
}

>>360
そいえばC#にはそんな便利なのがあったorz

364 :デフォルトの名無しさん:2010/10/16(土) 16:57:17
>>363
ありがとうございます!
なるほど。。
whileで条件判定をまわしてとりあえず全部起こせば実現できますね。
これ以上難しいのは怖くてできないので、これ使ってみます。

365 :デフォルトの名無しさん:2010/10/16(土) 16:58:44
public void RunTest() {
ProducerConsumerQueue<int> target = new ProducerConsumerQueue<int>(3);

Thread putthrad = new Thread((_arg) => {
for (int i = 0; i < 30 ;i++) {
Console.WriteLine("{0}: Putting {0} at {1}", i, DateTime.Now );
target.Put(i);
Console.WriteLine("{0}:Put {0} at {1}", i, DateTime.Now);
}
});
Thread takethread = new Thread((_arg) => {
for (int i = 0; i < 30; i++) {
Console.WriteLine("{0}: Take at {1}", i, DateTime.Now);
var ret = target.Take();
Console.WriteLine("{0}: Taken {1} at {2}", i, ret, DateTime.Now);
}
});
putthrad.Start();
takethread.Start();

putthrad.Join();
takethread.Join();
}

366 :デフォルトの名無しさん:2010/10/16(土) 16:58:56
MSの実装はMonitor使わずにSpinWaitとInterlockedだけでやってるみたいだな
自分で書ける気がしない

367 :デフォルトの名無しさん:2010/10/16(土) 17:00:18
25分かかったorz

368 :デフォルトの名無しさん:2010/10/16(土) 18:50:48
PulseAllでWait中のスレッドが全部動き出したら異常状態でガードWhile抜けるんじゃね?
と思って調べたらPulseAllってWaitスレッドを待機状態から実行状態にするんじゃなくて、
実行可能状態にするだけで、その中の1つlock(){}の中で実行状態になるのね。

書いといてなんだけど勉強になったわ

369 :デフォルトの名無しさん:2010/10/18(月) 00:17:06
現在、GoogleChromeのようなタイトルバーにタブを表示するフォームアプリケーションを製作中です。
XPまではGetWindowDCを使ってタイトルバーに独自にタブを描画して実現できているんですが、
Vista以降、エアロのガラス効果が有効な場合はタイトルバーへの描画が発生しなくなってしまいます。
エアロが有効なままタイトルバーに独自の描画をするにはどうすればいいでしょうか。

370 :デフォルトの名無しさん:2010/10/18(月) 12:57:53
タイトルバー消してタイトルバー自作

371 :デフォルトの名無しさん:2010/10/18(月) 20:32:02
ReactiveExtensions詳しいベテランの方教えてください。

1〜nの列挙をもとに
Func<int, string>を非同期で実行し
最終的にstring[n]を得たい。
また、Func<int, string>は最大m個まで同時に実行したい。

以上よろしくお願い致します。

372 :デフォルトの名無しさん:2010/10/18(月) 21:20:42
それ、RxじゃなくてParallel LINQなのでは。
LINQ の最初の方で AsParallel() 付けるだけ。

373 :デフォルトの名無しさん:2010/10/18(月) 21:37:41
>>372
それをRxでやりたいんじゃね?

374 :デフォルトの名無しさん:2010/10/18(月) 21:43:37
Rxはそういうことをやるためのライブラリじゃない。
イベントやスレッドなどの非同期的なものを整理して同期的に扱う仕組み。
非同期処理自体を行うわけじゃない。LINQでデータベース作りたいと言ってるようなもん。

375 :デフォルトの名無しさん:2010/10/18(月) 22:07:38
>>371
ideoneが死んでるのでgyazoで失礼。

// PLINQ
http://gyazo.com/124702869481e12fc1b89fae18e59af6.png
// Rx
http://gyazo.com/9a889396aeb80a7e645d96442a70bfbb.png

並列処理はPLINQの仕事だと思います。

376 :デフォルトの名無しさん:2010/10/18(月) 22:16:15
RxにForkJoinなんてあるのか
すごくMSらしくないネーミングだなw

377 :デフォルトの名無しさん:2010/10/18(月) 22:43:41
>>375
レスありがとうございます。

ここの方たちは仕事とかでプログラミングされてる方が多いので
やっぱり適材適所が結論になってしまうのでしょうか・・

今回の質問は友達に出された問題で
特にベストなコーディングを目指しているわけでは
ありませんでした。
Rxでやるべきことかどうかはあまり関係ないのです。
言葉足らずですいません。

答えはあるとのことでだったので
http://gyazo.com/9a889396aeb80a7e645d96442a70bfbb.png
をヒントにもう少し考えてみたいと思います。


378 :デフォルトの名無しさん:2010/10/18(月) 22:50:37
普通に友達が勘違いしてるだけだろそれ。
どう見ても>>371は典型的なPLINQの例題。

379 :デフォルトの名無しさん:2010/10/18(月) 23:28:35
>>378
勘違いとかではなく先ほども書いたように
別にベストプラクティスを求めているわけじゃないです。
少し違いますが、分かりやすく言えばクイズ(遊び)です。
仕事じゃないです。


380 :デフォルトの名無しさん:2010/10/18(月) 23:31:45
クイズの答えを人に聞くなよ

381 :デフォルトの名無しさん:2010/10/18(月) 23:34:42
答えは。。。お風呂!

382 :デフォルトの名無しさん:2010/10/18(月) 23:37:24
kotaerarenainara resu surunayow


383 :デフォルトの名無しさん:2010/10/18(月) 23:48:03
TPLとかPLINQとかRxとか似たようなもん乱発してどうするんだろう

384 :デフォルトの名無しさん:2010/10/19(火) 00:10:12
似ているようで用途がどれも違うから大丈夫だ、問題ない

385 :デフォルトの名無しさん:2010/10/19(火) 00:29:32
>>383
それ、用途で考えたらまるでかぶってないんだけど。
むしろ、
TPL 出て、過去のスレッドプールライブラリ邪魔よねとか
Rx 出て、過去の event の -= はないよなーとか
そういう突っ込みすべきだと思う。

386 :デフォルトの名無しさん:2010/10/19(火) 07:42:34
以下を実行すると

string s;
s = "ab";
Console.WriteLine("{0,2}", s);
Console.WriteLine("{0,4}", s);

s = "あ";
Console.WriteLine("{0,2}", s);
Console.WriteLine("{0,4}", s);

>ab
> ab
> あ
> あ

となってしまいます。原因は予測できるのですが、これじゃ書式制御の意味がありません。
こういう物と割り切るべきでしょうか?それとも何か回避策があるのでしょうか?



387 :デフォルトの名無しさん:2010/10/19(火) 07:59:57
>>386
何にこまってるの?
あなたの期待する動作がわからない

388 :デフォルトの名無しさん:2010/10/19(火) 08:10:53
>>386
過去にもここかふらっとで同じような質問みたなあ・・・
winformとコンソールって若干差異がなかったっけ・・・?

389 :デフォルトの名無しさん:2010/10/19(火) 08:24:07
時々出てくる、全角文字が半角文字の倍の幅にならない! ってやつじゃない?

390 :デフォルトの名無しさん:2010/10/19(火) 10:01:26
何が言いたいかわからんかったがスペース潰れてたのな
>ab
>--ab
>-あ
>---あ
で、何が問題?


391 :デフォルトの名無しさん:2010/10/19(火) 11:15:35
マルチバイト星人なんですね

392 :デフォルトの名無しさん:2010/10/19(火) 11:33:01
全角は半角2文字になってほしいんじゃない?
ぼくの想像する、期待した結果↓
>ab
>--ab
>あ
>--あ

393 :デフォルトの名無しさん:2010/10/19(火) 11:42:33
>ab
>  ab
> あ
>   あ
俺の環境だと問題なく出力されたぞ
(vista vs2010 .net3.5 consoleアプリとwinformの出力ウィンドウ内ともに)


394 :デフォルトの名無しさん:2010/10/19(火) 11:44:38
やっぱでじゃぶ・・・だな
前にこの手の話出た記憶が

395 :デフォルトの名無しさん:2010/10/19(火) 12:23:13
どうも。なるほど問題が理解できない訳ですね。
了解しました。

396 :デフォルトの名無しさん:2010/10/19(火) 12:35:21
何が問題か書いてないだろ

397 :デフォルトの名無しさん:2010/10/19(火) 12:39:08
>>386
質問するのはいいけど使ってるIDEのバージョンやOSのバージョンも書かないと・・・

398 :デフォルトの名無しさん:2010/10/19(火) 12:51:43
住所氏名電話番号も書いてくれないと…

399 :デフォルトの名無しさん:2010/10/19(火) 13:20:35
全角半角病

400 :デフォルトの名無しさん:2010/10/19(火) 14:19:46
>>395
説明もなしに君が取り組んでいる「問題」など分からんよ
提示された範囲ではフレームワークに「問題」は無いから、そちらの意味は除外

401 :デフォルトの名無しさん:2010/10/19(火) 18:13:17
半角全角入り混じってる文字列を右揃えでコンソールに
出力する場合は実際に計測するしかないよね?
ttp://ideone.com/qidQL

402 :デフォルトの名無しさん:2010/10/19(火) 19:53:12
右揃えとなると計測しても難しいんじゃね
コンソールってことは開始座標指定できないんだろ?
AAエディタにそういった機能あるから不可能ってことは多分無いが

403 :デフォルトの名無しさん:2010/10/19(火) 19:59:08
>>402
要はパディングでしょ。
最近はそんな処理ほとんどないけどPフォントが生まれる前の時代には当たり前だった処理

404 :デフォルトの名無しさん:2010/10/19(火) 20:16:35
シフトJISに変換してバイト数数える程度でいいんじゃね。

405 :デフォルトの名無しさん:2010/10/19(火) 21:31:11
さすがExcelが方眼紙になる国だなぁ。

406 :デフォルトの名無しさん:2010/10/19(火) 22:00:57
Excelはキャンバスにもなるし…

407 :デフォルトの名無しさん:2010/10/19(火) 22:47:48
>>402
厳密にやるならUnicodeで規定されている文字幅を考慮しないと駄目
SJISに変換できないかもしれないし、ambiguousなやつとかもあるし

408 :デフォルトの名無しさん:2010/10/19(火) 23:49:10
あれは文字幅問題知らない欧米人用の資料だと思うけどな。

出回ってるフォントの現状追認だし日中韓で違いあるとambiguous扱いで逃げるし、
厳密とか言われると非常に違和感が。

409 :デフォルトの名無しさん:2010/10/19(火) 23:57:00
えっと、真面目な話、一体なんの話しをしてるんだ?

410 :デフォルトの名無しさん:2010/10/20(水) 00:21:35
字種に関係なく確実に右詰で文字を表示する方法じゃね

411 :デフォルトの名無しさん:2010/10/20(水) 00:33:04
そういう絵的な調整は、キャラクターベースじゃなくてGUIでやればいいのに。

412 :デフォルトの名無しさん:2010/10/20(水) 02:43:01
>>362
そういうのやるときはいちばん外側にもう一階層lock使って、
Waitするスレッドを一つにしてやるとパフォーマンスが向上したりするぜ。
まあ競合が少なければ逆に悪くなったりもするが。


413 :デフォルトの名無しさん:2010/10/20(水) 09:08:32
>>412
どういうことだってばよ?
コードでおk


414 :デフォルトの名無しさん:2010/10/20(水) 11:16:04
100文は1コードにしかず

415 :デフォルトの名無しさん:2010/10/20(水) 12:48:40
>>403
そら緑文字が踊ってた時代は決め打ちでいいかも知らんが
今時フォントも選べないようなコンソールが存在しているのか?

>>413
412じゃないがシングルトンのダブルロッキングみたいなやり方じゃね?

416 :デフォルトの名無しさん:2010/10/20(水) 14:03:40
http://homepage3.nifty.com/midori_no_bike/CS/index.html?userIO.268
ここのソースを基に、キーボードイベントから

public enum WheelDirection
{
UP = 120,
DOWN = -120,
}

public void Wheel(WheelDirection direction)
{
INPUT[] input = new INPUT[1];

input[0].mi.dwFlags = MOUSEEVENTF_WHEEL;
input[0].mi.mouseData = (int)direction;

SendInput(1, input, Marshal.SizeOf(input[0]));
}

こんな感じでホイール制御しようとしているのですが、サッパリ反応してくれません。
カーソル移動やクリックは問題なく動くので、パラメーターが間違っている気がしますが、どうにも行き詰ってしまいました。
どのようにすればよいのでしょうか。どうかご教授お願いします。

417 :デフォルトの名無しさん:2010/10/20(水) 16:07:08
>>416
MSDNは MOUSEEVENTF_WHEEL 0x0800 と書いてあるが
リンク先のページには
const int MOUSEEVENTF_WHEEL = 0x0080 ;
と書いてあるようだが大丈夫か。

418 :デフォルトの名無しさん:2010/10/20(水) 16:49:28
WinUser.hには
#define MOUSEEVENTF_XDOWN 0x0080 /* x button down */

#define MOUSEEVENTF_WHEEL 0x0800 /* wheel button rolled */
だな

419 :デフォルトの名無しさん:2010/10/20(水) 20:21:46
あるログインページでログインが必要なサイトがあり
ログイン後のみ開くことが出来るページ (ログイン後ページ) の取得をしようと思っています。

現在は、WebClient の UploadValues メソッドにて
ログインページにユーザー名とパスワードをアップロード後
DownloadString メソッドでログイン後ページの HTML を取得しています。

IE ですとログインページを開かなくても
クッキーに残っているのか直接ログイン後ページを開いても
ログインせずに開くことができます。

IE と同様に直接ログイン後のページを DownloadString メソッドで
取得する方法はありませんでしょうか?

何故上記のようにしたいかというと
WebClient の UploadValues メソッドが完了するのに
数秒かかってしまっているからです。
IE からログインするとすぐにログインが完了するのですが
プログラムから実行すると何故か時間がかかってしまうのです。
これが改善できるのであればそもそも
上記のようなことはしなくても構わないと思っています。

説明が長くなってすいません。

420 :デフォルトの名無しさん:2010/10/20(水) 20:31:47
クッキーで、というのが分かってるならクッキーつければいいぢゃない。

421 :デフォルトの名無しさん:2010/10/20(水) 20:52:49
>>420
クッキー付きの DownloadString メソッドのようなものがあるのでしょうか?
それともクッキーを自前でファイル読み込みして
何かの引数で渡してやるとかあるのでしょうか?


422 :デフォルトの名無しさん:2010/10/20(水) 21:15:31
>>421
WebClientとかにクッキー関連のプロパティなかったっけ?

423 :デフォルトの名無しさん:2010/10/20(水) 22:09:11
>>413
ttp://msdn.microsoft.com/ja-jp/magazine/cc817398.aspx#id0190136
条件変数で待機するスレッドを一つにすることで、
ここに書かれてる2ステップダンスを回避できる。


424 :デフォルトの名無しさん:2010/10/20(水) 22:13:28
いや、スタンピードっていうのかな?
まあともかく、PulseAllで多くのスレッドを起こすのは非効率ってことだ。


425 :デフォルトの名無しさん:2010/10/20(水) 22:27:22
>>417,418
無事動きました。
ありがとうございます。

426 :デフォルトの名無しさん:2010/10/20(水) 22:43:48
>>420-422
http://neue.cc/2009/12/17_230.html


427 :デフォルトの名無しさん:2010/10/20(水) 22:44:00
>>419
System.Net.HttpWebRequest使えばcookie制御できるよ

428 :デフォルトの名無しさん:2010/10/20(水) 22:46:10
あるネットゲーム(http://www.ragnarokonline.jp/)を起動していると、Visual C# 2010が起動しません。
起動してようとしても「不明なエラーです」とだけ出ます。
これは何故でしょう・・・・?

このネトゲはアンチマクロのための何だかよく知らないプログラムが作動してるらしいですが、そのせい?

429 :デフォルトの名無しさん:2010/10/20(水) 22:58:20
知らんがな
開発ツールなんて一般的に見たらものすごく異常な動作をするものなんだから
ネトゲの対策に誤検出されるようなことが起こってもおかしくないがそれはVC#側の問題ではない。
少なくともスレ違いであることは間違いない。

430 :デフォルトの名無しさん:2010/10/20(水) 23:14:31
>>426にある方法だといったんクッキーを取得しなければなりません。
取得しようとするとそこで時間がかかってしまうため
既にあるクッキーを利用したいと思っています。
クッキーを読む方法はないでしょうか・・・

431 :デフォルトの名無しさん:2010/10/20(水) 23:34:42
そういえば前ニコ生のツール作ってる人がIEとかのクッキーを拾ってくるライブラリ作ってたな


432 :デフォルトの名無しさん:2010/10/20(水) 23:53:20
WebClientは、プログラム起動後の初回だけ遅いから、1回どこかで使っとけ
みたいのがあったような別の話だったような。

別にこんなのあったけど、これも関係なかったらごめん。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/673defaultproxy/defaultproxy.html

433 :デフォルトの名無しさん:2010/10/21(木) 00:03:48
InternetGetCookie

434 :デフォルトの名無しさん:2010/10/21(木) 00:09:53
>>433
それだとVISTA以降のOSからは取得できなかった気がする

435 :デフォルトの名無しさん:2010/10/21(木) 00:16:11
>>430
読めるんじゃないかな。
で、>>426 をちょっといじってコンストラクターで渡すとかすれば。

436 :デフォルトの名無しさん:2010/10/21(木) 00:29:02
>>432
これ覚えておいたほうがよさそうだな

>既にあるクッキー
ってのはIEのクッキーのことでいいの?


437 :デフォルトの名無しさん:2010/10/21(木) 09:35:50
>>423-424
そういうことなら納得
.net なら >>360 の言ったようにAutoResetEvent使う方がそこらの効率はよさげ


438 :デフォルトの名無しさん:2010/10/21(木) 12:30:22
pictuerboxに表示された画像データをデスクトップにドラッグアンドドロップ
で持ってくるにはどうすればよいでしょうか

439 :デフォルトの名無しさん:2010/10/21(木) 15:00:22
pictureboxのDragDropイベントにハンドラ割り当てて、
ドロップ先のディレクトリにpicturebox.Imageを書き出すだけじゃない?

440 :デフォルトの名無しさん:2010/10/21(木) 15:03:57
ドロップ先のディレクトリって結構難しいんじゃね

441 :デフォルトの名無しさん:2010/10/21(木) 15:25:45
ごめん確かに難しいらしい。
http://code.msdn.microsoft.com/WindowsAPICodePack
Windows API Code Packのサンプルに
WPFのウィンドウとエクスプローラの間でドラッグドロップするコードがあるから
それを応用すればいいと思う。

442 :デフォルトの名無しさん:2010/10/21(木) 15:29:14
画像をテンポラリファイルに落として、そのファイルをDoDragDropじゃいかんのかね

443 :デフォルトの名無しさん:2010/10/21(木) 16:19:32
Framework4以降ではタスク並列ライブラリの新しいモデルが提供あるっていうので
Task使ってみたんですがDisposeがあって困り中。
別スレット走らせて後は知らないってやりたかったら、
今まで通りThreadやQueueUserWorkItemを使いなさいってことですか?


444 :デフォルトの名無しさん:2010/10/21(木) 18:43:09
むしろBeginInvokeでやれってことでね?

445 :438:2010/10/21(木) 19:25:43
ListViewに表示したファイルをデスクトップに落とすにはどうすればよいでしょうか。

いろいろやってpictureboxからは厳しいというのが分かりました。

446 :デフォルトの名無しさん:2010/10/21(木) 20:08:43
>>443
IDisposableイコール必ずDisposeを呼ばなければならない、ってわけでもないですよ、今や。
例えばReactive ExtensionsではDisposeは
イベントのデタッチや非同期のキャンセルに使われていて、呼ぶか呼ばないかは完全に任意。

447 :デフォルトの名無しさん:2010/10/21(木) 20:14:39
Disposeでイベントをデタッチするのは今までにも普通にあった使い方だぞ
イベントは登録解除しないとメモリリークする場合がある

448 :デフォルトの名無しさん:2010/10/21(木) 20:20:53
>>446
ここではTaskの話だろ。
TaskはDispose必須だろ。
他の話しても何の意味もない。


449 :デフォルトの名無しさん:2010/10/21(木) 20:22:53
まあ、必須と言っても致命的な問題になる系統じゃないだろうけど。


450 :デフォルトの名無しさん:2010/10/21(木) 23:24:36
子TaskやContinueWithとか使うとDisposeするの面倒そうだねぇ

451 :デフォルトの名無しさん:2010/10/21(木) 23:44:17
>>445
PictureBoxでもできるんじゃない?
試してないけど、
ドラッグ開始時など適当なタイミングで画像を一時ファイルに保存
ドラッグのデータをSetDataで一時ファイルのパスに変更

452 :デフォルトの名無しさん:2010/10/22(金) 00:23:34
windows 7の32bitと64bitって intの最大値違う?


453 :デフォルトの名無しさん:2010/10/22(金) 00:25:43
違わない

454 :デフォルトの名無しさん:2010/10/22(金) 00:32:43
組込み型のサイズが環境依存なのは互換性を下げるだけの糞仕様。
そんな基本的なところで環境に依存したら何のための仮想実行環境かわからん。
ただしポインタやIntPtrのサイズは環境依存。

455 :デフォルトの名無しさん:2010/10/22(金) 00:37:39
>>453
へー。違うと思った。
でも、intが2バイトの環境ってあったよなー


456 :デフォルトの名無しさん:2010/10/22(金) 00:41:19
それは環境というよりコンパイラの仕様。
C#では言語仕様でint = System.Int32と決められているので
intが32ビットではない実装はC#とは呼べない。

457 :デフォルトの名無しさん:2010/10/22(金) 00:44:51
>>456
詳しいね。サンクス


458 :デフォルトの名無しさん:2010/10/22(金) 00:48:22
>>455
それはC言語のことじゃないかい

459 :デフォルトの名無しさん:2010/10/22(金) 00:51:17
C言語では実装依存だろ
現在はintも32ビットが主流

460 :デフォルトの名無しさん:2010/10/22(金) 01:12:04
C のあの仕様でみんな苦労してるからなぁ。
Java も C# も int のサイズ固定。

461 :デフォルトの名無しさん:2010/10/22(金) 04:34:24
Cだと、char, short, int, long全部決まってない。

462 :デフォルトの名無しさん:2010/10/22(金) 04:37:42
まあ歴史があるからなあ・・・
Cが出来た当時はまさかここまでプロセッサが成長して
そこまで現役で使われるなんて思ってもいないだろうからな・・・

463 :デフォルトの名無しさん:2010/10/22(金) 08:28:23
>>461
char は1バイトと決まってるだろ
1バイトが何ビットなのかは別として

464 :デフォルトの名無しさん:2010/10/22(金) 12:31:22
組み込み型のサイズが実装依存というのは
この言語で書かれたコードは処理系が変わると動きませんと言ってるのに等しいからな

465 :デフォルトの名無しさん:2010/10/22(金) 13:00:26
   ∧_∧    / ̄ ̄ ̄ ̄ ̄
    (ω・ )ゝ < あんだって?
.  ノ/  /     \_____
  ノ ̄ゝ


466 :デフォルトの名無しさん:2010/10/22(金) 16:50:10
処理系が代われば普通は動かないが・・・

467 :デフォルトの名無しさん:2010/10/22(金) 17:33:47
処理系っていうのは実行環境だけじゃなくてコンパイラも指す言葉なんだが‥・

468 :デフォルトの名無しさん:2010/10/22(金) 18:24:31
コンパイラの実行環境か?

469 :デフォルトの名無しさん:2010/10/22(金) 22:17:56
最初のCコンパイラのcharは9ビット長

470 :デフォルトの名無しさん:2010/10/22(金) 22:27:00
なんだその余分な1ビットは

471 :デフォルトの名無しさん:2010/10/23(土) 01:20:56
桁あふれ検出用?

472 :デフォルトの名無しさん:2010/10/23(土) 01:29:28
奇数パリティかも

473 :デフォルトの名無しさん:2010/10/23(土) 01:35:56
単に標準的なバイトのビット数が未確定だったコンピュータ黎明期の産物


474 :デフォルトの名無しさん:2010/10/23(土) 07:04:03
PDP-7は18ビットマシンだったらしいね。
http://ja.wikipedia.org/wiki/PDP-7

475 :デフォルトの名無しさん:2010/10/23(土) 08:27:46
9ビットってUNIVACか?



476 :デフォルトの名無しさん:2010/10/23(土) 11:28:17
>>433
このAPI使ってオートログインの機能を実装してみようかと
自分のソースいじってみたんだがうまくいかない
別のサイトでテスト的にやってみたらそっちはうまくいった
何が違うんだろうとずっと悩んでたんだが
もしかするとSSLだとうまくいかないんですかね?
クッキー自体はちゃんとうまくとれてるんだけど。。
なかなか原因が思い当たらなくて。。

477 :デフォルトの名無しさん:2010/10/23(土) 13:21:11
アラームのようなソフトを作ろうとしているのですが、うまくいかず悩んでおります。

http://dobon.net/vb/dotnet/programing/playmidifile.html
こちらのページを元に音楽を再生できる部分まではかいたのですが、一定時間後に音楽を再生しようと
http://msdn.microsoft.com/ja-jp/library/system.timers.timer.interval(VS.80).aspx
こちらのページを参考にintervalを組んでみました。

intervalで呼び出す関数に音楽を再生するコードを入れると音楽が再生されません。
なにか原因がわかりますでしょうか?


478 :デフォルトの名無しさん:2010/10/23(土) 13:24:18
知らん
まずは再現するコードを出しなさい

479 :デフォルトの名無しさん:2010/10/23(土) 13:24:24
enable=true

480 :デフォルトの名無しさん:2010/10/23(土) 13:25:47
テンプレ省略しすぎだろ
せめてこれは入れとけよ
コードを↓のサイトに貼って見せて
ダメな場合はいいけど・・・

■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php



481 :デフォルトの名無しさん:2010/10/23(土) 13:29:09
そのテンプレ見た瞬間、vipかと思ったわw

482 :デフォルトの名無しさん:2010/10/23(土) 13:56:29
一部のコードなのですが、
http://ideone.com/6OVYk
これが動きません。
期待している動作は3秒後に音楽が再生されるようにしたいです。

また、今実験していると
http://ideone.com/oFHqz
このコードでは再生されることがわかりました。

483 :デフォルトの名無しさん:2010/10/23(土) 14:34:01
当然確認しているはずのMCIエラーの内容は秘密か?

484 :デフォルトの名無しさん:2010/10/23(土) 14:46:05
>>483
すみません
MCIエラーとはどのように確認できるのでしょうか?

調べてみたのですが知識が足らず、わかりませんでした。

485 :477:2010/10/23(土) 17:09:53
いろいろと試しているのですが、
インターバルの関数に入る前にopenをしておかないと再生されないようです。
ですがopenしたエイリアスで再生することはできず、
インターバルで呼び出された関数で再度openしてplayしなければ再生できません。

また、インターバルで再生を開始したエイリアスをストップすることはできません。

なにかわかりますでyそうか

486 :デフォルトの名無しさん:2010/10/23(土) 17:16:41
じゃあきっと一連の操作は同じスレッドでやらないとだめなんだろ。
System.Timers.Timerのコールバックは別のスレッドで行われるから。
でもだからってWinFormsのタイマは使うなよ。精度が悪くてタイマにならん。

487 :477:2010/10/23(土) 17:17:57
すみません。連続投稿させていただきます。

先ほどから継続して調べていると、Timerは別スレッドで呼び出されるということなので、
インターバルで再生したオーディオがストップできないのではないかと思いました。

どうスレッドで動作するタイマはありませんでしょうか?

フォームにボタンを二つつけて、再生/停止はできることは確認しております。

488 :デフォルトの名無しさん:2010/10/23(土) 17:36:39
タイマーからbutton1.Invoke((EventHandler)button1_Click,null,null);って感じでInvokeメソッド使えばいいんじゃないか?


489 :デフォルトの名無しさん:2010/10/23(土) 18:47:14
タイマーの話が出たようなので教えてください。タイマークラスがいっぱいあるのですが、
どう使い分ければよいのでしょうか。
1.System.Windows.Threading.DispatcherTimer →UIスレッドで実行されるタイマー。WPFで使用可
2.System.Windows.Forms.Timer →UIスレッドで実行されるタイマー。WinFormsで使用
3.System.Timers.Timer →スレッドプールで実行されるタイマー
4.System.Threading.Timer →スレッドプールで実行されるタイマー。3との違いがよくわからない

490 :デフォルトの名無しさん:2010/10/23(土) 18:51:43
>>489
3は4を使いやすくしたもの
IntervalとかEnableとか用意したりイベント公開したり
ComponentだったりSynchronizingObjectプロパティ持たせたり

491 :デフォルトの名無しさん:2010/10/23(土) 18:51:51
System.Timers.Timer
専用のワーカースレッドを作成し使用する。

System.Threading.Timer
標準のスレッドプールを使用する。


492 :デフォルトの名無しさん:2010/10/23(土) 19:31:53
>>491
System.Timers.Timerは内部でSystem.Threading.Timer使ってるよ
ドキュメントではイベントはスレッドプール上で発生するぐらいしか書いてないけど

493 :477:2010/10/24(日) 14:03:40
>>486
すみません。タイミングが悪く書き込んだようですね。
ありがとうございます。

>>488
プラグインを作っているのですが、
フォームコントロールはプラグインの設定画面を出さないと出てこないため、
Invokeを使ってもフォームが表示されていないためクリックできないようです。


一定時間後にmciSendStringを実行させたいのですが、なにかいい方法はないでしょうか

494 :デフォルトの名無しさん:2010/10/24(日) 14:49:05
>>493
http://ideone.com/OOaQY

このclass1を目的のスレッド上でnewしてやればいい。


495 :477:2010/10/24(日) 20:17:36
>>494
ありがとうございます!!
いただいたコードで問題なく動くことが確認できました。

それを加工するといろいろなことができそうです。

本当にありがとうございました!!

496 :デフォルトの名無しさん:2010/10/26(火) 22:24:28
自分が動いている.NETフレームワークが2.0か3.5か判定する方法ってありますか?
できれば3.5と3.5SP1の判定もしたいです。

497 :デフォルトの名無しさん:2010/10/26(火) 22:27:13
ない。ランタイムバージョンは一緒だし。
レジストリを見て、SPが当たってるかは判断できるけどね。

498 :デフォルトの名無しさん:2010/10/26(火) 22:29:13
WPFのDLLの有無/バージョンでも見てみればいいんじゃないの

499 :デフォルトの名無しさん:2010/10/26(火) 22:49:02
C#初心者です。windowsフォームアプリケーションでプロジェクト作成して、
ウインドウサイズをプロパティウィンドウから特定のサイズに指定しただけのアプリなんだけど、
環境によっては実行したらウインドウサイズが指定のサイズと若干異なるのは何が原因なんでしょうか?
ウインドウサイズだけでなく、配置したコントロールのサイズ・位置もプロパティウインドウで指定した
絶対サイズではなく、スクリーンの解像度に応じて(?)、伸縮がかかっている感じなんですが、
絶対座標での強制指定を有効/無効にするようなプロパティがあるのでしょうか?
.net framework 3.5を使っています。

500 :デフォルトの名無しさん:2010/10/26(火) 23:38:10
>>499
デザイナではFormの外形のサイズを指定していることになっているけど、
デザイナが自動生成する実際のコードではClientSizeに値が代入される。(確認してね)

これは、タイトルバーの高さとかウィンドウの枠の太さが環境によって違うため、
仮にどの環境でも同じSizeが適用される仕様だと、デザインによっては環境次第で
クライアント領域からはみ出してしまうコントロールが出てくる可能性があるためだろうと思う。

だったら、デザイン時の最初からClientSizeを指定するようにすりゃいいと思うんだが、
まあこのあたりがMS様の味って奴なんだろう

501 :デフォルトの名無しさん:2010/10/26(火) 23:45:09
コントロールの座標は文字の幅・高さを基準にした座標系と昔から決まってるのよ。
this.AutoScaleDimensions=new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;
このへん調べて。
初心者ならデザイナが作ったcsのInitializeComponent()見るのまじおすすめ。

502 :デフォルトの名無しさん:2010/10/26(火) 23:50:19
あーそっちの話なのか。
AutoScaleModeもなんで最初からDPIになってないのかよく分からんよなあ。

503 :デフォルトの名無しさん:2010/10/27(水) 18:25:25
>>499
VB6みたいに固定ダイアログ風にしたいのですか?
せっかく.NETを使うんだったら、Dockプロパティ駆使してウインドウサイズに応じて
画面内の部品サイズが適切に変わるようにするのがオススメですよ。
画面を作る工数が若干増えるのと慣れが必要ですが、ちょっとの工数増で見栄えや
使い勝手は段違いによくなります。

504 :デフォルトの名無しさん:2010/10/27(水) 20:16:18
使い方によるだろ
固定ダイアログくらいVS2010でも出てくる

505 :デフォルトの名無しさん:2010/10/27(水) 22:04:26
>>500-502
どうもありがとうございます。調べてみます。

>>503-504
私が想定していたのは、あるサイズの画像があって、そのサイズに
合わせて色々コントロールを配置していたので,自分の開発環境では
ぴったりだったのですが、異なる環境では画像だけ元サイズで、
他のコントロールのサイズと位置が変わって配置が崩れてしまいました。
コード内(Form_Loadなど)でサイズと位置を指定すれば、どの環境でも
絶対座標で統一されるようですね。

506 :デフォルトの名無しさん:2010/10/28(木) 00:31:40
0または1の整数値の配列(要素数不定)に対する適切なハッシュ値の計算方法を教えてください。

507 :506:2010/10/28(木) 00:35:51
すみません補足です。
GetHashCodeの実装に使うだけなので、強度などは気にしません。
そこそこばらけて計算負荷がそれほど高くなければ十分です。

508 :デフォルトの名無しさん:2010/10/28(木) 01:02:00
インデックスに素数で重みつけて加算しろ


509 :デフォルトの名無しさん:2010/10/28(木) 01:21:37
32個ごとにintにしてXORとれば

510 :デフォルトの名無しさん:2010/10/28(木) 01:43:41
>>506
配列の型は何?

511 :デフォルトの名無しさん:2010/10/28(木) 01:45:24
uint h = 0;
for (int i = 0; i < array.Length; ++i)
  

512 :デフォルトの名無しさん:2010/10/28(木) 01:47:46
すまん、途中で書き込んじゃった。
この程度でいいんじゃない?

uint h = 0;
for (int i = 0; i < array.Length; ++i)
  h ^= (uint)(array[i] << (i & 0x1f));

513 :506:2010/10/28(木) 12:51:32
なるほど。シンプルでいいですね。
>>509は自分でも考えたのですが、実質的にはほぼ同じですね。

514 :デフォルトの名無しさん:2010/10/29(金) 17:02:03
C#でインターネット上から画像を自動収集するプログラムを作るにはどのような
技術を学べばいいでしょうか。

515 :デフォルトの名無しさん:2010/10/29(金) 17:11:29
HTTP

516 :デフォルトの名無しさん:2010/10/29(金) 17:13:20
C#だととりあえずはnet関連を扱うクラスで簡単にhtmlをダウンロードしてきて
中身を解析して画像のアドレスを抽出、それをさらにダウンロードとかすれば
いいんじゃね?

まあその他細かい漏れはおいおい組み込むとして

517 :デフォルトの名無しさん:2010/10/29(金) 19:09:40
例えばクラスメンバのintなんかで有無を持たせるのにいい方法ありますか?
intに入る値は全て有効にしたいので-1とか無効値は設定できません
objectに入れると型を気にする必要が出てくるので出来れば
使いたくないのですが・・。

518 :デフォルトの名無しさん:2010/10/29(金) 19:33:37
Nullableじゃだめ?

519 :デフォルトの名無しさん:2010/10/29(金) 20:50:44
おお、どんぴしゃです!
ありがとう!


520 :デフォルトの名無しさん:2010/10/29(金) 21:33:22
だれか、VisualStudio2008Standardエディション、恵んでくれ。

521 :デフォルトの名無しさん:2010/10/29(金) 21:37:01
Professionalエディションでもええよ。

522 :デフォルトの名無しさん:2010/10/29(金) 22:31:14
>>517
解決したみたいだけど、こんなでもいいんじゃね?
public class IntCounter
{
  public int value = 0;
  public void inclement() {return this.value; }
}

クラスなのでNULLにできるし。

>>521
俺もほしいけど適法なのがいいなぁ。
はなし変わるけど個人でVisual Studioを買う場合(MSDN付きでバージョン管理ツール不要)
だと最低いくらくらいで買えますか?
自分で調べた限り最安値は15万前後。5万までならがんばるが15万は無理。。。。

523 :デフォルトの名無しさん:2010/10/29(金) 22:46:48
int? a;

?が自信無さげでカワイイw

524 :デフォルトの名無しさん:2010/10/30(土) 00:15:14
>>522
5万じゃアップグレード版も買えねーよ
MSDNエッセンシャルで我慢するか、開発者ライセンスで社用のを個人使用するしかないんじゃない?

525 :デフォルトの名無しさん:2010/10/30(土) 00:36:26
そこでアカデミック版

526 :デフォルトの名無しさん:2010/10/30(土) 04:49:48
学生じゃないから無理だorz

527 :デフォルトの名無しさん:2010/10/30(土) 04:52:52
まえにNTT-X-Storeで買ったときはAcademicなのに学生証を提示させられなかったような…。
いや多分記憶違いかな…。

528 :デフォルトの名無しさん:2010/10/30(土) 05:04:36
>>527
割といい加減
店頭で買う場合くらいじゃないの?

某店が倒産する前は個人でだけど法人窓口利用してたが
DSP版買うにしても余計なデバイス無しで買えたしなあ・・・
まあそういうことだ

529 :デフォルトの名無しさん:2010/10/30(土) 06:28:57
マジで?
ポチっていいのか?
ホントにやるぞ?

530 :デフォルトの名無しさん:2010/10/30(土) 06:39:37
>>528
無理じゃねえかorz

アカデミックパック商品は、
ご注文時に対象ユーザーであることを示す教育機関情報が必要です。
つきましてはご注文時に、学校名・教育機関名、種別(教職員/機関職員/学生)、
学部・学科、学年、学生証番号・教職員IDのご入力をお願いしておりますので
ご協力頂けます様、よろしくお願い申し上げます。

531 :デフォルトの名無しさん:2010/10/30(土) 08:36:18
放送大学入れば?

532 :デフォルトの名無しさん:2010/10/30(土) 10:30:24
55000円のVS2010 Proじゃダメなのかね。
MSDN付きがいい、っていう理由がよくわからんし。

533 :デフォルトの名無しさん:2010/10/30(土) 10:37:40
>>531
それだとドリームスパークもいけるな

534 :デフォルトの名無しさん:2010/10/30(土) 18:17:52
わざわざライセンス違反で買う意味が分からん
違法ダウンロードと一緒だろうが

535 :デフォルトの名無しさん:2010/10/30(土) 18:31:52
嫁が小学校の教師だから嫁に買わせてる。

536 :デフォルトの名無しさん:2010/10/30(土) 18:39:38
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < 通報しますた!!
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /~\ \     ( ´Д`) < しますた!!!
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚)  シマスタ!!
    / ./     ( ヽ、     / /⌒> )     ゚(  )−
   (  _)      \__つ  (_)  \_つ     / >   (・∀・)シマスタ!! .マスタ!! .スタ!!

537 :デフォルトの名無しさん:2010/10/30(土) 19:05:25
乞食は分相応にExpress

538 :デフォルトの名無しさん:2010/10/30(土) 21:05:29
乞食は分相応にEclipse

に見えた

539 :デフォルトの名無しさん:2010/10/30(土) 22:47:18
Eclipse馬鹿にすんな

540 :デフォルトの名無しさん:2010/10/30(土) 22:49:37
Visual Studio 2008 EEでサービスアプリケーション作ろうと思ったら新規作成に
見当たらない。ヘルプ読んだらPro版じゃないと出来ないみたいだショボーン

541 :デフォルトの名無しさん:2010/10/30(土) 23:10:19
.NET Frameworkとメモ帳があれば何でもできますよ

542 :デフォルトの名無しさん:2010/10/31(日) 01:10:50
>>541
さすがっす
ぱねーっす

543 :デフォルトの名無しさん:2010/10/31(日) 02:25:30
メモ帳だけ?金をもらってもやりたくねーよ

544 :デフォルトの名無しさん:2010/10/31(日) 03:41:43
xkeymacs があればメモ帳だけでもいいかな、って思う

545 :デフォルトの名無しさん:2010/10/31(日) 14:20:04
BuildToolがあればいい話でしょ?
MSBuildってやつはどうなん?

546 :デフォルトの名無しさん:2010/10/31(日) 14:24:19
>BuildToolがあればいい話でしょ?

全然違う

547 :デフォルトの名無しさん:2010/10/31(日) 18:43:08
Expressでいいじゃんなんなの?


548 :デフォルトの名無しさん:2010/10/31(日) 20:16:22
>>540
べつにEEでもサービス作れるよ

ってだけの話かと

549 :540:2010/10/31(日) 23:21:47
>>548
VS2010の間違いだったスマソ。以前2008Proで作ったデザイナのコードを貼り付けたら出来た。

550 :デフォルトの名無しさん:2010/11/01(月) 00:01:22
スレッド処理クラスのインスタンスって、どこからも参照されなくなると
スレッド実行中でもオブジェクトが破棄されるのね。ウンコ仕様。

551 :デフォルトの名無しさん:2010/11/01(月) 00:08:21
イミフ(

552 :デフォルトの名無しさん:2010/11/01(月) 08:15:38
new Thread(new ウンコ().メソッド).Start();

ってするとメソッド実行中にウンコのファイナライザが呼ばれる。

553 :デフォルトの名無しさん:2010/11/01(月) 08:21:19
嘘付けソース晒せ

554 :デフォルトの名無しさん:2010/11/01(月) 08:21:23
メソッドの戻り値がウンコのインスタンス握ってなければ破棄されて当たり前じゃね?
何か根本的に理解足りてなくね?

555 :デフォルトの名無しさん:2010/11/01(月) 08:24:10
>>552
アホすw

556 :デフォルトの名無しさん:2010/11/01(月) 09:35:40
Thread にはメソッドの返り値のインスタンスを渡してるだけでウンコーヽ(`д´)ノを渡してるわけじゃないからなー

557 :デフォルトの名無しさん:2010/11/01(月) 09:51:36
いやデリゲートだから渡してるだろ

558 :デフォルトの名無しさん:2010/11/01(月) 11:23:16
ウンコはGCがたどれないから破棄されてもしょうがない

559 :デフォルトの名無しさん:2010/11/01(月) 11:52:02
GCのルートと見做されるのは
・スタック
・静的フィールド
・明示的にルートとして作られたハンドル
くらいだっけ

560 :デフォルトの名無しさん:2010/11/01(月) 12:27:33
C#は万能だけど過信しすぎはよくないな

561 :デフォルトの名無しさん:2010/11/01(月) 15:52:55
C#は万能だけどの時点で過信してないか?

562 :デフォルトの名無しさん:2010/11/01(月) 15:56:34
実際Win上じゃ1番やりやすいと思うんだがな

563 :デフォルトの名無しさん:2010/11/01(月) 16:04:22
限定されてる世界の中で万能

564 :デフォルトの名無しさん:2010/11/01(月) 19:50:04
限定といってもクライアントPCの9割はカバーする。

565 :デフォルトの名無しさん:2010/11/01(月) 23:42:39
Threadインスタンスはスレッド実行中は保持されている。
ThreadはThreadStartデリゲートを保持している。
したがってウンコは破棄されない。

んじゃなかったんだっけ?


566 :デフォルトの名無しさん:2010/11/01(月) 23:49:00
おまえら本当にうんこの話が好きだな

567 :デフォルトの名無しさん:2010/11/01(月) 23:57:55
うん

568 :デフォルトの名無しさん:2010/11/01(月) 23:58:25
          /{
        /  \_
         {        ̄ \
         _人   ,-、 ,-、   ヽ
      /             }、
.     イ/   、、、 ・  ・ 、、、   ヽ
     /┘-く   r‐- 、   __,. -、  _)ム、
    ( ,   r)  ヽ    ̄     ノ, -=ァ、Y  呼んだ?
     ー'-ー′   ` ー---― ' //7  lノ
     { i 弍、     ____ //7 ニl´
     ヾヘヾ二フ ̄´       Y// ニ/
     `ーニシ        { {  /
                  `='

569 :デフォルトの名無しさん:2010/11/02(火) 00:02:16
うん

570 :デフォルトの名無しさん:2010/11/02(火) 00:50:23
こどもだなあ

571 :デフォルトの名無しさん:2010/11/02(火) 01:43:28
うん

572 :デフォルトの名無しさん:2010/11/02(火) 08:37:19
センサー式便器だとうんこ拭くのに腰を上げた時に流されるね


573 :デフォルトの名無しさん:2010/11/02(火) 09:01:54
そうなの?

574 :デフォルトの名無しさん:2010/11/02(火) 09:02:35
うんこの健康状態が確認できないな

575 :デフォルトの名無しさん:2010/11/02(火) 13:53:45
特定のファイルだけコードの自動補正をさせたくないんですけど
そういうことは出来ますか?
enumのタブが消されて見にくくなります・・・。

576 :デフォルトの名無しさん:2010/11/02(火) 14:10:28
できない

577 :デフォルトの名無しさん:2010/11/02(火) 14:52:01
メンバをタブで綺麗に揃えたりするのはウザいだけ

578 :デフォルトの名無しさん:2010/11/02(火) 15:14:14
どうでもいいじゃん
スペース押すのダルいし、そのためのキーだよ

579 :デフォルトの名無しさん:2010/11/02(火) 16:12:35
そうかなぁ、enumに数値指定する時とか
間違い見つけやすくなると思うんだけど・・。
とりあえず無いならあきらめます。


580 :デフォルトの名無しさん:2010/11/02(火) 16:14:50
>enumに数値指定する時



581 :デフォルトの名無しさん:2010/11/02(火) 16:59:28
[Flags] enum Hoge {
 A = 0x00,
 B = 0x01,
 C = 0x02,
}
みたいなやつだろ

582 :デフォルトの名無しさん:2010/11/02(火) 18:38:33
>>579
試してないけどProductivity Power Toolsでそろえるのはできるんでない?
http://blogs.msdn.com/b/jasonz/archive/2010/06/07/announcing-vs2010-productivity-power-tools-and-modeling-feature-packs.aspx

583 :デフォルトの名無しさん:2010/11/03(水) 01:07:34
WPFみたいにListBoxにパネルを格納したりする事は可能?
FlowLayoutPanelでやってみたらフォーカスが当たらない。
そりゃそうだが、フォーカスを受け付けるにはどうすれば??
そもそもFocus()とSelect()の違いって何?

584 :デフォルトの名無しさん:2010/11/03(水) 01:24:27
>>583
内部的には両方ともコンテナのActiveControlにセットしてるだけだったはず。詳細は知らん。

585 :デフォルトの名無しさん:2010/11/03(水) 01:39:00
確かにControlStyles.Selectableの説明に、
「true の場合、コントロールはフォーカスを受け取ることができます。 」
って書いてあるから混乱してたんだよね。

586 :デフォルトの名無しさん:2010/11/03(水) 18:47:48
すみません、過去ログ検索したけど見つからなかったのでどなたか教えてください。

C#のListってランダムアクセスできるんですか?

ListにはメソッドにBinarySearchが用意されているけど
そもそもランダムアクセスできないのであればあまりパフォーマンスが
出ないように思うのですが。



587 :デフォルトの名無しさん:2010/11/03(水) 18:49:21
>>586
インデックス指定すればアクセス可能だよ
ただ配列のように速度はでないだろうけど

588 :デフォルトの名無しさん:2010/11/03(水) 18:51:41
List<T>はいわゆるリンクリストではなくて配列で実装されてるのでランダムアクセスは非常に速い。
BinarySearchもその内部の配列に対して直接行われるので速い。

589 :デフォルトの名無しさん:2010/11/03(水) 18:53:29
List って名前見てリンクリストを想像するのは STL 脳かね。
非ジェネリック版は ArrayList だけど対応するジェネリック版が List<T> なのもあれだけど。

590 :デフォルトの名無しさん:2010/11/03(水) 18:56:35
C#のListってArrayなListじゃなかったっけ?


591 :デフォルトの名無しさん:2010/11/03(水) 19:00:47
.NETのIListインターフェイスはそもそも要素にランダムアクセスするためのインターフェイスなので
わざわざArrayListという名前にする必要がないんだわ
JavaのListインターフェイスはランダムアクセスに向いてない一般のリストに対応してるが
そのせいで無駄に複雑になりすぎてる感じ

592 :デフォルトの名無しさん:2010/11/03(水) 19:04:02
別にLinkedListクラスがある。

593 :デフォルトの名無しさん:2010/11/03(水) 19:05:09
.NETのコレクション系インターフェイスもそれはそれで場当たり的且つ大雑把すぎる感じはする

594 :デフォルトの名無しさん:2010/11/03(水) 19:07:41
そうか?
この設計を超えるライブラリ集を未だ見た事がないのだが?
良い設計の物を教えてくれ
大抵の言語は使えるからすぐに評価出来ると思う

595 :デフォルトの名無しさん:2010/11/03(水) 19:09:22
割り切ってて良いと思うけどな
JavaのListはいろいろ詰め込みすぎて実装依存が激しい
ランダムアクセスメソッドがあるくせに「実装次第では非効率だから使わないでね」とか書いてある

596 :デフォルトの名無しさん:2010/11/03(水) 19:10:37
>>590
そうよ。

>>591
いや、ArrayList って名前の方がいまいちなのは同意で、
非ジェネリック版のコレクションに Obsolete 付けたいなぁという意味で。

>>593
他の言語と比べりゃかなり熟慮されてる。

とはいえ、1.0 の頃「失敗だった」って思ってるものも結構あって、
後からの追加分で方針変わってるものも。

597 :586:2010/11/03(水) 19:47:50
ありがとうございます。

>>588
ということは検索は速いけど挿入は遅いということですね。
挿入も検索も速度を気にするのならSoretedDictionaryという認識で正しいでしょうか?
SortedListの位置づけがいまいちよく分からないけどこちらはKey, Value形式の
Listということなんでしょうか。

598 :デフォルトの名無しさん:2010/11/03(水) 19:53:09
Dictionary/SortedDictionary/SortedListは全部マップ。
List/LinkedListがリスト。

599 :デフォルトの名無しさん:2010/11/03(水) 19:54:03
ソート速度要らないなら普通のDictionaryだろ。
HashSetだったかでもいいか。


600 :デフォルトの名無しさん:2010/11/03(水) 20:10:27
>>597
Dictionaryがハッシュテーブル
SortedDictionaryが赤黒木
SortedListが普通の配列をソート済みにしておいて二分探索
とかだったような(確認はしてない)。

601 :デフォルトの名無しさん:2010/11/03(水) 20:45:56
>>597
> ということは検索は速いけど挿入は遅いということですね。

データ数が少ないと挿入とかもリンクリストのほうが遅いとかってこともあるな。



602 :586:2010/11/03(水) 20:47:33
SortedDictionaryはMicrosoftのドキュメントには二分探索木で実際
には赤黒木ですよね。

SortedDictionaryであるKeyの値にヒットするものがないときに
もっとも近いKeyに結びついたValueが欲しい場合はどうしたら
よいのでしょうか。

List.BinarySearchではヒットするものがない場合は手前の
インデックスの2の補数が返ってくるので上記が可能なのですが
SortedDictionaryでList.BinarySearchと同じようなことはできる
のでしょうか。

内部に木を持っていればできるはずなのに、パブリックメソッドを見る
限り内部の木を意識したメソッドがないように見えるのですが。


603 :デフォルトの名無しさん:2010/11/03(水) 20:58:02
ないよ
Dictionaryとの違いは、foreachで列挙したときにソートされてるかどうかだけ

604 :586:2010/11/03(水) 21:02:59
>>603
ありがとうございます。ちょっとショックですが。。。



605 :デフォルトの名無しさん:2010/11/03(水) 21:54:38
あれは不便だよな

おかげで赤黒木を自力で実装してしまったよ

606 :デフォルトの名無しさん:2010/11/03(水) 22:08:49
拡張メソッド+LGCで無理矢理拡張することもできなくはないが……。
俺がやったらきっと内部状態の整合性をぶち壊す。

607 :デフォルトの名無しさん:2010/11/03(水) 22:42:29
C#って以外にも文法ゴチャゴチャしてない?
ポインタが使えるみたいだけど、C++で書けばいいだけの話じゃん

608 :デフォルトの名無しさん:2010/11/03(水) 22:45:29
.NET の IL がポインター持ってるからねぇ。
C# も、制限付き(unsafe 内でのみ)ポインター使えるようにしてある。
まあ、実際、使うことほぼないけども。

結構ごちゃごちゃしてるけど、あれでも他と比べりゃだいぶマシ。

609 :デフォルトの名無しさん:2010/11/03(水) 22:45:42
どうぞどうぞ

610 :デフォルトの名無しさん:2010/11/03(水) 22:46:02
ゴチャゴチャはしてないと思うけど、匿名メソッドとかは(ラムダ式がある今だと)微妙だったりはあるね。
ポインタというかunsafeは別にあまり売りではないと思う……

611 :607:2010/11/03(水) 22:53:43
C#の文法は2日くらいしか勉強していないけど、
メモリ関係の処理を自動でやってくれるC++じゃん って思ってしまった

612 :デフォルトの名無しさん:2010/11/03(水) 22:54:38
参照型が全部ポインタ宣言みたいなもんだしなー

613 :デフォルトの名無しさん:2010/11/03(水) 22:54:41
DllImportでポインタ使うことはあるだろ
たかが関数いくつか呼ぶためだけにC++使うなんてアホらしい

614 :デフォルトの名無しさん:2010/11/03(水) 23:12:14
>611
でもジャグ配列はポインタのポインタじゃないんで凄く遅い

615 :デフォルトの名無しさん:2010/11/03(水) 23:19:09
>>611
2.0のイテレーターとか、3.0の各機能、4.0のdynamic、(今後出て来る)5.0のasync、
C++とか話にならないレベル。

616 :デフォルトの名無しさん:2010/11/04(木) 00:50:04
文法ゴチャゴチャとかいっても、継ぎ接ぎだらけのC++とは比べ物にならないと思うが。
そりゃ後発だからってだけだけど。

617 :デフォルトの名無しさん:2010/11/04(木) 01:08:23
C++ 30年来の負の遺産だらけだから比べるとかわいそうってレベル。

C# も当然、どんどん後悔しょっていっちゃってるけども、
それでもカオス化のスピードは他の言語よりも緩やかだと思う。
(そもそも進化をあきらめた言語を除いて。
 有益な追加と負の遺産の S/N 比の高さは随一。)

618 :デフォルトの名無しさん:2010/11/04(木) 01:47:20
>>615
元々がJavaのシェアを乗っ取る目的で開発された言語だからな
しかしWIndowsメインってのが痛いな
MonoはMS公式じゃないし遅い

619 :デフォルトの名無しさん:2010/11/04(木) 01:49:37
>>618
WIndowsなんてしょうもないミスタイプするような人が何言ってもねぇ?

620 :デフォルトの名無しさん:2010/11/04(木) 01:54:33
ねぇ?っていわれてもねぇ・・・

621 :デフォルトの名無しさん:2010/11/04(木) 02:00:51
>>619
Windows

どうだ!今度はちゃんとタイプしたぞ

622 :デフォルトの名無しさん:2010/11/04(木) 02:05:42
言語宗教に興味なし
正直言語とかどうでもいいんだよ
やりたいことがやれれば、作りたいものが作れれば、しかも楽に、ね

623 :デフォルトの名無しさん:2010/11/04(木) 02:09:14
>>621
WiNdoWs

624 :デフォルトの名無しさん:2010/11/04(木) 02:20:54
へじたん、かわいいよ、へじたん

625 :デフォルトの名無しさん:2010/11/04(木) 06:42:50
MSが主導権握ってる限りは無理だろう
新たな中立団体作って分離させなきゃ

626 :デフォルトの名無しさん:2010/11/04(木) 06:50:20
(゚Д゚ )ハァ?

627 :デフォルトの名無しさん:2010/11/04(木) 08:59:25
>>526
世の中には放送大学っていう便利な大学があってな、
入学料22,000を収めるだけで学生になれるんだぜ。

628 :デフォルトの名無しさん:2010/11/04(木) 09:09:40
(゚Д゚ )ハァ?

629 :デフォルトの名無しさん:2010/11/04(木) 09:30:55
>>618
違うって。
「開発者から Java への機能追加の要望が山ほど届いてて、
 MS 的にもまずデリゲート追加したいけど、
 SUN が断固として拒否してきたから自社で作り直した言語」
が C#。

>>625
委員会方式でやってる C++ のカオス&足の遅さときたら酷いぞ、今。
強い組織によるリーダーシップは必要なんだよ。

630 :デフォルトの名無しさん:2010/11/04(木) 09:56:13
>>625
よそのほうがよっぽど宗教じみてて、どうしようもないと思うが。

631 :デフォルトの名無しさん:2010/11/04(木) 11:53:48
Java7なんか結局長い時間かけて何一つ決められず泥沼だからな

632 :デフォルトの名無しさん:2010/11/04(木) 12:25:08
MSもさっさとIIS()のライセンス完全無償化にしてくればいいのに。
匿名接続のみのローカルDBのみは無償とかセコイことしーな。

633 :デフォルトの名無しさん:2010/11/04(木) 13:42:08
MSが本気だしたらオーブンが崩壊しちゃうから加減してるんだよ!!

634 :デフォルトの名無しさん:2010/11/04(木) 14:15:18
そりゃまぁザクが本気を出せば多少大きなオーブンでも破壊できるだろうが……

635 :デフォルトの名無しさん:2010/11/04(木) 18:19:01
C++のポインタのように同じintのインスタンスを複数の
場所で変更可能にしたいのですが簡単な方法はありますか?
クラスフィールドで二つのインスタンスのどっちが変えても
同じ値になるようにしたいです。



636 :デフォルトの名無しさん:2010/11/04(木) 18:46:33
クラスにすりゃいいんじゃないか?

637 :デフォルトの名無しさん:2010/11/04(木) 18:51:13
Nullableならもしかしてって思った俺は負け組

638 :デフォルトの名無しさん:2010/11/04(木) 18:55:55
static?

639 :デフォルトの名無しさん:2010/11/04(木) 19:07:51
>>635
クラスにしてstaticメンバ変数にする

640 :デフォルトの名無しさん:2010/11/04(木) 19:41:00
>>635
StrongBox<T>でも使えば

641 :デフォルトの名無しさん:2010/11/04(木) 20:01:26
初心者板がdat落ちしているのでここで質問します><

TextFieldTypeを使用してCSVを読み込んだのですが、、少ないデータ数だとうまくいくのですが、
100項目600,000行のデータを取得するとどうしてもEndOfDataのところでバッファオーバーになってしまいます。

これはもうこのクラスを使えないのでしょうか?それともなにか解決策があるのでしょうか?
よろしくおねがいいたいします><

642 :デフォルトの名無しさん:2010/11/04(木) 20:42:57
別に落ちてないし

643 :デフォルトの名無しさん:2010/11/04(木) 20:52:25
>>641
http://hibari.2ch.net/test/read.cgi/tech/1286890729/586
の人かな?
スレ落ちてないよ〜

644 :デフォルトの名無しさん:2010/11/04(木) 20:55:48
>>641
>100項目600,000行のデータ
これのファイル上のサイズは?

645 :デフォルトの名無しさん:2010/11/04(木) 22:37:54
試しに1項目10バイトx100項目x100万行(1GByteちょっと)を食わせてみたけど
特に問題なし

646 :デフォルトの名無しさん:2010/11/04(木) 23:10:56
Formsアプリでの質問です。
ウィンドウのの×ボタン押したときでも
Windowsごと終了されちゃったときでも
必ず終了処理するにはどこのイベントハンドラに
処理を書くのがよいのでしょうか。


647 :デフォルトの名無しさん:2010/11/04(木) 23:12:47
FormClosingかな?

648 :デフォルトの名無しさん:2010/11/04(木) 23:23:07
ガンダム―!

649 :646:2010/11/04(木) 23:25:24
ありがとうございます。
FormClosingで処理することにします。

650 :デフォルトの名無しさん:2010/11/05(金) 06:23:43
非同期で複数のスレッドからアクセスされるデータって必ずLockしなきゃいけないの?
配列をforeachで列挙している時なんかはわかるんだけど、整数型に値を代入するようなときでも必要なの?



651 :デフォルトの名無しさん:2010/11/05(金) 07:54:45
Lockしなくてもいいと思うならしなくておk

652 :641:2010/11/05(金) 09:16:14
昨日はdat落ちどころかインターネットすら繋がらなくなったorz
今確認したら「ふらっとC#〜」落ちてないですね;w;

100列X600,000行の桁の数字のカンマ区切りのCSVです。
サイズは280MBです。

デバックでは
TextFieldParser parser = new TextFieldParser(FilePath,
System.Text.Encoding.GetEncoding("Unicode"));
後に

parser.TextFieldType = FieldType.Delimited;//区切り指定
parser.SetDelimiters(Delim(refDelim));//区切り文字指定
 *Delim()は区切り文字を指定するメソッドです。

その後にwhile (!parser.EndOfData)のEndOfDataでInvalidOperationException例外が起きました・・・

ちなみにwhileの前にusing (StreamWriter w = new StreamWriter(presFolder + Path.GetFileName(FilePath)))
を指定しているのですがこれも少しは関係しているのだろうか・・・orz


653 :641:2010/11/05(金) 09:33:35
追伸:StreamWriter等を除いた新規のプロジェクトで最小限の構成で試してもEndOfDataで例外が発生しますorz


654 :641:2010/11/05(金) 09:37:44
再三すいません。一応最小構成を挙げています。
もし>>645さん見られていたらコードのサンプル載せて頂けませんでしょうか?
よろしくお願いします。

private void button1_Click(object sender, EventArgs e)
{
TextFieldParser parser = new TextFieldParser("C:\\test.csv",
System.Text.Encoding.GetEncoding("Unicode"));
parser.SetDelimiters(",");
parser.TextFieldType = FieldType.Delimited;
using (parser)
{
while (!parser.EndOfData)
{
}
}
}

655 :デフォルトの名無しさん:2010/11/05(金) 09:38:11
>>653
読み込みは行単位?

ここなんかが参考になるかな?
http://www.atmarkit.co.jp/fdotnet/dotnettips/487csvparser/csvparser.html

656 :デフォルトの名無しさん:2010/11/05(金) 09:42:21
>>653
読み込みは行単位です。一度に読み込むとメモリ食うので。
一応、そちらのページを参考に作ったのですがうまく行きませんでした・・・

少ないデータならうまく行けたのですが大きいデータはEndOfDataでやはり例外を
投げてきますorz
 

657 :デフォルトの名無しさん:2010/11/05(金) 09:43:58
>>656
どのくらいの行数ならいけるとか限界は調べてみた?

658 :デフォルトの名無しさん:2010/11/05(金) 09:48:57
今細かく調べています。

現在は50x10,000まで完了しております。

659 :デフォルトの名無しさん:2010/11/05(金) 09:50:51
>>658
じゃあ行はそのままで1行あたりのデータ量は増やしてみた?

660 :デフォルトの名無しさん:2010/11/05(金) 09:53:11
えっと、まだそれは試しておりません。 テストデータを変えて実験してみます。

661 :デフォルトの名無しさん:2010/11/05(金) 09:54:01
ああすまん
>100項目600,000行のデータ
これから絞込みしてるのか

でも>>645の報告もあるしなあ・・・


662 :デフォルトの名無しさん:2010/11/05(金) 10:14:12
>>650
整数の代入も、コンパイル結果は数命令に分割されるからね。
読み書き両方やるならロック必須。

663 :641:2010/11/05(金) 10:18:59
解決しました!!

なんというかお恥ずかしながら、EncodingがUnicodeではなくShift-JISでしたorz

半角カナを含むデータを考慮していたのでUnicodeにしていたのですが(序盤のテストデータは半角カナ含)
その100X600,000のデータのみShift-JISとなっておりましたorz

ソフト側で読み込みの際の文字コードを指定する項目をつけることでその問題を回避しようとおもいます。()

スレの皆様ご迷惑おかけしましたm(_ _)m

664 :デフォルトの名無しさん:2010/11/05(金) 10:25:42
Shift-JISも一応半角カナはいけるでしょ
ちゃんと規定に入ってないのはアスキーコードくらいじゃないの?
Shift-JISはアスキーコード互換で一応半角カナ対応してたと思ったんだけど

665 :デフォルトの名無しさん:2010/11/05(金) 10:28:17
半角カナで作成したデータではShift-JISは文字化けしてしまいました・・・

なのでUnicodeを使用したのですが。とりあえず、Shift-JISとUnicodeのどちらか
ユーザーに選べるようにしようかと・・・orz


666 :デフォルトの名無しさん:2010/11/05(金) 19:32:29
>>662
やはりロックは必要なんですね。
ありがとうございました。

667 :デフォルトの名無しさん:2010/11/05(金) 22:48:41
public x As string
のようなVB形式の宣言は許されるのですか?

668 :デフォルトの名無しさん:2010/11/05(金) 22:49:06
絶対許早苗

669 :デフォルトの名無しさん:2010/11/05(金) 23:01:42
as は型チェック付きのキャスト

670 :デフォルトの名無しさん:2010/11/05(金) 23:02:14
Asはキャストだったような

671 :デフォルトの名無しさん:2010/11/06(土) 00:00:29
>>668-670
ですよね。
VBプログラマ移行のためにMSが糖衣構文を用意しているのか
と思っていました

どうもVB形式の宣言は、見にくくて馴染めないので、良かったです

672 :デフォルトの名無しさん:2010/11/06(土) 00:44:23
そこについてはVBの方が好きだなあ
新しい変数が欲しいとき、変数の目的が先にあってその後で型を考えるのが自然だと思う
var x as string のように書ければ、型推論でas stringを省略するかどうかの判断もしやすいはず。
型を先に書くとついついvar一色か全くvar使わないか極端になってしまいがちな気がする。

673 :デフォルトの名無しさん:2010/11/06(土) 00:44:59
>>662
要らないよ。
ってか使い方によるともいえるけど必須ではないぜ。



674 :デフォルトの名無しさん:2010/11/06(土) 00:49:35
型が後の方がコンパイラーや IDE には優しいし、
T Method<T>() みたいなジェネリックメソッドの戻り値にも優しく、
実は最近の言語だと型の方が後ろが主流だったり。

まあ、C/C++ からの移行っていう命題があった以上どうしようもないんだけど。

675 :デフォルトの名無しさん:2010/11/06(土) 00:53:01
当時はスクリプト言語のイメージが悪かったから
スクリプト言語に見えないように、っていうのは設計方針としてあったらしいね

676 :デフォルトの名無しさん:2010/11/06(土) 01:08:10
質問:「.NET Framework 2.0のDLL(x86)」を「.NET Framework 4.0のEXE(x86)」から
遅延バインディングして利用すると、何か問題がありますでしょうか。
異なるFramework間の呼び出しで、問題が発生しないか確信が持てる情報がほしいです。
(当然、利用者は両方のFrameworkが動作する状態になっている事が前提でOKです)

現在、VS C# 2010 Expressで開発してます。
他人の作ったDLLを遅延バインディングして利用するプログラムを作っているのですが、
Reflectionの記述のために、ラッパークラスを書いてます。
メソッドやプロパティの読み書きごとにラッパーの記述が必要になってしまい、超めんどくさい状態です。(量が多い・・・)
で。調べてたら、C#4.0のdynamicが使いたくてうずうずしてるところです(笑)

ただ、DLLが2.0なので、現在はEXEのターゲットフレームワークを2.0にして開発してます。
DLLを4.0でビルドしなおして配布できればいいのですが、それはムリな状況です。

どこか、そのあたりの事を書かれたサイトなどがありましたら、教えていただけるとありがたいです。
よろしくお願いします。


677 :デフォルトの名無しさん:2010/11/06(土) 01:19:41
一応100%の互換性があるはずだけど
全く問題なく動作する保証はないから必ずテストしろ
という感じだったと思う

678 :デフォルトの名無しさん:2010/11/06(土) 01:20:14
旧バージョンのDLLで使ってる機能による
http://msdn.microsoft.com/ja-jp/library/ee461502.aspx
ここら辺見てみたら

679 :デフォルトの名無しさん:2010/11/06(土) 01:23:55
>>677
>>678
おぉ、ありがとうございます。
ちょっと読んできます。


680 :デフォルトの名無しさん:2010/11/06(土) 01:29:20
ソースコードが手元になくてリビルドできないから困ってるんだろ?
そこはあんまり関係ないでしょ

681 :デフォルトの名無しさん:2010/11/06(土) 01:34:06
>>680
うん、関係なかったです(笑)
書かれてる内容は、ビルドしなおしたときの話ですねぇ。しょぼーん。


682 :デフォルトの名無しさん:2010/11/06(土) 01:41:13
事故レスだけど、こんなの見つけた。
http://download.microsoft.com/download/5/5/b/55b34c74-2b8f-423c-94ad-4e22c0ae60f0/netFramework_migration_1.1_to_3.5.pdf
ちょっと読んでみる。

「.NET Framework 1.1/2.0/3.0/3.5 の混在で注意すべきこと」のところが該当しそう。(まだよんでない)


683 :デフォルトの名無しさん:2010/11/06(土) 01:43:04
サイドバイサイド実行ってキーワードになるのか・・・。


684 :デフォルトの名無しさん:2010/11/06(土) 01:47:57
うお。
■.NET Framework のバージョンが異なるアセンブリ間の呼び出し
.NET Framework 2.0 で作成されたEXE より呼び出された.NET Framework
1.x で作成されたアセンブリは、アプリケーション構成ファイル(アプリ
ケーション名.exe.config)で指定しなかった場合、CLR2.0 上で動作します。
アプリケーション構成ファイルはアプリケーションで1 つしか持てない
ことと、CLR は1 つのプロセスに1 つしかロードできないため、最初に起
動するプロセスがロードするCLR のバージョンを決定します。
----
つまり質問の例だと、2.0で動いてたDLLは4.0のEXEから呼び出すと、4.0上で動くということか。
これは想像してなかったなぁ。


685 :デフォルトの名無しさん:2010/11/06(土) 01:51:22
連投すまそ。

あった。このあたりっぽい。
http://msdn.microsoft.com/ja-jp/library/s80xxs7s(v=VS.80).aspx


686 :デフォルトの名無しさん:2010/11/06(土) 02:05:07
.NET Framework 4の話はこっちだった。_no
http://msdn.microsoft.com/ja-jp/library/8477k21c.aspx


687 :デフォルトの名無しさん:2010/11/06(土) 02:09:16
ぐ。>>684の話は、古い話っぽい。
やっと、4.0系の話が出てるところを見つけた。
http://msdn.microsoft.com/ja-jp/library/ee518876.aspx


688 :デフォルトの名無しさん:2010/11/06(土) 02:11:33
とりあえず落ち着け。

689 :デフォルトの名無しさん:2010/11/06(土) 02:25:04
>>688
すんまそん(;w;

探しても探しても、探し方が悪かったようで、ぜんぜん見つからなかったのに、
PDFで「サイドバイサイド実行」の言葉を知ってから、わんさか出てくる有様で・・・。

結論としては、>>687のアドレスが正解です。
.NET Framework のバージョンによって、このあたり大きく挙動が異なるようです。
まあ、互換としては大丈夫そう、ってことがわかりました。 でも、>>677さんの言うとおり、テストは必要ですね。

あと、先に書いた
「2.0で動いてたDLLは4.0のEXEから呼び出すと、4.0上で動く」
は、古い情報を元に憶測した内容で、間違っていました。

実際には、
「2.0で動いてたDLLは4.0のEXEから呼び出すと、Framework2.0で動こうとするがFramework2.0がない場合は動作するFrameworkを探す。
また、明示的にアプリケーション構成ファイルを使って、動作するFrameworkを指定することもできる。」
でした。

まあ、なんていうか、この対応表みると、世界中のクライアントは「4.0いれとけ」ってことですかね(笑)
とりあえず、自己解決しましたので、お付き合いありがとうございました。


690 :デフォルトの名無しさん:2010/11/06(土) 02:54:39
>「2.0で動いてたDLLは4.0のEXEから呼び出すと、4.0上で動く」 
であってるよ。
そうしないとStringのような基本的なオブジェクトのバージョン違いが混在してしまう。


691 :デフォルトの名無しさん:2010/11/06(土) 07:53:37
>>689
おいおい解釈が間違いまくってるぞ。


692 :デフォルトの名無しさん:2010/11/06(土) 08:47:33
>>672
intABCとかstrMOJIとか書く人はどうなるの?w

693 :デフォルトの名無しさん:2010/11/06(土) 09:31:03
>>692
今更ハンガリアンは考えなくていいだろ。
型を前に書くのはCと文法をあわせたためで、新しい言語では後ろに書くものが多い。
Goとかそうだよね。
var aaa int;
func xxx(ar [] float) {
といった表記になる。

694 :デフォルトの名無しさん:2010/11/06(土) 09:37:49
>>689
2.0で動いてたEXEはFramework2.0で動こうとするが、4.0しかインストールされていない場合は動作しない。
明示的にアプリケーション構成ファイルを使うことで、4.0で動作させることができる。
4.0のEXEから2.0のDLLを使う場合は何もしなくても4.0の上で動く。

695 :デフォルトの名無しさん:2010/11/06(土) 09:44:58
>>687のドキュメントはC++使ってCOMでCLRをホストするときの話なので的外れ。
.NETアプリケーションそのものには関係ない。サイドバイサイドもこの場合関係ない。
最も注意が必要なのはC++/CLIで書かれたDLL。CLRのバージョンが変わるとどうやっても絶対に動かない。

696 :デフォルトの名無しさん:2010/11/06(土) 13:07:53
あう。あぶない。指摘ありがとうです。
今、見直した。
「マネージ COM コンポーネントの開発者」のところの表だったか(汗
夜中に眠たい目をこすりながら見るもんじゃないね;

そうか、DLLといっても、そこを分けて考えないとダメなのね。


697 :デフォルトの名無しさん:2010/11/06(土) 14:41:12
便乗して質問してもいいですか?
@ITで.NET4.0新機能として複数CLRのロードとあったんですよ。
1プロセス内にCLR2と4をロードするらしいんですが、
具体的にどんな効果がありますか?
互換性問題の多くはクラスライブラリの変更だと思うので…

698 :デフォルトの名無しさん:2010/11/06(土) 14:51:34
プラグイン機能を持ったC++のアプリケーションがあったとして
そのプラグインが内部でCLRを読み込んで使ってたとして
CLR2を使ってるプラグインとCLR4を使ってるプラグインを同時に読み込んでも問題がないということ。
.NETアプリケーションを作る上では全く関係ありません。

699 :デフォルトの名無しさん:2010/11/06(土) 15:23:41
ありがとう、気にしない事にします

700 :デフォルトの名無しさん:2010/11/06(土) 15:28:46
デスクトップシェルの拡張に使うCOMコンポーネント、
これに.NET製のCOMを使用できるようになった。

701 :デフォルトの名無しさん:2010/11/06(土) 15:43:30
ということは
ttp://blogs.msdn.com/b/junfeng/archive/2005/11/18/494572.aspx
これは解決されたってこと?
それともCLR1.1を読み込んだあとにCLR2を読み込んだ場合は解決されていないのか

702 :デフォルトの名無しさん:2010/11/06(土) 16:06:34
どのみち1.1は対象外

703 :701:2010/11/06(土) 16:11:09
もろに書いてあった。4.0以降で開発してくれと言う事か
ttp://msdn.microsoft.com/ja-jp/magazine/ee819091.aspx
>1 プロセスに複数のランタイムを混在できるようになったことで、
>コンピューター上の任意のアプリケーションにより、インプロセスで
>実行されるものも含め、マネージ シェル拡張の作成を基本的に
>サポートできるようになりました。
>ただし、.NET Framework 4 よりも古いバージョンを使用して作成された
>シェル拡張は現在でもサポートされません。それらの古いバージョンの
>ランタイムが他のバージョンと併せてプロセス内に読み込まれることはなく、
>多くの場合エラーを誘因するためです。

704 :デフォルトの名無しさん:2010/11/06(土) 16:53:56
シェル拡張ってなに?
それ以外はOKなの?

705 :デフォルトの名無しさん:2010/11/06(土) 16:59:22
Explorerの右クリックメニューでWindows Media Playerで開くとかそう言う独自項目作ったりとか
何にせよ非マネージドから呼ばれる時の問題

706 :デフォルトの名無しさん:2010/11/06(土) 17:09:54
うは、VS2010Expressがコーディング中に落ちた;


707 :デフォルトの名無しさん:2010/11/06(土) 17:44:33
2010だし仕方ない

708 :デフォルトの名無しさん:2010/11/06(土) 18:49:39
>>706
気にするな、君のプログラムだってすぐ落ちるだろ。

709 :デフォルトの名無しさん:2010/11/06(土) 19:26:01
2010って確かに2008より重いんだけど安定性悪いかなあ

710 :デフォルトの名無しさん:2010/11/06(土) 20:16:45
特定環境だけ安定性悪くなるっぽい?
俺のとこも一時期不安定だったけど最近は何故か安定してる。

711 :デフォルトの名無しさん:2010/11/06(土) 20:27:47
あるある
なので左手は手動セーブを覚えてるw

712 :デフォルトの名無しさん:2010/11/06(土) 21:35:53
左手は手動セーブを覚えてるうちはまだまだだよ

713 :デフォルトの名無しさん:2010/11/06(土) 21:57:12
まさか・・・
>>712はあの伝説の「真ん中の足セーブ」の使い手なのか・・・

714 :デフォルトの名無しさん:2010/11/06(土) 22:12:33
ゴクリ…

715 :デフォルトの名無しさん:2010/11/06(土) 22:34:38
正直安定性は2008よりはやや劣ると思う。
まあ2008でも落ちたりするけどな。


716 :デフォルトの名無しさん:2010/11/06(土) 22:51:22
左手は添えるだけ

717 :デフォルトの名無しさん:2010/11/06(土) 22:52:05
真ん中の足とかw
卑猥すぎるw

718 :デフォルトの名無しさん:2010/11/06(土) 22:53:00
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1411856314

719 :デフォルトの名無しさん:2010/11/06(土) 22:56:59
せめて「前しっぽ」と呼ぼうぜ

720 :デフォルトの名無しさん:2010/11/07(日) 04:57:56
知恵袋にアダルトカテゴリなんてあったんだな
ひどい質問ばかりだ

721 :デフォルトの名無しさん:2010/11/07(日) 05:32:33
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1149959061
これなんて質問ですらない
完全に私物化、公開メール

722 :デフォルトの名無しさん:2010/11/07(日) 12:46:17
どう見ても業者です
本当にありがとうございました

723 :デフォルトの名無しさん:2010/11/08(月) 03:14:51
こんなのみつけたのですが、これって本当?
煽りとかじゃなくて、.NETあまり使ってないからよくわからないんだ
PowerShellも.NET使ってたよね

916 名前:デフォルトの名無しさん[sage] 投稿日:2010/11/06(土) 13:49:09
MSが.NETから徐々に撤退し始めたからどうなることやら



724 :デフォルトの名無しさん:2010/11/08(月) 03:47:02
誰ともわからない俺が本当だ、と言ったら信じるのかい?
誰ともわからない俺が嘘だ、と言ったら信じるのかい?

誰ともわからない奴が撤退し始めた、と言ったら信じるのかい?

725 :デフォルトの名無しさん:2010/11/08(月) 03:47:38
撤退してどこ行くんだよ
今.NET以外何も無いだろ

726 :デフォルトの名無しさん:2010/11/08(月) 05:36:23
(Appleが許可しないから)iPhone向けのSilverlightは作らないんでHTML5使ってね。
という話を「MSがSilverlight撤退」と書いた売名記事が元になって
完全な誤報を鵜呑みにして、都合のいいように飛躍させたら.NET撤退になったのだろうか?

727 :デフォルトの名無しさん:2010/11/08(月) 06:11:20
あまり使ってないからよくわからないならどうでもいいだろ気にすんな

728 :デフォルトの名無しさん:2010/11/08(月) 06:58:27
SL4でプラットフォームとして十分に成熟したから、もう頻繁過ぎるアップデートは行わない
安心して開発して欲しいってメッセージを良くもまぁMSがSLから撤退と取れたもんだわな
そしてお次は売名記事に踊らされたアンチの馬鹿がMSが.NETから撤退と煽り始めたわけか

729 :デフォルトの名無しさん:2010/11/08(月) 07:10:56
http://hibari.2ch.net/test/read.cgi/tech/1153227982/916

このスレか

730 :デフォルトの名無しさん:2010/11/08(月) 08:11:36
実際MSが作ってるアプリで.netな物ってどれくらいあるの?
VSで使ってるのは知ってるけど、いまどきのOfficeは.netなのかな

731 :デフォルトの名無しさん:2010/11/08(月) 08:30:49
開発向けツールに多い
パンピー向けが置き換わるのは3年後じゃね

732 :デフォルトの名無しさん:2010/11/08(月) 08:38:37
ある規模以上のものでパンピー向けだとPaint.NETくらいしかしらない
MSじゃないけど

733 :デフォルトの名無しさん:2010/11/08(月) 08:46:26
最近こまごまと、ウェブのデモは Silverlight になってるけどもね。

734 :デフォルトの名無しさん:2010/11/08(月) 09:40:17
.NET使った製品とか言ったら、仮にいくら良くても、自称情強がファビョり出すのをMSもわかってるんだろ

735 :デフォルトの名無しさん:2010/11/08(月) 09:57:15
CLRをホスティングで使ってる製品は多くないかい。
基幹部分をネイティブで作って、プラグインや機能拡張部分に.NETを使っている。


736 :デフォルトの名無しさん:2010/11/08(月) 10:22:19
Officeのようなパフォーマンス命のような製品まで置き換わるのは5年以上先だろう。

737 :デフォルトの名無しさん:2010/11/08(月) 11:15:22
ネイティブでコンパイルできたら良いんだけどな。

738 :デフォルトの名無しさん:2010/11/08(月) 11:20:48
ネイティブにするだけならngen。
いつもループしてるけど、GCを廃止するとか型システムや
基本ライブラリをぜんぜん別物に作り変えないと無理。

739 :デフォルトの名無しさん:2010/11/08(月) 12:05:24
たまにJREをプライベート配置したバカでかいJavaアプリを見かけるよな
アホかと思う

740 :デフォルトの名無しさん:2010/11/08(月) 12:23:06
monoでlinux専用だが、これで全部バンドルされてランタイムなしで動くようになるが・・・
mkbundle --static hello.exe -o hello
すっごく、大きいです。さらにパフォもよくない。

741 :デフォルトの名無しさん:2010/11/08(月) 12:31:08
パフォーマンスをわざわざパフォとか略す人って
コーディングでも変数名に意味不明な略語使っちゃうのかね。

742 :デフォルトの名無しさん:2010/11/08(月) 12:34:38
粗探しに必至で笑えるね

743 :デフォルトの名無しさん:2010/11/08(月) 12:41:33
C#の言語仕様をネイティブ向けに実装すること自体は全然難しくないよ
そこそこ人気のある言語で誰でも考えることなのに未だにそういうのが出てこないってことは
結局メリットも需要も無いんだよね

744 :デフォルトの名無しさん:2010/11/08(月) 13:04:35
>>743
難しくないというというソースをくれ。
難しくないならC#より先にjavaのネイティブ版がでてきそうなものだけど。

745 :デフォルトの名無しさん:2010/11/08(月) 13:56:06
言語仕様書読めばいいじゃん。特に変わったところのない普通の言語だよ。
でもC#を実装したところで.NETアプリが動くわけじゃないからあんまり意味がなくて、
CLIを実装する方がずっとメリットがある。
Javaのネイティブコンパイラなら現にいくつかあるよ。

746 :デフォルトの名無しさん:2010/11/08(月) 14:08:04
>>744
うん、お前には難しいね。
多分俺にも。


747 :デフォルトの名無しさん:2010/11/08(月) 14:27:39
>Javaのネイティブコンパイラなら現にいくつかあるよ。
gcjかな?具体的に上げてよ。
そのレベルならmonoが既に実現済みだが、実用じゃないだろう。
あとBCLやGCや型システムも含めて言語仕様だと思うが、
それ無視して普通の言語といってるなら見当違い。


748 :デフォルトの名無しさん:2010/11/08(月) 14:36:39
自己論破乙


749 :デフォルトの名無しさん:2010/11/08(月) 14:57:16
規格のC#言語仕様にあるBCLやGCや型システムなんてそんなに大したもんじゃないよ
言語としての上っ面が書いてあるだけだ
そりゃ言語仕様書実装したところで全く実用にはならんけど、それは最初からそう言ってる

750 :デフォルトの名無しさん:2010/11/08(月) 16:19:55
C#の言語仕様書にはネイティブコンパイルしちゃダメとは一言も書いてないしな。
そんなの誰も欲しがらないけどさ

751 :デフォルトの名無しさん:2010/11/08(月) 16:24:43
俺が欲しい
はい論破

752 :デフォルトの名無しさん:2010/11/08(月) 16:28:03
>>737の「ネイティブでコンパイル」
の意味は.NET上のC#がそのままネイティブコンパイルできて、
さらに.NETのインストールも不要でスピードも軽量さもC並ということだろ。

753 :デフォルトの名無しさん:2010/11/08(月) 16:30:04
>さらに.NETのインストールも不要でスピードも軽量さもC並ということだろ。
妄想が激しいね


754 :デフォルトの名無しさん:2010/11/08(月) 16:30:32
>>751
あぁ、一言抜けてたわ。
作れるレベルに達している人が誰も欲しいと思っていない。

欲しいなら作れば?お前にはできないだろうけどwww

755 :デフォルトの名無しさん:2010/11/08(月) 16:34:42
後付けなら何とでも言えるわな


756 :デフォルトの名無しさん:2010/11/08(月) 16:37:49
>>755
あぁ、一言抜けてたわ。
これは後付けではない。

757 :デフォルトの名無しさん:2010/11/08(月) 16:37:51
言い返せないからってショボイ煽りだな

758 :デフォルトの名無しさん:2010/11/08(月) 16:38:59
途中まで会話に参加してたのだが誰が誰だかわからなくなってきた。
論破厨は話を混乱させるだけ道化だと思うから相手にしないほうがいいよ。

759 :デフォルトの名無しさん:2010/11/08(月) 16:40:07
日本語でおk

760 :デフォルトの名無しさん:2010/11/08(月) 16:42:57
>>754
これは笑った
まずお前の実力を示すことかけよ

761 :デフォルトの名無しさん:2010/11/08(月) 16:43:35
>>760
これは笑った
まずお前の実力を示すことかけよ

762 :デフォルトの名無しさん:2010/11/08(月) 16:44:50
>>758
最初から真面目に話すような内容なんてなかっただろ。
馬鹿なアンチを煽って遊んでればいい。

763 :デフォルトの名無しさん:2010/11/08(月) 16:46:30
>>760-761
同一人物か、これは笑った。
http://hibari.2ch.net/test/read.cgi/tech/1286890729/940-941


764 :デフォルトの名無しさん:2010/11/08(月) 16:48:15
>>761
これは笑った
まずお前の実力を示すことかけよ

765 :デフォルトの名無しさん:2010/11/08(月) 16:48:57
>>763
はずれ
これは笑った

766 :デフォルトの名無しさん:2010/11/08(月) 16:49:40
同一人物認定きてるね

767 :デフォルトの名無しさん:2010/11/08(月) 16:50:43
手詰まりなんだろうなぁ。

768 :デフォルトの名無しさん:2010/11/08(月) 16:56:30
これは笑った
アンチはいつも自分に都合が悪くなると必死に話を逸らそうとするw

769 :デフォルトの名無しさん:2010/11/08(月) 16:58:13
これは笑った
ところで何の話だっけ

770 :デフォルトの名無しさん:2010/11/08(月) 17:04:29
もう飽きたからどうでもいいな

771 :デフォルトの名無しさん:2010/11/08(月) 17:09:50
みんな笑ってエンジョイプログラミングやな

772 :デフォルトの名無しさん:2010/11/08(月) 18:53:08
・JavaやC#に似ている
・C/C++のように高速なネイティブコードを出力する
・C/C++とのバイナリ互換
・ガベージコレクション
・デリゲート
・テンプレート

これらの機能を備えるさいきょう言語といえば?
そう!それがぼくらのD言語!
C#おせー、M$糞だー、とかいっちゃうスーパーハカーのみなさんは
今すぐD言語へレッツゴー!

773 :デフォルトの名無しさん:2010/11/08(月) 19:00:43
スーパーハカーならC/C++で事足りるんじゃ・・・

774 :デフォルトの名無しさん:2010/11/08(月) 19:01:36
はかーが言語に縛られるとか笑い話にもならんな

775 :デフォルトの名無しさん:2010/11/08(月) 19:14:44
>>772
D言語は無限ベータ版を何とかしろw

776 :デフォルトの名無しさん:2010/11/08(月) 19:15:03
>>772
C++/CLIを忘れてる


777 :デフォルトの名無しさん:2010/11/08(月) 22:32:06
>>776
C++/CLIはネイティブもガベージコレクションも両方出来るけど、同時にはできないだろ。
ガベージコレクションを求めてref classで書くとネイティブの速度が手に入らない。

778 :デフォルトの名無しさん:2010/11/08(月) 22:36:04
>>773-774
それはハッカーだろ
スーパーハカー様をナメるなよ

779 :デフォルトの名無しさん:2010/11/08(月) 22:44:27
言語なんてIDEの一部に過ぎません
Dはそのへん勘違いしてるよ

780 :デフォルトの名無しさん:2010/11/09(火) 00:44:18
で?IさんとEさんは?

781 :デフォルトの名無しさん:2010/11/09(火) 00:49:01
馬鹿め、ヤツらは死んだわ

782 :デフォルトの名無しさん:2010/11/09(火) 00:51:12
中央を占めるという意味ではDさんの影響力は偉大

783 :デフォルトの名無しさん:2010/11/09(火) 01:02:02
A - Ada
B - B
C - C/C++
D - D
E - Eiffel
F - Fortran
G - Groovy
H - Haskell
I - Intercal
J - Java
K - K
L - Lisp
M - ML
N - NESL
O - Objective-C
P - Perl
Q - Q
R - Ruby
S - Smalltalk
T - Tcl
U - Unicon
V - VHDL
W - Water
X - XPL
Y - Yorick
Z - Z

784 :デフォルトの名無しさん:2010/11/09(火) 01:48:10
B - Brainf*ck
H - HQ9+


785 :デフォルトの名無しさん:2010/11/09(火) 02:08:16
>>777
JavaVMやCLRがインタプリタだと思ってるのか?

786 :デフォルトの名無しさん:2010/11/09(火) 02:35:34
>>785
なんでインタプリタがでてくるんだ?


787 :デフォルトの名無しさん:2010/11/09(火) 02:41:08
ネイティブの実行速度が圧倒的に速いなんていうのは幻想。
GC使うならネイティブで書いても大して変わらん。
VMが遅いというのはインタプリタ時代にできたイメージ。

788 :デフォルトの名無しさん:2010/11/09(火) 02:59:42
>>772 CLRよりネイティブコードのDの方が速い
>>776 おいおいC++/CLIもわすれるなよ
>>777 C++/CLIもGCつかうならCLRじゃん

こういう文脈だからそういうのは>>772にいうべき
そして>>772を書いたのは俺

789 :デフォルトの名無しさん:2010/11/09(火) 03:02:12
C++/CLIは#unmanagedとやらないと、
C互換の書き方をしてもILをはくよ。
GCは使わないけど、ネイティブとも言えない。

790 :デフォルトの名無しさん:2010/11/09(火) 03:13:22
あんまりこのスレとは関係ないが、昔Perlの実行速度を見せられて
自分の中の何かが崩れ去った。

791 :デフォルトの名無しさん:2010/11/09(火) 03:13:50
JITされるんで最適化されてないC++並の速度は出る。

792 :デフォルトの名無しさん:2010/11/09(火) 07:31:00
初回のクラスロードとJITが遅いんだろ。特に画面系。起動が遅すぎ。
JIT完了した後はCと殆ど変わらないほど速いのは承知。

793 :デフォルトの名無しさん:2010/11/09(火) 08:28:31
確かに画面系の起動速度はネイティブに劣る。まぁ、
関連アセンブリをNGenしとけばmscorjit.dll自体の読み込みをスキップする。
コールドスタートアップは.NET 3.5 SP1および.NET 4で随分改善した。
そもそもVista以降ではSuperFetchがあるため問題にならない。

後は時間の問題。

794 :デフォルトの名無しさん:2010/11/09(火) 13:29:05
EvernoteのWin用クライアントアプリが.NET捨ててC++で一から作り直したけど
起動がだいぶ速くなったよね

795 :デフォルトの名無しさん:2010/11/09(火) 13:59:57
あくまで起動なのか

796 :デフォルトの名無しさん:2010/11/09(火) 14:03:37
世の中にはバグがあっても起動にこだわる人がいるんです

797 :デフォルトの名無しさん:2010/11/09(火) 14:07:01
>>796
使う側としては当然だろ?

798 :デフォルトの名無しさん:2010/11/09(火) 14:23:59
ユーザーに不利押し付けてることを忘れちゃいかん
傲慢になるな

799 :デフォルトの名無しさん:2010/11/09(火) 14:33:35
Perl使ったことないけど結構早いもんなの?
それともVB6よりも遅い?

800 :デフォルトの名無しさん:2010/11/09(火) 15:26:06
スクリプト系の言語はある時期から急激に高速化したんだよね。
最近のは内部的にJITみたいなことやってるし。

801 :デフォルトの名無しさん:2010/11/09(火) 16:10:02
>>799
Perlはバイトコードコンパイラ+VMなので、ただのインタプリタよりは速いが
動的型でJITまではやらないので、C#やJavaよりは遅い

しかし、もともとI/O律速な処理や、
Cで実装されているランタイムにほぼ丸投げできるような処理の場合は
言語の処理性能の遅さは問題にならない
そういう場合にはむしろC++やC#で適当に書いたコードより速いこともある
書くのが楽だし起動時間もC#やJavaより速いので、使いどころを弁えていれば便利

もちろん数値計算だとか、ピクセル単位でのグラフィックスの操作とか、
バイト単位でのバイト列の処理、みたいなものをPerlで手書きしたら
普通に遅い
この手の言語では(Cで書かれた)ランタイムと、その言語で記述されたコードの
性能差が大きいので、自前で何かやればやるほど遅くなる

最後に、VB6とPerlでは使いどころが違いすぎるので
その比較はあまり意味が無いな

802 :デフォルトの名無しさん:2010/11/09(火) 17:27:07
サンクス
へ〜しらなんだ
勉強になった

VB6とPerlじゃなく
せめてASPとPerlあたりで聞くべきだったかな?


803 :デフォルトの名無しさん:2010/11/09(火) 18:57:32
>>802
CGIとしてPerlを使う場合の話です。

PerlのCGIは基本的にとても遅い。
理由はHTTPリクエストを受信する(=端末がWebページを要求する)度に巨大なインタープリタが起動するから。
プログラムを起動する処理は本質的に遅いので、CGIという実行形態自体が非常に遅い。
ただしApache+mod_perlのような環境ではPerlのインタープリタはメモリ上でApache本体とドッキングしている
のでそれなりに速いはず。

 ASPやJ2EEはインタープリタをあらかじめ起動しておき、さらにWeb画面を生成するモジュール
もメインメモリ上に事前に展開する方式でHTTPリクエストを受信したタイミングで何かのプログラムやファイルが
読み込まれることは全くない。さらにJITの効果によって繰り返し実行されるコードがメモリ上で機械語化されて
いくので連続稼動時間が長くなればなるほど処理効率が改善する。

CGIがバッチファイルみたいな逐次起動型なのに対して、ASP・J2EEは常駐プロセスなので、頻繁に読み込む
設定ファイルやDB接続は、事前にOPEN(または大域変数にプリロード)しておくことができる。
例えば設定ファイルで挙動をカスタマイズできるCGIを組む場合、設定ファイルの読み込みはリクエストが来る
たびに原則として毎回実行する必要があるが、ASPやJ2EEではWebサーバー起動時に一度だけ設定ファイル
を読み込み、その内容を解析した結果をグローバルな変数に入れてやればよいので処理効率も非常によい。
ただし常駐プロセスはいらなくなったファイルやメモリや別のマシンへの接続やらを開放し忘れていると悲惨な
ことになるので、そこだけは要注意。

804 :デフォルトの名無しさん:2010/11/09(火) 19:58:45
public GetXXX(string key){}
引数があるのにGetとメソッドの名前をつけるのは反則ですか?

805 :デフォルトの名無しさん:2010/11/09(火) 20:13:11
なんで?

806 :デフォルトの名無しさん:2010/11/09(火) 20:26:33
googleの採用する規則ではGetをつけること自体が反則

807 :デフォルトの名無しさん:2010/11/09(火) 20:34:18
>>804
メソッド名が「Of」で終わるとか引数が添え字の役割を果たす場合はおかしくないんじゃね?
GetHostByName(String name)とか。

808 :804:2010/11/09(火) 20:35:38
>>807
thx

809 :デフォルトの名無しさん:2010/11/09(火) 20:38:42
807だけど例がぜんぜん前書きと違うこといってた。
調子に乗るもんじゃないな。全くw

810 :デフォルトの名無しさん:2010/11/09(火) 20:51:03
C#にはデストラクタとファイナライザがあるそうですが、違いを教えてください
そして、使い分け方も教えてください

811 :デフォルトの名無しさん:2010/11/09(火) 21:03:05
違いはありません。同じものを指しています。
~ClassName() { }のようなメソッドをC#では正式にはデストラクタと呼びます。
しかし、最近ではデストラクタではなくファイナライザと呼ばれることが多いようです。
理由としては、・Javaではそう呼ばれているから ・C++でいうデストラクタとは意味が違うから
・C++/CLIではそれぞれ別のものとして存在するから などが考えられます。

812 :デフォルトの名無しさん:2010/11/09(火) 21:05:42
もしかしてデストラクタとディスポーズの話かな

813 :デフォルトの名無しさん:2010/11/09(火) 21:10:58
ファイナライザなんか使わなくていいよ。忘れていい。
別に馬鹿にしてるわけじゃなくて、一般に使わないほうが良い。
どうしても必要な場合はあるけど、それが必要になるころには
ファイナライザがどういうものかくらいは十分理解できてると思う。

814 :810:2010/11/09(火) 21:16:15
>>811
やっぱり、C++のデストラクタとは違うのね

>>813
/* 設定を保持するクラス */
static class Setting {
static Setting(){ /* 設定ファイルを読み込む */ }
static ~Setting(){ /* 設定ファイルを書き込む */ }
}
こんな事をやりたいんです
デストラクタでいろいろできるな〜って思ったからです

815 :デフォルトの名無しさん:2010/11/09(火) 21:18:01
そういうもんじゃないから止めとけ。

816 :デフォルトの名無しさん:2010/11/09(火) 21:18:30
>>814
そういうのにはDisposeとusingを使う

817 :デフォルトの名無しさん:2010/11/09(火) 21:19:28
インスタンスがいつ消滅するかはFW側の管理下だから
その実装はちょと危険だな

818 :デフォルトの名無しさん:2010/11/09(火) 21:23:39
それ以上にファイナライザでは別の(マネージド)クラスをいじってはいけない。
Settingクラスのファイナライザが動くより早く、
設定ファイルを読み書きするためのStreamクラスが
既にGCされてしまっている可能性があるため。

819 :810:2010/11/09(火) 21:25:35
>>815
やっぱり、デストラクタ/ファイナライザはリソースを解放すためのものであって
楽するものじゃないよね

>>816
static classにusingなんて使えるのですか?
それに、disposeをすると何がおいしいんですか

>>817
それ俺も考えていた

820 :デフォルトの名無しさん:2010/11/09(火) 21:31:08
Mainの最後に保存処理を入れればいいだろ

821 :デフォルトの名無しさん:2010/11/09(火) 21:32:15
staticコンストラクタの話をしてたのか。
staticデストラクタなんてないよ。

822 :デフォルトの名無しさん:2010/11/09(火) 21:35:22
仮にそんなものがあったとしても、プロセスが終わるタイミングで設定保存なんて
C++でもありえない発想だと思うが

823 :810:2010/11/09(火) 21:41:43
>>821
そうなのか

>>822
普通はdeleteだけですね

お前等参考になったよ、ありがとうございます

824 :デフォルトの名無しさん:2010/11/09(火) 21:44:51
コナミの。。。

825 :デフォルトの名無しさん:2010/11/09(火) 23:42:28
その手のはWinFormならClosingイベントとかでやるもの
間違ってもGCにさせるものではない

826 :デフォルトの名無しさん:2010/11/10(水) 00:43:48
>>794
そんなに起動遅いのが嫌ならメモリ32G積んで365日起動しっぱなしにしとけよウンカスが

827 :デフォルトの名無しさん:2010/11/10(水) 00:58:00
Evernoteはフォントの表示が汚いのもC++乗換の理由だった
みたいなこと書いてたけどそんなに違うの?

828 :デフォルトの名無しさん:2010/11/10(水) 01:05:19
XP上でのWPFは確かに結構残念。

829 :デフォルトの名無しさん:2010/11/10(水) 01:22:18
XP上のWPFはウンカスすぎる
でも終わったOSにしがみ付いてウダウダ言ってる奴らはマジ馬鹿
お前らの存在がソフトウェアの売価を上げ質を落としている事に気づけ

830 :デフォルトの名無しさん:2010/11/10(水) 03:53:09
>既にGCされてしまっている可能性があるため。
ないよ。


831 :デフォルトの名無しさん:2010/11/10(水) 04:18:04
>>830
あるよ
http://msdn.microsoft.com/ja-jp/library/system.object.finalize.aspx

> 2 つのオブジェクトのファイナライザーが特定の順序で実行されることは保証されません。
> これは、1 つのオブジェクトがもう 1 つのオブジェクトを参照している場合にも同様です。
> つまり、オブジェクト A がオブジェクト B を参照しており、どちらのオブジェクトにも
> ファイナライザーがある場合、オブジェクト A のファイナライザーが開始した時点で
> オブジェクト B が既に終了していることがあります。

832 :デフォルトの名無しさん:2010/11/10(水) 08:11:01
>>831
問題になるのはstaticでないSettingクラスが既にStreamを開いていた時にSettingごと
参照を失った時だけ。今回はあり得ない。
ちなみにSettingデストラクタの中で新たにStreamを開くと、既に参照がないから、
ファイル読み書き中にStreamのメモリがGCされる、、のかな?

833 :832:2010/11/10(水) 08:15:26
間違えた。Settingの保持しているstaticなStreamもGC対象だね。すまん。

834 :デフォルトの名無しさん:2010/11/10(水) 08:21:29
>>831
それはファイナライザが実行される可能性があるという話。
ファイナライザがないマネージオブジェクトならいじっても問題ない。
なぜならファイナライザ完了までメンバはGCされないことは保証されているから。
まあ今回はFileStreamだろうからダメなんだけどね。


835 :831:2010/11/10(水) 08:59:35
>>832-834
俺間違ったこと書いてないよね?なんか自信なくなってきた

余談だがFormとかのDisposeがBoolの引数受け取るのは
呼び出しがデストラクタからかどうかを判断するためで
その場合はほかのオブジェクトにアクセスしないようになっていたような

836 :デフォルトの名無しさん:2010/11/10(水) 09:01:29
Dispose - Finalizeだろ

837 :デフォルトの名無しさん:2010/11/10(水) 11:54:50
ファイナライザの実行順の前後は普通におきるね。
http://ideone.com/blEyy


838 :デフォルトの名無しさん:2010/11/10(水) 12:58:25
ファイナライザでは何をすれば良いんだ?

839 :デフォルトの名無しさん:2010/11/10(水) 13:00:27
クラス自身が保有する非マネージドリソースの解放。

840 :デフォルトの名無しさん:2010/11/10(水) 13:53:32
大抵はファイナライザを直接使うよりSafeHandleを継承した方がいいけどな

ファイナライザを直接使うとマーシャリング周りが面倒だ

841 :デフォルトの名無しさん:2010/11/10(水) 16:37:16
>>835
>>834が言ってる通り、ファイナライザが呼び出された時点で既に自身が参照してるオブジェクトが
GCに回収されていることはありえない。
ファイナライザが呼び出されている可能性があるというだけ。ファイナライザを持たないオブジェクトならアクセスしても実際には問題はない。

842 :841:2010/11/10(水) 16:42:15
補足
アクセス先のクラスがファイナライザを持っていないとしても、
そのオブジェクトがファイナライザを持った別のオブジェクトを利用している可能性がある。
だから、参照先のクラスの実装についての知識が無い限り、一般には
ファイナライザ内で他のマネージオブジェクトにアクセスしてはいけない。

843 :デフォルトの名無しさん:2010/11/10(水) 18:10:30
1.可能であれば、リソースの開放タイミングが重要なオブジェクト(IDisposableなど)
  はメンバー変数に保持しない。(Listの要素やDictionalyの中もダメ)
2.上記を満たせないクラスはIDisposableを実装し、Dispose()メソッド内で重要な
  リソースを開放する。またDispose()は絶対に例外をスローしないように実装する。
  (エラー画面を出すことより問題となるリソースの開放を優先。どうしてもthrow
  したければ、その前にすべてのDisposableな変数をDispose()した後にthrowする)
3.Finalize()はDisposeし忘れの検知〜必要ならDispose()+Debug.WriteLine()程度
  しかやらない。

【具体例】
class MyClass : IDisposable {
private Stream anyStream1 = ・・・・;
private Stream anyStream2 = ・・・・;
private bool disposed = false;
public void Dispose() {
  IDisposable[] ary = { this.anyStream1, this.anyStream2 };
  foreach ( IDisposable target in ary ) {
  if ( ary[i] != null ) try { ary[i].Dispose(); } catch ( Exception ex ) { ・・・・ }
  this.disposed = true;
}
protected override void Finalize() {
// Debug.Assert(this.disposed); // <- 厳しい人向け
  if ( ! this.disposed ) {
    this.Dispose();
    Debug.WriteLine("MyClassのインスタンスがタイミングでDisposeされていません。");
  }
}
}

844 :デフォルトの名無しさん:2010/11/10(水) 18:29:45
具体例がDispose内で例外

845 :デフォルトの名無しさん:2010/11/10(水) 18:39:16
>>844
すまん間違ってる。
foreachなのにary[i]じゃコンパイルできないな。
ary[i]はtargetの間違いです。閉じ中括弧も足りないが意味わかるでしょ。

846 :デフォルトの名無しさん:2010/11/10(水) 19:42:20
C#ではFinalizeを明示的にオーバーライドすることは許されていないのでコンパイル通りません
デストラクタとして定義する必要があります

847 :853:2010/11/10(水) 19:56:22
>>841
あ、GC回収とファイナライズを混同してた
説明ありがとうございます

848 :デフォルトの名無しさん:2010/11/10(水) 20:17:52
レス番すら満足に書けない馬鹿がこの手の話題に噛み付くなっての

849 :853:2010/11/10(水) 20:42:28
ばかでわるかったな!
もうこねーよヽ(`Д´)ノウワァァァン

850 :デフォルトの名無しさん:2010/11/10(水) 21:47:53
未来人が来ていたのか

851 :デフォルトの名無しさん:2010/11/11(木) 15:53:31
DateTime.ParseExact("04-26-10 06:32PM", "MM-dd-yy hh:mmtt", CultureInfo.CreateSpecificCulture("en-US");
これで日付の形式が間違っていますエラーが出るんだけど何故?

852 :デフォルトの名無しさん:2010/11/11(木) 16:42:07
と の違い

853 :853:2010/11/11(木) 16:48:40
華麗に853をget!

854 :851:2010/11/11(木) 17:42:36
自己解決
実は変換元文字列の方、日付と時間の間にスペースが複数挟まってて
DateTimeStyles.AllowInnerWhiteを付けたらおkになった

ついでと言ってはなんだけど別の質問
Regexで\bがちゃんと機能してない(スペースそのものを置けばマッチするが\bだとマッチしない)んだけど俺んとこだけ?

855 :デフォルトの名無しさん:2010/11/11(木) 18:09:11
System.IO.File.ReadAllLinesメソッドの挙動について

12345
1234_
123_5
123__

こんなテキストデータ"data.txt"があったとする。
(_は空白)

string[] line = System.IO.File.ReadAllLines("date.txt",);

こんなかんじで読み込むと

line[0]:12345
line[1]:1234_
line[2]:123\t5
line[3]:123\t

という結果になります。
4文字目に空白はいると、それ以前の空白を含めたtab扱いになるんです。
文字コードはunicode、shift_jisにて確認。

これは回避しようが無いのかしら?


856 :デフォルトの名無しさん:2010/11/11(木) 18:12:15
>>854
\bってどうやって書いてる?

857 :デフォルトの名無しさん:2010/11/11(木) 18:15:35
>>855
仕様です


んなわけあるかああああ
もっぺん隅から隅まで見直してみ

858 :デフォルトの名無しさん:2010/11/11(木) 18:20:55
>>855
それ普通にテキストファイルの方でタブ使ってるだけだろw

859 :デフォルトの名無しさん:2010/11/11(木) 18:25:50
C#で聞くようなことでもないんだけど・・・みなさんソフトのバージョンアップってどうしてますか?
クライアントの設定を変えないように実装したいのですが将来のバージョンアップでレジストリ等の
設定が増減することが予想される場合に、例えば一度にVer1→4のようにするのか、それとも
そのソフトのVerを調べてVer2→3→4のように適用していくのか・・・

一度にVer1→4のほうがよさげですが・・・

変な質問でごめんなさいorz

みなさんのバージョン管理の方法が気になりまして・・・

860 :デフォルトの名無しさん:2010/11/11(木) 18:28:10
うちのソフトのバージョンは年月日なんだ

861 :859:2010/11/11(木) 18:30:54
>>860
 あっ、具体的に将来のバージョンアップにどのように対処しているか、
 または現行のソフトのバージョンアップはどのように行っているのか
 教えていただければ><

862 :デフォルトの名無しさん:2010/11/11(木) 18:41:07
>>854
スペースで代用可能だと思ってるのなら\bの意味を間違えてる
たとえば入力が"i like banana"でパターンを"i\blike"にしてもマッチしない
"\bi\b"にすると最初のi一文字だけがマッチする

863 :デフォルトの名無しさん:2010/11/11(木) 18:41:49
見た目が大幅に変わらなければver1のまま

864 :855:2010/11/11(木) 18:43:12

わかったああああああああああああ!
エディタが、保存するときに勝手にtab変換してた。死にたい。

>>857,858
ありがとう;;

865 :デフォルトの名無しさん:2010/11/11(木) 18:50:27
>>861
一番初めにリリースしたやつはバージョン3
次にリリースするやつはバージョン3.1
その次は3.14
さらに次は3.141
これ結構有名だから覚えとくといいよ

>>864
恐ろしい罠だな、原因分かってよかったな


866 :デフォルトの名無しさん:2010/11/11(木) 18:57:01
時代によっては、およそで片づけられるわけだな

867 :デフォルトの名無しさん:2010/11/11(木) 19:12:29
そんなエディタあるのか?


868 :デフォルトの名無しさん:2010/11/11(木) 19:20:50
>>861
自分の場合設定はXMLシリアライザーで保存してるから
以前がどのバージョンだったかはあまり問題にならない

詳しくは此処を見てくり
http://msdn.microsoft.com/ja-jp/library/ms229752(VS.80).aspx

869 :851:2010/11/11(木) 19:40:12
>>862
・・・ん?
それはつまりlikeをマッチさせるのに\b使えないってこと?

870 :デフォルトの名無しさん:2010/11/11(木) 19:47:11
likeをマッチさせるなら"\blike"とか"\blike\b"
>>862のやつはあたまにiついてるぞ

871 :723:2010/11/11(木) 20:11:25
遅レス

マイクロソフトが戦略変更。HTML5が唯一のクロスプラットフォーム、SilverlightはWindows Phone 7のプラットフォームに − Publickey
http://www.publickey1.jp/blog/10/html5silverlightwindows_phone_7.html
Microsoft: Our strategy with Silverlight has shifted | ZDNet
http://www.zdnet.com/blog/microsoft/microsoft-our-strategy-with-silverlight-has-shifted/7834
Silverlightは死ぬ? MS幹部の発言を受けて悲観論が噴出 - スラッシュドット・ジャパン
http://slashdot.jp/article.pl?sid=10/11/05/0514206


ええ!?これが元ネタだったの?
Silverlightが撤退扱いもひどいし、そこから.net撤退って風説の流布もいいところ・・・

JavaFX撤退と言われても全然驚かないけど、Javaはまだ死なないだろう
これで.net撤退などと、そんなこといったら・・・

872 :デフォルトの名無しさん:2010/11/11(木) 20:14:39
それ嘘記事だから

873 :デフォルトの名無しさん:2010/11/11(木) 20:15:36
この人、あと一週間したらまたこの件を持ってきて勘違いでしたっていいそう…

874 :デフォルトの名無しさん:2010/11/11(木) 20:16:07
>>803
> CGIとしてPerlを使う場合の話です。

いつの時代の話だよ

875 :デフォルトの名無しさん:2010/11/11(木) 20:41:26
エディタにデータ書き出して見やすいように改行して、、、
ここにスペース入ってるのか カキカキ
入ってねーじゃねーか! カキカキ
やっぱり入ってるじゃねーか! カキカキ

エディタで改行したときインデントされてた罠 (´・ω・`)

876 :デフォルトの名無しさん:2010/11/11(木) 21:32:47
「コマンド」と「MVVMパターン」を理解する − @IT
http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_06/introwpf_06_03.html

これのList7で
((DelegateCommand)OkCommand).RaiseCanExecuteChanged();
これがある意味がわからないんですが、どうしてですか?
これがなくてもコマンドが実行されます

877 :デフォルトの名無しさん:2010/11/11(木) 21:33:17
>>864
「ありがとうございます」だろ!!


878 :デフォルトの名無しさん:2010/11/11(木) 22:12:40
>>853
お前にはがっかりだ…


879 :851:2010/11/11(木) 22:30:31
>>870
??
"^i\blike\bbanana$"
これじゃマッチしないってこと?

880 :デフォルトの名無しさん:2010/11/11(木) 22:39:00
するわけないじゃん

881 :デフォルトの名無しさん:2010/11/11(木) 23:04:43
>>879
空白文字ならこうじゃね?
"^i\slike\sbanana$"
\bは単語境界
http://msdn.microsoft.com/ja-jp/library/h5181w5w.aspx#WordBoundary

882 :デフォルトの名無しさん:2010/11/11(木) 23:34:49
[先頭] [境界] i [境界] [空白] [境界] like [境界] [空白] [境界] banana [境界] [末尾]

883 :デフォルトの名無しさん:2010/11/12(金) 00:17:17
>マイクロソフトが戦略変更。HTML5が唯一のクロスプラットフォーム
と打ち出しつつ、IE9にはHTML5の独自仕様盛りだくさんです!ブラウザはIE使ってね(ハート
とかだったら面白いのに

884 :876:2010/11/12(金) 00:18:57
誰も教えてくれないの?

885 :デフォルトの名無しさん:2010/11/12(金) 00:26:52
>>876
意味がわからないのは、お前が馬鹿だから

886 :デフォルトの名無しさん:2010/11/12(金) 00:31:34
つMSDN

887 :876:2010/11/12(金) 00:39:09
説明が書かれてないからわからない

888 :876:2010/11/12(金) 00:49:12
>>886
>コマンドを実行するかどうかに影響するような変更があった場合に発生します
MSDNにはこれしか説明がないです
変更ってなんですか?

ファイルを読み込むコマンドを作り
CanExecuteでファイルがあるかないかだけチェックしていれば
ファイルを削除した場合
event EventHandler CanExecuteChanged
が無くても普通にボタンが半透明になってクリックできないようになってるし
ファイルがある場合はちゃんと読み込める

889 :851:2010/11/12(金) 14:35:54
>>881-882
むむむ
[境界]は[空白]によって生じるんでないの?
\bの意味を取り違えてたことは理解したけど、今度は\bの使い道がわからなくなった

890 :デフォルトの名無しさん:2010/11/12(金) 15:41:55
^とか$と同じだよ。 単語の先頭マッチとかさ。

891 :851:2010/11/12(金) 18:51:05
>>890
でも"\bi\b"は良くて"^i\b"はダメなのよな?
厳密には"\bi\b\s"でないといかんと
しかし\b使わないパターンだと"^i\s"でおkと
・・・やっぱり使い道なくね?

892 :デフォルトの名無しさん:2010/11/12(金) 19:12:18
MSDNの通り、単語に一致させるために使う。文章だと使いどころは無いと思う
>\b アンカーは、部分式を単語の先頭または末尾ではなく単語全体に一致させる目的で頻繁に使用されます。

893 :855:2010/11/12(金) 19:24:54
>>877
ありがとうございます

894 :デフォルトの名無しさん:2010/11/12(金) 20:45:58
>>891
勘違いしてるような気がするのは俺だけか。
i like banana
だったら \bi\b も ^i\bも同じく先頭のiだけ
\bi\b\s は "i "やん。 厳密にはとか意味が分からん。

895 :デフォルトの名無しさん:2010/11/12(金) 22:36:26
お前らがバナナ好きだってことはよくわかった

逆に¥bを使わずに、単語のみをマッチさせるパターンって難しいような


896 :デフォルトの名無しさん:2010/11/12(金) 22:41:47
マッッッッッッッチでぇぇぇぇぇぇぇぇす!

897 :デフォルトの名無しさん:2010/11/12(金) 22:44:40
そこは「どぇ〜す」で

898 :デフォルトの名無しさん:2010/11/12(金) 23:00:48
キャリーどぇ〜す

899 :デフォルトの名無しさん:2010/11/12(金) 23:37:29
質問質問!

Q1. static void Swap<T>(ref T a, ref T b) { T tmp = a; a = b; b = a; } って標準クラスライブラリに無いの?

Q2. 多次元配列(Jag配列でなくてint [ , ]とかの方)の最後の次元を1次元配列として扱う方法


900 :デフォルトの名無しさん:2010/11/12(金) 23:42:15
>>899
Q1は俺の知る限りではない
Q2はArray.Copyとかしてやればいいんじゃね?

901 :デフォルトの名無しさん:2010/11/13(土) 00:32:11
>>900
ありがとうございます。
Q1.は、やっぱり必要なクラスで毎回手書きがデフォですか
Q2.は、やっぱりコピーするしか手がありませんかね〜…
コピー無しで済ませたければJag配列使え、ということなんでしょうかね、、、


902 :デフォルトの名無しさん:2010/11/13(土) 00:42:54
C#全く初心者ですが、Java等でのプログラミング経験はあります。

質問させて下さい。
二次元配列があり、そのうちの1次元だけを戻すような関数を作ろうとしています。

int[ , ] hoge = new int[ , ]{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

int answer[];

answer = hoge[0];   //←これでhogeの0行目だけ代入できるかと思ったら、エラー出てます

ぐぐっても適切な解説が見つかりません。教えていただけないでしょうか?

903 :デフォルトの名無しさん:2010/11/13(土) 00:45:57
ジャグ配列を使う。 -> int [3][] hoge;

904 :デフォルトの名無しさん:2010/11/13(土) 00:51:26
>>903
ありがとうございました

905 :デフォルトの名無しさん:2010/11/13(土) 00:51:33
C#の場合、2次元配列の子供の前の「new int[] 」が省略不可。

int[][] hoge = {
new int[] {1, 2, 3},
new int[] {4, 5, 6},
new int[] {7, 8, 9}
};
int answer = hoge[0];
// answerには{1, 2, 3}が入る。

906 :デフォルトの名無しさん:2010/11/13(土) 00:57:15
こうじゃないか?
int[] answer = hoge[0];


907 :デフォルトの名無しさん:2010/11/13(土) 00:58:25
>>901
わざわざスワップなんて作る必要なくね?
毎回T tmp = a; a = b; b = a; を手書きするのがでふぉだと思う。
まあデリゲートで渡す必要があるなら仕方ないけどさ




908 :デフォルトの名無しさん:2010/11/13(土) 01:24:26
>>905
いやいや、2次元配列とジゃグ配列を混同しちゃいかんぞ
int[ , ] hoge = new int[ , ]{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
は文法的にも正しい記述
ただhoge[0];って書き方ができないだけ

909 :デフォルトの名無しさん:2010/11/13(土) 02:08:50
>>907
拡張メソッドじゃダメなの?

910 :デフォルトの名無しさん:2010/11/13(土) 02:15:40
>>909
C#はC++と違って型ごとに特殊化したswapを作るメリットがないから。

911 :デフォルトの名無しさん:2010/11/13(土) 02:47:55
void Swap<T>(this T a, T b)
{

912 :デフォルトの名無しさん:2010/11/13(土) 02:50:36
途中で送ってしまったorz
こんな感じの拡張メソッド作ればわざわざSwapするコード書かなくてもx.Swap(y);みたいに書けて楽じゃん
それはメリットなのでは?

913 :デフォルトの名無しさん:2010/11/13(土) 02:59:57
>>912
refがないのでswapされないと思うよ。
そして拡張メソッドでrefは使えない。

914 :デフォルトの名無しさん:2010/11/13(土) 03:03:43
>拡張メソッド
なにこれこわい

なんかヘルスバーグとかいう外人が
自分の書いたクラスが第三者によって危険なコードに変えられる危険性が
いつまでもあり続けるのは我慢できないという内容の意味のことをまくし立ててた記憶があるが、
staticスコープ限定という言語仕様なのは現場のささやかな抵抗なのかね


915 :デフォルトの名無しさん:2010/11/13(土) 03:06:49
LINQには拡張メソッド必須

916 :デフォルトの名無しさん:2010/11/13(土) 03:11:06
>staticスコープ限定という言語仕様なのは現場のささやかな抵抗なのかね
staticしか不可能だろうが…


917 :デフォルトの名無しさん:2010/11/13(土) 04:15:43
拡張メソッド便利便利

918 :デフォルトの名無しさん:2010/11/13(土) 04:28:43
自分の管理下にない型に拡張メソッドを追加しちゃだめです><

919 :デフォルトの名無しさん:2010/11/13(土) 04:39:34
自分の管理下にある型ならわざわざ拡張メソッドじゃなくても追加できるようなきがする。
まあほかのクラスに非常に強く依存するメソッドならそっちの近くに書くために使うってのならあるのか。
あとインターフェースにメソッドを仕込む場合とか


python大好きな自分はこんなメソッドを定義してる。
public static string format(this string s, params object[] args){
  return string.Format(s, args);
}
もちろんプライベートでしか使わないけど

920 :デフォルトの名無しさん:2010/11/13(土) 06:06:11
>>891
空白は1文字。
\bはアトミックゼロ幅アサーション。先頭や末尾と同じく存在だけ。
境界は _ 以外の記号でも生じるよ。

>単語文字は英数字とアンダースコアで構成され、単語以外の文字は、
>英数字でもアンダースコアでもない任意の文字で構成されます

921 :デフォルトの名無しさん:2010/11/13(土) 09:54:00
>>916
>不可能
ぬんで?C#はJITだから例えビルドが済んだ別モジュールに属するクラスであっても
メンバの情報を全部保持しているから
(現にリフレクションを使えばprivateメンバも含めて全部列挙できる)
処理系がその気になれば、拡張メソッド的に当該クラスの本来の
privateなインスタンスメソッドと同格のアクセス権を付与できそうな希ガス、

922 :デフォルトの名無しさん:2010/11/13(土) 10:08:52
>>921
そんな、できてもやっちゃダメなこと言われても。
後付けする部分が既存コード破壊できちゃまずい。

923 :デフォルトの名無しさん:2010/11/13(土) 10:18:05
拡張メソッドでおかしくなるようなクラスは元からヤバいだろw

924 :デフォルトの名無しさん:2010/11/13(土) 10:20:57
>>923
いや、今の C# の拡張メソッドの仕様ならね。

今の拡張メソッドみたいな書き方で private 変数にアクセス出来たらやばいでしょ。

925 :デフォルトの名無しさん:2010/11/13(土) 16:29:59
>>921
確かにLGCやリフレクションを使えばできるよ。

926 :デフォルトの名無しさん:2010/11/13(土) 20:12:37
JavaにしてもC#にしてもエセオブジェクト指向なんだから。

927 :デフォルトの名無しさん:2010/11/13(土) 20:16:01
実はオブジェクト指向ってしっくりこないんです!

928 :デフォルトの名無しさん:2010/11/13(土) 20:17:28
>>927
なつかしいなw

929 :デフォルトの名無しさん:2010/11/13(土) 20:40:03
ぶっちゃけた話、「サンデープログラマを生み出す」本が良い本で、それを保持してる言語が「良い言語」なんですよ。
それで言うとC/C++/Java/HSP/VB/VBA/Perl /Rubyは「いい言語」です。
サンデープログラマが「それなりに」増えてる。これら以外は総じてダメなんです。

930 :デフォルトの名無しさん:2010/11/13(土) 21:34:30
「良い言語」と「いい言語」の違いは?


931 :デフォルトの名無しさん:2010/11/13(土) 21:42:17
HSPとか混じってんだけどw

932 :デフォルトの名無しさん:2010/11/13(土) 22:06:18
>>921
そういう意味で不可能って言ってない。
ってかそんなの言い出したらなんでもありだろが。


933 :デフォルトの名無しさん:2010/11/13(土) 22:20:03
>>932
921は、アホだから気にするな

934 :デフォルトの名無しさん:2010/11/13(土) 22:23:26
そんな言語で大丈夫か?

935 :デフォルトの名無しさん:2010/11/13(土) 22:44:58
一番良いのを頼む

936 :デフォルトの名無しさん:2010/11/13(土) 22:49:54
FM-TownsBasic

937 :デフォルトの名無しさん:2010/11/13(土) 23:05:23
神は言っている ーーここで、ラベルジャンプする運命ではないとーー

938 :デフォルトの名無しさん:2010/11/13(土) 23:18:52
一番いい再帰を頼む

939 :デフォルトの名無しさん:2010/11/13(土) 23:20:46
GoTo

940 :デフォルトの名無しさん:2010/11/13(土) 23:46:01
スパゲティコードヲカクノデス

941 :デフォルトの名無しさん:2010/11/13(土) 23:52:18
あいつは72通りの呼ばれ方をしている
俺にとっては初期化処理だが、君にとっては終了処理だ

942 :デフォルトの名無しさん:2010/11/14(日) 02:24:02
Windows向けのフリーソフトなんてC#が一大勢力になってると思うんだけど。

943 :デフォルトの名無しさん:2010/11/14(日) 02:32:13
フリーソフトはソースが航海されてるの?

944 :デフォルトの名無しさん:2010/11/14(日) 02:39:04
ちょっとしたツールを作ってフリーソフトとして公開しようと
思い立って、ランタイムとか気にしないでどの環境でも動くように
VC++で作ろうと思ったけど、久しぶりにMFCのソースをみたら
GUIを作るのがめんどくさすぎて30分で断念。
しょうがないので.net2.0で作りはじめた。


945 :デフォルトの名無しさん:2010/11/14(日) 02:50:57
ちょっと前まではフリーソフトでC#なんかほとんどいなかったのにな

946 :デフォルトの名無しさん:2010/11/14(日) 02:54:28
簡単で起動も速いしVista以降なら.NET3以上がプリインストールされている。
WMIみたいなWindowsネイティブなサービスと連動する場合でもAPIなしで
かなりの処理が書ける。.NET以前のVBと違って複数バージョンをインストール
してもランタイムの構成ファイルが競合してぶっ壊れるとか、ランタイムのサー
ビスパックを適用したらとたんにアプリが動かなくなったりみたいな現象もない。
まあ便利だよな。

947 :デフォルトの名無しさん:2010/11/14(日) 03:39:57
C#大航海時代到来のお知らせ

948 :デフォルトの名無しさん:2010/11/14(日) 03:42:06
最初の頃は、別に何かインストールしなければいけないのか?
と当然のような質問されてたけど
今は今時.NETインストールしてないなんてって感じだし
あの頃あんなに嫌がってたじゃないか

今でも、.NET性は品質が悪いとか言う奴もたまにいる

949 :デフォルトの名無しさん:2010/11/14(日) 03:58:14
当時仕事ではVBでプログラム作っていたが、自分の家のPCにVB6のフリーウ
エア(それにランタイムも)をインストールするのは絶対に嫌だったな。
良さそうなフリーウエアを見つけても「動作にはVBランタイムが必要」と書かれ
ていたら、「うわっ、これ入れると調子が悪くなるやつだ!あぶねー」とか言って
インストールしなかった。

950 :デフォルトの名無しさん:2010/11/14(日) 04:03:58
ActiveX/COMのバージョン違いでのトラブルが多かったからね。

951 :デフォルトの名無しさん:2010/11/14(日) 06:27:22
Vistaや7には、VB4以降のランタイム入っているけどね。

952 :デフォルトの名無しさん:2010/11/14(日) 06:59:31
俺は2006年までVB6の新規開発案件に携わっていた(今はC#かC++)けど、
今でもVB6の新規開発なんてあるのかね。

953 :デフォルトの名無しさん:2010/11/14(日) 07:51:46
皆様のお知恵を貸して頂く投稿いたします。
ListViewでVitrtualMode=true、かつViewをSmallIcon、またはLargeIconにした場合、Shiftキーを押下しながらアイテムを選択すると、選択されるアイテムが異常な状態になります。
Ctrlキーを押下しながら、またはドラッグによる広範囲選択は問題ないのですが…

調べてみたら、
http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/484c578a-df46-4624-a4e7-99ceaa0588ef
のページに同じ問題についての投稿があるのですが、この原因がXP自体に問題があるとの発言がありますが、どなたかこの発言の根拠となる資料をご存じの方はいらっしゃらないでしょうか?

954 :953:2010/11/14(日) 07:52:26
自己解決しますた

955 :デフォルトの名無しさん:2010/11/14(日) 09:35:02
今から新ソフト作るなら第一選択はClient Profileだからな

956 :デフォルトの名無しさん:2010/11/14(日) 10:27:52
>>952
うちはVB6で止まってるやつがいるからVB6現役だよ。
.NETでてから何年たったと思ってるんだ・・・少しは新しいこと勉強しろと。
.NETでも納品でVS2010買うのに開発はVS2005だ・・・LINQつかいてぇ。
てかC#で開発してぇ・・・VB.NETはいやだ。

957 :デフォルトの名無しさん:2010/11/14(日) 10:36:47
仕事なら別になんでもいいんじゃね。COBOLだけは全力で回避するが

958 :デフォルトの名無しさん:2010/11/14(日) 12:27:49
>>951
入ってないって

959 :デフォルトの名無しさん:2010/11/14(日) 12:37:31
VB6のランタイムなら入ってる。

960 :デフォルトの名無しさん:2010/11/14(日) 12:53:14
VB6JP.DLLがなかったり微妙だったりしない?

961 ::949:2010/11/14(日) 12:54:54
949だが俺がVBでプログラム作ってたのは、確か2004年頃までだった。
その後J2EEが出てきて、うちのSE軍団は「J2EEの事を新しい業務系言
語なんだからVBよりもっと簡単に違いない」と勝手に決めつけ、VBしか
書けないペーだった俺はその後さんざんな目に遭ったんだ。
まああのままVBしか書けないヤツだったら今頃ドロップアウトしていたか
もしれないし、今では俺の周りで進行するプロジェクトで分からないことが
あると、誰もが俺に質問するようになったけどね。

962 :デフォルトの名無しさん:2010/11/14(日) 13:02:24
VBって何のために存在するの?
情報の分散?

963 :デフォルトの名無しさん:2010/11/14(日) 13:03:41
過去の呪縛。

964 ::949:2010/11/14(日) 13:07:56
>>962
VBしか書けないヤツの中には、「バリアント型」の意味すら分かっておらず、
他人の猿まねで人が書いたことのあるコードと似たコードを書けるだけの
連中が大勢いるんだ。そいつらはプログラミング言語の知識が非常に乏し
いのに、それでもプログラムを書いてメシを食っている。
そんな連中にC#やオブジェクト指向は難しすぎるんだろ?
早い話がC#を使える平均的なPGと、昔も今もVBしか書けないPGでは、
基本的な素養というか、技術スキルに大きな隔たりがあるんだ。
ある意味VBしか書けない阿呆の面倒をまじめに見ようとするMicrosoftは
偉いと思うね。

965 :デフォルトの名無しさん:2010/11/14(日) 13:23:58
一部のVB6ランタイムは Vista/7 に同梱されているがあくまで一部
それ以外のランタイムはアプリとともに配布が必要

http://msdn.microsoft.com/ja-jp/vbasic/cc707268.aspx

966 :デフォルトの名無しさん:2010/11/14(日) 13:25:12
Variantの意味は分かるけど挙動は理解しがたい

967 :デフォルトの名無しさん:2010/11/14(日) 13:44:24
おっさんぽいのに新人みたいなこと言ってるなw

968 :デフォルトの名無しさん:2010/11/14(日) 13:47:22
しかし、動的型の言語が隆盛の今現在、Variantの価値もみなおされていいのではないだろうか。


969 :デフォルトの名無しさん:2010/11/14(日) 13:49:20
またこのネタか....
>>968
なんか釣りじゃなくて真面目に言ってるっぽいな君はw

970 :デフォルトの名無しさん:2010/11/14(日) 13:58:05
.net以前のVBでも使えていたダックタイピング。
すごく便利。
最近はC#でも取り入れたらしいけど、10年くらい遅れているんじゃないのかね。

971 :デフォルトの名無しさん:2010/11/14(日) 13:59:20
C#「ぐぬぬ」

972 :デフォルトの名無しさん:2010/11/14(日) 13:59:26
10年くらい遅れているんじゃないのかもね。

973 :デフォルトの名無しさん:2010/11/14(日) 14:01:02
アヒルがキーボード打ってるのかと

974 :デフォルトの名無しさん:2010/11/14(日) 14:08:52
VB.NETで問題なのはオブジェクトうんぬんでなくコードの可読性

975 ::949:2010/11/14(日) 14:10:31
いまだにVB6厨っているんだね。
うちの会社ではVBしかできないのは恥ずべきこと
っていうか、それじゃ食えないんだが。

976 :デフォルトの名無しさん:2010/11/14(日) 14:11:02
>>968
動的言語がいいとされるのはメタプログラミングの能力。
それを支えてるのは動的コード生成であって、動的型じゃない。
型が緩いのはむしろマイナス。

あと、クラス間の依存性切るのに非継承型の型システム(インターフェイスに頼らない)が有効なのも確かだけど、
それ実現するにも動的な型である必要ない。
C++ の template なんかがそうだけど、ダックタイピングでも静的な型チェックちゃんと入れれる。

977 :デフォルトの名無しさん:2010/11/14(日) 14:21:49
>>976
メタプログラミングrubyとかリファクタリングrubyエディションを読んだら
動的型がマンセーされてる。
マイナスって言うか、プラスって考えてる人のほうが多いんじゃないだろうか。

978 :デフォルトの名無しさん:2010/11/14(日) 14:22:52
>>974
それはたぶん君がVB書いたことないだけ。
どっちも一長一短あるでしょ。
C#の方が一方的に読みやすいってことはない。

979 :デフォルトの名無しさん:2010/11/14(日) 14:24:52
>>969 >>675
こういう人格攻撃に終始してる人は、本題の動的型の件に関しては
「その通りでございます、反論の余地はございません」って認めてるわけだよね。
よしよし。


980 :デフォルトの名無しさん:2010/11/14(日) 14:25:49
>>979 はアンカー間違えた。>>975だな。


981 ::949:2010/11/14(日) 14:33:12
Variantは入力データによって挙動が変わりすぎるからテストで
バグを出し切ろうとするとかえって面倒なんだよな。
まあ、正常系が動けば多少のバグが許されるようなプログラム
を、飯を食えるレベルのスキルがないプログラマでも書けるよう
にするには、Variantも良い選択肢かもね。
おれはプログラムでメシを食っている関係で動的型は嫌いだけど。

982 :デフォルトの名無しさん:2010/11/14(日) 14:34:28
VB.NETなんて作るから、アップグレードウィザードで変換したモジュールをいつまでも使わないといけない。
C#のみにしてVB6脳のやつら捨てて欲しかったわ。

983 :デフォルトの名無しさん:2010/11/14(日) 14:34:33
>>979
人格攻撃ってか。
一応つっこんどくけど、旧VBで実行時バインドする場合、普通はVariantじゃなくて
Object型を使うんだよ。

もちろんVariantでも同じことは出来たはずだと思ったけど。

984 :デフォルトの名無しさん:2010/11/14(日) 14:48:31
VBは動的型の良いところを生かしてるというより
ダメな子を甘やかしてるだけだからなあ
RubyやPythonとは性質が違うと思う

985 :デフォルトの名無しさん:2010/11/14(日) 15:03:10
Ruby、Pythonと同じようにダックタイピングができて、ネイティブコードをはくのがVB

986 :974:2010/11/14(日) 15:04:29
>>978
VB6からのユーザーで
VB.NETもC#も使ってますよ

987 :デフォルトの名無しさん:2010/11/14(日) 15:09:54
おいおい、VBすら扱えないオレはどうすればいいんだ。
C#とJavaとRubyとPerlぐらいしかできないぜ?

988 :デフォルトの名無しさん:2010/11/14(日) 15:11:07
>>985
でもVB6ってシングルスレッドのWindowsアプリしかかけないじゃん。
デュアルコアマシンで作っても重い処理を実行している間は
画面が固まって応答なし。
あとVBはいい加減機能が古いんだよな。
・APIかActiveXを使わない限り、TCP/IP通信ができない。
・マルチスレッド非対応
・WebアプリもコンソールアプリもWindowsサービスも作れない
 (C#は全部できるぞ)
・ウインドウをリサイズしてもウインドウ内のコンポーネントの
 配置とサイズが変化しない
 (.NETコンポーネントのDockプロパティがない)
・64bitコードを吐くコンパイラがないので、64bitのDLLに依存
 したプログラムは書けない。たとえば64bit版OracleClient
 と連携不可。64bit版IEやOfficeともたぶん連携できない。

いい加減こんな時代遅れの言語は廃止しないといけないんだよ。

989 :デフォルトの名無しさん:2010/11/14(日) 15:16:45
それを言語の制約のせいにできるのがメリットだったんだよ
.NETになってからは言い訳できなくなったけどね

990 :デフォルトの名無しさん:2010/11/14(日) 15:25:43
>>988
10年前のものと比べても仕方がないが、
TCP/IP通信やDockは言語の機能ではない。(VBのIDE用にDock類似の機能を実装できる)
WebアプリでVBでプログラミングはかつては普通。
MSもサポートを続けているのはランタイムだけで言語自体はサポートしてない。

991 :デフォルトの名無しさん:2010/11/14(日) 15:47:53
>>987
世の中には知らないほうが幸せなこともある。

992 :デフォルトの名無しさん:2010/11/14(日) 15:53:54
すっかり愚痴スレになったな

993 :デフォルトの名無しさん:2010/11/14(日) 15:54:58
>>977
継承とか仮想関数テーブルによる動的実行は確かに弊害多くて、
動的型をマンセーしたい気持ちはわかるけど、デメリットがでかすぎる。

C# の dynamic に、C++ 0x(に入り損ねた)Concept みたいなダックタイピング向けの型チェックの仕組みが入ったら最強なんだけどもなぁ。

994 :デフォルトの名無しさん:2010/11/14(日) 17:27:26
データベースソフトを作ろうと思っています。SQLite等を使うと
別途データベースのインストールが必要なので、いつもアクセス型のDB
やXMLを使っています。
解凍しただけで実行できるようにしているのですが、皆さんはどのよう
な形のデータベースを使っていますか。

995 :デフォルトの名無しさん:2010/11/14(日) 17:34:05
「解凍しただけで」の類は置き場に困るんでかえって嫌なのよね。

楽したい時は SQL Server Compact(SQLite 同様、in-process DB)使って、インストーラーに同梱。
あとは普通に SQL Server。容量制限厳しいけど無料版(Express)もあるし。

996 :デフォルトの名無しさん:2010/11/14(日) 17:43:21
>>994
SQLiteは解答しただけで実行できる、まさに目的のものだと思うんですが。
MySQLとかと勘違いしてない?

997 :デフォルトの名無しさん:2010/11/14(日) 18:29:02
>>994
DBファイルのコピーのことを「インストール」と言ってるなら、
プログラムでファイルの存在チェックをして無ければCREATE文を発行するようにすればいい。

998 :デフォルトの名無しさん:2010/11/14(日) 18:29:14
tugi sure mada?

999 :デフォルトの名無しさん:2010/11/14(日) 19:35:23
初心者チックな質問なんですが、VS2008でC#プロジェクト(Windowsアプリ)を作成した後、
プロジェクトのプロパティからアセンブリ情報を開くと、ファイルバージョンに1.0.0.0と規定で
入力されていて、自動インクリメントに出来ません。
setup.exeを使って更新インストールをさせたときにファイルバージョンが同じだと上書き
去らないようなので、バージョンの設定をAssemblyinfo.csから削除して、アセンブリバージ
ョンを自動インクリメントするように指定しています。
とりあえずこの設定で問題は無いようなのですが、ファイルバージョンを明示しない事に
よるデメリットがなにかあるでしょうか?
ファイルバージョンがわざわざ自動インクリメントされないようになっていることには何か
理由があるのではないかと思うのですが、何も思い当たりません。

1000 :デフォルトの名無しさん:2010/11/14(日) 19:37:00
次の質問をどうぞ


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

225 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)