09/03/15 02:19:33
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
前スレ
ふらっとC#,C♯,C#(初心者用) Part38
スレリンク(tech板)
2:デフォルトの名無しさん
09/03/15 02:19:41
-----関連スレ
C#, C♯, C#相談室 Part51
スレリンク(tech板)
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
スレリンク(tech板)
初心者のためのプログラミング言語ガイド Part14
スレリンク(tech板)
----参考サイト
URLリンク(www.google.co.jp)
URLリンク(msdn.microsoft.com)
URLリンク(homepage3.nifty.com)
URLリンク(www.atmarkit.co.jp)
URLリンク(dobon.net)
URLリンク(jeanne.wankuma.com)
URLリンク(www.labasp.net)
3:デフォルトの名無しさん
09/03/15 02:25:39
いちおつ
4:デフォルトの名無しさん
09/03/15 02:26:04
前スレ>>995
でも2~3秒待たされますよ?フリーズしたような気分になります。
普通のソフトならほぼ一瞬なのですが。
前スレ>>996
しばらくはいいのですが、時間が経つとメモリから消えてしまうのか、
再び起動が遅くなります。
5:デフォルトの名無しさん
09/03/15 02:26:36
1Z。
前スレ最後はキナ臭かったが、まったりと頼むよ。
6:デフォルトの名無しさん
09/03/15 02:27:19
2~3秒待てないって完全にマジキチだろw
7:デフォルトの名無しさん
09/03/15 02:28:43
>>4
ああ、それならそのPCがどこかおかしいわ
俺のP8600の非力なノートで起動は1秒もかからないよ
一度他人のPCで起動してみたら?
8:デフォルトの名無しさん
09/03/15 02:29:07
.NETを疑うよりより統合失調症を疑った方が良いんじゃないか。
9:デフォルトの名無しさん
09/03/15 02:30:10
>>6
2~3秒かかることが問題というか、非.NETアプリに比べて起動が圧倒的に遅いのが気になるんです。
実際これは自分だけじゃなくて、2chやどっかのブログでもよく言われていることだと思います。
結構大きな問題だと思うのですが…。
10:デフォルトの名無しさん
09/03/15 02:31:35
>>9
俺のP8600の非力なノートで起動は1秒もかからないよ
11:デフォルトの名無しさん
09/03/15 02:32:17
煽りが増えてきました。
どっから沸いてきてんだよ。
12:デフォルトの名無しさん
09/03/15 02:33:12
>>10
.NET 起動 遅い
URLリンク(www.google.co.jp)
ググると同様の感想を持ってる人が少なくありません。レアケースではないと思うのですが?
13:デフォルトの名無しさん
09/03/15 02:33:58
2~3秒起動が遅れることで1万円の損失でも発生してるとかいうのなら問題かもしれん。
でもそういうわけじゃないだろ。
深呼吸でもすれば起動してるんだから。
14:デフォルトの名無しさん
09/03/15 02:35:54
大きな問題って何よ。
お前は「気になる」としか言ってないだろ。
15:デフォルトの名無しさん
09/03/15 02:36:25
>>12
誰も遅くないなんていってないよ
2~3秒もかかるほど遅くないっていってんの
そんだけかかるってことは、そのソフトが何かおかしいか、あなたのPC環境がおかしい
だって俺のP8600の非力なノートでは1秒もかからないで起動するもの
16:デフォルトの名無しさん
09/03/15 02:36:40
>>13
いや、一回起動しておしまいならそれでいいんです。
でもメモ帳のように、起動と終了を気軽に繰り返すには気になる、ということです。
一度起動するとしばらくは再起動も速いですけど、しばらくすると元に戻ってしまいますし。
17:デフォルトの名無しさん
09/03/15 02:38:55
で、2秒間の損失はおいくらですか?
18:デフォルトの名無しさん
09/03/15 02:39:20
>>15
俺のPCでも2秒くらいかかるが。
VistaだったらOSロード時にコンポーネントを同時起動するから速いらしい。
19:デフォルトの名無しさん
09/03/15 02:41:03
アプリの中身にもよるだろうなあ
起動時にコードを山ほど詰め込んであれば当然遅くなるわけだし
>>18
SuperFetchってやつだっけ
20:デフォルトの名無しさん
09/03/15 02:41:14
そもそも起動と終了を頻繁に繰り返すような構造なら常駐させるべきだと思うけど。
前提からしておかしい。
21:デフォルトの名無しさん
09/03/15 02:41:40
>>18
E7200のXPだが一瞬だぜ
そのソフトだけじゃないの?
質問者は「どんな小さなアプリでも」だぜ?
22:デフォルトの名無しさん
09/03/15 02:42:28
Vista だとそこそこデスクトップでよく使うソフトは大体一瞬に
なってしまうね。今試したら VS 2008 で一回目が 2-3 秒ぐら
い、2回目だと 1秒ぐらいな感じだった。
23:デフォルトの名無しさん
09/03/15 02:44:04
>>20
それはないわ。
画像ビューアやテキストエディタまで常駐させろってか?
24:デフォルトの名無しさん
09/03/15 02:44:12
なんか伸びてると思ったら何だこれは・・・
25:デフォルトの名無しさん
09/03/15 02:45:33
頻繁だったら常駐でいいんじゃないか?
俺はテキストエディタを常駐させてるぞ
26:デフォルトの名無しさん
09/03/15 02:47:50
特定の使い方をすると重くなるって言うのもなんか外してる気がしないでもないなあ。
27:デフォルトの名無しさん
09/03/15 02:49:54
アンチウィルスで、いちいちスキャンする奴は起動が遅くなるときあるよな
あと他のリソースがHDDを動作させてるとき
これと別になんか起動が遅くなったなぁと思うときは、HDDの故障の前触れ
28:デフォルトの名無しさん
09/03/15 02:50:47
>>23
そういう使い方を前提としたソフトをC#で書くなら
考慮した書き方はいくらでもあるだろと言いたいのよ
真意が伝わりにくかった事は詫びよう
29:デフォルトの名無しさん
09/03/15 02:53:06
んで、起動は別にc++でもmfc使ってる限りは、.netとそんなにかわらない?
それでも.netのほうが多少は遅いの?
30:デフォルトの名無しさん
09/03/15 02:53:52
>>26
そんなに特別な話ではないと思います。
関連付けてエクスプローラからカチカチするようなアプリだと、よくある使い方です。
31:デフォルトの名無しさん
09/03/15 02:56:55
そろそろめんどくさくなってきたな。
不満ならお前が使わなければいい。
使ってくれと土下座されてるわけでもないだろ。
32:デフォルトの名無しさん
09/03/15 02:58:08
ケチ付けたいだけみたいだからもう良いよ
33:デフォルトの名無しさん
09/03/15 02:59:22
javaアプリのほうがもっと遅いよな
そう考えるとネイティブコンパイルできるC++かDelphiしか解決法はないということか。
34:デフォルトの名無しさん
09/03/15 02:59:30
APIスレに沸く.NET厨も酷いがこれも酷いなw
結局「気になる」以上の不満は無いんだろ。
35:デフォルトの名無しさん
09/03/15 03:02:10
煽ってる奴も大概だと思う。
36:デフォルトの名無しさん
09/03/15 03:02:50
で、遅いの?遅くないの?
37:デフォルトの名無しさん
09/03/15 03:03:29
遅いよ。超遅い。デラ遅い。
だから素人は使わないで。
38:デフォルトの名無しさん
09/03/15 03:06:00
遅いの定義次第だな
何を持って遅いとするのか
39:デフォルトの名無しさん
09/03/15 03:09:44
知らないならレスしないで下さい。ウザイだけです。
40:デフォルトの名無しさん
09/03/15 03:12:23
↓今日一番非生産的なレス
知らないならレスしないで下さい。ウザイだけです。
41:デフォルトの名無しさん
09/03/15 03:13:57
じゃあそのレスもらいます
42:デフォルトの名無しさん
09/03/15 03:15:20
ウザイと思う奴はウザイという書込をみてウザイと思わないのかね
43:デフォルトの名無しさん
09/03/15 03:18:04
OKWAVEでやれ
44:デフォルトの名無しさん
09/03/15 03:43:52
結局、具体的になんの.NETアプリが遅いのか教えてよ。
45:デフォルトの名無しさん
09/03/15 03:48:49
>>29
起動ってのが例えばウインドウが表示されるまでだとしたら、
ウインドウを表示するコードもJITコンパイルされるので.netの方が遅いよ。
つーかね、そんな事気にしてたらこの先Windows使えないっすよ。
46:デフォルトの名無しさん
09/03/15 04:22:22
>>45
起動を別にって言ってるのにそういう例を提示するということは、
一つのアプリがフォームを新たに表示しようとするたびにコンパイルされて
表示が遅いということだな?
47:デフォルトの名無しさん
09/03/15 04:39:25
プロジェクトが2つあって一つがクラスライブラリなんですが
クラスライブラリの出力タイプを持つプロジェクトを直接起動することはできませんとでて実行できません
F5押したときにもう一方のプロジェクトだけ起動するようにするにはどうすればいいんですか?
48:デフォルトの名無しさん
09/03/15 04:41:13
ソリューションのプロパティスタートアッププロジェクトの設定で解決しました
49:デフォルトの名無しさん
09/03/15 04:44:33
ファイルは必ずnamespaceのなかにクラス作らなきゃいけないんですか?
50:デフォルトの名無しさん
09/03/15 05:28:45
スレッド セーフってなんですか?
51:デフォルトの名無しさん
09/03/15 05:31:15
"必ず"ではない。
だが、たいていの人は名前空間を必ず指定する。
52:デフォルトの名無しさん
09/03/15 05:40:42
ユーザから見たら起動が遅いってのはストレスだからなぁ。
個人的には解決したい事項の1つ。ngenはあまり効果ないみたいだし。
exeがクリックされたら、アンマネージでスプラッシュWindow出しつつ
裏で.NET起動とか、なんか体感速度的にでもごまかす方法ないかなぁ。
あ、でも、頻繁に起動するアプリでスプラッシュWindowは返ってウザイか。
Windowの閉じるボタン押されたらとりあえず非表示にして、
裏でタイマー回して1時間後に終了とか。
53:デフォルトの名無しさん
09/03/15 05:53:03
仕組みがよくわからないんですが、namespaceは同じで2つのファイルにクラスをそれぞれ作った場合
同じプロジェクト内の第3者ファイルで使う場合はusingで名前を指定しなくても2クラスとも使えるようになりますよね
最初にusingでいっぱい指定してある奴ってどこにあるプロジェクトなんですか?
同じソリューションで2つプロジェクトを作って、片方のプロジェクトからもう一方のプロジェクトのクラスが見えないんですけど
usingしてから使おうとしても現在のコンテキスト内に存在しませんといわれるんですが、どういうことですか?
54:デフォルトの名無しさん
09/03/15 05:53:18
.NETアプリってなんで起動読み込み時にマウスカーソルの砂時計状態が普通のカーソルに戻るんだろ?
それのおかげで起動したのか、ダブルクリック失敗したのか迷うことがある
55:デフォルトの名無しさん
09/03/15 06:03:04
単語をクリックしたときにダイナミックヘルプにいろいろ出てきますが、
これの項目が2重にダブってて、中をよく比べたら
.NET Framework クラス ライブラリ
Silverlight 用 .NET Framework クラス ライブラリ
の2つが同時に表示されてるんですが、Silverlight 用だけ表示させないようにするにはどうすればいいんでしょうか
56:デフォルトの名無しさん
09/03/15 06:03:42
>>53 つ参照
57:デフォルトの名無しさん
09/03/15 06:38:26
プロジェクトのConsoleApplication1を
プロジェクトのConsoleApplication2の参照に追加できましたが、
using ConsoleApplication1;
と書いてもConsoleApplication1の中のクラスが使えるようになりません。あとどうすればいいですか?
58:デフォルトの名無しさん
09/03/15 06:40:32
クラスをpublicにすればいい
59:デフォルトの名無しさん
09/03/15 07:15:44
できました。ありがとうございました
60:デフォルトの名無しさん
09/03/15 07:25:03
public class Class1 {
int a = 1;
public void num() {
int b = new int();
b = 2;
int c = 3;
}
public void test() {
Console.Write(a);
Console.Write(b);
Console.Write(c);
String name = Console.ReadLine();
}
}
これの
Console.Write(b);
Console.Write(c);
のbとcで、コンテキスト内に存在しませんとエラーが出るんですが
どうすれば他のメソッドの変数が使えるようになりますか?
61:デフォルトの名無しさん
09/03/15 07:26:41
なりません
62:デフォルトの名無しさん
09/03/15 07:28:51
メソッドから出せ
public class Class1 {
int a = 1;
int b;
int c;
public void num() {
b = 2;
c = 3;
}
public void test() {
Console.Write(a);
Console.Write(b);
Console.Write(c);
String name = Console.ReadLine();
}
}
63:デフォルトの名無しさん
09/03/15 07:31:00
なんという初心者らしい質問
おじさんの髪の毛に希望ができたよ
64:デフォルトの名無しさん
09/03/15 07:32:18
なごむ(´ω`)
65:デフォルトの名無しさん
09/03/15 08:58:21
メソッドの変数は外と連絡とれないんですね。
ということはnewは省略可能なだけってことなんですねありがとうございました。
public class Class1 {
public int b = new int();
public Class1() {
b = 1;
}
public void num() {
b = 2;
}
}
class Program2 {
static void Main(string[] args) {
String name;
Class1 cls = new Class1();
using (Class1 cls2 = new Class1()) {
cls2 = cls;
cls.num();
Console.Write(cls2.b);
}
cls2.num();
Console.Write(cls2.b);
name = Console.ReadLine();
}
}
これのusingでエラーがでるんですが、IDisposeへの変換が可能でなければならないってどういうことですか?
66:デフォルトの名無しさん
09/03/15 09:31:11
すいませんIDisposableの派生クラスにしたらできました。
67:デフォルトの名無しさん
09/03/15 16:25:35
何の本見て勉強したんだか分からんが、
new int()とか、何も分かってないのにIDisposeだの
基礎がガタガタなので、何か本買って勉強し直すといいよ。
68:デフォルトの名無しさん
09/03/15 16:28:48
new int()
これコンパイル通るのか?
69:デフォルトの名無しさん
09/03/15 16:29:22
通るよ
70:デフォルトの名無しさん
09/03/15 16:32:58
using (Class1 cls2 = new Class1())
……何がやりたいのかさっぱり分からない。
71:デフォルトの名無しさん
09/03/15 16:37:29
何のためにusingしてるのか良く分からん
72:デフォルトの名無しさん
09/03/15 17:30:01
Linux上でもMonoのAOTコンパイラを使うとネイティブコードが作れると聞きましたが
VM上のJITコンパイラやC++と比較してパフォーマンスはどの程度期待できるでしょうか
73:デフォルトの名無しさん
09/03/15 17:36:19
値型と参照型の違いが分かってないとか?
new int()なんて通すなよ
74:デフォルトの名無しさん
09/03/15 17:40:54
そんな責めるなよw
75:デフォルトの名無しさん
09/03/15 18:04:38
別にSystem.Int32のコンストラクタ呼んだっていいじゃん。
値型はコンストラクタ呼べないとでも思ってるのか?
Point p = new Point();
全然おかしくない。
76:デフォルトの名無しさん
09/03/15 18:48:29
75はC++/CLIをやると、愕然とすると思う。
77:デフォルトの名無しさん
09/03/15 19:03:23
C++ は new の有無で値型か参照型(ヒープにメモリアロケート)か区別するけど、
其の文化が C# にはないからなぁ。
78:デフォルトの名無しさん
09/03/15 21:32:44
C#スレを見ると当たり前のようにラムダ式とかFuncとか使ってるけど、
.NET3.0以上を入れないとそのアプリを利用できないことはスルー?
特定の人向けの場合は別として、そのためだけに新しく.NETを入れさせるのってどうなのよ?
一般向けのフリーソフトを作りたい場合はせめて2.0までの構文で抑えるべきだと思うんだが。
79:デフォルトの名無しさん
09/03/15 21:37:43
これはひどい
昨日のネタはいいところを突いてきたと思ったんだが
80:デフォルトの名無しさん
09/03/15 21:38:10
Vista なら、3.0 は最初っから入ってるし・・・
81:デフォルトの名無しさん
09/03/15 21:45:31
まだXPの人も多いでしょ。
実際、「動作には.NET2.0以上が必要です」って書いてあるだけで興味失う人も多いようだが?
そろそろ普及してきた感のある2.0ですらそうなんだから、3.0とかありえないレベルだろ。
自動アップデートじゃ入らないんだから、入れてない人もかなりいるはずだし。
82:デフォルトの名無しさん
09/03/15 21:48:54
言わんとすることは理解できる。が、ここは「C#でフリーソフトを作ろう」スレじゃないしな・・・
使える範囲で使えばいいだけだろ。
それを踏まえると、質問するのにあたって、「C# 2.0 で」って指定はありだろうね。
83:デフォルトの名無しさん
09/03/15 21:49:23
実際にやってみてから言え、クソが
84:デフォルトの名無しさん
09/03/15 21:49:29
Windows 7 だと 3.5SP1 かな。
個人的にゃそんなこと気にするやつなら初めから C++ で作るので
どうでもいいが。
もっというとどうせインストーラ作らなきゃいけなくてそこで入れるだけ
だからさらにどうでもいいが。
85:デフォルトの名無しさん
09/03/15 21:50:03
.net3.0インストールしたくないなら.net3.0アプリ使わなきゃいいんだし。
.net3.0アプリ使いたければ.net3.0インストールすればいいんだし。
使うかどうかは自由じゃないか?
86:デフォルトの名無しさん
09/03/15 21:52:21
.NETまで勝手に入れるインストーラとかウザすぎだわ
87:デフォルトの名無しさん
09/03/15 21:52:54
Microsoftに聞いてください
88:デフォルトの名無しさん
09/03/15 21:54:45
あと.NET 2.0対象でもコンパイラで完結する機能は使用可能なことをお忘れ無きよう。
89:デフォルトの名無しさん
09/03/15 22:29:51
WinForms
ボタンを押したらアニメーションを再生/一時停止するような
プログラムを作るにはどうすればいいですか?
90:デフォルトの名無しさん
09/03/15 22:32:27
ASP.NET
ボタンを押したら牛丼が出来上がるよな
プログラムを作るにはどうすればいいですか?
91:デフォルトの名無しさん
09/03/15 22:40:38
自動アップデートで3.5入ってるだろ
92:デフォルトの名無しさん
09/03/15 22:40:48
C++で作ったクラスやlibファイルはC#で使えるの?
93:89
09/03/15 22:42:41
×WinForms
○WinFormsで
//Form1.Desginer.cs
this.Click += new System.EventHandler(this.Play_Clicked);
//Form1.cs
private void Play_Clicked(object sender, EventArgs e)
{
}
↑この関数の中でどうやってアニメーションを開始すれば?
94:デフォルトの名無しさん
09/03/15 22:46:33
>>89
マネージドなコントロールはないと思うんで、Media Player を埋め込みで。
>>92
無理
95:デフォルトの名無しさん
09/03/15 23:17:51
>>78
ラムダ式は.NET2.0でも使える。
96:デフォルトの名無しさん
09/03/15 23:29:37
>>46
違います。初めて実行する処理が遅いだけです。
フォームの表示であれば、違うフォームでも表示するコードは内部で共通なので2枚目以降はそれほど遅くないでしょう。
それと、なぜmfc使ってる場合と比較したがるのかよく分からないのですが。
97:デフォルトの名無しさん
09/03/15 23:36:10
>>96
Vistaなら早いよ(^O^)
まぁそういう事なんでしょう…
98:デフォルトの名無しさん
09/03/15 23:59:49
>>96
遅いです。問題視しました。これでいいのか?
どういう方向に話しを持って行きたいのかさっぱりわからない。
99:デフォルトの名無しさん
09/03/16 00:03:20
>>96
C++でMFC使わずWinAPI直に使うとか・・生産性悪すぎて話しにならん
同等の機能を実現するのにC#とは比べ物にならんくらいの時間と労力がいる。
ここはプログラムを"作る人"のための板なわけだが、お前さんは作った事あるのか?
ソフトウェア板にでも行った方が良くないか?
100:デフォルトの名無しさん
09/03/16 00:08:00
質問です。
VS2008 .NET3.5でWebClietnを使ってます。
WebClientはDownloadData()と
DownloadFile()の二つのメソッドを実行します。
DownloadDataは問題ないのですが
アプリをWindowsVistaからproxyサーバを介して
DownloadFileを実行すると
「サーバーによってプロトコル違反が発生しました。
Section=ResponseStatusLine」
という例外が発生します。
WindowsXPでは発生しません。
proxyサーバはubuntu8でsquidを使用しています。
WebClientからこれを回避する方法をどなたかご教授ください。
よろしくお願いします。
101:デフォルトの名無しさん
09/03/16 00:16:54
>>98
>遅いです。問題視しました。これでいいのか?
何がですか?あなたの話こそ意味が分かりません。
あなたはどのレスした人ですか?
>>99
>C++でMFC使わずWinAPI直に使うとか・・生産性悪すぎて話しにならん
>同等の機能を実現するのにC#とは比べ物にならんくらいの時間と労力がいる。
飛躍しすぎてると言うか、そんな話は誰もしてないです。
前スレ>>989で
>c++もmfc使っていれば、.netと同じでdll経由してるから、同じようなもんじゃいの?
と言っていたので、dllの初回ロードと.netの初回実行時コンパイルは、最初に実行されるってことでは同じだけど、違う性質の処理です。
それなのになぜあなたはMFCのdll呼び出しとの比較にこだわるんですか。
ということを質問しただけです。
102:デフォルトの名無しさん
09/03/16 00:26:14
>>101
お前は何が言いたいんだ?叩きたいだけなのか?
満足できないなら自分でC++使って作ればいいじゃないか。
103:デフォルトの名無しさん
09/03/16 00:28:59
C#質問スレなんだからC#の話しようぜ!
104:デフォルトの名無しさん
09/03/16 00:29:06
起動が遅いとか欠点があるのは承知で使っている。
それよりも得られる利点のほうが多いと踏んで。
105:デフォルトの名無しさん
09/03/16 00:30:50
何度いってもわからないやつは馬鹿もしくは池沼
106:デフォルトの名無しさん
09/03/16 00:36:59
>>102
C#を叩いているつもりは毛頭無いし、むしろC#好きです。
ただMFCのdll呼び出しと比較するようなもんじゃないよということを言いたかっただけ。
スレ的に邪魔そうなんでもう消えます。
107:デフォルトの名無しさん
09/03/16 00:38:41
Vistaなら…
108:デフォルトの名無しさん
09/03/16 00:42:21
>>106は最初に起動が遅いのが云々言っていた輩とは別とおも。
ところで、C#2005のソースはSHIFT-JISで保存されているんだけど
これってデフォルトだっけ?出来ればUTF-8に変えたいんだけど。
109:デフォルトの名無しさん
09/03/16 02:34:55
>Shift-JIS
うん
>UTF-8
BOM付ければ勝手に認識したと思う
だめなら codepage オプションかなんかだったかと
110:デフォルトの名無しさん
09/03/16 06:12:53
>>108
テンプレートを UTF-8 版に(手動で)変更する、とかしないとダメだったかと。
111:デフォルトの名無しさん
09/03/16 09:07:37
>>100
URLリンク(www.velocityreviews.com)
この辺
112:デフォルトの名無しさん
09/03/16 10:49:23
初回コンパイルが気になるなら
インストール後にngenするようにインストーラに書いときゃいいだろ
113:デフォルトの名無しさん
09/03/16 11:29:28
IntPtr pt = Marshal.AllocHGlobal(1228800);
ImageBuf = new Bitmap(640,
480,
2560,
System.Drawing.Imaging.PixelFormat.Format32bppArgb,
pt);
こういうコード書いた場合
ガーベジ働いたら,ptが勝手に解放されたりとか
Bitmap内の画像メモリバッファが動いたりして
軽くヤバイんでしょうか?
現状,ptに対して,Marshal.Copy()にて画像コピーしまくっています
114:デフォルトの名無しさん
09/03/16 12:16:39
アンマネージドメモリにGCは干渉できない
115:デフォルトの名無しさん
09/03/16 12:52:07
メソッドとフィールを書く順番って決まってるんですか?どっちが上か下かとか
116:デフォルトの名無しさん
09/03/16 12:56:49
namespaceの名前の付け方なんですが
これ複数のプロジェクトから少しづつ使えそうなコード持ってきて
新たにプロジェクトで使うときのusingがめんどくさいし、統一できてないんですが
これ名前の付け方ってデフォルトだとプロジェクト名じゃないですか
namespaceの存在理由が他のnamespaceと区別を付ける目的だとしたら
自分が使うプロジェクトはすべて同じnamespaceに書き換えるのはありですか?
この辺どうやってますか?
117:デフォルトの名無しさん
09/03/16 13:00:16
クラス名 インスタンス名;
クラス名 インスタンス名 = new クラス名();
この2つの違いがわかりません
newしなくても同じように使えてる気がするんですが、何がちがうんでしょうか
118:デフォルトの名無しさん
09/03/16 13:06:39
同じように使えてませんよ
119:デフォルトの名無しさん
09/03/16 13:07:36
>>117
List<string> list1;
List<string> list2 = new List<string>();
list1.add("test"); //こっちは実行時エラーになる、当然コンパイルは通る
list2.add("test");
120:デフォルトの名無しさん
09/03/16 13:08:40
>>114
ってことは,ガーベジにてBitmapオブジェクト内の
画像バッファのアドレスは,絶対動かないってことですね
サンクスです
121:デフォルトの名無しさん
09/03/16 13:09:09
>>115
自由
プロジェクトで規約が示されたりするかもしれないけどな
>>116
基本はこれ
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
そもそも
> これ複数のプロジェクトから少しづつ使えそうなコード持ってきて新たにプロジェクトで使う
てのが好ましくない
モジュール化を進めてDLLとして再利用できる形にしたほうがいいと思う
122:デフォルトの名無しさん
09/03/16 13:10:10
ガーベジとか中途半端な略し方はやめて それじゃただのゴミだ
123:デフォルトの名無しさん
09/03/16 13:36:34
>>119>>121
thx
newしなくても使えたような気がしたんだけど気のせいかな・・・
あともうひとつ教えてください
一つのファイルに100行ぐらいしかなくてファイル数ばっかり大量にあるんですが
これっておかしいですか?なんか一つのファイルに2つ以上クラスがあるとすごい見ずらいんで細かく分けるようにしたんですが
で、usingの部分をいつも追加するのがいやになりました。まとめてusingだけのファイルから参照するとかはできないですか?
124:デフォルトの名無しさん
09/03/16 13:42:41
>>123
newしなくても使えてるのは値型。値型と参照型があるんで調べてみ。
C#で書いたclassは全て参照型。
125:デフォルトの名無しさん
09/03/16 13:47:52
>newしなくても使えてるのは値型
ブブー
126:デフォルトの名無しさん
09/03/16 13:56:15
>>123
別に同一プロジェクト内で"クラスの追加"をしていった場合、
usingを追加する作業は要らないと思うんだけど
127:デフォルトの名無しさん
09/03/16 14:03:09
>>125
フィールドの値型なら暗黙に初期化されるから強ち間違いではない……とか
// 苦しい弁護だな
128:デフォルトの名無しさん
09/03/16 14:14:12
>>126
そうなんですか?
using System;
using System.Collections.Generic;
using System.Linq;
クラスファイルを追加するとこれしかなくて
全体に追加したいusingを毎回手動追加してるんですが
129:デフォルトの名無しさん
09/03/16 14:30:43
>>92
libをDLLにすればそれを呼び出せるよ。
130:デフォルトの名無しさん
09/03/16 15:22:35
>>127 つ構造体
131:デフォルトの名無しさん
09/03/16 15:32:15
>>130
値型でもローカル変数なら明示的な初期化が必要だぜ
// 配列の要素なら暗黙に初期化されるから……うん、やっぱり苦しいな
132:デフォルトの名無しさん
09/03/16 15:42:00
newと初期化が関係あるのかと
133:デフォルトの名無しさん
09/03/16 15:55:23
newとかusingとか、同じキーワードを全然違う意味のところに使いまわすのは
どういうセンスなんだぜ?
134:デフォルトの名無しさん
09/03/16 15:56:42
VBの惨状を回避するため
135:デフォルトの名無しさん
09/03/16 15:58:02
>134
詳しく
136:130
09/03/16 17:23:46
>>131はnew と初期化をごっちゃにして
無駄なインスタンスnewしまくってるやつに思えてならない。
あと何言ってるのかさっぱりわからない。
137:デフォルトの名無しさん
09/03/16 19:45:19
素人な質問でスイマセンが教えてください。
TextBoxを派生させてOnPaintをオーバーライドしているのですが、
文字入力中だけ背景色や文字のサイズなどが変わってしまいます。
(OnPaintが呼ばれてない?)
文字入力中も見た目を制御するにはどうすればいいのでしょうか?
138:デフォルトの名無しさん
09/03/16 21:18:38
入力中じゃなくても常にTextBoxのOnPaint/Paintは呼ばれなかったと思うけど。
RichTextBox使うんじゃ駄目?
139:137
09/03/16 23:44:18
確かにデフォルトでは、OnPaintは呼ばれませんでしたが、
SetStyle(ControlStyles.UserPaint, true);
にしてやると、文字入力のとき以外は呼ばれるようになりました。
RichTextBoxは全然使ったことなかったです。
とりあえずRichTextBoxでできるところまで試してみます。
また頭が死にそうになったら質問するかもしれないですが、
そのときはよろしくお願いいたします。
ありがとうございました。
140:デフォルトの名無しさん
09/03/17 01:16:52
メソッドから抜けても値を保持していて、
再びメソッドが呼び出された時に使えるローカル変数って作れないんでつか?
タイマーイベントをカウントしたい時とか、グローバルっぽい変数作ると混乱してくるけど
上手い方法が分からないのでこんな感じですが↓もっといい方法やってる人いますか?
public class Form1 : System.Windows.Forms.Form
{
int YaranaikaCount = 0;
(・・・略・・・)
private void timer1_Tick(object sender, EventArgs e)
{
YaranaikaCount++;
if (YaranaikaCount > 4)
{
YaranaikaCount = 0;
Ahhhhh();
}
else
{
UhoUho();
}
}
}
141:デフォルトの名無しさん
09/03/17 01:21:08
作れません
なぜならそういうのはローカル変数とは言わないので
142:デフォルトの名無しさん
09/03/17 01:23:25
な、なんか崩れてしまいましたので再送します…
: public class Form1 : System.Windows.Forms.Form
: {
: int YaranaikaCount = 0;
: (・・・略・・・)
: private void timer1_Tick(object sender, EventArgs e)
: {
: YaranaikaCount++;
: if (YaranaikaCount > 4)
: {
: YaranaikaCount = 0;
: Ahhhhh();
: }
: else
: {
: UhoUho();
: }
: }
: }
143:デフォルトの名無しさん
09/03/17 01:31:01
Cのstaticみたいな物はないので、フィールドで代用する。
144:デフォルトの名無しさん
09/03/17 03:01:36
メソッドに引数にメンバの中身を渡すのではなくて、メンバを渡すにはどうすればいいんですか?
どのメンバかを判断したあと、そのメンバの中を参照したいんです。
145:デフォルトの名無しさん
09/03/17 03:04:54
そのオブジェクトのインスタンスを渡せばいいんでないの?
146:デフォルトの名無しさん
09/03/17 08:34:39
>>144
ref
147:デフォルトの名無しさん
09/03/17 08:35:36
変数を変えると一括変換のアイコンが出てくるじゃないですか
あれ変更したくない時マーク消す方法はありませんか?
148:デフォルトの名無しさん
09/03/17 09:30:00
日本語でおk
149:デフォルトの名無しさん
09/03/17 11:12:13
>>140
そういうのは普通メンバ変数で管理するもんだろjk
150:デフォルトの名無しさん
09/03/17 20:31:35
ある条件が通ったときに、ボタンを押したと同じ意味になるプログラムってどういう風に書けばいいでしょうか
ただ、ボタンのメソッドというか処理とかはないです。IDだけで。
なぜなら、CollapsiblePanelていうので、プロパティとして?使ってるからなんじゃないかと思います。
なんでCollapsiblePanelに開いた状態のプロパティがないんだろう・・・初期状態の開閉プロパティはあるのに。
意味がわからない;;助けてください
151:デフォルトの名無しさん
09/03/17 20:34:11
日本語でおk
152:デフォルトの名無しさん
09/03/17 20:37:50
読んでると脳内がごちゃごちゃしてくる文章だなあ
153:デフォルトの名無しさん
09/03/17 20:43:29
一個ずつ解決しようとするなら、
まず
if(i=1)
{
ボタンAをクリック
}
という処理はかけますか?
154:デフォルトの名無しさん
09/03/17 20:45:40
CollapsiblePanelはとりあえず置いとこうぜ
155:デフォルトの名無しさん
09/03/17 21:36:31
無理かな?
if(i=1)
{
CollapsiblePanelがパカっと開く
}
これでも考えてるのだけど
156:デフォルトの名無しさん
09/03/17 21:55:50
WPFならRaiseEventとかあったと思う。
157:デフォルトの名無しさん
09/03/17 22:10:05
自分用の2ch専ブラウザを作っているのですが
htmlテキストの取得まではできたのですが
書き込みはどのようにするといいんでしょうか?
テキストセットしてボタンを自動で押させるのだと思うんですが
158:デフォルトの名無しさん
09/03/17 22:14:34
>>157
URLリンク(www.monazilla.org)
159:デフォルトの名無しさん
09/03/17 22:15:21
>>157
WebBrowser でやるならそんな感じ。リクエストを投げるなら、
HttpWebRequest で Post。
160:デフォルトの名無しさん
09/03/17 22:18:49
さっそくどうも
う~ん難しそうですね
よく読んでみます
161:デフォルトの名無しさん
09/03/18 15:09:29
クラスAで初期化(インスタンス?)したクラスBの
プロパティをクラスCから読み書きしたい場合は
クラスAのインスタンスをPublicにしてアクセスするもの
なんでしょうか。定石があれば教えて下さい。
162:デフォルトの名無しさん
09/03/18 15:26:20
よくわからんけどこんな感じのことを言ってる?
public ClassA{ public ClassB b = new ClassB(); }
public ClassB{ public string s = "test"; }
ClassC
{
public ClassC()
{
ClassA a = new ClassA();
Console.WriteLine(a.b.s);
}
}
163:デフォルトの名無しさん
09/03/18 16:00:08
正にそう言うことです。
そういうアクセスの仕方が一般的なのかと思いまして。
164:デフォルトの名無しさん
09/03/18 16:10:54
プロパティはどこに行ったんだ
165:デフォルトの名無しさん
09/03/18 16:11:59
直接フィールド公開するのは論外として、
ClassAがstring型プロパティとして公開するか直接ClassBを公開するかは場合による
166:161
09/03/18 17:46:13
>>165
今回の場合、以下のような構成になっています。
・クラスA(メインフォーム。起動時に各種設定値を読み込みクラスBに格納)
・クラスB(設定値を保持する為のクラス。プロパティやフィールドのみ)
・クラスC(クラスAから開かれるオプション画面)
クラスAからクラスCを開いたときに既に読み込まれたクラスBの設定値を
読み込みクラスCの各種コントロールに反映したいのですが、クラスCで
クラスBを初期化すると値まで初期化されてしまい困っています。
こういう場合はどのようにするのが定石でしょうか。
>>161,163は携帯からだったので端折ってしまってすいません。
167:デフォルトの名無しさん
09/03/18 17:50:36
ClassCもフォームなんだよね?
そういう場合はClassAの側でClassCのプロパティを設定してやる方がいいんじゃないかな
ClassCのコンストラクタにClassBの参照渡すとかね
168:161
09/03/18 18:17:10
>>167
フォームです。ClassCでプロパティを作成するのは面倒なので
後者の方法についてどのようにするか色々調べてみます。
有り難う御座いました。
169:デフォルトの名無しさん
09/03/18 19:09:49
IEnumerableをシリアル化するには、どのような方法を利用すればいいですか?
170:デフォルトの名無しさん
09/03/18 19:36:26
ToArray
171:デフォルトの名無しさん
09/03/18 20:10:29
フォームを最大化する時にその中のコンポーネントも連動して
同じ比率で大きくしたいんですけどどうすればいいですか?
最大化する時に一々それぞれのサイズをいじるしかない?
172:デフォルトの名無しさん
09/03/18 20:25:16
>>171 Control.Anchorプロパティとかで解決できるかな?
173:デフォルトの名無しさん
09/03/18 20:26:00
>>171
普通はSplitContainerを使う
174:デフォルトの名無しさん
09/03/18 22:55:24
変数の型で同じバイト数のものならやっぱり
少数型より整数型のほうが速いですか?
175:デフォルトの名無しさん
09/03/18 22:56:02
>少数型
そんなものはありません
176:デフォルトの名無しさん
09/03/18 22:59:27
失礼 小数
177:デフォルトの名無しさん
09/03/18 23:01:45
初めから答える気のない奴が
揚げ足を取るだけのためにレスしてるだけだから気にすんな
178:デフォルトの名無しさん
09/03/18 23:04:15
自己紹介するスレじゃないよ
179:デフォルトの名無しさん
09/03/18 23:04:43
速いかどうかは環境依存
180:デフォルトの名無しさん
09/03/18 23:05:13
お前も自己紹介してるやないけ
181:デフォルトの名無しさん
09/03/18 23:06:55
くやしかったかい?
182:デフォルトの名無しさん
09/03/18 23:07:48
はい
くやしかったです
183:デフォルトの名無しさん
09/03/18 23:07:52
最後までレスし続けたほうが勝ちかい?
184:デフォルトの名無しさん
09/03/18 23:08:32
そう思います
185:デフォルトの名無しさん
09/03/18 23:08:37
いや君の勝ちでいいよ?
186:デフォルトの名無しさん
09/03/18 23:08:40
じゃあ俺の勝ちだろ
お前ら弱すぎワロタ
187:デフォルトの名無しさん
09/03/18 23:08:59
これだから理系は困る
188:デフォルトの名無しさん
09/03/18 23:10:04
理系って?文系って?なに?説明してくれない?
189:デフォルトの名無しさん
09/03/18 23:10:12
175 名前: デフォルトの名無しさん [sage] 投稿日: 2009/03/18(水) 22:56:02
>少数型
そんなものはありません
とりあえずさらしage
190:デフォルトの名無しさん
09/03/18 23:11:40
中卒には関係ないよ 区別があるのは高校からですよ
191:デフォルトの名無しさん
09/03/18 23:11:42
必死だな
192:デフォルトの名無しさん
09/03/18 23:11:47
>>174
とりあえずint(System.Int32)で扱えば一番良いはず。
193:デフォルトの名無しさん
09/03/18 23:12:53
理系とか文系という言葉に強烈に反応するのが約一名いるのは仕様ですか?
194:デフォルトの名無しさん
09/03/18 23:13:40
おまえら#regionで畳んどけよ
195:デフォルトの名無しさん
09/03/18 23:14:29
変換ミスぐらい許容できないバカがいるから荒れるんだよな
196:デフォルトの名無しさん
09/03/18 23:15:20
いやその後の方が問題だ
197:174
09/03/18 23:15:23
>>192
どうも
できるだけ32bitのものを使おうとおもってますが
最近はjavaとかも64bit版あったりするんでどんなもんかなと思いまして
198:デフォルトの名無しさん
09/03/18 23:17:02
基本クラスのメソッドに含まれるメンバ変数の値を
派生クラス側で変更して、そのメソッドを使いたいんですが
どうしたらいいのでしょうか?
199:デフォルトの名無しさん
09/03/18 23:19:03
>>197
実際のところ64bit整数は32bitと同じかそれ未満の速度になるよ
200:デフォルトの名無しさん
09/03/18 23:20:52
>メソッドに含まれるメンバ変数
とは何だ?
201:デフォルトの名無しさん
09/03/18 23:22:19
>>198
値って引数のこと?
202:デフォルトの名無しさん
09/03/18 23:23:54
>>198
やりたい事をそれっぽいコードで示してみ
203:174
09/03/18 23:24:26
そうですか
これらの速度をベンチマークで比較してるとこがあればいいんですけどねえ
204:デフォルトの名無しさん
09/03/18 23:26:06
virtual?
205:デフォルトの名無しさん
09/03/18 23:26:56
きっと斜め上の回答が来る筈。
って事で、メソッド内のローカル変数だと予想
206:デフォルトの名無しさん
09/03/18 23:28:49
>>198
>>60-62と同じような質問にも読める
207:デフォルトの名無しさん
09/03/18 23:34:07
結局どれなんだよ・・・
208:デフォルトの名無しさん
09/03/18 23:35:34
>>202
こういう感じです
派生クラスでメソッドを書き直すしかないですか?
public class A{
int x = 10;
public MethodA(){
Console.WriteLine("ここに表示される値を変えたい→ " + x);
}
}
public class B : A{
new int x = 20;
}
public class DEMO{
public static void Main(){
B b = new B();
b.MethodA(); //ここで20と表示したい
}
}
209:デフォルトの名無しさん
09/03/18 23:40:05
>>208
これでどうだ
public class A
{
protected int x = 10;
public void MethodA()
{
Console.WriteLine("ここに表示される値を変えたい→ " + x);
}
}
public class B : A
{
public B()
{
this.x = 20;
}
}
public class DEMO
{
public static void Main()
{
B b = new B();
b.MethodA(); //ここで20と表示したい
}
}
210:デフォルトの名無しさん
09/03/18 23:49:16
>>209
おー、これです
ありがとうございます
211:デフォルトの名無しさん
09/03/19 00:05:49
選択した文字列を引数としてプログラムを起動するにはどうしたらいいですか?
212:デフォルトの名無しさん
09/03/19 00:08:21
>>211
URLリンク(msdn.microsoft.com)(VS.80).aspx
213:137
09/03/19 00:55:19
>>210
しかと吟味の上、よきに計らえ
214:デフォルトの名無しさん
09/03/19 00:57:01
ごばorz
215:デフォルトの名無しさん
09/03/19 01:30:02
どこの誤爆だよwww
216:デフォルトの名無しさん
09/03/19 03:00:49
現在アクティブになっている他アプリのウィンドウ名を取得することはできますか?
出来るのであればご教授お願いします。
217:デフォルトの名無しさん
09/03/19 03:18:50
>>211
Main関数の中に配列いれろ
218:217
09/03/19 03:20:26
言い方が悪かった
static void Main(string[] args)
こういう感じね
後選択した文字列ってのが意味解らない
219:デフォルトの名無しさん
09/03/19 03:22:41
user32.dllのGetForegroundWindowとGetWindowTextをDllImportして使う。
HWNDにIntPtr、LPTSTRにStringBuilderを使っとけばおk
詳しいやりかたはぐぐれ
220:デフォルトの名無しさん
09/03/19 03:26:09
>>211
System.Diagnostics.Process.Start("app.exe", "args");
こういう事をしたいのか?
221:デフォルトの名無しさん
09/03/19 03:32:12
>>219
ありがとうございます。
そのヒントを元に検索し、緑のバイクさんのところのコードを参考にして解決しました。
222:デフォルトの名無しさん
09/03/19 03:44:03
>>211
Processじゃないの?
文字列で思い出したのでついでに質問
ブラウザなどで範囲選択している文字列をコピーすることはできないでしょうか?
SendKeyで Ctrl+Cを送ると、なぜかブラウザ名と開いてるページが帰ってきてしまいます。
何かいい方法無いですか?
223:デフォルトの名無しさん
09/03/19 10:37:38
一番汎用的なのがSendKeysなのは間違いない
Ctrl+Insertの方が安定してるかも
対象限定ならともかく完全にどんなのでも使えるやりかたってのは存在しない
224:デフォルトの名無しさん
09/03/19 10:41:19
変数名を変えると一括で変換してくれるマークが出てくるじゃないですか
あれを出ないようにしたくはないんですが、他は変更しない時マークを消したいんですが
マークを押した時に出てくる2つの選択肢どっちを選んでも思い通りになりません教えてくだしあ
225:デフォルトの名無しさん
09/03/19 16:59:26
2次配列の宣言で
int[][] da = new int[8][]; として後で
da[0] = new int[8];
da[1] = new int[8]; …としていくとできますが
for (i = 0; i < 8; i++)
da[i] = new int[8];
こうするとビルドは出来ますが実行で赤Xがでてエラーになります
for などを使って一括して定義する方法ないでしょうか?
da[0,0] このタイプは使いたくないのです
226:デフォルトの名無しさん
09/03/19 17:06:08
エラーはちゃんと読みなさい。
227:デフォルトの名無しさん
09/03/19 17:08:59
>こうするとビルドは出来ますが実行で赤Xがでてエラーになります
日本語でOK
228:デフォルトの名無しさん
09/03/19 17:09:54
エラーでないぞ?
iを定義してないだけじゃないか?
229:デフォルトの名無しさん
09/03/19 17:20:25
なんか、めちゃくちゃえげつない初期化が出来るね。
int[][] da = new int[][] { new int []{1,2,3}, new int []{5,6}, new int []{7}, new int []{8,9,10}};
230:デフォルトの名無しさん
09/03/19 17:22:22
もう一息
var da = new int[][] { new []{1,2,3}, new []{5,6}, new []{7}, new []{8,9,10}};
231:デフォルトの名無しさん
09/03/19 17:49:43
>>228
でないですか?iの定義はしてるはずなんですが
>>226
エラーというか画面全体に×が出るあれです
232:デフォルトの名無しさん
09/03/19 18:13:52
宣言する場所と実際にデータを使う場所が悪かったようです
直りました、どうもすいません
233:デフォルトの名無しさん
09/03/19 22:49:45
日本を狙う 朝鮮人の原爆ミサイル建造費用は
日本国内の 在日パチンコ屋からの送金
パチンコの市場規模は 年間30兆円
日本の国家予算の 3分の1以上
北朝鮮の国家予算の なんと100年分!
これを在日朝鮮人が 自由に動かし
パチンコマネーを 北朝鮮に送金している
パチンコ屋を 全面営業禁止にしない限り
北朝鮮は制裁など 痛くもカユくもない
在日朝鮮人なら 生活保護もらい放題
毎月二十数万円もらって 毎日遊んで暮らしてる
住宅費・医療費・教育費なんでも無料
税金は1円も払わない 超特権階級(貴族)
民主党は 選挙権まで与える予定
日本は 在日天国 <丶`∀´> ウハウハ~♪
URLリンク(2cchan.ham-radio-op.net)
234:デフォルトの名無しさん
09/03/20 00:36:39
>>223
おお、Ctrl+Insertで望んでいた動きができました
なぜCtrl+Cで上手くいかなかったんだろうなぁ
ありがとうございました
235:デフォルトの名無しさん
09/03/20 03:02:46
すみません。質問いいですか?
実にくだらないのですが、解りません・・・
データグリッドビュー内の全てのRow毎にForeachループを廻したいのですが
やり方が解りません。
どなたか教えては頂けませんか?
宜しくお願い致します。
236:デフォルトの名無しさん
09/03/20 03:06:15
foreach(DataGridViewRow row in dataGridView1.Rows)
{
うんたらうんたら;
}
237:デフォルトの名無しさん
09/03/20 20:30:07
C#3.0勉強中
匿名メソッドのラムダ式の便利さはわかったけど、
ExpressionTreeというのが、どういう場合に使われて便利なのかよくわからない
これは便利だっていうサンプルが乗ってるサイトとかありますか?
238:デフォルトの名無しさん
09/03/20 22:56:48
URLリンク(www.opentk.com)
のExampleの中のWinForms 1 : Simple GL Controlのサンプルを、
ボタンを押したら箱が回るアニメーションが再生/一時停止するようにするには
どうすればいいですか?
箱を描画する処理は作れるんですが、アニメーションを実装する方法が良く分かりません・・
シングルスレッドで処理したいんですが、ApplicationContextクラスを作ったりしなければならない?
239:238
09/03/20 23:13:52
BackGroundWorkerとかデリゲートの非同期呼び出しとか
使わず
while(ウィンドウが閉じられていない間)
{
メッセージ処理
ゲームの描画処理とかSleepとか
}
見たいな事はC#では出来ないんでしょうか
240:デフォルトの名無しさん
09/03/20 23:21:28
マルチスレッドが嫌ならDoEventsでも使えば
241:238
09/03/20 23:31:18
>>240
メッセージ処理をDoEventsでするんですか?
しかしApplication.Run(new Form1());
した後どこから>>239みたいなループに入れば・・?
OnClick()の中にwhile文入れたりとかは駄目ですよね・・?
242:デフォルトの名無しさん
09/03/21 00:11:27
>>237
マニアックな例になるけど、
URLリンク(ufcpp.net)
とか。
あと、C# 4.0のdynamicは内部的に式木使って動的コード生成してる。
いずれにせよ、あんまりエンドユーザー向けの機能ではない。
243:デフォルトの名無しさん
09/03/21 11:12:18
株式の情報とかを取得するのに
皆、Yahooファイナンスから情報を得ているのが多いみたいですが
あれは?ファイナンスのHTMLを取得して
中を読み取り表示しているだけなのかな?
244:デフォルトの名無しさん
09/03/21 11:14:56
YahooのWebAPIではファイナンスの情報提供してないみたいだからそうなんじゃない?
245:デフォルトの名無しさん
09/03/21 11:29:19
Yahooの株式データはurlにクエリ付けて操作できる
246:デフォルトの名無しさん
09/03/21 11:47:11
URLにクエリですか?
247:デフォルトの名無しさん
09/03/21 11:48:41
だけど取得はHTMLだから仕様変更されたら一発でアボーン。
つか金融系でAPIを公開しているところないよなぁ・・・
純金の相場を取得するモジュール作ったけど、仕様がいつ変わるかわからないのが怖い。
248:デフォルトの名無しさん
09/03/21 11:50:23
>>246
クエリ文字列。
URLリンク(stocks.finance.yahoo.co.jp)
なら
code=4686.q
つまりURLの後ろの?以降の文字列。
249:デフォルトの名無しさん
09/03/21 11:55:39
>>248
銘柄のコードでですね。
それでHTMLを取得してから
中を自分で作るしかないのか・・・・・
>>247さんの言う通り
HTMLが変わったら終わりですね。
どうするかなぁ~( ̄ヘ ̄;)ウーン
250:デフォルトの名無しさん
09/03/21 12:20:33
スクレイピングなんてそんなもん。
正規表現を設定ファイルに出すとかしておいて、
変更時の修正が最低限に済むようにしとけ。
251:デフォルトの名無しさん
09/03/21 12:25:08
携帯から失礼。ふと疑問に思ったのでよろしくお願いします。
オブジェクトを作るとき、+=と=の場合があるんですがどう違うんですか?
252:デフォルトの名無しさん
09/03/21 12:47:17
たぶん、イベントハンドラの関連づけを勘違いしてるんじゃないかな。
253:デフォルトの名無しさん
09/03/21 12:48:45
YAHOOファイナンスは銘柄コード以外に日付もクエリに指定する事が出来て
過去10年分の株価時系列データが意外と簡単に取得出来るな
詳しいやり方は忘れた
254:243
09/03/21 13:04:14
色々な意見ありがとうございます。
ちょっと考えてから作るか作らないか検討します。
255:デフォルトの名無しさん
09/03/21 13:07:14
>>252
たぶんそうです。
+=と=の違いってどうなんですか?
256:デフォルトの名無しさん
09/03/21 13:10:34
調べろよ。
x = x + y;
x = y;
の違い。
257:デフォルトの名無しさん
09/03/21 14:14:23
>>242
おお ありがとう
あと見ておくべきところとしてはこんなところかな?
なんかいろいろあるなぁ
・ASP.NET MVC 1.0
・ASP.NET AJAX
・ASP.NET Dynamic Data
・ADO.NET Entity Framework
・ADO.NET Data Services
・Silverlight 2.0
・Silverlight Controls for ASP.NET
・C#3.0 匿名メソッド
・C#3.0 ラムダ
・C#3.0 初期化子
・C#3.0 匿名型
・C#3.0 暗黙型付け
・C#3.0 拡張メソッド
258:デフォルトの名無しさん
09/03/21 14:28:45
>>256
ハンドラーに+=ってイメージがつかないんです(ノ_・。)
259:デフォルトの名無しさん
09/03/21 14:34:45
継ぎ足していくイメージだな
260:デフォルトの名無しさん
09/03/21 15:05:28
>>258
delegate void FooHandler(string s);
void Bar(string s) { Console.WriteLine(s); }
void Test() {
FooHandler f = null;
f += Bar; // ..1
f = f + Bar; // ..2
f = (FooHandler) Delegate.Combine(f, new FooHandler(Bar)); // ..3
f("hello");
}
1.2.3 は全部同じ意味。
261:デフォルトの名無しさん
09/03/21 15:13:23
でも実際、delegateの場合は+=演算子がオーバーロードされて、
Delegate.Combineメソッドが実行されるってこと?
262:デフォルトの名無しさん
09/03/21 17:29:32
演算子オーバーロードではなく、糖衣構文。
コンパイラが自動的に Delegate.Combine() に変換してくれるのであって、
Delegateクラスで + 演算子が定義されているわけではない。
263:デフォルトの名無しさん
09/03/21 19:32:07
スレリンク(gamedev板:95-番)
264:デフォルトの名無しさん
09/03/21 20:11:21
WEBサイトを画像化するには
どういった方法をとるのが適切ですか?
よければサンプルコードの掲載されてるようなURLもいただけるとありがたいです。
265:デフォルトの名無しさん
09/03/21 21:11:11
throw new System.Exception();
│
│ _∧∧∧∧∧∧∧∧∧∧_
│ > そ、その動きはトキ! <
│  ̄∨∨∨∨∨∨∨∨∨∨ ̄
│ ≡ ('('('('A` )
│≡ ~( ( ( ( ~)
↓ ≡ ノノノノ ノ サッ
266:デフォルトの名無しさん
09/03/21 22:51:33
>>257
LINQを学べば自動的にC#3.0の追加要素は全部学べるよ。
267:デフォルトの名無しさん
09/03/21 23:22:15
>>266
LINQ TO SQLはキャンセルの方向だからお勧めできないよ
268:デフォルトの名無しさん
09/03/21 23:33:19
>>267
>>257 のリストのどこにもLINQ TO SQLとかいてないな。
ひょっとしてLINQ = LINQ TO SQLとか思ってる人なの?
269:デフォルトの名無しさん
09/03/21 23:39:27
>LINQ TO SQLはキャンセルの方向
そうなのか
知らんかった
理由は何?
270:デフォルトの名無しさん
09/03/21 23:43:32
ひとことでいうと DB 屋さんが作ったものじゃないから。
ある意味 Linq の参考実装だったものがそのまま出てきたような
もの。でもライトでいいんだけどねあれ。実質 SQL Server 限定で
なければ。
DBLinq はどうなってるんだっけか。
271:デフォルトの名無しさん
09/03/21 23:57:35
>>268
EntityにはLINQ TO SQLが内包されてるし、
一言でLINQと説明しているC#関連のサイトのほとんどはLINQ TO SQLだからね
272:デフォルトの名無しさん
09/03/22 00:06:44
EntityにはLINQ TO SQLと同等のExpression<T>を使ったクエリ文は使用しているが内包はしていない。
>一言でLINQと説明しているC#関連のサイトのほとんどはLINQ TO SQLだからね
これは君の脳内ソース。
273:デフォルトの名無しさん
09/03/22 00:22:14
LINQでLINQ TO SQLを説明してるサイトのほうが少ないと思うんだが、
いったい普段どういうサイトを見てるんだろうか
274:デフォルトの名無しさん
09/03/22 00:29:31
>>272
紛らわしいが、普通に理解して貰えれば、Entity Frameworkのことを差しているのは明白だと思うんだけど。
EntityFrameworkはSP1になって実装されたものだからC#3.0(VS2008)の特徴として紹介されてる
LINQ関連は、ほとんどLINQ TO SQLっていってるわけ。
実際にC#でLINQ TO SQLでないものを紹介していれ例は少ないよ。
脳内ソースというか、普通にググればわかるレベル。
275:デフォルトの名無しさん
09/03/22 00:38:37
つまり、ググると混同してるのやら誤解しているのやらがたくさん出てくると
276:デフォルトの名無しさん
09/03/22 00:42:17
>>274
はいはい(笑)
277:デフォルトの名無しさん
09/03/22 00:44:56
あの論点が見えないのですが
>>266-276 の繋がりがよく分からないあたりから
食い違いがあるのではないでしょうか
278:デフォルトの名無しさん
09/03/22 00:45:53
…Linq to SQL が sqlmetal とかの特定技術であることすら知らない?
Entity Framework の Linq 技術周りに関して言えばそれは
Linq to Entities だ。EDM に対してのクエリである ObjectQuery の
構築で使用している。
Linq to Entities と Linq to SQL は生まれも実装もラインも別。マジで。
つながりでいえば Linq のプロバイダとして実装されているぐらいしか
共通点はない。
279:デフォルトの名無しさん
09/03/22 00:45:59
訂正 >>266-267 でした
280:デフォルトの名無しさん
09/03/22 00:46:05
>>275
>>276
はいどうぞ
>また、VS 2008 SP1&.NET Framework 3.5 SP1では
>「ADO.NET Entity Framework(ADO.NETエンティティ・フレームワーク)」
>(以降、Entity Framework)という新しいデータベース・アクセス・テクノロジが追加されている。
URLリンク(www.atmarkit.co.jp)
281:デフォルトの名無しさん
09/03/22 00:50:35
>>280
だから何?って感じなんだがwww
何の証明にもなってない
282:デフォルトの名無しさん
09/03/22 00:51:16
>>281
>>278は華麗にスルー?
283:デフォルトの名無しさん
09/03/22 00:52:39
>>282
うん
だから何?って感じだし
なんでそんなに必死なのかさえ理解できないし
284:デフォルトの名無しさん
09/03/22 00:54:20
脳内ソース出しちゃう人の話なんか誰も取り合っちゃくれんよ
それが2chです
285:デフォルトの名無しさん
09/03/22 00:55:09
なんか論点がずれてる気がするな。
その記事ではEFとLINQ TO SQLをちゃんと区別してるんだから、
そうなると誰もそれには異論は唱えてないことになると思うのだけど
IDがないとわかんね。
286:デフォルトの名無しさん
09/03/22 00:56:27
だから
>LINQ To EntitiesはEDMのモデル向けの“LINQ To SQL”といってもよいものだが、
>LINQ To SQLにはない機能(例えば、複数のテーブルから1つのエンティティを作成する機能など)が搭載されている。
>EDMに基づくLINQ To Entitiesは、データベースやオブジェクトの変更にも強いなどのメリットがあるため、
>今後はLINQ To Entitiesの方が(LINQ To SQLよりも)より多くの場面で活用されていくのではないだろうかと筆者は予測している
287:デフォルトの名無しさん
09/03/22 01:12:59
linqとして紹介されてたものが実はlinq to sqlのことだとも知らなかったのか。。
288:デフォルトの名無しさん
09/03/22 01:15:53
>>287
君か、引っ掻き回してたのは
289:デフォルトの名無しさん
09/03/22 01:19:00
何を?
勘違いしてた人はいるみたいだけどね
290:デフォルトの名無しさん
09/03/22 01:19:46
Linq だけならふつーは Linq to Objects を指すんじゃない。
291:デフォルトの名無しさん
09/03/22 01:25:58
じゃあ事実関係から
1 Linq To SQLはLinq To Entityとは別物 ここまではok?
→URLリンク(www.atmarkit.co.jp)
2 VS2008と.NET3.5は同じ時期にリリースされた ここまではok?
→URLリンク(itpro.nikkeibp.co.jp)
3 Linq To SQLは.3.5に搭載されている ここまではok?
→URLリンク(d.hatena.ne.jp)
4 Linq To Entity(Entity Framework)は3.5 SP1で搭載された ここまではok?
→URLリンク(d.hatena.ne.jp)
従って3の時点でリリースされていないLinq To Entity(Entity Framework)を
C#の特徴として紹介できない(将来の機能の紹介は別)。 ここまではok?
292:デフォルトの名無しさん
09/03/22 01:31:57
>>290
同感
だが、メソッドのネーミングがSQL由来なので
使った事が無い人はSQLの利用がメインだと思うかもね
293:デフォルトの名無しさん
09/03/22 01:34:27
>>291
SP1は既にリリースされてるわけで将来の機能というわけではないよ。
ただ、議論をする上で扱いは決めておく必要はある。
というわけで含まない前提でどうぞ。
294:デフォルトの名無しさん
09/03/22 01:40:49
>>293
普通に解釈すれば、3時点から見た「将来」と読めるから、
その突っ込みはズレてると思うぞ?
295:デフォルトの名無しさん
09/03/22 01:43:48
3の時点でリリースされていないLinq To Entity
3の時点で紹介できない
どちらが普通かは難しいけが後者で了解
296:デフォルトの名無しさん
09/03/22 01:48:39
それ前提ならC#とLINQの解説は、SP1公開以前のものがほとんどだから
少なくともLinqToEntitiesを解説したものは圧倒的に少ないな
どっちにしろSQLのほうはなくなるらしいから学ぶならEntitiesのほうだろ
297:デフォルトの名無しさん
09/03/22 02:37:11
学ぶならまずはLINQ to Objectsですよ。
第一、Linqの説明で一番多いのはLINQ to Objectsだし。
SQL系に隠れてスルーされ気味ですが、非常に有益な技術です。
298:デフォルトの名無しさん
09/03/22 03:49:08
LINQ to XML使ってる俺はどうなんの
299:デフォルトの名無しさん
09/03/22 10:18:18
LINQといえばまず第一にLINQ to Objectsだろ
ないと絶対に困るレベルのプログラムの基本部品だ
LINQ to SQLとかEntityなんてのはそれを応用して作った
ただのORマッパーだろ
LINQという技術の射程の長さは表れてるけど
それがLINQの代表というわけじゃない
300:デフォルトの名無しさん
09/03/22 10:27:11
>>298
まあ、XML操作が必要な作業してるんなら、
LINQ to XMLはかなり使いやすいXMLライブラリだと思う。
>>299
応用というか、同じ書式で書けるってのがポイントか。
301:sage
09/03/22 10:59:30
OS :WindowsXP
開発環境:VisualStudio2008 Pro
開発言語:C# 3.0
AccessデータベースをOLEで接続し、
データバインドしたDataGridViewでデータを表形式で表示しつつ、
DataGridViewの右横にデータバインドしたテキストボックスを配置し、
DataGridViewでデータを選択し、それをテキストボックスで
データ更新が出来る名簿ソフトを作成しています。
それに、DataViewのRowFilterでDataGridViewでのデータの絞込みが出来る
用に機能追加し、またデータバインドのソースをDataViewにして、絞込みした
状態でデータ更新ができるようにしようとしました。
しかし、
RowFilterでフィルタをかけている状態で、下記のコマンドをボタンで更新処理を
実行しようとすると、DataGridのフォーカスを手動で変更をしないとデータベースが
更新されないのです。
フォーカスを移動しなくても更新されるようにEndCurrentEdit
メソッドを事前にかけているのですが、何かコマンドが足りないのでしょうか?
恐れ入りますが、ご教示いただけないでしょうか?
以下コマンド-----------------
int iRow; //更新したレコード数
this.BindingContext[dbCustomer1, "M_Customer"].EndCurrentEdit();
iRow = oleDbDataAdapter1.Update(dbCustomer1, "M_Customer");
MessageBox.Show("更新 " + iRow + "件");
-----------------------------
302:デフォルトの名無しさん
09/03/22 11:06:11
C#にはデフォルト引数がなく、同様の機能はオーバーロードを使って表現するみたいですが、
これって冗長じゃないですか?いくつも同じ名前のメソッドが増えてなんだか回りくどいような気がします。
Pythonだとデフォルト引数、名前付き引数がサポートされてるので、
それに慣れていたせいもあってかいまいち理解できません。
オーバーロードの方が優れている点ってあるのでしょうか?
それとも、そもそもデフォルト引数を使うような事自体が珍しいんでしょうか。
303:デフォルトの名無しさん
09/03/22 11:17:12
デフォルト引数をまとめたクラスを一個作ればいいだけだからねえ
304:デフォルトの名無しさん
09/03/22 11:58:12
>>302
4.0からデフォルト引数と名前付き引数に対応するよ
305:デフォルトの名無しさん
09/03/22 13:59:30
相談室スレから誘導されてきました。いまさらだけどあっちのソースだいぶまちがってる・・・。
今ラジアンで角度を処理するクラスを作っているのですが、次のような動作をさせたいんです
1.値を代入したときは値を正規化してからいれる(負値だったら正値に、2π以上だったら2πで剰余算)
2.値を参照するときはそのまま参照
3.floatと同じように扱える
プロパティを使って実装すると次のようになりますが
class RegularizedAngle
{
private float InAngle;
public float Angle
{
get { return Angle; }
set
{
//Angleが負値だったら正値に
if (value < 0) Angle = (float)(Math.PI * 2f) + Angle;
//valueが2π以上だったら2πで剰余算
Angle = value % (float)(Math.PI * 2f);
}
}
}
これを普通のfloatと同じように扱いたいんです。たとえば・・・
RegularizedAngle Ang = (float)(Math.PI * 2f); //すなわち6.28・・・の代入
Ang += 1; //代入したとき内部で正規化がおこなわれて1になる。
Ang += Ang; //これで2になる?
こんなかんじで見た目を組み込み型みたいにしたいんです。
しかし上記のプロパティをつかった方法だとアクセスするときに
Ang.Angle としなければなりませんし、宣言するときにはnewが必要です
組み込み型を継承したクラスを作ればよいのでしょうか・・・?
306:デフォルトの名無しさん
09/03/22 14:04:08
URLリンク(msdn.microsoft.com)
現在↑のページの
1.3 Visual C# による実践コンポーネント指向プログラミング
簡易ドローツールを作成しているところなのですが
手順通りに作成しても、ソースをコピーしても
Windows Form Designer generated code
の部分でエラーを吐いてうまく作成ができません
これを解決する為のお知恵をお貸しいただけないでしょうか
お願いいたします。
307:デフォルトの名無しさん
09/03/22 14:08:45
>>306
//Windows Form Designer generated code
とコメントアウトすればいいのかな?
308:デフォルトの名無しさん
09/03/22 14:18:32
>>307
いえ、そうしてもエラーが増えるばかりで、そうしていいやら・・
309:デフォルトの名無しさん
09/03/22 14:25:03
>>308
VS2002/2003の頃の記事だから、percial class じゃないんだな。
そこはおそらく、これだ。画面は自分で準備しろということじゃないかな。
#region Windows Form Designer generated code
・・・・
#end region
をIDE上で閉じてるイメージ。
310:デフォルトの名無しさん
09/03/22 14:29:20
>>305
演算子オーバーロードしまくれば大体望みの動作になると思うよ
でも普通にプロパティアクセスする方が分かりやすいよ
311:デフォルトの名無しさん
09/03/22 14:29:43
>>306
それは手順通りではないでしょ。
追加するのは、イベントハンドラの部分。
312:デフォルトの名無しさん
09/03/22 14:30:13
>>302
デフォルト引数の値を変更したとき、
利用者側の再コンパイルが必要って言うデメリットもあるから今まで対応してこなかった。
さすがに開発者からの要望に折れて、4.0で実装。
313:デフォルトの名無しさん
09/03/22 14:32:21
>>309
レスありがとうございます
「pertial識別子が型hにありません。この型に別のpartial宣言が(ry」
までたどり着けました
314:デフォルトの名無しさん
09/03/22 14:33:15
.>>310
あんまり賢い方法ではないってことですね・・・。
プロパティで実装してみます。ありがとうございました。
315:デフォルトの名無しさん
09/03/22 14:35:48
>>313
駄目だこりゃ。
どうしてもこの教材である必要がなければ、他のあたって。
316:デフォルトの名無しさん
09/03/22 14:38:41
>>315
私が根本的に勘違いしているみたいですね・・・
すみませんとりあえず他のをあたります
317:315
09/03/22 14:42:35
うん
Form1.Designer.csの内容をこのサンプルから省いて、
Form1.csに追加が必要なメンバ変数とイベントハンドラの記述をすれば
動くので、原理的に難しい話では全くないんだけど、
それができる人は、そもそもこのチュートリアルをやる必要がありません。
318:デフォルトの名無しさん
09/03/22 14:45:51
>>305
普通に演算子オーバーロードすれば良いと思う。
newでインスタンス作りたくなければ、構造体にすればいい。
けど、フィールドの初期化しなきゃいけないので、宣言だけはnewで我慢かなぁ
319:デフォルトの名無しさん
09/03/22 14:50:26
>>314
floatと完全互換ならこの程度で済みそうだけど、複雑になるとoverloadの山になるな。
struct RegularizedAngle {
float inAngle;
public RegularizedAngle(float f) { inAngle = f; }
public float Angle {
get { return inAngle; }
set { inAngle = value; } // いろいろ省略
}
public static implicit operator RegularizedAngle(float f) {
return new RegularizedAngle(f);
}
public static implicit operator RegularizedAngle(double f) {
return (RegularizedAngle) (float) f;
}
public static implicit operator float(RegularizedAngle ra) {
return ra.Angle;
}
public override string ToString() { return Angle.ToString(); }
}
--
static void Main() {
RegularizedAngle x1 = 12.3;
RegularizedAngle x2 = 10;
float f = x1 * 3;
RegularizedAngle x3 = x1 * x2;
320:デフォルトの名無しさん
09/03/22 15:01:40
>>319
ちびっと訂正
>public RegularizedAngle(float f) { inAngle = f; }
public RegularizedAngle(float f) { inAngle = 0; Angle = f; }
321:デフォルトの名無しさん
09/03/22 15:46:43
なんかlinqを使うより、IEnumerable<>のSelect<>メソッドやWhere<>メソッドを使ったほうが
わかりやすい気がするのはなぜですか?
linqtがfromから始まるのが気持ち悪いからですか?
322:デフォルトの名無しさん
09/03/22 15:46:54
>>319-320
ありがとうございます。参考になります。
しかし完全に理解するのは難しそうですね・・・。
それの上にさらに正規化処理を入れなければならないのですよね・・・。
323:デフォルトの名無しさん
09/03/22 16:01:10
>>321
クエリ式が分かりにくいと感じるなら拡張メソッドでLINQやればいい
fromからなのはインテリセンス効かせるため
324:デフォルトの名無しさん
09/03/22 16:02:59
>>321
それもLINQ
325:デフォルトの名無しさん
09/03/22 16:08:46
クエリ式なんかただのSQLっぽく見せるためのプリプロセッサなんだから
SQL大好き人間以外は使う必要の無いものだよ
SQL大好き人間でも最終的には拡張メソッドに適応すべきだろう
326:デフォルトの名無しさん
09/03/22 16:30:24
LINQってなんて読むの?ラインクエリ?
327:デフォルトの名無しさん
09/03/22 16:37:16
なるほど、そんなもんなんだ
機能としては、ADO.NETのDataTable.Select();が、より簡単に使えるようになりました的な感じなのね
メモリ上にデータをもって検索するとか、xmlから検索するとかに便利そうね
つか配列を検索しやすくしましたって感じ?
データベースから引っ張ってくるのは結果セットだけ取得して、
それを単に表示させるだけのほうが再計算入るよりパフォーマンスがよさそうなんだがそのあたりはどうなんだろう
328:デフォルトの名無しさん
09/03/22 16:44:47
LINQをSQLに使えばSQL文が生成され
データベースに問い合わせされ結果セットだけが取得されるんだよ
329:デフォルトの名無しさん
09/03/22 16:59:20
>>325
letとか多重from使おうとするとメソッド形式ではちと厳しい。
>>326
リンク。
linkと同じ音で読めってさ。
330:デフォルトの名無しさん
09/03/22 17:05:29
へー、その場で動的にクエリを生成してくれるのね
難しい処理はストアドに記述してしまうし、
ある程度の決まった処理ならxsdファイルのDataSetに記述したほうが楽そうだけど、
DataSetでは、where文を動的に生成することができなかったから、
それが簡単に記述できるようになるのなら確かに便利かもしれん
331:デフォルトの名無しさん
09/03/22 17:28:33
ボタンを押したらtextBoxのフォントサイズを
変えようとしてるのですが
iの中にはint で18 が入ってる
textBox1.Font.Size = i.ToString();
でどうもうまくいきません、どう記述したらよいでしょうか?
332:デフォルトの名無しさん
09/03/22 17:32:38
ReadOnleyプロパティだからそれ。
333:デフォルトの名無しさん
09/03/22 17:34:19
やどりぎ+どくどく
334:デフォルトの名無しさん
09/03/22 17:35:31
>>333
すいません、ありがとうございます、リッチテクストでも同じでしょうか?
335:デフォルトの名無しさん
09/03/22 19:39:34
EnterpriseLibrary4.1の使い方が全く分かりません・・・
ダウンロードしてインストールして・・・
そこからどうすればいいのか・・・
336:デフォルトの名無しさん
09/03/22 20:42:35
文字列から数字取り出すのってどうやったら良いですか?1 2でなく12 3 434とかで
337:デフォルトの名無しさん
09/03/22 20:51:11
>>336
new Regex(@"\d+").Match(str);
338:デフォルトの名無しさん
09/03/22 20:53:46
ありがとうございますた
339:デフォルトの名無しさん
09/03/22 22:01:47
linq試してみました
簡単にsqlが取得できるのはすごいね
ただアドホッククエリは今までと同じようにEntitySQLとか使って取得するのね
結局は型無しになってしまうし・・・
簡単にクエリ書けるのはいいけど、ソースコードの中でばんばん書けてしまうと、
mvcモデルの原則に反するんじゃないのかな?
普通に使用するなら型付きDataSetのほうが楽でわかりやすい気がするんだけど、
そうなるとLinqToEntitiesを導入する最大の利点ってなんなんだろう・・・
DBデータの取得、更新を行う再利用可能なクラス(Model)が作りやすいってことなのかな?
340:デフォルトの名無しさん
09/03/22 22:23:24
モデルの中にかけばいいんじゃねーの?
341:デフォルトの名無しさん
09/03/22 23:26:37
>>339
ビジネスロジック層とデータ層の間を繋ぐもの的な位置づけ。
342:デフォルトの名無しさん
09/03/23 01:08:46
C++/CLI から来ました。方向性が間違ってたらすみません。
>>305
class RegularizedAngle {
private float InAngle;
public float Angle {
get {
return this.InAngle;
}
set {
if (value <= 0.0) // valueが負値だったら正値にする正規化
this.InAngle = value + (int)(value / (Math.PI*2.0f) + 1.0) * Math.PI*2.0f;
else // valueが正値だったら2πで剰余算する正規化
this.InAngle = value - (int)(value / (Math.PI*2.0f)) * Math.PI*2.0f;
}
}
}
343:305
09/03/23 02:13:02
>>342 ありがとうございます。処理を見直した結果-3.14~+3.14までを格納するように改めました。
//角度を格納するが強制的に正規化される型
//doubleとしてアクセスできる
public class RegularizedAngle
{
private double InAngle;
public RegularizedAngle()
{
InAngle = 0;
}
public RegularizedAngle(double i)
{
InAngle = 0;
Angle = i;
}
public double Degree
{
get { return StgUtil.RadToDeg(InAngle); }
set { Angle = StgUtil.DegToRad(value); }
}
private double Angle
{
get { return InAngle; }
set
{
//6.28以上だったら6.28で剰余算
if (value > StgUtil.PIx2) value %= StgUtil.PIx2;
InAngle = value;
}
}
344:デフォルトの名無しさん
09/03/23 02:16:15
//lはrより左方向
public static bool operator >(double l, RegularizedAngle r)
{ return AngCheck(l, r.Angle); }
public static bool operator >(RegularizedAngle l, double r)
{ return AngCheck(l.Angle, r); }
public static bool operator >(RegularizedAngle l, RegularizedAngle r)
{ return AngCheck(l.Angle, r.Angle); }
//lはrより右方向
public static bool operator <(double l, RegularizedAngle r)
{ return !AngCheck(l, r.Angle); }
public static bool operator <(RegularizedAngle l, double r)
{ return !AngCheck(l.Angle, r); }
public static bool operator <(RegularizedAngle l, RegularizedAngle r)
{ return !AngCheck(l.Angle, r.Angle); }
//lから右回りと左回り、どっちがrへの移動量がすくない?
private static bool AngCheck(double l, double r)
{ return (l + r >= 0); } //ここの処理をなんて書いていいのかわかりません。。。
//doubleを代入された場合
public static implicit operator RegularizedAngle(double f)
{ return new RegularizedAngle(f); }
//doubleを代入された場合
//doubleとして参照された場合
//演算子の動作もdoubleに準拠
public static implicit operator double(RegularizedAngle l)
{ return l.InAngle; }
public override string ToString()
{ return Angle.ToString(); }
}
ぐぐってみるとY座標から右回り左回りを算出するという手段がありました。おそらく0度が真右になるからできるんだと思いますが、
このクラスは角度だけを扱いたいので角度(ラジアン)だけから算出したいのです。何か良い方法があったらどうかお教えください。
345:デフォルトの名無しさん
09/03/23 11:08:45
C#はじめて2Weekの新参者ですが教えてください
サーバーエクスプローラからTBを選択してForm上にDRAG&DROPすると
oleDbDataAdapter1が作成されるのですが、同じmdbの別TBを
DRAG&DROPすると別のoleDbDataAdapter2が作られるのですが、
二つのoleDbDataAdapterを作成しなければいけないのでしょうか?
oleDbDataAdapter1だけにはできないんでしょうか?
C#2003です、よろしくお願いします
346:デフォルトの名無しさん
09/03/23 11:33:11
嫌です
347:デフォルトの名無しさん
09/03/23 12:42:50
同意
348:デフォルトの名無しさん
09/03/23 17:56:52
御意
349:デフォルトの名無しさん
09/03/23 18:22:15
ザムディン
350:デフォルトの名無しさん
09/03/23 19:36:18
質問です。
System.Windows.Forms.Formクラスの
FormBorderStyleプロパティをNoneにし、
WindowStateをMaximizedにすると
タスクバーがフォームに隠れてしまうのは仕様ですか?
またFormBorderStyleをNoneにしたまま
これを回避する方法はどなたかご存知ですか?
351:デフォルトの名無しさん
09/03/23 20:39:37
仕様じゃないですかね
とりあえずスクリーンのWorkingAreaを
MaximizedBoundsに設定したらいいんじゃない?
352:デフォルトの名無しさん
09/03/23 20:56:08
System.Windows.Forms.Screen
から作業領域取得して設定
353:350
09/03/23 21:37:29
this.MaximizedBounds = Screen.GetWorkingArea(this);
で修正できました。
ありがとうございます。
354:デフォルトの名無しさん
09/03/24 16:25:49
a += b * c;
はb*cの結果とaを足してくれるんですか?
355:デフォルトの名無しさん
09/03/24 16:31:41
それくらい試せよ
356:デフォルトの名無しさん
09/03/24 16:32:23
>>354
試してみればいい。
357:デフォルトの名無しさん
09/03/24 17:46:10
なるほど
ありがとうございました
358:デフォルトの名無しさん
09/03/24 17:57:07
a += b * c;
は
a = a + (b * c);
だけど
a += b + c;
は
a = (a + b) + c;
足し算だから結果は変わらない
これは試してわかるようなレベルじゃない
359:デフォルトの名無しさん
09/03/24 18:02:19
結合法則考えればすぐ分かるだろ
360:デフォルトの名無しさん
09/03/24 18:05:05
a * = b + c
は?
361:デフォルトの名無しさん
09/03/24 18:07:48
a = a * (b + c)
362:デフォルトの名無しさん
09/03/24 18:10:05
演算子の優先順位なんて基礎だろ基礎
MSDNで「C# の演算子」調べろよ
363:デフォルトの名無しさん
09/03/24 18:16:51
うそばっかりだなこの擦れ
364:デフォルトの名無しさん
09/03/24 18:25:10
if(!>>1-362)
{
Console.WriteLine(>>363);
}
365:デフォルトの名無しさん
09/03/24 18:30:23
>>358
こいつ馬鹿
a = a + ( b + c )
だろ
366:デフォルトの名無しさん
09/03/24 19:20:46
演算子の優先順位が"人から見て"不明瞭な式っていうのは、
括弧で明示するのが基本だと思う。
&&が||より優先されるために条件式を
条件1 || 条件2 || 条件3
みたいに書く(条件1,2,3は各々&&で条件を連結している)とか、
優先順位が関係する定型的な書き方は知っておくべきだけど。
367:デフォルトの名無しさん
09/03/24 19:24:14
int a = 10;
a += 10 >> 1; // a == 15
a = a + 10 >> 1; // a == 10
つまり a += x op y; は a = a + (x op y);
勝手に問題をすりかえて話をこじらせた挙句、
数行のコードを試せばわかることを「試してもわからない」という
文面とともに間違いを教える>>358が謎過ぎる。
368:デフォルトの名無しさん
09/03/24 19:24:56
見やすくなるけどスピード負担はやや増えるのかな?
369:デフォルトの名無しさん
09/03/24 19:37:31
なんのすぴーどだよ
370:デフォルトの名無しさん
09/03/24 19:43:53
島袋の負担は増える
上原の負担は減るんじゃなかろうか
371:デフォルトの名無しさん
09/03/24 19:59:18
解散しちまえ
372:デフォルトの名無しさん
09/03/24 20:00:25
プログラマなら上原多香子好きだろ?
はしのえみのほうがいい?
373:デフォルトの名無しさん
09/03/24 20:48:53
http://azumaya.s101.xrea.com/wiki/index.php?%B3%D0%BD%F1%2FC%A2%F4%2FC%A2%F4%A4%C7%A5%DB%A5%C3%A5%C8%A5%AD%A1%BC%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EB%A4%F2%BA%EE%A4%EB
↑にある↓の意味はどういうことですか?
if((k & WinApi.HOTKEYF_ALT) != 0)
ret |= Keys.Alt;
if((k & WinApi.HOTKEYF_CONTROL) != 0)
ret |= Keys.Control;
if((k & WinApi.HOTKEYF_SHIFT) != 0)
ret |= Keys.Shift;
return ret;
374:デフォルトの名無しさん
09/03/24 20:54:44
ビット演算だな
AltとControlとShiftのビットを立てている
375:デフォルトの名無しさん
09/03/24 21:13:02
>>373
ビット演算でググれ。
376:デフォルトの名無しさん
09/03/24 21:30:33
>>373
フラグの使い方の悪い見本だな
377:デフォルトの名無しさん
09/03/24 21:57:06
そうか?
378:デフォルトの名無しさん
09/03/24 22:01:38
!= 0 ←これが気に食わないんでしょたぶん
379:デフォルトの名無しさん
09/03/24 22:07:45
>>376
そういう風におっしゃるのなら、
>>376さんは>>373のような処理が必要なときはどんなコードにしているのでしょうか?
興味があるのでご教授ください
380:デフォルトの名無しさん
09/03/24 22:19:50
理由書かない奴は気にするな
381:デフォルトの名無しさん
09/03/24 22:20:58
理由分からない奴は気にするな
382:デフォルトの名無しさん
09/03/24 22:27:52
>>379
どうせくだらない理由だから気にスンナ
383:デフォルトの名無しさん
09/03/24 22:43:03
なるほど
ありがとうございました
384:デフォルトの名無しさん
09/03/24 22:45:05
入れ替える必要はなさそうだけどな。
385:デフォルトの名無しさん
09/03/24 23:02:26
!= 0 以外の良い書き方ってあるんですか?
386:デフォルトの名無しさん
09/03/24 23:03:38
[flags]enumの比較は
if((f & Flag.Hoge) == Flag.Hoge)
と行うという例がMSの[flags]関連のどっかに書いてあった。
387:デフォルトの名無しさん
09/03/24 23:09:23
>>385
!(1 = 0)
388:デフォルトの名無しさん
09/03/24 23:10:51
なるほど
ありがとうございました
389:デフォルトの名無しさん
09/03/24 23:10:52
アホは無理にレスしなくていいよ
390:デフォルトの名無しさん
09/03/24 23:34:19
質問です
フォームを最大化してノーマルに戻して、
フォームのLocationをドラッグで移動したときに
フォームのあった矩形領域がデスクトップの左上からの画像になって
再描画されないんだけど
(ゴミ箱のアイコンが左上にあったとしたら、
フォームのあった位置の左上がゴミ箱の画像。背景もしかり)
考えられる原因って誰か知ってます?
また強制的にFormの裏側をリフレッシュする方法ってありますか?
391:デフォルトの名無しさん
09/03/24 23:36:56
OnPaintみたいなのをoverrideしてるくせに描画してないんじゃないの
392:デフォルトの名無しさん
09/03/24 23:38:45
他のメーカーのグラボが乗ってるPCでチェクしてからだな
393:デフォルトの名無しさん
09/03/24 23:49:28
>>373は×、>>386は○になる具体例を提示しろ
できないなら>>376=糞
394:デフォルトの名無しさん
09/03/24 23:49:56
とても基本的なことで恐縮ですが質問させてください。
このように呼び出し元のクラスを参照し、値を書き換えるクラスを作りました。
class Target
{
private int member;
Process pro = new Process(10,2)
public void Do()
{
pro.OverwriteTargetMember(this)
}
}
//目標値tgtまでvolずつ加算する
class Process
{
int tgt,vol;
public Process(int tgt,int vol)
{
this.tgt = tgt;
this.vol = vol;
}
public void OverwriteTargetMember(Target tgt)
{
if(tgt.member != tgt) tgt.member+= vol;
}
}
target.do()するたびにtargetのmember2 4 6 8 10 10 10・・・となる処理です。
本当はProcessをキューに入れて数値の変動を予約できるようにしています。
ですが、このような実装はあまりオブジェクト志向の設計思想に則していない様に感じられます。
このスレッドのみなさんでしたらどのような実装を行いますか?
どうかお聞かせください。
395:デフォルトの名無しさん
09/03/24 23:53:36
なんでそんな変な名前つけてるの?
396:デフォルトの名無しさん
09/03/24 23:56:18
アホは無理にレスしなくていいよ
397:デフォルトの名無しさん
09/03/24 23:56:54
名前に意味はありません。
Target=メンバーを書き換えたいクラス
Process=引数に渡されたTargetのメンバーを書き換えるクラスです。
要約するとTargetがDo()するたびに数値を変動させたいのですが、
その動作をキューに入れて管理したいのです。
たとえば
0から1ずつ加算して10になるというパラメータをもったProcessクラスと
10から2ずつ加算して20になるというパラメータをもったProcessクラスを順にキューに入れると、
Target.Do()の結果が実行するごとに
1 2 3 4 5 6 7 8 9 10 12 14 16 18 20 20 20 20・・・
となるようにしたいのです。
398:デフォルトの名無しさん
09/03/25 00:23:07
⌒ ⌒ ____
( ) ゝ/ __ヽ
| | | / | 丨
, ─ 、 __ i >>376 |-||
/ ヽ / ヽ (|| | /^ヽ
/ /)ノ)ノ // \∧/ ノ /ヽノ
| >>393 ///⌒ヽ / , ─/ ̄ ̄`─ ´ / ______/
ヽ /)─| ミ| / / ,-─ ′ ───/
∠ (| |. ヽ__ノ> ( ̄ノ/ / -、 /
∠_ / ` /^\__ >  ̄ |── |─┬┘ |──/
ノ (__ ヽ___ノ─┴ 、__ノ ̄ ̄/
/ ̄ ̄\┌─ ′ /^-、 -、_/ /_____ /
/ ̄ ̄ ̄⌒ヽ ( 丿 / | /───/
\ / ̄/ (__ノ ̄ ̄ // /
\/ / // /
399:デフォルトの名無しさん
09/03/25 00:25:19
Queue<int>にint詰めて順に足せばいいじゃん
Processにtgt(目標値)を渡す意味も、そもそもProcessをクラス化する意味も
読み取れない
パラメタをvolだけでなく複数にするなら構造体で十分
400:デフォルトの名無しさん
09/03/25 00:31:40
>>399
申し訳ありません。情報が足りませんでした。
私の作った処理でjはキューした時点では値は確定していません。
キューが実行された瞬間にさらに処理をして値を設定するようにしたいのです・・・。
401:デフォルトの名無しさん
09/03/25 00:37:42
このように呼び出し元のクラスを参照し、値を書き換えるクラス
なら引数にrefを付ける
でも、俺なら3つクラス作って別のクラスでpublic void Do()を実装する
402:デフォルトの名無しさん
09/03/25 00:38:17
IEnumerable<int> Process()
{
for(int i = 0; i < 10; i++)
{
yield return i;
}
for(int i = 10; i < 20; i += 2)
{
yield return i;
}
while(true)
{
yield return 20;
}
}
これが一番シンプルだと思うけど
可変の部分があるならその部分を引数にすればいい
403:デフォルトの名無しさん
09/03/25 00:51:08
>>401
C#でクラスを引数に設定した場合は参照渡しだったと記憶していますが、
あえて明示的にrefをつけるというのはどのような意図を以て行うのでしょうか?
また、3つクラスを作ると仰られましたが、どのように分割するのでしょうか?
Processにあたるクラスは、いろいろな種類を作ろうと考えています。
今回挙げた単純な加算だけではなく、四則、べき乗、などなど・・・。角度を扱う可能性もあります。
もしよろしければご教示お願いいたします。
>>402
かなり私の求めている正解に近いものかもしれません。
頭の中にあった蟠りが一つ解けて、理解が深まりました。
IEnumberableを使うということは考えてもいませんでした。
お答えくださり本当にありがとうございます。
404:デフォルトの名無しさん
09/03/25 00:54:45
(?_?)
405:デフォルトの名無しさん
09/03/25 01:09:07
>>403
オブジェクトを渡すときは参照の値渡し
違いはググれ
> 今回挙げた単純な加算だけではなく、四則、べき乗、などなど・・・。角度を扱う可能性もあります。
どこまで裾野を広げたいのか分らないが,四則"計算",べき乗"計算"と計算という概念で分類すればいいんでないか?
あと,角度を"扱う"っていうのが,どういう意味をさしているのか具体的に言わないと扱えないぞい
406:デフォルトの名無しさん
09/03/25 01:18:45
>>405
角度でラジアンを持ちますが、ラジアンでπ2以上または-π2以下になった場合に丸められます。オーバーフロー防止です。
ですが、よくよく考えてみれば>>402さんの処理でreturnするときにreturn i % (Math.PI * 2);などと記述すればよいのかもしれませんね。
このような稚拙な質問に丁寧にお答えくださり本当にありがとうございました。
407:デフォルトの名無しさん
09/03/25 03:44:54
「オブジェクト志向の設計思想」云々言ってて解が>>402・・・いみふ
408:デフォルトの名無しさん
09/03/25 04:57:21
もう終わった話題のようだが、
stateパターンのようなことをやりたかったんだろうか?
409:デフォルトの名無しさん
09/03/25 07:08:14
>>393(>>373>>386>>376)
勘違いするやつが現れないように代わりに答えておこうか。
まず先に一言、[Flags] enum に限れば「(e & MyEnum.Foo) != 0」は基本 NG だが
元の例はそもそも [Flags] enum じゃないから関係ない。
で、enum の話しに戻すと、
[Flags]
enum MyEnum { A = 0x1, B = 0x2, AB = A | B }
var e = MyEnum.A;
if((e & MyEnum.AB) != 0) {
Console.WriteLine("I'm AB.");
if((e & MyEnum.AB) != MyEnum.AB) Console.WriteLine("Really?")
}
例え Flags が付いていたとしても、全ての定数が排他とは限らない。
結合定数を定義することは十分有り得るし、Keys のような特殊な例もある。
「... != 0」と書けるのは、事前に列挙定数の具体値に関する知識を持っていて、
大丈夫であることが分かっている場合のみ。
410:デフォルトの名無しさん
09/03/25 07:36:31
>>407
私の書いたソースではあれがネストしていたんです。
呼び出し元の呼び出し元の呼び出し元の・・・という形で参照しているので、
可読性が大変悪く、動作の高速性よりソースの可読性や整備性を重視したオブジェクト指向の設計思想に反していると感じたのです。
411:デフォルトの名無しさん
09/03/25 09:27:24
オブジェクト指向なんてのは
それに従ってさえいればいいコードが書けるというような
万能の方法論では全く無いからな
412:デフォルトの名無しさん
09/03/25 10:53:22
Formの状態についてお願いします。
状態 通常 最大化
サイズ (800,600) (1280,1024)
Formが通常→最大化され、閉じられた場合に
最大化される前のサイズをapp.configにひとつの設定要素として保存させたいのですが、
最大化された後のサイズが保存され、うまくいかないです・・・
Form1_Resizeのイベントでは無理でしょうか?
413:デフォルトの名無しさん
09/03/25 10:57:32
RestoreBoundsで通常時のサイズを取得できるが。
414:デフォルトの名無しさん
09/03/25 10:59:37
>>413
瞬殺されました
どうもありがとです
415:デフォルトの名無しさん
09/03/25 23:05:24
異なるスレッドで作成されたControlをAddすることは可能でしょうか。
別スレッドのContextに設定されたフォームが閉じられた時、そこに使用されていたControlを再利用したいのですが。