ふらっとC#,C♯,C#(初心者用) Part69

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっとC#,C♯,C#(初心者用) Part68
http://hibari.2ch.net/test/read.cgi/tech/1294921393/

■関連スレ
C#, C♯, C#相談室 Part64
http://hibari.2ch.net/test/read.cgi/tech/1294734221/
VB.NET質問スレ(Part35)
http://hibari.2ch.net/test/read.cgi/tech/1284423653/
くだすれC++/CLI(初心者用)part2
http://pc12.2ch.net/test/read.cgi/tech/1268613679/

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

直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php
2デフォルトの名無しさん:2011/01/29(土) 12:10:39
.NETの知識が2.0あたりで停止してるんだけど
世間はどうなっちゃってますか
3デフォルトの名無しさん:2011/01/29(土) 12:24:07
var list = new List<dynamic> { new { Name = "A, Age = 20 }, new { Name = "B", Age = 30 } };
var adultNames = from x in list where 20 <= x.Age select x.Name;
foreach (var name in from x in adultNames) { Output(str: adultNames); }
こんなことになってる
4デフォルトの名無しさん:2011/01/29(土) 12:33:20
>>3
”の片側が省略可能になっているとは・・・・
5デフォルトの名無しさん:2011/01/29(土) 12:38:55
世間は知らんけど、俺の中ではSystem.Linq.Expressionsブームがずーっと続いてる
6デフォルトの名無しさん:2011/01/29(土) 12:43:14
System.Linq.Expressionsは命名が失敗してるのが気持ち悪い
4.0でDLRのコード生成用ASTと統合されてLINQとあまり関係なくなってるので
System.Expressionsにすべきだった
7デフォルトの名無しさん:2011/01/29(土) 13:53:37
>>6
それはあるよね。
あと、式と呼べる範囲越えたけど今まで通り Expression Tree だったり。
8デフォルトの名無しさん:2011/01/29(土) 14:08:57
そもそも統合する必要ないよね
LINQ to SQLのようなものの実装が難しくなりすぎるからC#でExpression Tree V2の
フルセットがサポートされることはどうせ永遠にないだろうし
どこまでがクエリ用なのかはっきりさせたほうが良かったと思う
Expession.Compileも要らん
9デフォルトの名無しさん:2011/01/29(土) 14:32:15
>>8
Expression<<Func<T,bool>>を引数にしたQRMを実装する時に、
引数に依存していない部分をCompile().Invoke()で事前評価したいから必要
10デフォルトの名無しさん:2011/01/29(土) 14:57:39
非接続型のデータ接続でDBのテーブルを参照して処理するプログラム書いてるんだが

処理に必要なテーブルをすべて結合するSQL命令文字列を
SqlCmdに渡して実行して、SqlDataReaderからデータテーブルに必要な項目をすべて読みとってコネクションをクローズ
処理はデータテーブルに対して実行してる

このやり方より効率よくて可読性に優れている書き方とかない?
11デフォルトの名無しさん:2011/01/29(土) 14:58:59
すいません、
1行目:○ 接続型のデータ接続でDBのテーブルを参照して処理するプログラム書いてるんだが
     × 非接続型のデータ接続でDBのテーブルを参照して処理するプログラム書いてるんだが
12デフォルトの名無しさん:2011/01/29(土) 15:54:56
すみません。プログラムとか何にもしらないのですが、初心者用と書いてあるので
ここで聞いてみます。

僕は、この前の春に中学を卒業した16歳のものです。今、インターネットカフェというところから
書き込んでいます。

家計の事情で今は土木関係で働いているのですが、僕はもともと虚弱体質でパソコンとかの仕事の方が似合いそうです。
そこで、プログラマというのになりたいのですが、いまから勉強してもなれますか?やっぱ高校とかでないとなれませんか?

給料がたまったので、こんどパソコンを買いたいなとおもっています。それで、よければ、勉強してみたいと思います。
がんばれば、プログラマーになれますか?
13デフォルトの名無しさん:2011/01/29(土) 16:05:26
ちょっとだけよ、アンタも好きね、まで読んだ。
14デフォルトの名無しさん:2011/01/29(土) 16:40:00
>>12
プログラム板は技術に関する板
プログラマ板が仕事に関する板

一応答えるとパソコン使って文章が書けるんだったら、根気はいるが習得は可能
ただし、プログラマーになったとして・・・という感じ
15デフォルトの名無しさん:2011/01/29(土) 18:51:22
string型の文字列"ABC123"の順番をひっくり返す簡単な方法はありませんか?
char[]にして繋げるくらいしか思いつかなくて、
これで良いのか悩んでます
16デフォルトの名無しさん:2011/01/29(土) 19:01:04
Reverse
17デフォルトの名無しさん:2011/01/29(土) 19:01:27
>>15
それでOKでしょ。
むしろどこに悩む必用があるのか理解できない。
18デフォルトの名無しさん:2011/01/29(土) 19:04:50
なんだと
19デフォルトの名無しさん:2011/01/29(土) 19:06:01
public static string Reverse(string s)
{
Stack<string> stack = new Stack<string>();
for (int i = 0; i < s.Length; i++)
stack.Push(s.Substring(i, 1));
string ns = string.Empty;
for (int i = 0; i < s.Length; i++)
ns += stack.Pop();
return ns;
}
20デフォルトの名無しさん:2011/01/29(土) 19:10:44
Math.Floor(Math.Log(long.MaxValue,10)) + 1じゃねーの?前スレ
21デフォルトの名無しさん:2011/01/29(土) 19:40:41
52ビットのこと?
アレはdoubleの仮数部の長さ

あとMath.Ceiling(Math.Log10(long.MaxValue))にしとけ
22デフォルトの名無しさん:2011/01/29(土) 19:50:38
そこでBigInteger
23デフォルトの名無しさん:2011/01/29(土) 20:01:53
>>21
数が10のべきの時に桁数間違えるだろそれ
24デフォルトの名無しさん:2011/01/29(土) 20:21:18
>>22
BigInteger.Logは内部でMath.Log使ってるのでMath.Logより精度が悪い
Math.Log10使うと10^15で誤差が出るけど、BigInteger使った場合は10^9で話にならんレベル

>>23
long.MaxValueだから大丈夫
25デフォルトの名無しさん:2011/01/29(土) 21:36:32
つうかToString().Lenghがスマートじゃないと考える感覚がわからん
26デフォルトの名無しさん:2011/01/29(土) 21:40:11
それ、発想がVB厨っぽいから実世界では言わない方がいいよ
煽りじゃなくて真面目な話。
27デフォルトの名無しさん:2011/01/29(土) 21:43:05
数字を文字で判断するなって正規表現の完全否定じゃないか
28デフォルトの名無しさん:2011/01/29(土) 21:45:10
数字と数値は違います
29デフォルトの名無しさん:2011/01/29(土) 21:50:24
目的が達成されれば手段は問わん
30デフォルトの名無しさん:2011/01/29(土) 21:50:26
サロゲートペアとか考え出すと嫌になる
31デフォルトの名無しさん:2011/01/29(土) 21:52:27
10は2進数だと1100の4桁、桁なんて言い出した時点で文字データだろ
32デフォルトの名無しさん:2011/01/29(土) 21:55:04
Math.Atan2()って何項目までテイラー展開してるの?
33デフォルトの名無しさん:2011/01/29(土) 21:56:52
パターンを文字の並びで表現するのは必然性がある(でなけりゃ他にどういう選択肢がありうるのだ)が、
整数の桁数を数えるのに一旦文字列に変換するのはどこにも必然性がない。

目的に対して手段が直截的でない。

それに内部の処理を考えたら無駄が多すぎ。

(1) バイナリをpacked BCDに変換
(2) packed BCDをアンパック
(3) アンパックバイト列を1バイト毎に文字コードに変換
(4) 0サプレス
34デフォルトの名無しさん:2011/01/29(土) 22:07:33
文字列にして数える、実に直観的でわかりやすい
内部がどうとかまったく気にする必要はない
35デフォルトの名無しさん:2011/01/29(土) 22:08:12
ToString().Lengthでいいじゃんもう。読みやすいし
36デフォルトの名無しさん:2011/01/29(土) 22:09:50
桁を数える必要がある時って、大概文字列にして表示する時だと思うが・・・
37デフォルトの名無しさん:2011/01/29(土) 22:25:22
ToString()を2進→10進変換ととらえれば何の問題もない
ただConvert.ToInt64(string).ToString().LengthとかだとかなりVB臭
38デフォルトの名無しさん:2011/01/29(土) 22:28:01
こいつVB臭って言いたいだけじゃないの?
39デフォルトの名無しさん:2011/01/29(土) 22:40:35
とりあえずVB馬鹿にしときゃ一端のプログラマに見られるからとかアフォな理由だろう
現場にもこういう奴はたまにいるけど、周りは大抵呆れている
40デフォルトの名無しさん:2011/01/29(土) 22:45:20
美しい実装ってシンプルであるのが第一だと思うけど、奴は感覚がちょっと違うよね
41デフォルトの名無しさん:2011/01/29(土) 22:48:42
真のVBerはコレクションを特定メンバについてソートするのにデータセットを使う
42デフォルトの名無しさん:2011/01/29(土) 22:54:29
VBを馬鹿にしてる奴はいないと思うけどね。
よく分からん被害妄想だな。

とりあえず本気でToString().Lengthで誰に見せても恥ずかしくないコードだと思ってるのなら、
率直にいってそれはかなりおかしい
43デフォルトの名無しさん:2011/01/29(土) 22:57:08
前スレ>>966
いろいろ探してMatch.Groupがなかったんで
もしかしてMatch.Groupsですか?
44デフォルトの名無しさん:2011/01/29(土) 22:57:23
VB厨だのVB臭だのどう見ても揶揄してるだろ
45デフォルトの名無しさん:2011/01/29(土) 22:59:08
ちょっと予断だけど、Int64.ToString()ってスレッドのNumberFormatInfoが何でも
アラビア数字で桁区切りなし、0パディングなしの文字列が返ってくるって考えてよかったっけ?
46デフォルトの名無しさん:2011/01/29(土) 23:00:16
>>44
例えばアニヲタを馬鹿にするのとアニメを馬鹿にするのは別問題。
47デフォルトの名無しさん:2011/01/29(土) 23:02:06
桁を数えるのは、大体その数値を表示する為
対数で桁数えてから文字にして表示していたらバカにしか見えないな
48デフォルトの名無しさん:2011/01/29(土) 23:03:20
むしろMS-DOSの時代じゃあるまいし、数値を表示するのに桁数が必用になる場面なんてあるのか。
49デフォルトの名無しさん:2011/01/29(土) 23:04:54
>>45
> 値が負の場合はマイナス記号を伴い、先行ゼロを含まない 0 から 9 の一連の数字から
> 構成される、このインスタンスの値の文字列形式。

> 戻り値は、一般数値書式指定子 ("G") および現在のカルチャの NumberFormatInfo を使用して書式設定されます。
50デフォルトの名無しさん:2011/01/29(土) 23:07:14
それって明示的にInvariantCulture指定しないとカルチャ依存ってことじゃね?
51デフォルトの名無しさん:2011/01/29(土) 23:08:20
>>46
つまり今回の例だとVB使っている奴は馬鹿だけどVBは馬鹿にしていないってことでおk?
52デフォルトの名無しさん:2011/01/29(土) 23:08:30
"D"でいいんじゃない?
53デフォルトの名無しさん:2011/01/29(土) 23:10:04
>>51
VB厨≠VBユーザー
54デフォルトの名無しさん:2011/01/29(土) 23:13:24
>>53
ふむ、ではVB厨とは?
55デフォルトの名無しさん:2011/01/29(土) 23:14:38
こんな話いつまで続けるの?
56デフォルトの名無しさん:2011/01/29(土) 23:16:35
めんどくさいから言わなかったけど、>>26>>37は別人だぞ
あと>>37自身もVBプログラマだぞ
57デフォルトの名無しさん:2011/01/29(土) 23:19:59
数値の桁数を返すメソッドを文字数で実装したら死ぬべきだけど
その場で適当に使う分にはどうでもいい
58デフォルトの名無しさん:2011/01/29(土) 23:55:23
桁数を返すメソッドの用途って学校の宿題だけじゃね?
59デフォルトの名無しさん:2011/01/30(日) 00:02:13
除算後の有効数字を決めたい、なんて用途は考えられるけどね例えば。
まあ何かしら必用な場面はあるとは思う
60デフォルトの名無しさん:2011/01/30(日) 00:08:49
結局はその場で考えろ、と
61デフォルトの名無しさん:2011/01/30(日) 00:29:04
string[] temp = GetFileName();

// エラーではない場合、この行を実行
if (temp[0] != "")
{
 // 検索するパターン
 string pat = @"\[(?<circle>[^\]]*)\]\s*(?<title>.*)";

 Regex r = new Regex(pat);

 // フォルダ名を分ける処理
 // 変数iは全体の回数、変数pは名前分けが実行された回数
 int i = 0,p = 0;

 foreach (string n in temp)
 {
  Match m = r.Match(temp[i]);

  if (m.Success)
  {
   // この行でエラー
   circle[p] = m.Groups["circle"].Value;
   title[p] = m.Groups["title"].Value;
   p++;
  }

  i++;
}

ここまでは来たのですが、"// この行でエラー"と言うところで例外エラー("オブジェクト参照がオブジェクトインスタンスに設定されていません")
なぜエラーが出るのか教えてください・・・
62デフォルトの名無しさん:2011/01/30(日) 00:33:47
circleやtitleはどう確保してるの?
63デフォルトの名無しさん:2011/01/30(日) 00:34:28
circl[]を初期化しているの?次の行も怪しいが
64デフォルトの名無しさん:2011/01/30(日) 00:38:14
>>61
そういう処理は

GetFileName()
.Select(name => r.Match(name))
.Where(m => m.Success)
.Select(m => new
{
Circle = m.Group["circle"].Value,
Title = m.Group["title"].Value
});
6561:2011/01/30(日) 00:55:29
>>62
circleとtitleはクラスの上の方ににpublic string[] 変数名で確保しています

>>63
初期化しないといけないんですか?

>>64
やってることがさっぱりわかりません
たまに出てくる => ってどういう意味なんですか?
66デフォルトの名無しさん:2011/01/30(日) 01:01:06
67デフォルトの名無しさん:2011/01/30(日) 01:01:11
=>はラムダ式
左辺が受け取るパラメータで右辺がそれを行う式
LINQ、ラムダ式どころかデリゲートとかも分からんのか?
68デフォルトの名無しさん:2011/01/30(日) 01:12:38
>>66
今やってみたんですが、初期化の時点でエラー出てしまいました・・・

>>67
デリゲードもわからないです・・・
69デフォルトの名無しさん:2011/01/30(日) 01:21:36
>>68
リンク先参考に初期化のやり方勉強してね
70デフォルトの名無しさん:2011/01/30(日) 01:25:27
初期化っつーか、ちゃんとnew stringしてんの?
71デフォルトの名無しさん:2011/01/30(日) 01:27:42
foreachのnはどこへ行った?
もうちょっと基礎を勉強してから出直した方が早いんじゃないかなあ
7261:2011/01/30(日) 01:44:51
基礎からやり直したほうがいいですか・・・
やっぱりネットだけでC#マスターしようとすると難しいですか?
書籍とか購入したほうがいいですか?
73デフォルトの名無しさん:2011/01/30(日) 01:48:30
>>72
LINQはともかく、イベントとかも関係するから
デリゲートは覚えたほうがいい

書籍に関しては否定しないが、MSDNとかでも勉強はできる
http://msdn.microsoft.com/ja-jp/ff357685
74デフォルトの名無しさん:2011/01/30(日) 01:56:10
とりあえず不明な点はmsdnを調べる習慣をつけることだな
75デフォルトの名無しさん:2011/01/30(日) 02:16:48
>>73
ありがとうございます
ちょっとここで勉強してみます

>>74
MSDN見るようにします・・・
76デフォルトの名無しさん:2011/01/30(日) 02:23:08
>>73
いやLINQこそ覚えて欲しい
77デフォルトの名無しさん:2011/01/30(日) 03:06:10
>>76
LINQは覚えたほうが便利なのは確かだが、いきなりは無理だろ
デリゲート、ジェネリック、ラムダ式と順を追って覚えてからじゃないと意味が無い
LINQがどうやって構成されているか理解していない奴に使われちゃ
徒にバグを生み出されるだけ
78デフォルトの名無しさん:2011/01/30(日) 03:06:25
そんなの後回し後回し
79デフォルトの名無しさん:2011/01/30(日) 03:15:24
彼、foreachマスターしていないのに・・・
80デフォルトの名無しさん:2011/01/30(日) 03:21:39
腹減ってる奴に魚渡したってその場限りだろ
釣りの仕方を教えりゃ次にも繋がるぞ
81デフォルトの名無しさん:2011/01/30(日) 03:22:14
foreach の前に collection をだな・・・
82デフォルトの名無しさん:2011/01/30(日) 10:12:36
ヒドイ
83デフォルトの名無しさん:2011/01/30(日) 14:17:39
コンポーネントクラスを作成すると
デフォルトでIContainerを引数にとるコンストラクタが作成されますが、
これはどういう場合に必要なんですか?
Controlsプロパティを持つコントロールを継承する場合?
84デフォルトの名無しさん:2011/01/30(日) 14:19:53
最後の行は無視で!
85デフォルトの名無しさん:2011/01/30(日) 14:32:50
インターフェースに定義されてるメソッドを見ればなんとなく分かると思うけど
親に自分で追加したり削除したり、兄弟を見たりできる
86デフォルトの名無しさん:2011/01/30(日) 14:49:06
Int32型の+や-なんかの組み込み演算って、
内部ではどういう処理してるんですね
87デフォルトの名無しさん:2011/01/30(日) 14:59:06
組み込み型の演算子は普通に対応する IL 命令にコンパイルされてる。
88デフォルトの名無しさん:2011/01/30(日) 15:17:59
>>85
それはDispose対象を管理していると考えて良い?
結局IContainer引数のコンストラクタが必要なのはUserControlぐらい?
89デフォルトの名無しさん:2011/01/30(日) 15:29:12
子Controlは別管理してる
90デフォルトの名無しさん:2011/01/30(日) 15:40:39
原点x,y から x1,y1 へ伸びているベクトルvの長さを変えて
新しくできる x2,y2 を求める場合はC#でどのように書けばいいでしょうか?
角度は変えません。ベクトルの長さだけを変更します。

0.8倍とか1.5倍とかそんな感じです
91デフォルトの名無しさん:2011/01/30(日) 15:43:04
>>87
そうすると組み込み演算子で同等の処理が出来る、
bigIntとかbigDecimalみたいなのは作れないって事ですか?
92デフォルトの名無しさん:2011/01/30(日) 15:44:23
>>90
ピタゴラスの定理。
中学校で習う数学ですよ。
93デフォルトの名無しさん:2011/01/30(日) 15:45:50
C#の話じゃなさそうだけど
94デフォルトの名無しさん:2011/01/30(日) 15:47:28
90はピタゴラス関係なくね
単位ベクトルv=(x1-x,y1-y)だろ
原点+nv
95デフォルトの名無しさん:2011/01/30(日) 15:49:34
>>94
確かにそうだねw
中一で習う相似の考え方でいける
96デフォルトの名無しさん:2011/01/30(日) 15:50:10
>>91
なんか聞いてるとJavaの話臭いんだけど
Javaは演算子オーバーロードできないからできないよ
97デフォルトの名無しさん:2011/01/30(日) 16:16:10
>>95
いや、92が一番アホってことだろ
言わせんな
98デフォルトの名無しさん:2011/01/30(日) 16:26:35
まあ>>95>>92は同一人物なんですけどねw

ただ、矢印の内部表現を支点の座標、単位ベクトル、長さでの3つの値で表現するのなら、
いずれにせよ三平方の定理は必用になる。
99デフォルトの名無しさん:2011/01/30(日) 16:31:39
ああそうだね、えらいね
100デフォルトの名無しさん:2011/01/30(日) 16:37:19
長さが絶対値で書かれてないんで、ベクトルの長さを知る必要はない
101デフォルトの名無しさん:2011/01/30(日) 16:37:26
>単位ベクトルv=(x1-x,y1-y)だろ
>原点+nv

x + vx * n , y + vy * n

これであってますか?
102デフォルトの名無しさん:2011/01/30(日) 16:44:25
間違ってる
103デフォルトの名無しさん:2011/01/30(日) 16:51:59
この程度も分からないのならC#より数学ドリルやるべき
104デフォルトの名無しさん:2011/01/30(日) 17:13:05
lx = x1 - x
ly = y1 - y

lx と ly は1.0倍なんだから、1.8倍ならそれぞれ1.8倍すればいい

原点が(x,y)として(x + lx * 1.8, y + ly * 1.8)
105デフォルトの名無しさん:2011/01/30(日) 17:24:15
たまにはVector構造体のことも思い出してあげてください
106デフォルトの名無しさん:2011/01/30(日) 18:11:46
>>91
内部挙動まで含めて、というのであれば、組み込み型の演算子は特別処理されてるので、
ユーザー定義演算子では同じ結果にはならない。

(string以外の)組み込み演算子 → IL 命令に変換
ユーザー定義演算子 → 静的メソッド呼び出しにコンパイルされる
107デフォルトの名無しさん:2011/01/30(日) 20:02:15
すいません、VSTSの単体テストコードのかきかたで質問です

戻り値がDataTabel型のメソッドをテストしたいんですが、

(テストコード内のテストメソッド内)

DataTabel expected = new DataTabel();
(expectedデータテーブルに想定のデータを仕込む(DataRowを作成して
1行ずつekpected.Rows.Add()していく)処理)
DataTable actual = (テスト対象クラスのインスタンス).(テスト対象メソッド());

ここまでで想定のデータテーブルと実際にメソッドから得られるデータテーブルが
出来ると思いますが、ここから○×を評価するのに
CollectionAssert.AreEqual(expected.Rows[],actual.Rows[]);
の式ですみますか?
それともexpectedとactualの要素をひとつずつ取り出して
Assert.AreEqual(expected.Rows[0][0],expected.Rows[0][0]);
Assert.AreEqual(expected.Rows[0][1],expected.Rows[0][1]);
Assert.AreEqual(expected.Rows[0][2],expected.Rows[0][2]);
Assert.AreEqual(expected.Rows[1][0],expected.Rows[1][0]);
・                     ・
       ・                     ・
のように要素ひとつずつ評価しなければなりませんか?
知っている人いたら、お願いしますm(__)m
108デフォルトの名無しさん:2011/01/30(日) 20:10:40
CollectionAssertでDataRow.ItemArrayの比較とか
109デフォルトの名無しさん:2011/01/30(日) 20:13:48
あ、CollectionAssertは書いてあったか
試してないけど、DataRowのEqualsは同一値の行でもfalseだから、Rowsの比較は無理じゃないか?
110デフォルトの名無しさん:2011/01/31(月) 11:26:43
winformプログラム内部でbitmapオブジェクトを作って絵を描いて
画像ファイルとして保存したりできるけどあれと同じようなことを
silverlightでできますかね?
ファイルの保存を直接ホストマシンのどこかにってのは無理でしょうから(OOB除く)
ブラウザでファイルを保存(ダウンロード)するときのようにダイアログを出して
ユーザーに指定させる感じでもいいのですが・・・
111デフォルトの名無しさん:2011/01/31(月) 11:36:35
・WriteableBitmap
・Silverlight PNG encoderでググる
・SaveFileDialog
Silverlightは専用スレがあるからそっち行けば?
112デフォルトの名無しさん:2011/01/31(月) 12:29:30
>>111
ありがとうございます
専用スレがあったんですね
そっちに行ってみます

あと教えていただいたキーワードで調べてたら別の保存方法もありました
置き土産です
http://soundweaver.jp/blog/post/2010/02/27/Silverlighte382a2e38395e383aae381a6e7b0a1e58d98e381abPNGe794bbe5838fe38292e4bf9de5ad98e38199e3828b.aspx
http://geekswithblogs.net/braulio/archive/2009/07/12/export-canvas-to-png-and-save-it-in-your-local.aspx
113デフォルトの名無しさん:2011/01/31(月) 14:20:35
それ、やってることは>>111と全く同じなんだけどな
114デフォルトの名無しさん:2011/01/31(月) 20:49:08
int型の整数が正の数か負の数か調べる最も速い方法って、
0との大小比較ですか?
115デフォルトの名無しさん:2011/01/31(月) 20:51:15
試せば分かることを人に聞くなよ。
他人を何だと思ってるんだ?
116デフォルトの名無しさん:2011/01/31(月) 20:52:22
屯田兵
117デフォルトの名無しさん:2011/01/31(月) 20:53:09
>>114
あとは0x80000000でbitチェックするか

まあ普通に大小チェックした方がいいw
118デフォルトの名無しさん:2011/01/31(月) 21:03:52
>>114
そんなの気にするならアセンブラを使いなさい
119デフォルトの名無しさん:2011/01/31(月) 21:04:01
OpCodesの解説見ると不等号が一番速そうには見える
が、自分でILを出力して最適化するのが一番じゃねーの?
120デフォルトの名無しさん:2011/01/31(月) 21:12:59
ニーモニックで1ステップになるようなコードを、どうやって最適化するんだよ
121デフォルトの名無しさん:2011/01/31(月) 21:14:51
一般に、比較そのものよりもその後の分岐が実行速度を下げる
気にするなら細かいことよりもまず分岐自体を無くせないか考える
122デフォルトの名無しさん:2011/01/31(月) 21:17:32
ILは結構無意味にスタック操作してたりするよ
JITしたら全部消えるのかもしれんが
123デフォルトの名無しさん:2011/01/31(月) 21:21:02
>>121
大昔のインタープリターのBASICじゃないんだから
124デフォルトの名無しさん:2011/01/31(月) 22:49:26
分岐をなくすってどういう事やるの?
125デフォルトの名無しさん:2011/01/31(月) 22:55:17
3項演算子使うか比較を演算としてそのままbool値の変数にぶち込むとかくらい?
126デフォルトの名無しさん:2011/01/31(月) 22:58:53
同じようなswitchが何度も出てくる場合はクラス分けしてポリモーフィズムにしたりするけど、速度目的ではないな
127デフォルトの名無しさん:2011/01/31(月) 23:07:01
Math.Ceiling((double)(3/4))が1にならないのはどうしてですか?
128デフォルトの名無しさん:2011/01/31(月) 23:08:55
intの3/4が0だから
3.0か3Dにしとけ
129デフォルトの名無しさん:2011/01/31(月) 23:16:19
Math.Ceiling((double)3/(double)4))
Math.Ceiling(3.0/4.0))

3や4という書き方をするとintと扱われる
3.0や4.0と書くとdoubleと扱われる
3.0fや4.0fと書くとfloatと扱われる

というかマウスを乗せると型を表示するはずだが・・・
130デフォルトの名無しさん:2011/01/31(月) 23:22:46
例えば、

if (x < 0) x -= 0.5; else x += 0.5;

の代わりに、

x += 0.5 * Math.Sign(x);

みたいな話かね。
C#はboolをintに暗黙的に変換できたりはしなかったはずだから、

x += 0.5 * (x >= 0);

みたいなことは出来ないよね。
いずれにしろ個人的にはこういうの嫌い。VB厨って言うとまた誰か怒るかもしれんが、
昔N88BASICとか触っててVB厨になったような人が好みそう。
131デフォルトの名無しさん:2011/01/31(月) 23:24:40
あぁ・・・Math.Ceiling()メソッドが実行される以前にカッコの中身が0なのか
ありがとん
132デフォルトの名無しさん:2011/01/31(月) 23:29:04
>>131
予定した結果になってないときはどこかで型が思った物になってなくて
計算誤差が起きてると思った方がいいよ
133デフォルトの名無しさん:2011/01/31(月) 23:29:09
そんな局所的な話じゃなくて、アルゴリズムを工夫するんだよ
数値計算とかの話だけど
134デフォルトの名無しさん:2011/01/31(月) 23:32:24
>>133
アルゴリズム以前の問題だろw
IDE(というかCSコンパイラ?)が扱う数値の型を理解してないことによる誤差なんだし
135133:2011/01/31(月) 23:35:43
申し訳ない
条件分岐の話で>>130へのレス
136デフォルトの名無しさん:2011/01/31(月) 23:38:13
>>135
例えばコントロールのイネーブルにする時、条件式をそのままフラグにぶち込んだりとかね

a.IsEnabled = (a>b && !c);

みたいな

こんな事やっても最終的には同じコードになったりするモンだけどね
137デフォルトの名無しさん:2011/01/31(月) 23:42:23
所詮自己満足の世界
138デフォルトの名無しさん:2011/01/31(月) 23:45:56
数日かかるようなガチな計算になるとそうは言ってられない
まあスレ違いだけど
139デフォルトの名無しさん:2011/02/01(火) 01:47:42
そんなもんC#でやるな
140デフォルトの名無しさん:2011/02/01(火) 02:31:22
テキストボックスの上に選択領域のような形で半透明な四角を描画する方法はありませんか?
ピクチャーボックスやフォームの中にフォームを表示するような形を試してみたのですが
背景色設定や、parentの設定をしても半透明になりません
141デフォルトの名無しさん:2011/02/01(火) 02:35:59
WinFormでアプリ組む以上は無理だったような・・・
選択領域ってのがイメージがよくわからないが
最悪やるとすればPaintイベントとかであれこれやるとかしかないのかもね・・・
142デフォルトの名無しさん:2011/02/01(火) 02:38:35
オーナードロー関連もデフォルトではないのか・・・
143デフォルトの名無しさん:2011/02/01(火) 03:40:37
LINQとかラムダ式とかどうでもいいから、こういうところ直してほしい
全コントロールデフォルトでドットごとのアルファに対応しとけよな
144デフォルトの名無しさん:2011/02/01(火) 08:37:54
だからWPFで対応したんじゃないか
145デフォルトの名無しさん:2011/02/01(火) 10:10:47
>>143
そんなことしようとしたら結局フルスクラッチで描画することになってWPFになっちゃうだろ
WinFormsは2.0で完成してる
146デフォルトの名無しさん:2011/02/01(火) 12:36:19
>>139
型付けがちがちでコーディング中にも教えてくれるとか便利すぎるんだもん
147デフォルトの名無しさん:2011/02/01(火) 13:49:09
ガチな計算ならそんなもん関係ないぞ
整数と実数と配列さえあればいい
148デフォルトの名無しさん:2011/02/01(火) 13:56:17
Form1(親、FormBorderStyleはデフォルトのまま)
Form2(子、FormBorderStyleをFixedToolWindow)

という2枚のFormがあって
Form1からForm2を開くときに

form2.Show(this); //form1のインスタンスを渡す

という感じにしてます。
Form1をアクティブにした際のForm2の挙動が理想だからです。
(Form2がForm1の後ろに回らない。thisを渡さない場合にForm1を
アクティブにするとはForm2がForm1の後ろに回ってします)

ここまでは良かったのですがForm2はあくまでサブなので
Form2の右上のxマークで閉じた際には非表示になるだけ
でいいのでForm2のFormClosingイベントでキャンセルを
行うようにしたのですがForm1のインスタンスを渡した場合は
Form1のFormClosingイベントもForm2に渡ってくるようで
Form1(およびForm2)を閉じることができません

どちらのFormのFormClosingイベントか判断する方法はありますでしょうか?
149デフォルトの名無しさん:2011/02/01(火) 14:04:55
イベント引数確認すれ
150デフォルトの名無しさん:2011/02/01(火) 14:19:13
>>149
ありがとうございます

こんな感じで取れるんですね
            if (e.CloseReason != CloseReason.FormOwnerClosing)
            {
                e.Cancel = true;
                this.Visible = !this.Visible;
            }
151デフォルトの名無しさん:2011/02/01(火) 17:17:41
WPFのユーザーコントロールはコードビハインドを使ってUIの制御をコードからでも行えるけど、
カスタムコントロールだとそのへんどうやるの?
例えばコード側で定義した文字列プロパティをバインドしたTextBoxに、
フォーカスを取得したら全選択状態にする機能をつけたいとき、XAMLだけでは難しい。
Name属性を使ってコントロールを定義してるコード側で要素をいじくることもできるけど、
テンプレートの差し替えが可能なカスタムコントロールにおいて
バインドする相手をTextBox限定にしてしまうようなことは避けたい。
できれば表示とロジックにおける「表示」にXAMLとコード(そのXAML専用)をまとめて、
テンプレートの差し替えでまとめて替えられるような形にできればと思うんだけど、
ResourceDictionaryにはコードビハインド付けられないし、このへんどうやってるのかな、と。
152デフォルトの名無しさん:2011/02/01(火) 18:05:11
諦めてTemplatePartでTextBox決め打ち
SilverlightのNumericUpDownもそうなってる
TextBoxが嫌ならTextBoxのテンプレート入れ替えりゃいいんだから何も問題ない
153デフォルトの名無しさん:2011/02/01(火) 18:39:32
>>152
やっぱそうなのかなあ。
ちょっとTextBoxのControlTemplate見たけど、肝心のコードが絡む部分は
TemplatePart使ってるね。
http://msdn.microsoft.com/ja-jp/library/ms752068.aspx

じゃあとりあえずTextBoxに絡む機能を盛り込みたいとき用にTemplatePart用意して、
コントロールの利用者がテンプレートの定義でTextBox使うなら、バインドではなくNameで指定させる。
その他例えばBorderのコンテンツとして表示するだけ、とかはそのままプロパティをバインドさせる。

コントロールのコード部分に、表示に関するロジックがゴチャゴチャ増えるけど
そこはもう気にすんなということか。
154デフォルトの名無しさん:2011/02/01(火) 20:22:19
○年■月31日4時□分◇秒5 のような虫食いの時間と二つのDateTime 1・2がある。
datetime1<虫食いだった時間
かつ
虫食いだった時間<datetime2
を満たすような虫食いを埋める数字があるかどうかを判定したいんですがどうやったらいいですか
虫食いの数と場所と二つのDateTimeの間隔は不定です
155デフォルトの名無しさん:2011/02/01(火) 20:33:28
>>154
意味不明
156デフォルトの名無しさん:2011/02/01(火) 20:33:55
学校の課題臭がするし、本質的にはC#関係ないと思うが
年→月→日→…の順にdt1>dt2、dt1=dt2、dt1+1=dt2、dt1+1<dt2ぐらいに場合分けして考えてみれば?

まあ待ってれば誰かがLINQで書いてくれると思うよ
157デフォルトの名無しさん:2011/02/01(火) 20:34:54
既存の別言語のdll関数をDllImportで参照してるstaticクラスのスタティックメソッドがあるんだけど

いま、このスタティックメソッドを別クラスから使おうとしてるけどうまくいかない なぜだか心当たりある人いますか?
ちなみにデバッグしてみると、スタティックメソッドを実行してる行で「dll関数のdllが見つかりませんでした」って内容の例外が発生してる
158デフォルトの名無しさん:2011/02/01(火) 20:40:04
まず別言語とは何か書け
159デフォルトの名無しさん:2011/02/01(火) 20:50:31
>>157
C++です(externがある)
160デフォルトの名無しさん:2011/02/01(火) 20:52:52
extern "C"は指定した?
正しく関数がエクスポートされてることはdumpbinで確認した?
161デフォルトの名無しさん:2011/02/01(火) 21:15:52
Stopwatch.Start();
Stopwatch.Stop();
とやるだけで15ticksは進んでるんですが、
どういう事なんでしょうか、
この行間で15clockの処理が行われているという事ですか?
それともメソッドそのものが15clockで実行されてるのでしょうか
162デフォルトの名無しさん:2011/02/01(火) 21:18:37
http://msdn.microsoft.com/ja-jp/library/system.diagnostics.stopwatch.frequency%28v=VS.100%29.aspx
タイマ自体がその程度の解像度しかないんでしょ
163デフォルトの名無しさん:2011/02/01(火) 21:37:10
>>157
DLLファイルが見つからないのかDLL内に指定された関数が見つからないのかどっちよ>例外
164デフォルトの名無しさん:2011/02/01(火) 21:41:41
>>161
前者じゃないの?
Frequencyの値はCPUのクロック(の半分?)だと思えば、まあそんなもんでしょ。
165デフォルトの名無しさん:2011/02/01(火) 22:49:35
てす
166デフォルトの名無しさん:2011/02/01(火) 22:57:29
GeckoFX 1.9.1.0 を使ってるんだけど、
geckoWebBrowser1.Document.DocumentElement
を取得しようとすると、必ず、InvalidCastException が出るんだが、
解決策しってる人いたら助けて欲しい。

ちなみに VS2010&Win7(32bit)&WinForms&.Net Framwork 4
で開発してます。
167デフォルトの名無しさん:2011/02/02(水) 00:03:59
List<T>のインスタンス生成時に大きさを指定することってできますか?
168デフォルトの名無しさん:2011/02/02(水) 00:10:27
コンストラクターにint渡せば
169デフォルトの名無しさん:2011/02/02(水) 00:18:56
oh shit
170デフォルトの名無しさん:2011/02/02(水) 00:32:28
omfg
171デフォルトの名無しさん:2011/02/02(水) 00:46:39
1つのクラスを複数のソースファイルに分割して記述するにはどうしたらよいでしょうか?
172デフォルトの名無しさん:2011/02/02(水) 00:48:59
partial class
173デフォルトの名無しさん:2011/02/02(水) 00:49:02
partial
174デフォルトの名無しさん:2011/02/02(水) 00:56:21
複数のファイルに分割して書かないといけないような巨大クラス作るなよ…
あれはWinFormsのデザイナみたいにコード生成するやつで使うためにある。
175デフォルトの名無しさん:2011/02/02(水) 00:59:56
好きに使えばいいよ
176デフォルトの名無しさん:2011/02/02(水) 01:00:00
>>172-173
ありがとうございます

>>174
いえ、どー考えてもこのクラスこれっきゃねーよ
みたいな場合に無理やり意味付けしてクラスを作るのってなんか違う気がするんですよ
そんなときにC/C++だとヘッダ1つにしてソース複数にして書いていたもので・・・
177デフォルトの名無しさん:2011/02/02(水) 01:12:01
分割したくなるレベルのスパゲティコード・・・
178デフォルトの名無しさん:2011/02/02(水) 01:15:34
嫌な予感しかしないけど人に見せないなら好きにやるといい
179デフォルトの名無しさん:2011/02/02(水) 01:20:46
C++使っててクラスが肥大化しがちなのはクラス作ったりインスタンス管理したりするのが面倒だからだろ
C#は気軽にクラス増やせるから自然にクラスが小さくなると思う
180デフォルトの名無しさん:2011/02/02(水) 01:27:53
クラスは小さければ小さい方が見通しがいいに決まってるけど、
*ちゃんと設計すれば*常に小さなクラスに機能分割できるはずだ、とは俺は思わない。
181デフォルトの名無しさん:2011/02/02(水) 01:35:51
クラスの大きさそのものに注目することはあまりないな
182デフォルトの名無しさん:2011/02/02(水) 01:41:35
具体的にいうとゲームのステージなんですけどね
プレイヤ、敵A、B、C、壁、地面、扉、弾、敵弾、爆発A、B、C的なものが
仕様によって相互に影響しあうんですけど

これってやっぱりステージはステージ以外なにものでもないじゃないですか?
(それぞれ意味わかんねーよって人は無視してください、説明するのが面倒ですw)
183デフォルトの名無しさん:2011/02/02(水) 01:50:44
好きに使えばいいよw
184デフォルトの名無しさん:2011/02/02(水) 02:06:23
オブジェクトというより名前空間みたいなもんだよねそれ
別にそれが悪いとも思わないし自分で作ってもそんな感じになりそうだけど
185デフォルトの名無しさん:2011/02/02(水) 02:15:38
俺もゲームだと無駄に複雑になりがちだったけど
デリゲートやイテレータブロックを使うようになってからはましになったな
186デフォルトの名無しさん:2011/02/02(水) 02:16:14
C#は#regionのおかげで、でかいクラスという現実から逃避できるのは有り難い
187デフォルトの名無しさん:2011/02/02(水) 02:29:06
regionを律儀に付けるのも面倒くさくなってきたんだが
188デフォルトの名無しさん:2011/02/02(水) 02:33:34
オブジェクトブラウザがあるじゃあないか。
189デフォルトの名無しさん:2011/02/02(水) 02:44:24
メソッドが長くなった時、分けるのめんどくさくなってregionで誤魔化すことがある・・・いいのか?
190デフォルトの名無しさん:2011/02/02(水) 02:44:26
>>182
それぞれのステージオブジェクトごとにクラスにしていけば普通に分割できそうな気もしつつ、
多重ディスパッチする場合は、確かに1クラス大きくなることはあるなぁ。
ビジターパターンみたいなのもあるけど、あれが書きやすいとも思えず。
191デフォルトの名無しさん:2011/02/02(水) 10:52:12
string s="aewta"のような文字列を
"aaetw"になるようアルファベット順でソートしたいんですが、どうすればいいですか?
192デフォルトの名無しさん:2011/02/02(水) 10:56:16
charの配列と考えて好きなソート使えば
193デフォルトの名無しさん:2011/02/02(水) 13:55:17
文字列の中の一カ所だけをreplaceしたい時はどうすればいいですか?
str.Replace('a','1')
だと文字列中のaが全て1になってしまいます。
194デフォルトの名無しさん:2011/02/02(水) 14:01:16
>>193
条件が決まってるなら簡単じゃね?
最初にでてきた'a'をリプレースとかさ

そういう条件は無いの?
195デフォルトの名無しさん:2011/02/02(水) 14:18:20
特定の箇所(str[x])を置換したいんですけど、単純に
str[x]='1';
だと読み取り専用だからアカンって言われます。
196デフォルトの名無しさん:2011/02/02(水) 14:25:14
昔のVBだとMid(str, x, 1) = "1"とか意味不明な構文があって便利だったんだがな
って調べてみたらVB.NETでも使えるのかw

Substring駆使するかToCharArrayでcharの配列にしてうんたらかんたらだな
197デフォルトの名無しさん:2011/02/02(水) 14:31:14
>>193
IndexOf()で探してSubstring()で置き換えれば
198デフォルトの名無しさん:2011/02/02(水) 14:48:31
そんなあなたにStringBuilder
199195:2011/02/02(水) 14:51:35
一旦removeしてinsertする事にしました。
200デフォルトの名無しさん:2011/02/02(水) 16:58:57
C# 4.0 でファイルを保存する部分を作成しているのですが少し教えてください。

現在5秒に1つの画像データ(1つ1MByte)を作成し、それを24時間365日動作させようとしています。
この時、保存される場所はネットワークディスク(LANDISK)上に作成されます。

通常ネットワーク的に問題なければ保存処理は成功すると思いますが、
何らかの原因でネットワークが切断された時に一旦ローカルへ保存するようにしたいと考えています。

上記前提条件の上で保存処理をFileStreamのBeginWriteを使用し非同期的に処理したいと考えています。
保存順序が処理順序にならなくても構わないのですが、存在しなくなったネットワークに書き込みを行うと
呼び出し元スレッドが固まるのでそのようにしたいと考えています。

例えば30秒固まったとしてその間にもどんどんファイルを保存しようとBeginWriteが呼び出されるようになると思うのですが、実際はこういう運用は問題ありそうでしょうか?
もし、なにかスマートな方法があればいいのですが・・・
(例えばキューに入れてそっちで処理させるとか)
スレッドプールを使用しようとも考えたのですが、ほかの場所でちょこちょことBerginInvokeで表示等を行っている為スレッドプールでスレッドを止める処理が多発した時にUIが固まりそうでちょっとやめてみました。
色々検証して試してみるのがいいんですが、ひとまず動かし始めるまでに時間があまりないので運用だけ開始してあとで変更する方向です。

ぶっちゃけた話、少々バグってても個人的な用途なので問題はないのですが・・・
安定稼働を目指したいのです。

ファイルのサイズ・削除処理等は今の段階では放置しておいてください。

201デフォルトの名無しさん:2011/02/02(水) 17:04:39
ファイルはローカルに保存する。
コピーは別プロセスで。
202デフォルトの名無しさん:2011/02/02(水) 17:08:52
常に最初にローカルに保存しておいて
NASへの保存が成功した時点でローカルを消す
203デフォルトの名無しさん:2011/02/02(水) 17:11:52
長いことC嫌いで通してきたけどブルーバックスの見てわかるC言語入門(CD−ROM同梱 を買ってきた。

なんでも聞いてくれ。
204デフォルトの名無しさん:2011/02/02(水) 17:16:00
困ったときのTask
205デフォルトの名無しさん:2011/02/02(水) 17:22:23
>>203
なんでこのスレに来たんですか?
206デフォルトの名無しさん:2011/02/02(水) 17:28:16
ありがとうございます。

>>201-202
一旦それも考えましたが出来るだけローカルPCのHDDやSSDの寿命を削りたくないので
可能な限りローカル保存は避けておきたいのです・・・
もし、他の方法でダメならこの方法が確実に残せるかな・・・と

>>204
折角4.0使うのだからそれがよさそうな気がしてきました。
MSDN見た感じも小さな処理を回数こなす場合はこれがよさそうなことも書いてありましたし

アドバイスありがとうございました。
207デフォルトの名無しさん:2011/02/02(水) 18:28:12
>>205
初心者だからだヨ

有名なライブラリやそれでサポートされる関数なんてひとつも知らないヨ←そうゆうものだとは知っている
208デフォルトの名無しさん:2011/02/02(水) 18:44:30
>>192
それを簡単にできる方法を聞いているんですが。
要するに1行で
Sort(s.begin(),s.end())みたいに書きたいのです
209デフォルトの名無しさん:2011/02/02(水) 18:53:11
>>208
短くしたいと思う最新の候補コードを晒してみるとか
210デフォルトの名無しさん:2011/02/02(水) 18:59:58
211デフォルトの名無しさん:2011/02/02(水) 19:52:44
switchの分岐はポリモーフィズムに書き換えられるっていうけど、
こういうコードの時はどう表せるの?

public Unko GetUnko(string key)
{
switch (key){
case Normal: return new NormalUnko();
case Liquid: return new LiquidUnko();
case Lumpy: return new LumpyUnko();
...
}
}

ただたんにオブジェクトを返すようなのならswitchでもいいのかな
212デフォルトの名無しさん:2011/02/02(水) 20:04:15
factories: Dictionary<string, IUnkoFactory>にUnkoの派生クラスのファクトリを登録しておいて
factories[key].CreateUnko() かな。ファクトリはFunc<Unko>でも構わない。
それかDI使う。実質同じようなもんだけど。
213デフォルトの名無しさん:2011/02/02(水) 20:05:38
>>206
5秒ごとにたった1MBのファイルを作るのになんで非同期でやる必要があるのかよく分からない。

それに、FileStreamって一旦オープンしたら、実体のディスクが切断されても
例外も吐かなければ固まるなんてこともなかった気がしたけど....
214デフォルトの名無しさん:2011/02/02(水) 21:00:33
普通は利用側の話だと思うけど一応こんな感じに書ける

public Unko GetUnko<T>() where T:Unko,new(){
    return new T();
}
215デフォルトの名無しさん:2011/02/02(水) 21:03:14
利用側が具体的な型に依存してどうする
216デフォルトの名無しさん:2011/02/02(水) 21:09:52
はあ?
217デフォルトの名無しさん:2011/02/02(水) 21:14:36
>>200
書き込み用にワーカースレッドを一つ作成。
書き込みファイル情報はキューに貯める。
まあ劣化Producer-Consumerパターンみたいな感じで行ける。
Write処理自体を非同期でやるのは今回に関してはあまり意味ないからやめとけ。
確かスレッドセーフなBlockingQueueみたいのも.NET4じゃできてたと思うから簡単だろ。
ああ、まあもちろんTaskでやってもいいけど。
218デフォルトの名無しさん:2011/02/02(水) 21:25:15
>>214が要件を満たすには、
(Unko)GetMethod("GetUnko").MakeGenericMethod(types[key]).Invoke(this);って動的に型指定して使わないといかんね
そんなことするんだったらActivatorに渡すだろ
まさにUnko
219デフォルトの名無しさん:2011/02/02(水) 21:34:45
>>211はこの手の例として始めから合ってないからw
インターフェースを守る努力とか無意味だし
220デフォルトの名無しさん:2011/02/02(水) 21:39:22
>>211は別におかしくない
Unkoを利用する側がUnkoの具体的な実装クラスを知らなくて済むようにするためのパターン
さらに、GetUnkoを提供するクラスも具体的な実装クラスを知らなくて済むようにしたいならDIになる
221デフォルトの名無しさん:2011/02/02(水) 21:48:55
>switchの分岐はポリモーフィズムに書き換えられる
こういう目的には合ってないと思うけどなぁ
もしこの例でうまく説明できるなら、頑張って教えてあげなよ
222デフォルトの名無しさん:2011/02/02(水) 21:53:51
それは>>212で答え出てるだろ
abstract factoryでFA
223デフォルトの名無しさん:2011/02/02(水) 21:59:19
VC#Express落として2時間の若輩ですが、質問です。
ポインタ操作する際に、unsafeでビルドする必要があるみたいなのですが、unsafeでビルドした際にデメリットのような物はあるのでしょうか?
BitmapData.Scan0で得たポインタに対して操作したいので、unsafeは現状避けられなさそうですが。

それと、MouseEventArgs型のボタン取得で「左ボタンだけ押されている」は簡単に処理できるのですが、「左ボタンは押されているが、他のボタンも押されている」
はどう取得すればいいのでしょうか
  if ((e.Button & MouseButtons.Left) == true)
では型エラーになってしまいます。
224デフォルトの名無しさん:2011/02/02(水) 22:01:05
こうかな
if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
225デフォルトの名無しさん:2011/02/02(水) 22:02:03
BitmapData.Scan0はunsafeでなくても配列にコピーしたりして使えたと思う
ググれば出てくるはず
226デフォルトの名無しさん:2011/02/02(水) 22:02:28
ちなみにやってることはマスクってやつね
MouseButtons.Leftの具体的な値はしらんが
227デフォルトの名無しさん:2011/02/02(水) 22:03:22
unsafeはセキュリティの制限がかけられた環境では動かなかったりする
ASP.NETとかClickOnceとかSilverlightとか(設定による)
228デフォルトの名無しさん:2011/02/02(水) 22:07:50
設定によるね
229デフォルトの名無しさん:2011/02/02(水) 22:11:32
Silverlightは問答無用でunsafe動かないけどな
230デフォルトの名無しさん:2011/02/02(水) 22:14:01
Unkoについて必死に議論するのやめw
HogeとかHageとか他のにしろやw
231デフォルトの名無しさん:2011/02/02(水) 22:17:24
IUnkoとコンクリートUnko
232223:2011/02/02(水) 22:17:32
ありがとうございます。
マウスの方は問題ありませんでした。
unsafeのほうはMarshal.Copy()でbyte[]へコピー、いじった後に再度Marshal.Copy()でいけそうです。
通常のWindowsアプリなのでunsafeでポインタ操作と比較して考えてみます。
233デフォルトの名無しさん:2011/02/02(水) 22:26:17
うんこw
ファクトリーメソッドとファクトリーパターンの違いが分かってない奴多そうだな
234デフォルトの名無しさん:2011/02/02(水) 22:31:57
ポインタ操作にunsafeなんか使わなくても大抵マネージドでなんとかできるよ
235デフォルトの名無しさん:2011/02/02(水) 22:32:02
>>211のメソッド自体はFactory Methodで
>>211のswitchをポリモーフィズムで置き換えるとしたらAbstract Factoryってことだろ
236デフォルトの名無しさん:2011/02/02(水) 22:32:39
デザインパターンは間違って覚えるためにある
237デフォルトの名無しさん:2011/02/02(水) 22:37:39
別にGoFの信者やってるわけでもないし
238デフォルトの名無しさん:2011/02/02(水) 22:42:10
パターンの目的を忘れて不必要に複雑にしちゃうんだよな
239デフォルトの名無しさん:2011/02/02(水) 22:45:21
>>235
速攻で間違えんなw
240デフォルトの名無しさん:2011/02/02(水) 23:01:03
テンプレートパターンでなくても>>211みたいなのをUnkoのファクトリメソッドと呼ぶことはあるよ
XmlReader.Createはfactory methodとMSDNに書かれてる
241デフォルトの名無しさん:2011/02/02(水) 23:03:29
一番いいデザインパターンを頼む
242デフォルトの名無しさん:2011/02/02(水) 23:39:38
[Export(typeof(Unko), "Normal")] class NormalUnko : Unko { }
[Export(typeof(Unko), "Lumpy")] class LumpyUnko : Unko { }
class Anus {
private CompositionContainer container;
public Unko GetUnko(string key) { return container.GetExport<Unko>(key); }
}
こうだな
243デフォルトの名無しさん:2011/02/02(水) 23:58:30
Unkoはもう禁止ね
244デフォルトの名無しさん:2011/02/03(木) 00:13:37
FooとかBarとかにだな
245デフォルトの名無しさん:2011/02/03(木) 00:17:19
でも何でもいい言葉としてはFooやBarより優れてるな
バリエーションも作りやすいしanus.GetUnkoとか超わかりやすく意図を表現できるじゃん
246デフォルトの名無しさん:2011/02/03(木) 00:28:34
くだらねぇ
247デフォルトの名無しさん:2011/02/03(木) 00:35:23
俺はhogeとかの代わりにunkoをよく使ってるが、普通じゃなかったのか。
248デフォルトの名無しさん:2011/02/03(木) 00:41:00
意味のない言葉であるという共通認識は十分すぎるほどだな
249デフォルトの名無しさん:2011/02/03(木) 00:48:22
絶対に名前を修正しなければならない と迫るにはいい・・・・・・のか?
250デフォルトの名無しさん:2011/02/03(木) 04:49:24
newするだけのクラスにAbstract Factoryを使うというのに衝撃を受けたわw
251デフォルトの名無しさん:2011/02/03(木) 05:04:43
俺もデザパタ覚えたての頃は何にでも適用しまくってたものさ
252デフォルトの名無しさん:2011/02/03(木) 10:45:54
IWebRequestCreateなんかそんな感じじゃね
>>242みたいなことやりだすとfactoryだらけのマジキチコードになるが
Javaワールドではやたらと有難がられるスタイルだ
253デフォルトの名無しさん:2011/02/03(木) 15:05:16
そろそろデザインパターンが理解されてもいい頃
254デフォルトの名無しさん:2011/02/03(木) 15:48:01
IEnumerable<T>.MoveNext()するのと
foreachで回すのって速度に差が出ますか?
255デフォルトの名無しさん:2011/02/03(木) 15:53:23
出ない
特に配列や文字列に対するforeachは最適化されるのでforeachの方が圧倒的に速い
256デフォルトの名無しさん:2011/02/03(木) 15:57:28
むしろforeachの方が速いんですか、なるほど
助かりました
257デフォルトの名無しさん:2011/02/03(木) 16:34:41
List型をintを超える大きさで初期化したい場合、
Add()しまくるしかないんですか?
258デフォルトの名無しさん:2011/02/03(木) 16:36:23
>>257
初期化ってよくわからんがClear()でだめなの・・ってこれはListに何も無い状態になるけど
あとLongなんとかってint以上なかったけ?
259anonymous:2011/02/03(木) 16:38:17
初期化の意味がわからん
260デフォルトの名無しさん:2011/02/03(木) 16:41:00
コンストラクタから配列の大きさを渡して、
インスタンスを作りたいんですが、
オーバーロードにはint型までしか用意されてないので、
longや、もっと大きい配列にしたい場合どうすべきなのかと
261デフォルトの名無しさん:2011/02/03(木) 16:41:43
Capacityを変更するって事でしょ
262デフォルトの名無しさん:2011/02/03(木) 16:42:13
そ・・・そんなに大きいの一気に入れちゃうの?
あふれてきちゃわない?








メモリが
263デフォルトの名無しさん:2011/02/03(木) 16:45:03
List<List<T>>で実データを保持してインデックスや要素数をlongで指定するクラスを作れば
264デフォルトの名無しさん:2011/02/03(木) 16:46:28
Array.Copyにlong版もあるからそんな苦労せず自作できるが、正直どうかと思う
265デフォルトの名無しさん:2011/02/03(木) 16:54:20
仮にint詰め込んだとすると、Int32.MAX:2147483647*int:4byte=8191MiB=約8G
今時のPCなら入るな。8Gの連続領域が確保出来るのかは分からない。

そういうのはメモリマップドファイル使うのが一番いいと思うが…
266デフォルトの名無しさん:2011/02/03(木) 17:30:49
言語仕様上はサポートされてることになってるけど
実際にはuintを越える長さの配列はCLRにサポートされてなかったはず
実行時エラーで死亡
267デフォルトの名無しさん:2011/02/03(木) 18:01:42
そのための多次元配列か・・・
268デフォルトの名無しさん:2011/02/03(木) 18:29:38
List<List<List<int>>>
こんな感じでwwwww
269デフォルトの名無しさん:2011/02/03(木) 18:32:09
>>268
そんなことしなくてもいいだろw
List<int>[]

List<List<int>>

これだけで理論的には相当取れるだろ
270デフォルトの名無しさん:2011/02/03(木) 19:15:45
ところで
Dictionary<long, int> だとlong分確保できるの?
271デフォルトの名無しさん:2011/02/03(木) 19:19:58
>>270
実験してみて
272デフォルトの名無しさん:2011/02/03(木) 19:36:04
実験するにはメモリが足りない
273デフォルトの名無しさん:2011/02/03(木) 19:37:34
あまりにも巨大になるならDB使えとか思うけどなw
DB側でオンメモリにするかどうかを調整してもらってw
274デフォルトの名無しさん:2011/02/03(木) 20:11:08
接続型でSQLサーバー既定のインスタンスに接続して(sa認証)、既定のインスタンスにデータベースUnkoがあったらUnkoに接続してSQL命令分ストリングで
データを取得してSqlDataReaderのReadメソッドでDataTableにデータを取り出すメソッド作ってるんだけどさ

Unkoの存在有無を確認するにはどういうコードを書けばいい?
アットマークit調べても「データベースに指定したテーブルがないか調べる」ってコード例はあったけど
データベースが存在するか調べるコードはありませんでした

現状は↓のようなコードです

private DataTable GetUnkoTable()
{
DataTabel unkoTabel = new DataTable();
string connStr = "Data Source = .\;Initial Catalog = Unko;(ユーザー名パスワードは略)";
using(SqlConnection cSqlConnection = new SqlConnection(connStr)
using(SqlCmd cm = new SqlCmd("select * from T_UnkoMaster",cSqlConnection))
{
// データベース接続を開く
cSqlConnection.Open();
(処理)
}
return unkoTable;
}
275デフォルトの名無しさん:2011/02/03(木) 20:28:53
つうかList自体は一次元のポインタの配列だから
何で定義してあろうが大きさ同じじゃないの?
強いて言えば要素数×IntPtr幅+α(その他データ)
276デフォルトの名無しさん:2011/02/03(木) 20:30:21
違うよ
値型なら sizeof(型)×要素数 (バイト)
277デフォルトの名無しさん:2011/02/03(木) 20:32:49
ま た U n k o か
278デフォルトの名無しさん:2011/02/03(木) 20:33:24
>>274
SELECT * FROM sys.databases
279デフォルトの名無しさん:2011/02/03(木) 20:51:08
*が肛門に見えるな
280デフォルトの名無しさん:2011/02/03(木) 20:59:10
えっ
281デフォルトの名無しさん:2011/02/03(木) 21:03:48
*.*
'A'
282デフォルトの名無しさん:2011/02/03(木) 21:34:52
>>278
dです こんな感じで行けそうですね

private int UnkoCheckInt()
{int num = 0;
string connStr = "Data Source = .\;Initial Catalog = Master;(ユーザー名パスワードは略)";
using(SqlConnection cSqlConnection = new SqlConnection(connStr)
using(SqlCmd cm = new SqlCmd("select count(name) from sys.databases where EXISTS (select name from sys.databases where name = 'Unko')",cSqlConnection))
{cSqlConnection.Open();
num = (int)cm.ExecuteScalar();
}
return num;;
}

private DataTable GetUnkoTable()
{DataTabel unkoTabel = new DataTable();
string connStr = "Data Source = .\;Initial Catalog = Unko;(ユーザー名パスワードは略)";
if(UnkoCheckInt() != 0)
{using(SqlConnection cSqlConnection = new SqlConnection(connStr)
using(SqlCmd cm = new SqlCmd("select * from T_UnkoMaster",cSqlConnection))
{cSqlConnection.Open();
(処理)
}
return unkoTable;
}
else
{return (項目名だけのデータテーブルとか)
}
}
283デフォルトの名無しさん:2011/02/03(木) 21:40:24
>>275
Javaだったら値型は強制的にオートボクシングされてしまうけど
C#のジェネリクスは値型(ユーザ定義の構造体を含む)をそのまま扱える。
284デフォルトの名無しさん:2011/02/03(木) 21:43:47
EXISTSいらんだろ
285デフォルトの名無しさん:2011/02/03(木) 21:49:37
あー
select count(*) from sys.databases where name = 'Unko'

これで十分っすね
286デフォルトの名無しさん:2011/02/03(木) 21:49:54
教えてください
uintの配列の要素[i]が空かどうか調べるのは、if([i]==null)じゃないんですか?
287デフォルトの名無しさん:2011/02/03(木) 21:57:06
>>286
配列を作成した段階で全部0が"入っている"状態になる
288デフォルトの名無しさん:2011/02/03(木) 21:57:10
値型の変数や配列の要素はnullには出来ないんですよ。
だからNullableなんてものの出番があったりする
289デフォルトの名無しさん:2011/02/03(木) 22:03:02
>>287>>288
ありがとうございました。デフォルトは0なんですね。
290デフォルトの名無しさん:2011/02/04(金) 16:21:21
配列を引数で渡して、要素を反転させた配列を戻り値で返してくれるメソッドってありませんか?
Array.Reverseだと元の配列がひっくり返ってしまうようで
291デフォルトの名無しさん:2011/02/04(金) 16:23:51
コピった配列を渡せばいいだけじゃないのか
292デフォルトの名無しさん:2011/02/04(金) 16:30:08
arr.Reverse().ToArray()
293デフォルトの名無しさん:2011/02/04(金) 16:43:14
>>292
oh
ありがとん
294デフォルトの名無しさん:2011/02/05(土) 00:01:30
いやいやあかんだろw
295デフォルトの名無しさん:2011/02/05(土) 00:04:38
(0u & 0x80000000) == 0と
0 == 0
ってどっちが速いんですかぬ
296デフォルトの名無しさん:2011/02/05(土) 00:06:22
どっちも最適化で消えてコスト0

>>294
何が?
297デフォルトの名無しさん:2011/02/05(土) 00:07:55
ストップウォッチで10回計ってみたら、3万てぃっくくらい下が遅かった
298デフォルトの名無しさん:2011/02/05(土) 00:11:55
コンパイル時にあらかじめ計算されるからどっちも単にtrueと書くのと同じ
299デフォルトの名無しさん:2011/02/05(土) 00:16:48
っていうかJIT後の速度なんて建前としては環境依存じゃねーの?
ILレベルの最適化ならともかく
300デフォルトの名無しさん:2011/02/05(土) 00:22:04
いやJITじゃなくてcscの段階で消える
if ((0u & 0x80000000) == 0) A(); else if (0 == 0) { B(); }と書いたら
コンパイル結果は単にA();だ
301デフォルトの名無しさん:2011/02/05(土) 00:48:02
いや、組込演算の実行速度なんか勝手に実測してろって言いたかっただけだ
302デフォルトの名無しさん:2011/02/05(土) 01:23:15
303デフォルトの名無しさん:2011/02/05(土) 01:45:09
>>302
うっかりさんめ
304デフォルトの名無しさん:2011/02/05(土) 03:09:46
多分 if((a & 0x80000000) == 0) と if(a>0) の速度比較しようとして大間違いしたんじゃないかな?
305デフォルトの名無しさん:2011/02/05(土) 04:11:08
Arrayクラスの静的メソッドのArray.Reverse(Array)
LINQの拡張メソッドのEnumerable.Reverse<T>()

>>294は前者と勘違いして、破壊的な並び変えしてからToListでコピー作ってると思ったのだろう。
306デフォルトの名無しさん:2011/02/05(土) 09:27:13
まあLINQ使わずにCloneしてからArray.Reverseした方が早いんじゃねえの?
307デフォルトの名無しさん:2011/02/05(土) 09:33:52
なるほど
308デフォルトの名無しさん:2011/02/05(土) 11:36:52
テキストエディタのファイルを開くダイアログあります。
複数のファイルを削除すると「ファイルの場所」の右のセレクトメニューにフォーカスが移ります。
移したくないので自分でファイルダイアログを作って移さないように制御するのはC#で可能ですか?
Cとかアセンブラとかじゃないと出来ないレベルですか?
309デフォルトの名無しさん:2011/02/05(土) 11:40:56
普通に作れるけど
310デフォルトの名無しさん:2011/02/05(土) 12:47:31
アセンブラとか言い出す時点で何も分かってないのが丸分かりだな
311デフォルトの名無しさん:2011/02/05(土) 12:48:22
むしろアセンブリ言語でやろうとする方がありえねー…w
312デフォルトの名無しさん:2011/02/05(土) 12:51:51
おまえら初心者スレなんだからいじわるしないで答えてやれよ
ちなみに俺は質問の意味がわからん
313デフォルトの名無しさん:2011/02/05(土) 12:55:48
もしかして既存のテキストエディタのファイルを開くダイアログの挙動が気に入らないから
勝手に自分で作ったものに差し替えたいってことか?
DLLのロードをフックして自作のDLLに置き換えてAPI呼び出しを差し替えてやればいいんだったか
C#では無理だけどC/C++でも非常に難しくて大変
314デフォルトの名無しさん:2011/02/05(土) 12:57:27
>>312
俺も知りたい
サクラエディタとnotepad開いてみたけど、どうやったらファイルを複数選択できるんだ?
315デフォルトの名無しさん:2011/02/05(土) 13:13:47
・ファイルを開くダイアログ→Vista仕様の奴は対象外(そもそもファイルの場所って表記が無い)
・複数の→1ファイルでも発生
・セレクトメニュー→ドロップダウンリスト
が正しいのか?

フックでコンテキストメニューの削除を拾って、直後のフォーカス移動を抑制するのはできなくはない気もするけど
C#では低レベルフックしか使えないから諦めた方がいい
316デフォルトの名無しさん:2011/02/05(土) 13:22:43
多用するならC#諦めた方が良いけど、少しならP/Invokeで十分対応出来ない?
317デフォルトの名無しさん:2011/02/05(土) 14:05:49
XPスタイルのOpenFileDialog相当のウィンドウのタイトルの値がそれなりにユニーク(って変な表現)なら、
FindWindow使ってタイマーでポーリングすればダイアログのウィンドウハンドルは
捕まえられるから、後は下記の記事とか参考にしてダイアログの左側のペイン(あれ何って言ったっけ)
のボタンを無効とかにしてしまえばいいのでは?

http://msdn.microsoft.com/en-us/library/ms996463.aspx
318デフォルトの名無しさん:2011/02/05(土) 14:30:49
まあポーリングベースでそれっぽく出来るのは分かるけど、そんな下らない目的のために1プロセス常時稼働させるのはなあ…
319デフォルトの名無しさん:2011/02/05(土) 14:36:27
どっちにしろ常時監視するプロセスは必要じゃないの?
バイナリハックするのでなければ。
320デフォルトの名無しさん:2011/02/05(土) 14:38:13
フックとポーリングじゃコストが
321デフォルトの名無しさん:2011/02/05(土) 14:39:46
一番確実で真っ当なのはAPIフックだろ
面倒だけど
322デフォルトの名無しさん:2011/02/05(土) 14:44:39
まぁそんなどうでもいい挙動のためにフックしてもねえ
323308:2011/02/05(土) 16:09:10
すいません秀丸エディタ使ってます
秀丸エディタでは設定で複数ファイル選択できます
複数のファイルを削除するとセレクトメニューにフォーカスがうつるのでカレントディレクトリがへんなところ開くのでいやなんです
なので秀丸のファイルを開く使わないでマクロで自作したファイルダイアログを呼び出して利用したいと思ってます
やっぱりC#では難しそうですね
324デフォルトの名無しさん:2011/02/05(土) 16:16:02
ファイルを開くダイアログを表示するだけのexeをC#で作ってマクロから起動する
マクロとの情報のやりとりは標準入出力を使う
マクロじゃなくてプラグインとして作って、C++/CLIでC#を呼ぶ手もあるけどそこまでするほどのことでは
325デフォルトの名無しさん:2011/02/05(土) 16:16:37
別にC#関係ないし、秀丸スレ行って聞いてこいよ
326デフォルトの名無しさん:2011/02/05(土) 16:18:20
そもそも、なんでOpenFileDialogでファイルの削除なんかするんだろう。
327デフォルトの名無しさん:2011/02/05(土) 16:30:59
無駄な切り替えとかしたくないのでファイラー使うのいやなんです
C#でファイルダイアログを細かく実装できるかの聞きたかったので秀丸とは関係ありません
328デフォルトの名無しさん:2011/02/05(土) 16:32:56
それは>>309が答え
以下の議論は>>323ですべて無意味になった
329デフォルトの名無しさん:2011/02/05(土) 16:39:05
最後に秀丸から呼べるか聞くんだろ
悪いこたあいわねえから止めとけ
330デフォルトの名無しさん:2011/02/05(土) 16:40:08
呼べるだろ
外部のプロセスとして起動して標準出力を受け取ればいいだけ
ごく一般的な普通のマクロだ
331デフォルトの名無しさん:2011/02/05(土) 16:43:30
>>329
秀丸マクロから外部プログラムの起動は出来るので問題ないですよ
332デフォルトの名無しさん:2011/02/05(土) 16:44:40
>>328
安心してください無意味にはなってないです
秀丸を使ってるだけですので今回の質問は秀丸と関係ない範囲になります
333デフォルトの名無しさん:2011/02/05(土) 16:50:31
>>332
>>313-322はダイアログの作り方についての話じゃないよ
君の質問とは全く関係ない
334デフォルトの名無しさん:2011/02/05(土) 17:00:14
そうでしたか。申し訳ないです。
出来るという答えであると
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.openfiledialog(v=vs.80).aspx
のどのメソットやプロパティが関係しますか?
335デフォルトの名無しさん:2011/02/05(土) 17:05:39
ダイアログ作るんじゃなかったのかよ
全部自作
C#で変にフックとかに手を出して悩むよりその方が早いわ
336デフォルトの名無しさん:2011/02/05(土) 17:14:43
いえダイアログが作りたいんです
ダイアログというのは私は勘違いしてますでしょうか?
こういうのです↓
http://dobon.net/vb/dotnet/form/openfiledialog.html
ダイアログ自体は上記のサイトの通りにして作れるのですが
削除後にセレクトメニューにフォーカスが移るので
このファイルを開く操作を外部プログラム化して秀丸からマクロで呼び出して作りたいと思います
ここでは私が秀丸を使っているだけなのでサクラエディタやTerapadなど外部プログラムを起動できるようにC#でdialog.exeを作ってダイアログを表示するプログラムを作成したいと考えて質問させていただきました

337デフォルトの名無しさん:2011/02/05(土) 17:17:54
>>334
メソッドだMethod。
メソットじゃねー!
338デフォルトの名無しさん:2011/02/05(土) 17:21:39
オープンダイアログは編集するファイルを開く為の物だから、いきなり「削除後」と言われても
何処で何を削除した後なのかイメージできないんですよ
そこから説明できますか?
339デフォルトの名無しさん:2011/02/05(土) 17:50:01
C#で作成したダイアログを開きそのダイアログないでファイルを削除した後を指します
ダイアログでファイルを選択してテキストエディタで開く処理はまでは実装できました
340デフォルトの名無しさん:2011/02/05(土) 18:04:59
ColorDialogとかSaveDialogみたいな、
戻り値を返してくれるフォームを作るにはどういうコード書いたら良いんでしょうか
341デフォルトの名無しさん:2011/02/05(土) 18:28:09
>>340
Form.DialogResult プロパティ
342デフォルトの名無しさん:2011/02/05(土) 18:38:44
あぁ・・・publicなフィールドを用意すれば普通に使えるのか・・・
ありがとん
343デフォルトの名無しさん:2011/02/05(土) 18:44:32
何の話だよ....
344308:2011/02/05(土) 18:48:16
方法が分からないのでファイルダイアログではない方法で実装しましたので〆ます
345デフォルトの名無しさん:2011/02/05(土) 18:52:30
イイハナシダナー
346デフォルトの名無しさん:2011/02/05(土) 20:05:19
347デフォルトの名無しさん:2011/02/05(土) 20:16:07
例えば
01A,tokyo,1.1
02B,osaka,2.2
03C,fukuoka,3.3
のようなcsvファイルがあって、それを構造体に読み込んで表示させるためには
どうしたらよいのでしょうか?
348デフォルトの名無しさん:2011/02/05(土) 20:17:39
行ごとに読み込んで,で分割して構造体にセットする作業を書きます
めんどくさいならFile.ReadAllLinesで読んだれよ
349デフォルトの名無しさん:2011/02/05(土) 20:20:05
>>347
>>348
Microsoft.VisualBasic.dllの
Microsoft.VisualBasic.FileIO.TextFieldParser
350デフォルトの名無しさん:2011/02/05(土) 20:20:32
Microsoft.VisualBasic参照してTextFieldParser使えば
351デフォルトの名無しさん:2011/02/05(土) 20:27:44
>>347なら一行ごとに正規表現キャプチャしたほうがよさそう
352デフォルトの名無しさん:2011/02/05(土) 20:40:01
>>351
fgetcとか使う感じですか?
353デフォルトの名無しさん:2011/02/05(土) 20:40:47
えっ
354デフォルトの名無しさん:2011/02/05(土) 20:41:49
意外な名前が出たな
355デフォルトの名無しさん:2011/02/05(土) 20:44:32
遥かに強力で柔軟なsscanfって感じ
356デフォルトの名無しさん:2011/02/05(土) 20:45:31
>>354 すいません初心者でして…
良かったら1行目を読み込むプログラムお願いできませんか??
357デフォルトの名無しさん:2011/02/05(土) 20:48:34
358デフォルトの名無しさん:2011/02/05(土) 20:49:44
プログラム書いてくれませんかまで言われると
知るかボケって言いたくなるな
359デフォルトの名無しさん:2011/02/05(土) 20:51:31
正規表現は
(\d+)([A-Z]),(\w+),(\d+(.\d)?)
かな
360デフォルトの名無しさん:2011/02/05(土) 20:56:14
>>34

>31>7
361デフォルトの名無しさん:2011/02/05(土) 20:57:01
↑ミス

>>346
>>317
見落としてました
参考にしてトライしたいと思います
362デフォルトの名無しさん:2011/02/05(土) 20:58:09
エスケープもあるよと一応指摘
363デフォルトの名無しさん:2011/02/05(土) 21:18:14
</b>ニックン(チベット自治区)<b><><>2011/02/05(土) 19:54:36.99 ID:1mYU+IvKP<>
<a href="../test/read.cgi/news/1296903204/1" target="_blank">>>1</a>
<br> これゾン偽装●焼きsaku <>

これを名前、メールアドレス、日付、ID、BeID、本文に分けたいんですが、
どういうパーサー書けばいいのか見当が付きません、
ヒントを教えていただけませんか?
原文は改行されていません
364デフォルトの名無しさん:2011/02/05(土) 22:48:15
解釈が合っているか確認させて下さい

・クラスは参照型
・構造体は値型
・Nullable<T>は構造体(値型)

・メソッドの引数には、参照型を渡した方がオーバヘッドが少ない
・メソッドの戻値では、参照型を返した方がオーバヘッドが少ない
・インスタンスの生成は、値型の方が参照型よりも高速
365デフォルトの名無しさん:2011/02/05(土) 22:53:04
>>363
2chのdatをいじるならDTタグとDLタグだったかあたりを一旦分けた方がいいかもね
そうすればそれほど難しくはないと思う
366デフォルトの名無しさん:2011/02/05(土) 23:06:49
>>364
おおむねそんな感じだけど、
メンバーが少なくて必要なメモリ領域が小さい場合、
構造体の方のコピーコストも大したことない。

あと、コピーのコスト以外に間接参照のコストもあって、
それは、値型なら0、参照側にだけかかるコスト。
367デフォルトの名無しさん:2011/02/05(土) 23:12:26
2chのdatは<>でSplitした後、日付欄を空白でSplitすればほとんど取れると思うけど
368デフォルトの名無しさん:2011/02/05(土) 23:13:39
どこかのブログで切り出しの仕方書いてなかったっけ?
369デフォルトの名無しさん:2011/02/05(土) 23:18:01
つ正規表現
370デフォルトの名無しさん:2011/02/05(土) 23:19:16
文字列データの解析にStringのSplitを使っちゃう人種とは絶対に仲良くなれないと思う
371デフォルトの名無しさん:2011/02/05(土) 23:21:41
>>370
ケースによるでしょ
2chのDatって中途半端にタグ残してるしなあ・・・
板とかで少し差があるようだし
372デフォルトの名無しさん:2011/02/05(土) 23:42:26
>>370
csvとかtsvデータにSplit使わんのか?
373デフォルトの名無しさん:2011/02/05(土) 23:51:03
TSVなら使うが、CSVは使わない
374デフォルトの名無しさん:2011/02/05(土) 23:52:30
splitの何がいかんの
375デフォルトの名無しさん:2011/02/05(土) 23:55:54
ふふふ。ExcelデータをCSV出力してみ。
376デフォルトの名無しさん:2011/02/05(土) 23:56:07
CSVは表現にバリエーションが多すぎてSplit程度じゃどうにもならない場合が多いしね。
DelphiでもJavaでもC#でも、どっかからライブラリ持ってきてた。
377デフォルトの名無しさん:2011/02/05(土) 23:58:49
データにセパレータ文字が入る仕様はsplitでは無理。
378デフォルトの名無しさん:2011/02/06(日) 00:03:35
エセCSVしかつかわないから問題ない
379デフォルトの名無しさん:2011/02/06(日) 00:06:57
誰も言わないならいうけど、FileHelpersをどうぞ。
380364:2011/02/06(日) 00:12:43
>>366
ありがとうございます。
381デフォルトの名無しさん:2011/02/06(日) 00:40:28
staticなクラスの中にあるenumにprotected付けたら「インスタンス含めんなやゴルァ」
って怒られたんだけどなんでインスタンス扱いになるの?
382デフォルトの名無しさん:2011/02/06(日) 00:55:41
>>381
たぶんこのへん
http://msdn.microsoft.com/ja-jp/library/79b3xss3(v=vs.80).aspx
383デフォルトの名無しさん:2011/02/06(日) 00:59:12
そもそも>>381のようなエラーメッセージなんか出ない。
何でそのままコピペしないのか。

2chだからって無理して馬鹿みたいな言い回ししなくてもいいし、
言い回しだけじゃなくて意味そのものを変えてどうするの。
384デフォルトの名無しさん:2011/02/06(日) 01:09:24
>>383
すまん、うっかりインスタンスメンバ含めてて勘違いしたわ。
継承できないのにprotectedなんて付けても意味ねーよってことで理解した。
385デフォルトの名無しさん:2011/02/06(日) 11:02:01
enumのわかりやすいサンプルコードをください
検索かけて出てきたものを使うとどれもエラーが出ます
386デフォルトの名無しさん:2011/02/06(日) 11:06:57
>>385
エラーが出た奴を貼った方が速いよ
387デフォルトの名無しさん:2011/02/06(日) 11:07:38
enum { ValueA,ValueB }
388デフォルトの名無しさん:2011/02/06(日) 11:29:24
そのエラーを貼れ
勝手に翻訳せずにコピペでな
389デフォルトの名無しさん:2011/02/06(日) 11:31:08
あとenumを記述する位置の問題でエラーになってるとか言うオチはないよね?
390デフォルトの名無しさん:2011/02/06(日) 11:52:23
C言語のenumをコピってるとかじゃね?
391デフォルトの名無しさん:2011/02/06(日) 12:01:37
はい
392デフォルトの名無しさん:2011/02/06(日) 12:06:49
>>387
識別子足りなくね?
393デフォルトの名無しさん:2011/02/06(日) 12:32:30
enum EnumTypeName { ValueA,ValueB } だな
394デフォルトの名無しさん:2011/02/06(日) 13:38:48
C#でMIDIでドレミソ(C3 D3 E3 G3)を鳴らしたいのですが鳴らし方さえ分かれば後は応用できるのでどなたかサンプルを頂けませんか?
395デフォルトの名無しさん:2011/02/06(日) 13:45:37
C#だと無理だけどF#だとenumをジェネリック制約に含められるみたい
なんでやねん
396デフォルトの名無しさん:2011/02/06(日) 13:50:01
>>394
C# MIDI
397デフォルトの名無しさん:2011/02/06(日) 13:53:34
398デフォルトの名無しさん:2011/02/06(日) 14:02:48
>>397
見てもどう書いていいのか分からないので出来ればすぐ動くコードをくださいおねがいします
399デフォルトの名無しさん:2011/02/06(日) 14:03:29
コードいただけたらねこの画像みせますおねがいしあmす
400デフォルトの名無しさん:2011/02/06(日) 14:04:45
>>398
ソース見てないけど多分これじゃねーか
ttp://d.hatena.ne.jp/aont/20080413/1208060099
401デフォルトの名無しさん:2011/02/06(日) 14:50:48
>>386,388

enum st
{
Not = 0,
FIn = 1,
Sel = 2,
FOut = 3
}

mSt = st.Not;

エラー CS0266: 型 'Test.st' を 'int' に暗黙的に変換できません。
402デフォルトの名無しさん:2011/02/06(日) 14:52:47
>>400
すいませんこれも見つけたんですがVC#2010エクスプレスを使ってるのでprogram.csのどこに張れば良いのかわからず・・・(−−;)
403デフォルトの名無しさん:2011/02/06(日) 14:55:54
>>401
おいおい、メッセージ通りじゃないか。
mSt を st 型にするか、代入のところに明示的キャスト付けるか。

それはC#ではエラーになって当然なんだが。
やっぱC言語のコードをコピったとかじゃないよな?
404デフォルトの名無しさん:2011/02/06(日) 15:10:57
>>403
えー継承元の中でmStが定義されてていじれないよー
そういう場合は

const int Not = 0;
const int FIn = 1;
const int Sel = 2;
const int FOut = 3;

ってやらないと駄目すか?
405デフォルトの名無しさん:2011/02/06(日) 15:14:31
intにキャストしろ
406デフォルトの名無しさん:2011/02/06(日) 15:18:03
そういう問題じゃねえよ
列挙型は別の型に暗黙キャストできません

これはenum : intって入れても同じ
407デフォルトの名無しさん:2011/02/06(日) 15:27:49
int mSt = (int)st.Not
or
st mSt = st.Not
かな
408デフォルトの名無しさん:2011/02/06(日) 15:28:22
つまり、C#のenumは使えないということでおk?
409デフォルトの名無しさん:2011/02/06(日) 15:29:33
Cのenumの方が危ない。
410デフォルトの名無しさん:2011/02/06(日) 15:31:24
ホント、ただの定数でいいのに
言語側で勝手に用途を固定してるとかウザイことこの上ないな
411デフォルトの名無しさん:2011/02/06(日) 15:35:38
きちんと設計されてればそうそうキャストが必要になることなんてないはず…

んでも使い勝手悪いよねえ
412デフォルトの名無しさん:2011/02/06(日) 15:37:16
intにキャストして比較演算とかしてるの見ると頭痛くなる
flags使えflags
413デフォルトの名無しさん:2011/02/06(日) 15:41:00
昔Windowsのエラーコードを列挙型に詰め込もうとして、
最終的にconst intかreadonly intにすべきだなこれはと思って止めた。
414デフォルトの名無しさん:2011/02/06(日) 15:43:11
世の中にはenumはタイプセーフでなければならないと信じる人達がいてな
C#のenumは実質ただの定数でタイプセーフではないが一応最低限の制限がある
Javaのenumとか酷いよ
415デフォルトの名無しさん:2011/02/06(日) 15:44:25
>>414
スレチだけど、Javaだとどんな感じなの?
416デフォルトの名無しさん:2011/02/06(日) 15:45:09
よく面倒くさいなあと思うのはHttpStatusCodeなー
比較しないわけにいかない

しかたないから拡張メソッドでIsSucceeded(IsSuccessの方がよかったかも)とか書いたけど
417デフォルトの名無しさん:2011/02/06(日) 15:51:32
>>415
Javaの列挙型は「宣言で命名したstaticインスタンス以外を作成できない」クラス
418デフォルトの名無しさん:2011/02/06(日) 15:52:59
>>415
Javaのenumは全てクラスになる
enum Hoge { A, B } から
class Hoge {
private Hoge() { }
public static readonly Hoge A = new Hoge();
public static readonly Hoge B = new Hoge();
}
みたいな感じのコードが生成される
これが導入されたのは比較的最近のことでほとんど使われていない。それまでは列挙体が無かったので
列挙引数は全てint、列挙値はクラスに定数として宣言するのが普通だった
419デフォルトの名無しさん:2011/02/06(日) 15:58:33
作成できないじゃなく利用できないの方が正しいかな、この場合。
あとEffective Javaに「C#のより強力です」と書いてある。

flagsの扱いはまた別でEnumSetというのがある。
420デフォルトの名無しさん:2011/02/06(日) 16:12:31
メソッド定義してポリモーフィズムしたりできるんだよw
C#より優れていると言いたかっただけなんじゃないかと思うようなやり過ぎ仕様
もちろん使いにくい
421デフォルトの名無しさん:2011/02/06(日) 16:18:33
実用的かどうかっつーより、思想家が作ったみたいな出来な訳ね
422デフォルトの名無しさん:2011/02/06(日) 16:52:27
Pure OOPL だからね。。。
423デフォルトの名無しさん:2011/02/06(日) 16:55:05
正直シングルトン作成のため以外に使ってるケースは見たことない

------------ここまでスレチ
424デフォルトの名無しさん:2011/02/06(日) 16:57:30
C#ってアセンブラ書けるっけ?
Cの_asmみたいな感じで
425デフォルトの名無しさん:2011/02/06(日) 17:00:39
無理
426デフォルトの名無しさん:2011/02/06(日) 17:54:22
正直ハイパースレッディングなんか登場しちゃうと、コンパイラより速いニーモニックなど難易度上がりすぎだよな
Cですら今時asmなんて無駄でしょ
427デフォルトの名無しさん:2011/02/06(日) 18:01:15
>ハイパースレッディング
突っ込み待ち?
登場したのもう10年近く前になるけど...
っていうか、もうとっくに終わってる技術じゃないのか
428デフォルトの名無しさん:2011/02/06(日) 18:05:24
>>427
それが最近復活したんですよ・・・俺はアレ見た時にasm終了だと思ったわ
429デフォルトの名無しさん:2011/02/06(日) 18:11:46
HTはまだ死んじゃいないよ
最近だとCore i7でも使われてる
430デフォルトの名無しさん:2011/02/06(日) 18:56:37
あれ、そうなんだ....
もうとっくに時代はマルチコアだかメニーコアだかだと思い込んでた
431デフォルトの名無しさん:2011/02/06(日) 18:58:07
昔のPen4のハイパースレッドは不完全で、動かなくなる古いアプリがあったからな。
CoreでHTがなくなってまた古いアプリが動くようになったけど、
最近のハイパースレッドはどうなの?
432デフォルトの名無しさん:2011/02/06(日) 19:06:11
デュアルと比べるとHTはスケジューリングが難しくて、
シングルCPUで動かすよりパフォーマンスが悪化するケースがある。
完全に動かなくなるようなアプリならデュアルコアでも問題が起きるよ。

近くにあるPCにHT対応のがあるけど、デュアルコア+HTでCPUが4つに見えてる。
433デフォルトの名無しさん:2011/02/06(日) 19:24:25
なんか色々ゴテゴテついててもみんなのオススメはAMDだよね
434デフォルトの名無しさん:2011/02/06(日) 19:47:17
enumがタイプセーフでなくていい理由と
C#のenumがタイプセーフでないというのを詳しく説明していただけないでしょうか。
435デフォルトの名無しさん:2011/02/06(日) 20:11:00
俺のPCはi7 870ってのだけどタスクマネージャ見ると
8個あるよ
436デフォルトの名無しさん:2011/02/06(日) 20:17:59
>>430
ハイパースレッディングって、内部的に余りがちな演算器をフル稼働させるための技術であって、
それはメニーコアであっても、コアごとの最適化として有効。
メニーコアの時代が来れば消えるってものではない。
437デフォルトの名無しさん:2011/02/06(日) 20:22:53
俺はC#でMIDIを鳴らすコードをZIPで欲しいと言っておるのだ
438デフォルトの名無しさん:2011/02/06(日) 20:35:10
zipじゃzipを貼らねば朝敵じゃ
439デフォルトの名無しさん:2011/02/06(日) 20:39:08
>>437
そのまま「C#でMIDI」でググれ
440デフォルトの名無しさん:2011/02/06(日) 20:51:22
MIDIメッセージが理解できないに1メセタ
441デフォルトの名無しさん:2011/02/06(日) 20:52:27
Thread.Suspendメソッド使うと使用しないでくださいって言われるんですが、
代替手段は何を使ったらいいんですか
442デフォルトの名無しさん:2011/02/06(日) 20:54:39
>>436
そんなこのコアは整数演算しか使ってないから、
浮動小数点の処理分けてもらいましょうとか上手くいくのかね
全くのAll or nothingなんてそうそうないし、オーバヘッド生じる分マイナスじゃないのか
443デフォルトの名無しさん:2011/02/06(日) 21:08:35
>>442
整数に限っても、加算器と乗算器は別ハードウェアよ。
444デフォルトの名無しさん:2011/02/06(日) 21:26:05
>>434
決まった値しかとらないenumをタイプセーフenumと呼ぶ。
C#では任意の数値をenumの型にキャストできてしまうので、タイプセーフじゃない。
何が問題かというと、想定されてない値が入る可能性があるのが問題なんだけど
enumを使う場合って結局switchで分岐するのがほとんどなので、defaultで例外投げれば済む。
Javaのenumはポリモーフィズムが使えるのでやろうと思えばswitchやifなしで分岐させられるんだが、
Javaの開発者もswitchの有用性はよく理解していて、enumはクラスなのにswitchが使えるようにしてある。
enumを定数として実装することのもう一つの問題点として、enumの値を参照しているバイナリに
値が埋め込まれてしまうので、enumの値が変更されると再コンパイルが必要になるというのがあって、
Javaのenumはその問題をそのまま受け継いでしまっている。その理由の一つはswitchの実装のため。
何がいいたいかというと、高尚な機能があっても結局みんなswitch使うのでどうでもいいってこと。
445デフォルトの名無しさん:2011/02/06(日) 21:27:50
>>441
外部が直接スレッド止めるような構成にしない
外部は中止要求を出しておくだけにして、スレッド側が定期的に確認して自分で中止とかする
446デフォルトの名無しさん:2011/02/06(日) 21:38:04
>>444
???
447444:2011/02/06(日) 21:40:01
ちょっと訂正
>Javaのenumはその問題をそのまま受け継いでしまっている。
は記憶違いだった
少し複雑な処理をして回避してるみたい
Javaもなんだかんだ言ってswitchを重視してるということが言いたかっただけです
448デフォルトの名無しさん:2011/02/06(日) 21:44:53
.netのenumはタイプセーフでもあり整数型とも互換があるからFlagとして使える。
タイプセーフでないというよりハイブリッドと言うべきなのかなぁ。

449デフォルトの名無しさん:2011/02/06(日) 21:45:09
一向にStringがswitchに使えないので許しません
450デフォルトの名無しさん:2011/02/06(日) 21:46:04
>>445
なるほど
そういうフィールド用意するとかで対応してねって事か
451デフォルトの名無しさん:2011/02/06(日) 21:47:42
if
else if
else if
else if
else
の方がswitchより速いんですよね?
452デフォルトの名無しさん:2011/02/06(日) 21:49:58
stringをswitchで使うのはタイプミス等のヒューマンエラーを考えると糞仕様だと思うが
453デフォルトの名無しさん:2011/02/06(日) 21:52:46
普通defaultにAssert書くから問題ないよ
454デフォルトの名無しさん:2011/02/06(日) 21:53:29
>>448
Javaでいうタイプセーフenumって
想定外の値が入らないことが保障されてることに主眼が置かれてるから
その意味じゃC#のenumはタイプセーフじゃないよ
でも別にそんなに大した問題では…
455デフォルトの名無しさん:2011/02/06(日) 21:59:02
>>454
まあ気にすることじゃないのは同意。
想定外の値を入れようと思えば、整数からキャストするか、
Hoge xx = Hoge.X | Hoge.Y;
とかする必要があるわけで、安全性は保たれてると思うけどね。
456デフォルトの名無しさん:2011/02/06(日) 22:05:06
>>451
ILを見るかがりじゃ、
整数として連続していればswitch用の専用命令があるから
switchのほうが早いと思う。
連続してなければif elseif と同じ。
457デフォルトの名無しさん:2011/02/06(日) 22:11:42
switchをif elseに変換するのは簡単だけど逆は難しいから
一般にswitchの方が速くなる余地がある
458デフォルトの名無しさん:2011/02/06(日) 22:17:56
>>456
そう、IL的にはswitch命令がある。

で、確か、CLRのJITの挙動的には、
分岐が少なければif-else同様の条件ジャンプ命令に、
多ければルックアップテーブル使ったジャンプにコンパイルされる
って言う話だったと思う。
459デフォルトの名無しさん:2011/02/06(日) 22:18:27
むしろswitch文をあらゆるクラスに適用できるぐらい拡張して欲しい
プリミティブ以外はif-elseの糖衣構文、EqualityComparer<T>.Defaultでの比較とかで
460デフォルトの名無しさん:2011/02/06(日) 22:27:16
>>459
まあ、それは、実際、C#の「初期設計でこうしとけばよかった」後悔リストの最たるものの1つなんだけども。
461デフォルトの名無しさん:2011/02/06(日) 22:30:09
なんでもswitchとか浮動小数点とかどうすればいいのかマジでわからないな
462デフォルトの名無しさん:2011/02/06(日) 22:52:59
>>452
switchでstring使えるようにする是非はともかく、その理由はどうなの。
ちなみに、VB.NETの方はstringもOKだし、数値なら不等号も使えたりする
463デフォルトの名無しさん:2011/02/06(日) 22:53:23
List<hoge>に登録してあるHogeのある位置の物を一つ上にとか一つ下にとか
ってRemoveAtなどで一旦切り離してInsertで入れるしかないです?
464デフォルトの名無しさん:2011/02/06(日) 22:56:50
C#のcaseもstringを使えるよ
465デフォルトの名無しさん:2011/02/06(日) 23:00:56
>>463
IList<T>なら普通にSwapできるっしょ
[n]をテンポラリに確保して[n-1]を[n]にコピーして[n-1]にテンポラリからコピー
466デフォルトの名無しさん:2011/02/06(日) 23:02:47
教えてーエロい人。

CのDLLで型定義してる場合ってどうやって呼び出すの?
ヘッダーファイルincludeできるの?
サンプルください(_。_)
467デフォルトの名無しさん:2011/02/06(日) 23:07:39
>>466
includeはできない
同じ形になるようにC#側でも型定義する
DllImportでググれ
468デフォルトの名無しさん:2011/02/06(日) 23:08:58
>>467
まじか。大した手間だな。。
ラッパーとかもないのか?
469デフォルトの名無しさん:2011/02/06(日) 23:11:20
そのライブラリのラッパーがあるかないかなんか自分で調べることだろ。
470デフォルトの名無しさん:2011/02/06(日) 23:13:46
ライブラリは自前。移植だ。
471デフォルトの名無しさん:2011/02/06(日) 23:14:36
>>462
言語によってCASE構文の設計思想が違っていて大きく2つに分類できる。
ひとつはあくまでもif-elseifの代用と言う位置づけで、
構文的な自由度が高い。VBや古くはCOBOLのevaluateとかがそれ。
もうひとつがCやC#のそれで基本的にcaseに指定できるのはリテラルだけ。
この制限は最適化を期待しての制限となっている。
C#でstringをcaseに許可しているのは.NETのStringが変更不可クラスで、
リテラルとして扱うことが出来るため。
472デフォルトの名無しさん:2011/02/06(日) 23:15:27
>>466
つ C++/CLI はいかがか?
473デフォルトの名無しさん:2011/02/06(日) 23:24:58
JNIよりは大分マシだよ
474デフォルトの名無しさん:2011/02/06(日) 23:29:04
C++/CLIが混ざると後々邪魔になってるよ後悔することになるよ
C++ではなくCのライブラリなら大した手前じゃないから
C#だけでやることをお勧めする
475デフォルトの名無しさん:2011/02/07(月) 06:37:30
enumで変な値入ってないか調べるのはEnum.IsDefined使うんだっけ。
476デフォルトの名無しさん:2011/02/07(月) 07:04:57
Flagsの場合はそういうわけにもいかないけどな
477デフォルトの名無しさん:2011/02/07(月) 09:05:46
switchやifで速度を気にするなら、条件に合致する確率が高いものを先に書けば良いんじゃないの?
478デフォルトの名無しさん:2011/02/07(月) 09:40:58
ほんと。ボトルネックはそこなのかと
479デフォルトの名無しさん:2011/02/07(月) 09:43:02
一体その速度を無視できないほどになにをやっているんだ・・・
大方の場合ループさせる処理内部での条件分岐嫌ってるんだろうけど

480デフォルトの名無しさん:2011/02/07(月) 10:01:26
Enum.IsDefinedってほとんど使ったことないわ
教条主義的にEnum.IsDefinedでチェックしたがる人がいるけどswitchのdefaultで十分
それどころかenumに新しいの値が追加されたときに正しく動作しなくなるから公式には非推奨ってことになってるし
481デフォルトの名無しさん:2011/02/07(月) 10:22:19
>公式には非推奨
ま・じ・で?
なんてこったい・・・・・
482デフォルトの名無しさん:2011/02/07(月) 10:25:47
http://msdn.microsoft.com/ja-jp/library/ms229025.aspx
これな
リフレクションが使われてるからパフォーマンスが悪いというのはよく言われてるけど
禁止の理由はバージョニング
483デフォルトの名無しさん:2011/02/07(月) 10:30:29
>>482
パフォーマンスはさておき

>バージョン間で異なる可能性がある列挙体のランタイム型に基づいているため
つうことは4.0固定で完全にそのPGだけで組み込まれてるとかだけならいけるのかな?

なんかオラ怖くなってきたぞ
484デフォルトの名無しさん:2011/02/07(月) 10:41:59
列挙体に値を追加したけどその列挙体を使ってる既存のメソッドはそのまま変更しない
というのは同じアセンブリ内だとしても普通にありうるケースじゃないか?
Enum.IsDefinedを使うなら常に列挙体の定義とそれを利用する側が同期していないといけないってことでしょ
485デフォルトの名無しさん:2011/02/07(月) 10:49:03
>>484
シナリオ的にはあるけど、いまん所は全て参照検索してきっちり修正してるかDefaultでExceptionはいたりしてるかな?
ん〜何となくEnum使いどころが判らなくなってきた
486デフォルトの名無しさん:2011/02/07(月) 11:12:10
俺の質問に答えられる猛者はおらんのか!
487デフォルトの名無しさん:2011/02/07(月) 11:19:58
答えてやっから早く言えよ
488デフォルトの名無しさん:2011/02/07(月) 11:38:50
WPFの質問ってここに投げていいの?
489デフォルトの名無しさん:2011/02/07(月) 11:49:16
WPFは専用スレあるよ。
490デフォルトの名無しさん:2011/02/07(月) 11:49:26
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part8
http://hibari.2ch.net/test/read.cgi/tech/1291554513/l50
491デフォルトの名無しさん:2011/02/07(月) 12:03:55
WPF独立してたのね…thx
492デフォルトの名無しさん:2011/02/07(月) 18:28:50
enumをFlagsで使う場合
特定のフラグがたってるかどうかのチェックってどうやってやる?
今は↓みたいに書いてるんだけど若干面倒
もっと簡単にかける方法あるなら教えて欲しい
if ((flag & myenum.bar) != 0)
493デフォルトの名無しさん:2011/02/07(月) 18:35:17
.NET4でEnum.HasFlag
IsDefinedと同じくリフレクションで実装されててクソ遅いけど
494デフォルトの名無しさん:2011/02/07(月) 19:01:44
>>492
それ間違ってるぞ
myenum.barが合成されたフラグの可能性があるから
一般には (flag & myenum.bar) == myenum.bar が正しい
495デフォルトの名無しさん:2011/02/07(月) 19:27:06
拡張メソッドでも作れば?
496デフォルトの名無しさん:2011/02/07(月) 19:33:10
http://ideone.com/9VgRz
個別に作るくらいならこんな感じでよくね
測ったわけじゃないけどさすがにEnum.HasFlagみたいにビット演算より2,3ケタ遅いってことはないだろ
497デフォルトの名無しさん:2011/02/07(月) 21:07:53
キューみたいな感じで、メソッドを逐次に実行しつつ、新しいメソッドを追加したいんです
もしかしてThreadpool使えば出来るんじゃないかと思ったんですがMSDNによると、

ThreadPool.SetMaxThreadsではワーカー スレッドの数または I/O 完了スレッドの数に、
コンピューターのプロセッサ数より小さい数を設定することはできません
とのことで、そのままぶち込んだだけでは実現できそうになくて、困ってます

キューの追加と実行するスレッドが別の場合、どのようかクラス使えばいいんでしょうか
498デフォルトの名無しさん:2011/02/07(月) 21:10:42
キューにアクセスするときロックする
499デフォルトの名無しさん:2011/02/07(月) 21:15:25
バックグラウンドスレッドでDispatcher起動してBeginInvoke
500デフォルトの名無しさん:2011/02/07(月) 21:16:23
producer-consumer
501デフォルトの名無しさん:2011/02/07(月) 22:13:16
教えてもらった単語でググったらサンプル見つかりました
ありがとん
502デフォルトの名無しさん:2011/02/07(月) 22:38:24
うん
503デフォルトの名無しさん:2011/02/07(月) 22:50:52
504デフォルトの名無しさん:2011/02/07(月) 22:52:16
お前ら本当にUnko好きだな
505デフォルトの名無しさん:2011/02/07(月) 23:02:31
うん
506デフォルトの名無しさん:2011/02/07(月) 23:08:14
マジな話、ガキの頃に遊び相手がいなかったから、幼児性が卒業できてないんでしょたぶん。
507デフォルトの名無しさん:2011/02/07(月) 23:09:46
Unkoにマジレスカッコ悪い
508デフォルトの名無しさん:2011/02/07(月) 23:11:03
でも本人はたぶん、俺は2chだからふざけてるだけだ、とか思ってる。
馬鹿かって。

それを言うなら便所や商店に落書きするような卑劣漢だって、
俺はみんながやってるような場所だからやってるだけだと思ってるよ。

要するに環境のせいじゃないの。馬鹿みたいなことをするお前自身が幼稚なの。
509デフォルトの名無しさん:2011/02/07(月) 23:39:20
うん
510デフォルトの名無しさん:2011/02/08(火) 00:15:35
便利な変数名だよ。便だけに
511デフォルトの名無しさん:2011/02/08(火) 00:17:03
うんこにけちつけんなよ
512デフォルトの名無しさん:2011/02/08(火) 00:24:10
>>494
その可能性をすっかり忘れてた
ありがとう

>>496
ここまでやらないと一般化できないんか
ついでにフラグの設定、解除、トグルも作って
ライブラリにまとめとくかな
513デフォルトの名無しさん:2011/02/08(火) 00:27:18
http://uproda.2ch-library.com/lib341249.txt.shtml

csvファイルを読み込んで、構造体に入れ、表示させたいのですが、文字化けしてしまいます。
ミスがあったら訂正願います。

読み込むcsvファイル↓
01A,aさん,f,1.1,1.1,1111
02B,bさん,m,2.2,2.2,2222
03C,cさん,f,3.3,3.3,3333
04D,dさん,m,4.4,4.4,4444
05E,eさん,f,5.5,5.5,5555
06F,fさん,m,6.6,6.6,6666
514デフォルトの名無しさん:2011/02/08(火) 00:27:53
自作クラスを昨日完成させてVSTSでビルドしたら警告が消えないのがでちゃった
IDisposableをどうのこうのってやつ
IDisposableを実装すれば消えるの?
515デフォルトの名無しさん:2011/02/08(火) 00:34:40
>>513
ここはC#
こっちにいって聞いてこい
http://hibari.2ch.net/test/read.cgi/tech/1296984829/l50

それからソースコード見せたいときは http://ideone.com/ 使え
516デフォルトの名無しさん:2011/02/08(火) 00:34:53
>>513
ここはC#スレ
>>514
IDisposableを実装した型のオブジェクトかIntPtrをフィールドに持ってるんだろ
前者ならIDisposableを実装してDisposeの中でそのフィールドのDisposeを呼ぶようにする
後者ならIDisposableに加えてファイナライザも実装する
517デフォルトの名無しさん:2011/02/08(火) 00:37:40
>>515 >>516
すいません!ありがとうございます。
518デフォルトの名無しさん:2011/02/08(火) 06:55:04
うん
519デフォルトの名無しさん:2011/02/08(火) 12:36:58
ちょっとお聞きしたいのですが技術ブログをやる場合って匿名のほうが良いですか?
それともリアルの実名とは書いたほうがいいですか?
どっちがいいですか?
520デフォルトの名無しさん:2011/02/08(火) 12:39:23
俺は ネットはネット て考え方
521デフォルトの名無しさん:2011/02/08(火) 12:41:23
どっちにしても2chで叩かれる。
522デフォルトの名無しさん:2011/02/08(火) 13:17:02
C#のスレで個人の技術ブログが叩かれてたのって
BitArrayの人くらいしか見たことない
523デフォルトの名無しさん:2011/02/08(火) 13:26:04
C++, Java, C#
http://publisher-plus.sakura.ne.jp/wordpress/?p=362

C++:約16秒。
Java:約35秒。
C#:約9秒。

しかし、C++は最適化すると 1.5秒。
やっぱり最速はC++だね。
524デフォルトの名無しさん:2011/02/08(火) 13:40:42
標準ライブラリの乱数生成速度を測ってるだけで
言語は全く関係ないな
1.5秒のものはrandを使ってないんだから比較するなら他のも同じ条件で比較しないと無意味
525デフォルトの名無しさん:2011/02/08(火) 13:43:47
問題はそれが可読性や保守性を犠牲にしてまで達成する事なのかって事だ
526デフォルトの名無しさん:2011/02/08(火) 13:46:34
やっぱり標準ライブラリではC#最強だね。
527デフォルトの名無しさん:2011/02/08(火) 13:48:28
10倍速くなるならトレードオフが成立する場面も多かろう。
528デフォルトの名無しさん:2011/02/08(火) 14:00:37
まぁそんな所より別のところ突き詰めるほうが大概早くなる
つうか・・・すげぇな 堂々としてて逆にかっこいいわw
529デフォルトの名無しさん:2011/02/08(火) 14:05:45
JavaのRandomやCのrandはスレッドセーフだけど
.NETのRandomはスレッドセーフじゃないから速いのかな
言語全然関係ないね
530デフォルトの名無しさん:2011/02/08(火) 14:21:24
スレッドセーフかどうかはどうみても言語の話です。
531デフォルトの名無しさん:2011/02/08(火) 14:36:39
Javaはいくら最適化したところで速くなりませんよ。その証拠に
Javaで速いアプリの例ってどれもJNI使ってほとんどC++で作られてるものばかり。
532デフォルトの名無しさん:2011/02/08(火) 14:38:40
>>530
randはグローバル関数だからスレッドセーフにしないと仕方ないかもしれないが
JavaのRandomがスレッドセーフで.NETがそうじゃないのはライブラリを設計した人の考え方が違うだけ
今ではJavaも基本スレッドセーフにしないで必要なら利用者が勝手にロックしろという方針に変わってるけど
533デフォルトの名無しさん:2011/02/08(火) 14:51:47
javaはServer VMを使うと最適化でだいぶ入るから速くなるぞ。
あとC#の時間測定にはStopwatchクラスを使えよ。
534デフォルトの名無しさん:2011/02/08(火) 15:04:27
C#は最適化前提の言語だから最適化ありではかってやってくだされ。

>C:\TEMP\pi>csc pi_cs.cs
csc /optimize pi_cs.cs
535デフォルトの名無しさん:2011/02/08(火) 15:42:15
俺叩かれすぎワロタ
536デフォルトの名無しさん:2011/02/08(火) 15:46:56
言語間のベンチ比較はちゃんと比較する言語の全てを把握してないと
突込みどころ満載になってしまうからな
よほど詳しいやつでない限り話題にあげるのは地雷
537デフォルトの名無しさん:2011/02/08(火) 15:55:13
うちのおんぼろPCではこんな感じだな。
Celeron 1.4GHz シングルコア

23sec java (1.6.0_17)
18sec java (1.6.0_17 server VM)
13sec C# (.net4.0)
17sec C++ (VC++2010)

確かに乱数関数の呼び出しコストの差が大半だね。
538デフォルトの名無しさん:2011/02/08(火) 18:09:02
Server VMってSwing使えますか?
539デフォルトの名無しさん:2011/02/08(火) 18:35:43
スレタイ読め
540デフォルトの名無しさん:2011/02/08(火) 18:40:32
GUIのスレッドを複数作ることって可能ですか?
541デフォルトの名無しさん:2011/02/08(火) 18:43:58
>>540
STAスレッドを起動してApplication.Runすればいくつでもできるよ。
542デフォルトの名無しさん:2011/02/08(火) 18:47:56
>>541
メインフォームの孫スレッドからじゃやっぱ無理なんですかね
ビジーになって操作受け付けてくれなくて
543デフォルトの名無しさん:2011/02/08(火) 18:57:09
こんな感じだけどダメ?

var t1 = new Thread( () => Application.Run(new Form()) );
t1.SetApartmentState(ApartmentState.STA);
t1.Start();
544デフォルトの名無しさん:2011/02/08(火) 19:02:24
>>543
それで良さそうです
ありがとうございます

でも大幅に書き換えないとやりたいこと出来ない(´・ω・`)
545デフォルトの名無しさん:2011/02/08(火) 19:36:04
座標が2点、3点、4点の重心(中心)の求めるコードってどうかけばいいですか?
546デフォルトの名無しさん:2011/02/08(火) 19:54:20
>>545
座標の配列を引数に取ってその平均値を返す静的メソッドを適当なクラスに書いてください。
547デフォルトの名無しさん:2011/02/08(火) 20:04:18
>>523
C#で2.70秒だった
さすがベンチ番長Core i7 975
548デフォルトの名無しさん:2011/02/08(火) 20:05:30
>>516
ありがてえ!
IntPtrは使ってないので前者だと思います
そのクラスで使ってるフィールドはstringとDataTableです
ともあれ今後確かめてみます
549デフォルトの名無しさん:2011/02/08(火) 20:24:45
>>547
クアッドコアすか?コレ試してもらえますか?
うちのだと35秒もかかってしまう(笑
乱数の取得が多重化できないのがネックだなぁ。
var sw = System.Diagnostics.Stopwatch.StartNew();
const int times = 100000000;
Random rnd = new Random();
var rs = Enumerable.Range(0, times).Select(i => new { X = rnd.NextDouble(), Y = rnd.NextDouble() });
int cin = rs.AsParallel().Select(r => {
double dist = Math.Sqrt(r.X * r.X + r.Y * r.Y);
return (dist < 1.0) ? 1 : 0;
}).Sum();
double pi = 4.0 * (double)cin / (double)times;
Console.WriteLine(sw.Elapsed);
550デフォルトの名無しさん:2011/02/08(火) 20:37:07
>>549
10.94秒
一応8スレッド全部使ってはいる模様
551デフォルトの名無しさん:2011/02/08(火) 20:48:18
だから局所性が重要とリンク先にも書いてあるだろう。
552デフォルトの名無しさん:2011/02/08(火) 20:48:40
i7羨ましいなあ、と思いつつ
Core2Extremeの俺も>>549を5回程やってみた。

9.34秒、15.00秒、10.09秒、9.32秒、9.71秒
ちょっと意外。
553デフォルトの名無しさん:2011/02/08(火) 20:51:47
i7 870だと11.02秒だった
554デフォルトの名無しさん:2011/02/08(火) 20:53:09
局所性まで考慮して細かくコード書けるのはC++だけ。
C++はやっぱり最速ですな。Javaは哲学からしてその全くの逆だから激遅。
555デフォルトの名無しさん:2011/02/08(火) 21:10:51
並列化や局所性以前にまずRandom使うのやめろよw
比較になってない
556デフォルトの名無しさん:2011/02/08(火) 21:13:51
そうは言っても統計ではRandomは多様するもの。
それが遅いのは致命的。
557デフォルトの名無しさん:2011/02/08(火) 21:14:23
>>550,552
パラレルは難しいですね。何コアも使っても非スレッド版が速いとはorz

>>554
>>523の最速パターンをC#で書けばほとんど同じだね。
const uint RAND_MAX = 32767;
static void Main() {
var sw = System.Diagnostics.Stopwatch.StartNew();
int cin = 0;
int times = 100000000;
uint nRand = 1;
for (int i = 0; i < times; i++){
nRand = nRand * 214013 + 2531011; uint x = ((nRand >> 16) & 0x7fff);
nRand = nRand * 214013 + 2531011; uint y = ((nRand >> 16) & 0x7fff);
if (x * x + y * y < RAND_MAX * RAND_MAX) cin++;
}
double pi = 4.0 * (double)cin / (double)times;
558デフォルトの名無しさん:2011/02/08(火) 21:14:57
>>556
だったらC#最強ってことだな
終了
559デフォルトの名無しさん:2011/02/08(火) 21:22:23
困ったな。何も考えずにパラレルは使えなくなったぞ。
560デフォルトの名無しさん:2011/02/08(火) 21:26:59
元から何も考えずに使うもんじゃねえだろ
561デフォルトの名無しさん:2011/02/08(火) 21:28:02
もともとRandomがボトルネックなんだから他のところ並列化しても速くならないのは当たり前
>>557でも1ループの粒度が細かすぎるから工夫して並列化しないと速くならないだろうな
562デフォルトの名無しさん:2011/02/08(火) 21:30:51
頭使ってパラレル使うぐらいなら、自分でスレッド振り分けるほうが楽だろ。
563デフォルトの名無しさん:2011/02/08(火) 21:35:05
スレッド毎に別の乱数オブジェクトを使っていいなら改善できるのだけどな。
564デフォルトの名無しさん:2011/02/08(火) 21:41:50
うちCore2Duoノートでも>>557のコードは0.6秒
笑わしてくれるぜ。

C#やJavaはRandomがスレッドセーフじゃないとか言っても、
そもそもインスタンス作成して使う方式だからスレッドセーフである必要がない。
Cではグローバルな状態を保持する必要があるからそうせざるを得ないというだけのこと。
565デフォルトの名無しさん:2011/02/08(火) 21:44:12
>>557
0.46s@i7-975
4or8分割すれば0.15s前後
回数を増やせば、8Tの方が3割ぐらい早い

var sw = System.Diagnostics.Stopwatch.StartNew();
const int times = 2000000000;
const int threads = 8;
var c = Enumerable.Range(1, threads).AsParallel().Sum(_ =>
{
int cin = 0;
uint nRand = 1;
for (int i = 0; i < times / threads; i++)
{
nRand = nRand * 214013 + 2531011; uint x = ((nRand >> 16) & 0x7fff);
nRand = nRand * 214013 + 2531011; uint y = ((nRand >> 16) & 0x7fff);
if (x * x + y * y < RAND_MAX * RAND_MAX) cin++;
}
return cin;
});
double pi = 4.0 * (double)c / (double)times;
sw.Stop();
Console.WriteLine(pi);
Console.WriteLine(sw.Elapsed);
Console.ReadKey();
566デフォルトの名無しさん:2011/02/08(火) 21:47:33
いやさすがにそれは意味がない。
せめて初期シードを変えようぜ。
567デフォルトの名無しさん:2011/02/08(火) 21:49:52
nRand = nRand * 214013 + 2531011;
uint x = ((nRand >> 16) & 0x7fff);
これってどういう仕組み?
568デフォルトの名無しさん:2011/02/08(火) 21:51:47
どう見ても線形合同法
569デフォルトの名無しさん:2011/02/08(火) 22:11:05
>>523
>Javaはきっと真面目に乱数を作っているし、真面目にオブジェクトを指向しているんだよ。C#は割といい加減なのではないかな?
わろた。
そもそもCのrandが一番質悪いんじゃねーか?
570デフォルトの名無しさん:2011/02/08(火) 22:31:20
アイコンを設定したいんですが、PNGファイルを読み込もうとしてもVSに怒られます。
アイコンのファイルフォーマットって何が使えますか?
571デフォルトの名無しさん:2011/02/08(火) 22:40:42
そりゃアイコンじゃねーの?
572デフォルトの名無しさん:2011/02/08(火) 22:43:44
icoォicoォー
573デフォルトの名無しさん:2011/02/08(火) 23:02:33
ICOFX使ったら簡単にできたよ
ありがとん
574デフォルトの名無しさん:2011/02/08(火) 23:31:59
>>569
ある意味間違って無い様な気もするがなw

MS系言語は何つーか、理想論は横にポイ捨てして
実用重視になっていく傾向が有る様な気がする。

C#は確かに一応OOPだけれども
OOP以外のパラダイムにも、色々手を伸ばして行ってるし。
575デフォルトの名無しさん:2011/02/08(火) 23:39:39
Javaのライブラリが無駄にスレッドセーフなのはJavaの中の人も認める大失敗
コレクション類なんか後で軒並みスレッドセーフじゃないバージョンを追加してる
576デフォルトの名無しさん:2011/02/08(火) 23:41:17
OOPも元々は生産性向上の為の方法に過ぎなかったけど
いつの間にか宗教になっちゃったな
577デフォルトの名無しさん:2011/02/08(火) 23:51:00
Javaが.NET2.0程度の水準のままずーと停滞しているせいだろ
578デフォルトの名無しさん:2011/02/09(水) 00:21:35
Thread.SpinWaitとThread.Sleepの使い分けってどうしたらいいですか?
579デフォルトの名無しさん:2011/02/09(水) 00:31:21
すみません質問させて下さい。

現在Form1のみが存在するプロジェクト中に子フォームを追加しようと思い、
プロジェクト右クリ→追加→Windowsフォームを選択し、Form2.csを生成しました。

そして、Form1.cs中で子フォームを表示するために、
Form2 f2 = new Form2();
とコードを書いたのですが、
エラー1:型または名前空間名 'Form2' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
というエラーが出てしまいます。
本来だとForm2と記述した時にVC#2008のデフォルト環境だと薄緑色にフォントカラーが変わるはずなのですがそれもなく。。。

Web上で何度も情報を確認してみましたが、やり方は間違っていないような気がしてならないのでここで質問するに至りました。
宜しくお願い致します。
580デフォルトの名無しさん:2011/02/09(水) 00:32:22
SpinWait メソッドは、ロックを実装する場合に便利です。
Monitor や ReaderWriterLock などの .NET Framework のクラスは、
このメソッドを内部的に使用しています。SpinWait は、基本的には、
iterations パラメータで指定されるループ カウントを使用して、
プロセッサをほぼ専有するようなループ状態にします。
したがって、待機を継続する時間はプロセッサの速度によって異なります。

Sleep メソッドは、これとは対照的です。
スレッドで Sleep を呼び出した場合は、指定した間隔が 0 であっても、
そのスレッドのプロセッサ時間の現在のタイム スライスが中断されます。
Sleep に 0 以外の間隔を指定した場合は、その時間間隔が経過するまで、
スレッド スケジューラによってそのスレッドがスケジュール対象から外されます。
581デフォルトの名無しさん:2011/02/09(水) 00:32:33
Form1の名前空間がForm2と違うんだろ
582デフォルトの名無しさん:2011/02/09(水) 00:37:55
>>581
できました、ありがとうございます。

途中でプロジェクト名を変更してリファクタリングをきちんとしていなかったのが原因でした…
583デフォルトの名無しさん:2011/02/09(水) 00:39:21
どういたしまして
584デフォルトの名無しさん:2011/02/09(水) 00:48:44
>>580
つまりSleepではInterrupt()出来ないという事ですか?
585デフォルトの名無しさん:2011/02/09(水) 01:04:43
doubleで管理してる座標データがあるんだけど
使うのは画面の座標なので小数点以下がいらないんだけど
丸める際は手っ取り早くdoubleをキャストして(int)キャストした(doubel)方が早い?
586デフォルトの名無しさん:2011/02/09(水) 01:09:19
0.5足してintにキャスト
587デフォルトの名無しさん:2011/02/09(水) 01:09:42
うん
588デフォルトの名無しさん:2011/02/09(水) 01:10:37
オーバーフローすることはないの?
って画面の座標か、なんでdoubleなんだよ…
589デフォルトの名無しさん:2011/02/09(水) 01:11:27
>>584
ちょっと何言ってるのか分からない。
590デフォルトの名無しさん:2011/02/09(水) 01:14:12
>>588
例えばドローツールならdoubleで持つだろ
WPFなんかコントロールの座標やら何やら全てdoubleだぞ
591デフォルトの名無しさん:2011/02/09(水) 01:15:51
>使うのは画面の座標なので小数点以下がいらないんだけど

っていってんだからそういうのにはあたらんだろ。
592デフォルトの名無しさん:2011/02/09(水) 01:18:16
>>588
WPFやSilverLightはdoubleなんですよ
画面に直接関わるときだけintの方が都合がよい

WinFormは.net関連はデフォルトがdoubleだけどGDIなどの関係する部分は
floatのままだったりするし・・・
593デフォルトの名無しさん:2011/02/09(水) 01:20:30
つうか丸める必要が特別有るのか?
594デフォルトの名無しさん:2011/02/09(水) 01:24:00
>>590
ドローツールならまずfloatで十分だと思う。
それならキャストいらんし。

doubleで座標管理する必要があるのはグラフぐらいしか思いつかないな
595デフォルトの名無しさん:2011/02/09(水) 01:24:07
WPFやSL的な都合と今後のもしかして・・・のためにdoubleで管理するけど
作ってるソフト的にはintレベルでいいなあと思って

ただそれだけ
3DCGやってるわけじゃないしね
596デフォルトの名無しさん:2011/02/09(水) 01:25:30
>>594
floatで十分なんだけどWinFormでも小数点などの定数を書くとdoubleとして扱われるように
WPFやSLはdoubleかintなんですよ
floatは過去の物
597デフォルトの名無しさん:2011/02/09(水) 01:25:34
コントロールの座標に整数足したりするときにdoubleのまま計算するのが気持ち悪いとか?
気持ちはわからんでもないがdoubleは十分な精度があるから気にする必要ない
598デフォルトの名無しさん:2011/02/09(水) 01:31:35
>>595
なら、何も考えずにfloat(PointF)にキャストすればいいんじゃないのかな。

きっちりピクセル単位で幅や高さ、線の太さを指定して矩形を描く必用がある、
みたいな場合はこういう考え方だと破綻しちゃうけどね。
599デフォルトの名無しさん:2011/02/09(水) 01:31:50
>>597
簡単なお絵かき用のツールなので小数点はいらないんだよね

使う人も線をつなげる際とか小数点以下があるより整数でやった方がいいだろうし
600デフォルトの名無しさん:2011/02/09(水) 01:31:51
>>596
君は数値リテラルの接尾辞を知らんだろ
601デフォルトの名無しさん:2011/02/09(水) 01:32:41
>>600
floatはfつければいいだけでしょ?
知ってるわよみょんみょん
602デフォルトの名無しさん:2011/02/09(水) 01:34:30
では「WinFormでも小数点などの定数を書くとdoubleとして扱われる」というのは?
603デフォルトの名無しさん:2011/02/09(水) 01:35:43
>>602
WinFormアプリで1.0って書いてみればいい

接尾語無しだとdoubleだから
604デフォルトの名無しさん:2011/02/09(水) 01:36:40
そりゃそうだ
で、WinFormを取り立てた理由は?
605デフォルトの名無しさん:2011/02/09(水) 01:38:00
WinFormのグラフィック部分->昔のfloat依存のころの名残
WinFormのその他の部分->新しい価値観のdouble
WPF+SL->完全にdoubleへ移行
606デフォルトの名無しさん:2011/02/09(水) 01:39:50
接尾語無しがdoubleになるのと関係ないんだよ
607デフォルトの名無しさん:2011/02/09(水) 01:41:00
デフォルトが何かって結構重用よ
608デフォルトの名無しさん:2011/02/09(水) 01:42:51
こいつ本当にわかったのかな
まいいや
609デフォルトの名無しさん:2011/02/09(水) 01:52:48
わざわざfloatとかshortで変数作っても、
計算するときはdoubleとかintでやってるんですよね?
610デフォルトの名無しさん:2011/02/09(水) 01:58:57
>>593
まあ、丸めないと原点の方向に0.5ピクセル分オフセットが生じる問題はある。
((0, 0)のピクセルだけ、実数の座標に写像した時に2X2の大きさになってしまう)
611デフォルトの名無しさん:2011/02/09(水) 02:02:02
環境依存だろ
612デフォルトの名無しさん:2011/02/09(水) 02:04:57
数学は環境に依存しませんよw
613デフォルトの名無しさん:2011/02/09(水) 02:12:56
↑話が分かってない馬鹿
614デフォルトの名無しさん:2011/02/09(水) 02:19:06
コンピューターグラフィックの場合内部でどんな管理してようが
最終的にディスプレイに表示するためにはintになるんだよ
数学どうのは関係ない
615デフォルトの名無しさん:2011/02/09(水) 02:22:11
WPFなら表示にも小数だよ。
616デフォルトの名無しさん:2011/02/09(水) 02:41:42
>>596
アホ
617デフォルトの名無しさん:2011/02/09(水) 06:51:07
ひっでえ流れだなw
618デフォルトの名無しさん:2011/02/09(水) 09:35:46
>>Direct3Dだったらプログラミングできる範囲では最後までfloat
619デフォルトの名無しさん:2011/02/09(水) 09:50:07
Direct3Dは過去のもの
620デフォルトの名無しさん:2011/02/09(水) 09:57:09
ManagedDirectX復活させてくれ…
MS以外のフリーコンポーネントとかあんま使いたくない
621デフォルトの名無しさん:2011/02/09(水) 10:02:02
ManagedDirectXは過去の物
622デフォルトの名無しさん:2011/02/09(水) 10:03:49
だれか.Net並のライブラリをC++で作って
623デフォルトの名無しさん:2011/02/09(水) 10:05:34
そういえばWPFやSLってPointF使えたっけ?
Pointだけでこいつがdoubleだけだったような
624デフォルトの名無しさん:2011/02/09(水) 10:14:46
XNAでええやん
625デフォルトの名無しさん:2011/02/09(水) 11:30:36
XNAていいの?
626デフォルトの名無しさん:2011/02/09(水) 11:41:32
いいよ
627デフォルトの名無しさん:2011/02/09(水) 11:51:29
XNAにしていいんです!


Aさん>XNAにしてちらつきが無くなりました。
Bさん>XNAにしてXBOXでもソフトが使えるようになりました。
628デフォルトの名無しさん:2011/02/09(水) 11:58:33
でも結局、WinFormに戻るんだよな。
629デフォルトの名無しさん:2011/02/09(水) 12:02:02
おっとWPFやXNAの悪口はそこまでだ
630デフォルトの名無しさん:2011/02/09(水) 12:44:08
戻らね−よ
631デフォルトの名無しさん:2011/02/09(水) 13:11:34
MSが公式にDXとかWin32とかをラップしたライブラリ出してなかったっけ?
632デフォルトの名無しさん:2011/02/09(水) 18:53:36
Windows API Code Packか。あれどうなの?
633デフォルトの名無しさん:2011/02/09(水) 19:17:09
>>614
言っちゃ悪いけど馬鹿丸出し。
ここまで補助線出して分からないかね普通。

小数点を切り捨てる関数f(x)があったとする。
この時f(x)が0となるxの範囲はどうなるのか考えてみろよ
634デフォルトの名無しさん:2011/02/09(水) 19:19:35
↑話を理解してない馬鹿
635デフォルトの名無しさん:2011/02/09(水) 19:24:44
>>634
幼稚なことしてねえで、どう馬鹿なのか説明してみな糞ガキが。
636デフォルトの名無しさん:2011/02/09(水) 19:25:15
↑話を理解してない馬鹿
637デフォルトの名無しさん:2011/02/09(水) 19:42:22
↑話を理解してない馬鹿
638デフォルトの名無しさん:2011/02/09(水) 19:43:02
↑話を理解してない馬鹿
639デフォルトの名無しさん:2011/02/09(水) 19:45:20
>>516
会社で、対象クラスにIDisposableの継承を追加して、
実装も追加して、フィールド変数(DataTable)のディスポーズを呼んでみたら警告消えたよ
今度設計者に相談してみらー
640デフォルトの名無しさん:2011/02/09(水) 19:47:50
Webサービスを分かりやすく説明すると何ですか?
Webサービスは業界標準でSOAPを使ってやり取りされ中身はWSDLです。
ってあってますか?
641デフォルトの名無しさん:2011/02/09(水) 19:49:20
なに言ってるかわかんねーうえに
ここで聞くことすら間違ってるよ
642デフォルトの名無しさん:2011/02/09(水) 19:49:41
微妙にあってない
643デフォルトの名無しさん:2011/02/09(水) 19:50:05
馬鹿ばっかだなw
644デフォルトの名無しさん:2011/02/09(水) 19:51:52
スレ違いでしたかすいません。
どこで聞けばいいのやら…
645デフォルトの名無しさん:2011/02/09(水) 19:54:37
↑スレを理解してない馬鹿
646デフォルトの名無しさん:2011/02/09(水) 20:00:10
会社で、30プロジェクトファイルくらい入ってるソリューションで開発してるんですが
データセットクラスのデザイナが重すぎて開きません
コンポーネントクラスに作ったデータアクセスクラスのデザイナを開くにもやたら時間がっかかります

ちなみにPCはXPpro、コア2デュオ2.2GHz、メモリ2GBです
同僚はVistaや7の人ばっかなのですが、みんな開けてるようです

なにかいい方法はないですか?このままだとデータセットクラスを担当した時に死にます
647デフォルトの名無しさん:2011/02/09(水) 20:01:24
当面使わないプロジェクトを閉じておけばいい
648デフォルトの名無しさん:2011/02/09(水) 20:02:03
自分の担当以外のプロジェクトをアンロード
649デフォルトの名無しさん:2011/02/09(水) 20:02:53
XSD覚えて直接編集
650デフォルトの名無しさん:2011/02/09(水) 21:21:43
真っ先にやることはメモリを目一杯増設じゃないの
VS結構メモリ使うよね
651デフォルトの名無しさん:2011/02/09(水) 21:41:57
おれは目一杯だけどやっぱ遅い
652デフォルトの名無しさん:2011/02/09(水) 22:16:15
昨日と違っていきなりレベル下がってると思ったら
またWPF厨が来てんのか。
653デフォルトの名無しさん:2011/02/09(水) 22:33:19
いつも低レベルだろw
654デフォルトの名無しさん:2011/02/09(水) 22:35:26
まあね♪
655デフォルトの名無しさん:2011/02/09(水) 23:14:14
>>652
wpfに恨みでもあるのか?普通に使える技術だと思うが
656デフォルトの名無しさん:2011/02/09(水) 23:20:01
少し前にいろんなスレでWPF使えねーだのラムダ式がわかんね―だの喚き散らしてた勘違い初心者のことを指してるんじゃないか?
657デフォルトの名無しさん:2011/02/09(水) 23:23:57
>>655
失せろゴミ
658デフォルトの名無しさん:2011/02/09(水) 23:39:29
厨だのなんだのガキみたいなこと言ってる奴が
誰かのプラスになるような知識や智恵を持ってるわけないんだから、構うだけ有害。
659デフォルトの名無しさん:2011/02/10(木) 00:08:07
自己紹介乙
660デフォルトの名無しさん:2011/02/10(木) 00:11:36
すみません、初心者ですが、
ソケット通信で可変長データ扱うのに
良いサンプルないでしょうか?
661デフォルトの名無しさん:2011/02/10(木) 00:16:53
>>655
専用スレあるのにここで暴れるなよ。
662デフォルトの名無しさん:2011/02/10(木) 00:19:22
>>661
失せろゴミ
663デフォルトの名無しさん:2011/02/10(木) 00:33:30
そうだそうだ!
664デフォルトの名無しさん:2011/02/10(木) 00:38:08
>>663
失せろゴミ
665デフォルトの名無しさん:2011/02/10(木) 00:39:01
WPF厨まじウザイな。
隔離スレ用意してもこっちを荒らしやがる。
666デフォルトの名無しさん:2011/02/10(木) 00:46:07
自演乙
667デフォルトの名無しさん:2011/02/10(木) 01:07:45
VB.NETでいうSetやDimはC#ではどういう意味になるんですか?
668デフォルトの名無しさん:2011/02/10(木) 02:13:15
はいはい自演自演
669デフォルトの名無しさん:2011/02/10(木) 02:16:44
答えは”バカめ”だ!
670デフォルトの名無しさん:2011/02/10(木) 02:48:25
自演でWPF叩きとは、よっぽど暇なんだな
671デフォルトの名無しさん:2011/02/10(木) 08:59:37
みんな結構VS標準のデータセット使ってるの?
使い勝手が悪くてほとんど使ってないんだが
672デフォルトの名無しさん:2011/02/10(木) 09:00:19
あ、ごめん
型付きデータセットのこと
673デフォルトの名無しさん:2011/02/10(木) 15:59:11
VisualC#2010Express使っています。
pictureboxに表示した画像の上からDrawLineで線を引くことは出来ますか?
674デフォルトの名無しさん:2011/02/10(木) 15:59:51
できます。
675デフォルトの名無しさん:2011/02/10(木) 16:01:00
>>674
早い解答ありがとうございます。
がんばって調べてみます。
676デフォルトの名無しさん:2011/02/10(木) 19:02:22
冷たいなw
677デフォルトの名無しさん:2011/02/10(木) 19:09:17
>>673 WinFormだよね?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(640,480);
            pictureBox1.Image = bmp;
            this.MyDrawLine(bmp);
        }
        private void MyDrawLine(Bitmap bmp)
        {
            using (Graphics g = Graphics.FromImage(bmp))
            {
                g.DrawLine(Pens.Black, 10, 10, 100, 100);
            }
        }
    }
}
678デフォルトの名無しさん:2011/02/10(木) 20:03:59
http://oshiete.goo.ne.jp/qa/5731809.html
ここによると、LinkLabel.LinkDataというプロパティがあるようなんですが、
実際書いてみるとインテリセンスが補助してくれず、
MSDNを見てもそのようなプロパティの存在が確認できません
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.linklabel_members%28v=VS.90%29.aspx

同じような処理をするにはどうしたらよいのでしょうか
LinkLabel.Textの文字列に複数のリンクを設定したいです
679デフォルトの名無しさん:2011/02/10(木) 20:06:12
ペンとかブラシとかってDisposeしなくていいの?
680デフォルトの名無しさん:2011/02/10(木) 20:22:01
>>679
そのためのusingの囲みですよ
681デフォルトの名無しさん:2011/02/10(木) 20:25:22
>>678
LinkLabel.Link.LinkData
682デフォルトの名無しさん:2011/02/10(木) 20:27:52
SilverLightを仕事で触り始めたけど
WPFと比べて出来ないことが多すぎて泣ける。
683デフォルトの名無しさん:2011/02/10(木) 20:39:45
Process.Startで外部Exeをキックするコンソールを作成しました(.NET2.0)
起動はできるのですがプロセスを切る処理がどうもよくわかりません

http://msdn.microsoft.com/ja-jp/library/system.diagnostics.process.close%28v=vs.80%29.aspx

上記のページを参考にして作ったのですが、キックした外部Exeのプロセスを切るのではなく
起動元のExeのプロセスを切るにはどうすればいいのでしょうか?
(キックした外部Exeだけが残るイメージです)

Process myProcess;
myProcess = Process.Start("Notepad.exe");
myProcess.CloseMainWindow();
myProcess.Close();

サンプルにあるこのコードだとキックした外部Exeのプロセスが落ちます。
3行目の「myProcess.CloseMainWindow();」をコメントアウトすると、起動元のExeのプロセスが落ちます。
ですが、Process型として宣言しているmyProcessは外部Exe(メモ帳)なので、どうして起動元が落ちるのかわかりません

やりたいことは満たしているのですが、自分の中で説明がつかない状況です
初歩的な質問かもしれませんが、どなたか教えて頂けないでしょうか?




684デフォルトの名無しさん:2011/02/10(木) 20:40:40
685デフォルトの名無しさん:2011/02/10(木) 20:50:24
>>683
言いたいことがよくわかりません
686デフォルトの名無しさん:2011/02/10(木) 20:50:33
>>683
Mainの処理が終わればコンソールは閉じるんだよ
687デフォルトの名無しさん:2011/02/10(木) 21:19:39
>>686
DOS窓から実行してんじゃねえの?
688デフォルトの名無しさん:2011/02/10(木) 21:53:03
>>687
そう思うんなら、その設定で現象を説明してあげたら?
689デフォルトの名無しさん:2011/02/10(木) 22:00:49
>>680
UsingはGraphicsの解放を保証するだけじゃないんですか?
690デフォルトの名無しさん:2011/02/10(木) 22:14:19
糞#はやらない方がえっな生産性がよくても糞真のスレ
691デフォルトの名無しさん:2011/02/10(木) 22:21:43
J#がどうかしたって?
692デフォルトの名無しさん:2011/02/10(木) 22:22:05
こら、J#の悪口いうなや!
693デフォルトの名無しさん:2011/02/10(木) 22:45:38
>>689
Pens.Blackはstaticだから
694デフォルトの名無しさん:2011/02/10(木) 23:02:26
自分で書いたクラスにDisposeを付ける必要があるのってどんなとき?
695デフォルトの名無しさん:2011/02/10(木) 23:12:16
共有リソースを一時的に占有する必要があるクラス。
696デフォルトの名無しさん:2011/02/10(木) 23:15:38
糞#ェ…
697デフォルトの名無しさん:2011/02/10(木) 23:18:19
>>693
Penをnewしてたら解放する必要があるって事でいいですか?

>>694
IDisposableのインスタンスを保持している場合
アンマネージリソースを保持している場合
ですかね?
698デフォルトの名無しさん:2011/02/10(木) 23:27:16
でもPensじゃなくてPenを作ってもスコープ抜ければ問題ないんじゃないの?
699デフォルトの名無しさん:2011/02/10(木) 23:32:24
>>693
それで返るPenって同じ参照なの?
700デフォルトの名無しさん:2011/02/10(木) 23:33:28
>>699
Pen(255,0,0,0);
これをstaticで持ってるだけでしょPens.Blackって
701デフォルトの名無しさん:2011/02/10(木) 23:36:20
ん? じゃあDisposeされた時の対処はしてないのかね
702デフォルトの名無しさん:2011/02/10(木) 23:40:35
PenにはColorとboolのinternalコンストラクターがあって、private bool immutableの値を設定できる
PensのPenはtrueなのでデストラクター以外でDisposeすると例外が発生する
703デフォルトの名無しさん:2011/02/10(木) 23:43:23
へー、勉強になったわ
704デフォルトの名無しさん:2011/02/10(木) 23:45:12
一番いいのがMSが公開してるソースを見てみることなんだけどね
705デフォルトの名無しさん:2011/02/11(金) 00:41:56
>>684
参考にして
http://ideone.com/V11N5
とやってみたんですが、
実際にAddするところでInvalidOperationExceptionが毎回発生してしまいます
何が間違ってるんでしょうか
706705:2011/02/11(金) 00:44:35
置換忘れが
http://ideone.com/23uRU
こちらでお願いします
707デフォルトの名無しさん:2011/02/11(金) 19:07:49
new LinkLabel.LinkCollection(LinkLabelOwner)
で指定した親に
LinkCollection.Add(startIndex, linkLengh, linkstring)
でリンク突っ込んでるのに
foreach (LinkLabel.Link link in linkcollection){ linkLabel1.Links.Add(link); }
これで同じものをもう一回突っ込みなおしてるから


http://msdn.microsoft.com/ja-jp/library/1a22yh2z%28v=VS.100%29.aspx
※メモ
2 つのリンクで同じテキストを共有することはできません。 別のリンクで既に使用されているテキストに対して新しいリンクを作成すると、例外がスローされます。


に引っかかってるんだろう。

質問する前にスムーズに状況再現できるコードを貼れ。
今回の場合は適当なURL含んだ逐語的文字列リテラルを含めて貼れ。
例外のメッセージが出る場合は「例外の詳細をクリップボードにコピー」を選んで一緒に書き込め。
708デフォルトの名無しさん:2011/02/11(金) 21:58:55
>>707
List<LinkLabel.Link>にする事で解決できました、
次から気を付けます

最少の構成にするとこんなです
ttp://eload.run.buttobi.net/cgi-bin/img/e_1069.zip
709デフォルトの名無しさん:2011/02/11(金) 23:49:59
VisualStudioのチームファンデーションビルドっていうビルド用パッケージを使ってビルド用サーバ作って
チームのビルドを一元化してるんだけどさ
ビルド結果で吐き出されるログを編集してこねくり回すためのexeをC#で作ってるのよ
このログ編集exe実行をビルドマシンのビルドと同時に自動起動するようにしたい
で、このビルドはスクリプトファイルを頭から読んでいく形で行われるんだけどさ(xmlで.projファイル形式で記述されている)
そのスクリプトを修正して、ビルドサーバの任意のディレクトリに置いたログ編集exeを呼び出す方法はわかったんだ
しかし、そもそもログファイルの生成は、スクリプトが全行実行完了してからじゃないと吐き出されないOTL
そこで、まずは待機exeを非同期に呼んで、5分間くらい待ってスクリプトが終わってログが吐き出されてから
ログ編集exeを呼び出そうと思ってるんだけど
待機exeの実装はどうやってすべき?さっぱわかりません><
710708:2011/02/11(金) 23:55:29
まちがった
@まずは待機exeをスクリプトから普通に呼び出して、
A待機exeからログ編集exeを非同期に5分後位に呼び出す
Bで、待機exeは終了して制御をスクリプトに戻す


Aの実装方法をご教示いただきたいです
711デフォルトの名無しさん:2011/02/12(土) 00:08:43
そういうのは普通スクリプトじゃなくビルドバッチのケツにぶち込むだろ
712デフォルトの名無しさん:2011/02/12(土) 00:14:37
普通にThread.Sleep(300000)じゃ駄目なのか。
713デフォルトの名無しさん:2011/02/12(土) 00:33:56
そのログファイル名(パス)が固定なら、
VS とは無関係に常駐プログラムでファイルの更新を検知してやればいいんじゃまいか。
714デフォルトの名無しさん:2011/02/12(土) 08:45:17
msdnのIEnumerable<T>関係にあるUMPって何?
715デフォルトの名無しさん:2011/02/12(土) 10:44:25
4.0のドキュメントだとTSourceに直されてるな
716デフォルトの名無しさん:2011/02/12(土) 16:05:04
ToolStripPanel で、内部のToolStripをつまんで移動しても
領域が自動的に広がらないようにしたいのですがどうすればよいでしょう。
717デフォルトの名無しさん:2011/02/12(土) 16:13:57
そんな現象あったっけ?
718716:2011/02/12(土) 16:16:39
あとさらに、ToolStripをD&Dで別のToolStripPanel に移動できないように
するためにToolStripPanel のAlowDropを使えるかと見たらAlowDropプロパティ
がありません。ToolStripを別のToolStripPanel にD&Dで移動できないように
する方法を知りたく(ただし一つのToolStripPanel 内では適当に移動できる
ようにはしておきたいです)。
719デフォルトの名無しさん:2011/02/12(土) 16:20:03
ならToolStripContainerを使わなきゃいいのに....
720716:2011/02/12(土) 16:21:38
>>717
ToolStripContainer だけでなくToolStripPanel でも、自動的に
幅が膨らんでそこにおけるようになりました。1行目内から
少し外に出た時点でパカッと幅が広がって2行目にそのToolStripが
置けるようになりました。1行だけに限定して移動できるようにしたい
のですが自動的に広がってしまうのでした。
721デフォルトの名無しさん:2011/02/12(土) 16:38:30
>>720
なるほど確かに。
あまりかっこいい方法じゃないけど、ToolStripContainerをPanelに入れて
Dock.Fillにして、Panelを適当な高さにすれば回避できるみたい。
722716:2011/02/12(土) 19:04:21
>>721
ありがとうございます。用事があって離れていました、試してみます!!
723デフォルトの名無しさん:2011/02/12(土) 20:05:44
質問です。
インスタンスの生成やメソッドの実行時に、デバッグログを出力する場合
出力メッセージは、何処に持たせるべきでしょうか。

  ・メッセージの一覧を管理するクラスや列挙体を作る
  ・各クラスのメンバに、 string const として定義する
  ・リフレクションでクラス名やメソッド名を取得する
  ・上記以外
724デフォルトの名無しさん:2011/02/12(土) 20:22:30
>>722
ごめん、>>721のToolStripContainerはToolStripPanelの間違いね。
言わなくても分かると思うけど一応
725デフォルトの名無しさん:2011/02/12(土) 21:07:34
質問です。
PCからシリアルポートを使用し操縦するカメラ付きラジコンを製作しています。
ラジコン部分は作成できたのですが、C#でUSBカメラを表示させる方法がわかりません。
使用しているカメラは、USB無線式WEBカメラで(http://www.thanko.jp/product/av/video-camera/usb-wireless-webcamera.html/
目標は、こんな感じの動きを目指しています。(http://www.nicovideo.jp/watch/sm12780817)←にラジコンを足したものだと思って下さい

当方、プログラムは本当に初心者でご教授願います。
726デフォルトの名無しさん:2011/02/12(土) 21:16:33
>>725
C# カメラでググれ
727デフォルトの名無しさん:2011/02/12(土) 21:57:40
C#カメラで調べたのですが・・・
僕には難しく、http://mobiquitous.com/programming/usbcamera.html
このサイトのサンプルは理解できませんできました。

フォームにカメラの動画を表示させるだけのサンプルプログラムのページなどはありませんかね?
728デフォルトの名無しさん:2011/02/12(土) 22:10:15
ログねえ…どうなんだろうね
そもそも標準のログ使ったことねーな
log4netばっかりで
729デフォルトの名無しさん:2011/02/12(土) 22:10:28
じゃあOpenCV使えば?超絶簡単だよ。
730デフォルトの名無しさん:2011/02/12(土) 22:26:20
デバッグ専用ならあんまり巨大なクラスとか大量の定数は作る必要を感じないなあ
StackFrameとリテラル程度でいいんじゃない?
731デフォルトの名無しさん:2011/02/12(土) 22:37:35
string constで大量に定義するよりは
クラス内にenumを作るかな
732デフォルトの名無しさん:2011/02/12(土) 23:06:16
>>729
OpenCVでをC#で使う場合、まずライブラリをDLしてきて・・・
どのようにすれば、いいのですか?


本当に初心者で申し訳ないです。
あと、お勧めのサンプルってありますか?
733デフォルトの名無しさん:2011/02/12(土) 23:31:56
少しはがんばれよw
734デフォルトの名無しさん:2011/02/13(日) 01:35:16
.NET 4で導入されたContractsについて聞きたいのですが
基本的に引数チェックはContracts.Requiresに置き換えて良いと考えても良いものですか?
735デフォルトの名無しさん:2011/02/13(日) 01:38:18
ドキュメントに「〜でなければなりません」とか書くようなものは全部Contracts使っとけばOK。
736デフォルトの名無しさん:2011/02/13(日) 03:07:07
そうなの?
737デフォルトの名無しさん:2011/02/13(日) 08:25:33
>>733
そこをなんとか!!
どうか!どうか!卑しい私にOpenCvのサンプルを!!

自分なりに調査したのですが・・・英語のサイトが多く、僕の英語力(エキサイト翻訳)では
限界です。
738デフォルトの名無しさん:2011/02/13(日) 11:20:18
あきらめて死ねばいいのに
739デフォルトの名無しさん:2011/02/13(日) 11:26:41
こんだけ大量にサンプルがあるのに使えないって
基礎がなってなさすぎ。
初心者ならもう少し基礎をやってからにしろ。
740デフォルトの名無しさん:2011/02/13(日) 11:52:13
>>738
すみません、カメラを使用して遊ぶおもちゃを思いついたので、いてもたってもいられず
書き込んでしまいました。

あきらめずがんばってみます。

>>739
ですよね、C#の存在を言ったのが2週間くらい前で
基礎はなってないですねw

もうちょっとネットで調べて見ます。

わからないことがあれば教えてください。
レスありがとうございます!!
741デフォルトの名無しさん:2011/02/13(日) 21:16:33
引数を持たないデリゲートって作れますか?
742デフォルトの名無しさん:2011/02/13(日) 21:19:21
なんで作れないと思ったのかすげー気になる
743デフォルトの名無しさん:2011/02/13(日) 21:28:24
>>742
Delegateって大文字で書いてた・・・
ありがとん
744デフォルトの名無しさん:2011/02/13(日) 21:31:38
Action, Func<T>, ThreadStart…
745デフォルトの名無しさん:2011/02/14(月) 00:08:32
C#でUSBカメラ扱うなら
SharperCVとかどうかな?
http://chihara.naist.jp/opencv/?SharperCV
ひとまずカメラの表示から適当にフィルタかけるぐらいなら
すぐに出来たので後は頑張ってくれ。
746デフォルトの名無しさん:2011/02/14(月) 01:33:22
SharperCVは地雷だろ。
OpenCVSharpか
http://www.geocities.co.jp/SiliconValley/7406/tips/opencvdll2/index.html
つかっておけば?
747デフォルトの名無しさん:2011/02/14(月) 01:34:08
Mscorcfg.msc っつーのがほしくて先日から .NET Framework 2.0 SDK を
落そうと思っているんだが途中で切れてしまうようでうまく落とせない。

http://download.microsoft.com/download/5/7/2/57246de2-5e4c-48cb-a903-56067659539f/setup.exe

うちの環境だけなのかわからないんで、だれか試してくれくれ。
748デフォルトの名無しさん:2011/02/14(月) 01:43:45
>>747
うちもMSから30MB程度の物をダウンロードするにもダメなときがある
対策としてはレジューム対応してるダウンローダーでダウンロードするしかない
749デフォルトの名無しさん:2011/02/14(月) 01:45:22
750デフォルトの名無しさん:2011/02/14(月) 02:03:46
さっきはh抜くの忘れた。
ttp://www.microsoft.com/downloads/ja-jp/confirmation.aspx?familyId=fe6f2099-b7b4-4f47-a244-c96d69c35dec&displayLang=ja
300KB/sec くらいしか出ていないけれど、こっちからだとうまく落とせてる。

ありがとうノシ
751デフォルトの名無しさん:2011/02/14(月) 02:19:24
>>746
SharperCVが地雷だと言うなら理由を書いておいてくれればいいのに。
調べたところ使える関数が少ないみたいだ。
なので>>746の言うとおりOpenCVSharpが良さそうだね。
752デフォルトの名無しさん:2011/02/14(月) 02:37:12
Thread.start()したメソッドって、
処理が全部終わったらスレッドも勝手に破棄されますか?
常にAbort()を呼び出す必要ってありますか?
753デフォルトの名無しさん:2011/02/14(月) 02:54:05
以下のような構造をしたXMLからIdタグの要素を全て取得するにはどうすればいい?
最終的に要素はリストに加えるか、IEnumerable<int>として扱えればいい
制限:.NetFramework 3.5、Linq使用可

<Hoge>
 <Piyo>
  <Ids>
   <Id>1111</Id>
   <Id>2222</Id>
   <Id>3333</Id>
   <Id>4444</Id>
  </Ids>
 </Piyo>
</Hoge>
754デフォルトの名無しさん:2011/02/14(月) 04:34:21
つDescendants
755デフォルトの名無しさん:2011/02/14(月) 11:45:04
web語全般がなじめないのですが
C#でCGIソフトを作る環境はありますか?

ブラウザに表示されたボタンやコマンドを入力 → 鯖で処理 → クライアントに表示
という奴です
756デフォルトの名無しさん:2011/02/14(月) 11:49:58
web語って何?HTML?
まず一般的な用語を身につけてから来い
757デフォルトの名無しさん:2011/02/14(月) 11:59:40
ASP.NET
758デフォルトの名無しさん:2011/02/14(月) 18:08:26
代替のCollectionがGenericで用意されてる場合って、
基本的にそっちの方が高速って認識で間違いないですか?
759デフォルトの名無しさん:2011/02/14(月) 18:13:59
フォームアプリでTabを押したとき、フォーカスが移動しますが、
その順番を変えたいのですが、どこを弄ればいいんでしょうか?
VC#2010Expressです。
760デフォルトの名無しさん:2011/02/14(月) 18:25:06
>>759
メニュー→表示→タブオーダー
761デフォルトの名無しさん:2011/02/14(月) 19:00:41
>>745
>>746
ありがとうございます!!
OpenCVSharですか、使ってみます!!
何事にもチャレンジですね!

>>751
調べていただいて申し訳ないです。
ありがとうございます。

がんばってみます。
762デフォルトの名無しさん:2011/02/14(月) 19:39:03
>>756
> なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
763デフォルトの名無しさん:2011/02/14(月) 19:54:52
ASPじゃなくてサーバーが何をやってるかを勉強したければC#で簡易サーバーを組んだ
サンプルをどこがの情報サイトが公開してたな

あれ動かしてみなよ
サーバーにとってのURLが何かとかわかるよ
764デフォルトの名無しさん:2011/02/14(月) 20:59:21
CodePlexにあったな。
765デフォルトの名無しさん:2011/02/14(月) 23:57:25
byte列で加算したんだが良いやり方教えてー
こんな感じにしたい↓  BCDって言うんかな?
0 :0x00 0x00 0x00 0x00
1 :0x00 0x00 0x00 0x01
10:0x00 0x00 0x01 0x00
766デフォルトの名無しさん:2011/02/15(火) 00:00:47
decimal?
767デフォルトの名無しさん:2011/02/15(火) 00:05:32
decimalではなく、ただのIDみたいな使い方をしたい。
768デフォルトの名無しさん:2011/02/15(火) 00:07:10
>>767
そりゃ別にintだっていいじゃん
769デフォルトの名無しさん:2011/02/15(火) 00:09:46
770デフォルトの名無しさん:2011/02/15(火) 00:16:07
Linqでコレクションから項目を30個ずつ取り出したい時はどういう風に書くのが簡単でしょうか?
771デフォルトの名無しさん:2011/02/15(火) 00:18:28
>>768
仕様 書いたヤツに突っ込んでくれ
>>769
BCDではなさそう…
0000-> 0x0000    ←BCD
1234-> 0x1234    ←BCD
1234-> 0x01020304 ←こういうのが良いとさ。
772デフォルトの名無しさん:2011/02/15(火) 00:20:02
>>765
下位8ビットの論理積をとって、右8ビットシフトするのを繰り返すとかかなぁ
773デフォルトの名無しさん:2011/02/15(火) 00:21:30
>>771
意味が分からないんだけど、右の数字は16進数になってなくない?
単に一桁ずつ分けるなら数字を文字列に変換して一文字ずつ取り出せばいいと思うけど・・
774デフォルトの名無しさん:2011/02/15(火) 00:22:54
>>771
めんどくせーな

桁数がどれくらいかしらんけど
USC-2も半角部分はアスキー互換だっけ?
アスキー互換だとすれば

intで計算byte配列に直すときはintをstring化して文字単位に分割して
0x30をマイナス
775デフォルトの名無しさん:2011/02/15(火) 00:23:06
普通に整数で計算して、
その結果から"0000"や"0001"や"0010"みたいな文字列作ってから
各桁から0x30引く(0x0Fでマスクでもいい)
776デフォルトの名無しさん:2011/02/15(火) 00:24:33
>>773
BCDは8bitで0〜9までしか扱わないんだよ
2進化10進だっけかな?

パックドとかアンパックドとか無かったっけ?
まあそんな機能があるのは昔のメインフレーム向けの言語とかの時代くらい?
どうせそういう名残のある物なんだろう

777デフォルトの名無しさん:2011/02/15(火) 00:27:04
BCDとか初めて聞いた、勉強になるなぁ
778デフォルトの名無しさん:2011/02/15(火) 00:31:35
ゲームの得点表示もこんな感じで数字を分解して
インデックス化しないとテクスチャが扱えないんだよな
779デフォルトの名無しさん:2011/02/15(火) 00:33:56
なんかZ80の10進数表示ルーチン書いてた頃を思い出した
780デフォルトの名無しさん:2011/02/15(火) 00:38:26
10で割って、10の剰余とって…的な…
桁上げのシフト演算もなぁ…

もっとスマートなの( ゚д゚)クレ
781デフォルトの名無しさん:2011/02/15(火) 00:40:12
782デフォルトの名無しさん:2011/02/15(火) 00:42:16
>>781
そこ使うならコンソールで書けよ
実行結果見れないじゃん
783デフォルトの名無しさん:2011/02/15(火) 00:47:24
>>770
collection.Skip(30 * i).Take(30)
とかかな?
784デフォルトの名無しさん:2011/02/15(火) 00:48:38
ほう
コンソールだとブラウザ上で結果まで見えるのか
http://ideone.com/68sIa
785デフォルトの名無しさん:2011/02/15(火) 00:56:28
>>781 >>784
どうもどうも。
参考にさせていただきます
786デフォルトの名無しさん:2011/02/15(火) 01:03:37
>>780
桁上げシフトが何を言ってるのか分からんけど、C#なら結局10進数の最上位桁の
1の値から順に割ってくのが一番早いと思うよ。

アセンブラだとBCD加算命令が使えると思うから、byteをパックドBCDに変換するルーチンと
パックドBCDを256倍するルーチンを書いて、その二つを組み合わせてunitをbyte配列に書けるけど、
BCD加算をC#で実装してたらかえって重くなるんじゃないか。
787デフォルトの名無しさん:2011/02/15(火) 01:09:56
ところでC#のintを文字列とか変換って内部はどうやってるんだろう
単純に割り算かな?
だとすると自分で組んだ方がいいかもなw
788デフォルトの名無しさん:2011/02/15(火) 01:45:30
>>787
世界最高レベルのライブラリ作者が書いたコードより速くできる自信があるならどうぞ
789デフォルトの名無しさん:2011/02/15(火) 10:18:40
カルチャとかフォーマットとかいろいろ考慮すると遅くなるんであって
特定の変換ルールに限定するなら自分で書いた方が速いだろ
でも数値->文字列の変換が使われる状況ってその処理自体がネックになることはまず無くて
IOとかGUI操作とかで吹き飛ぶ
790デフォルトの名無しさん:2011/02/15(火) 12:29:03
作っているときのパフォーマンスチューニングって意味ないよな
速度が問題になってから改良すれば十分
791デフォルトの名無しさん:2011/02/15(火) 12:35:08
後々パフォーマンスの為に改造したりしなきゃいけないような場合、メソッドとか分けときゃいいし
792デフォルトの名無しさん:2011/02/15(火) 12:42:27
>>788
よく本とか記事にそういうこと書かれてることがあるけど、
実際、速くするだけなら簡単なんだよな。
その論理だとJava開発陣は世界最低レベルの開発者の集まりってことになるし。
793デフォルトの名無しさん:2011/02/15(火) 12:45:20
linqの進捗状況をチェックするスマートな方法ある?
今のところIEnumerableに拡張メソッドを作ろうとしてるけど
794デフォルトの名無しさん:2011/02/15(火) 12:46:07
>>792
>その論理だとJava開発陣は世界最低レベルの開発者の集まりってことになるし。
なにか問題でも?
795デフォルトの名無しさん:2011/02/15(火) 13:10:36
PHPのクズっぷりを見てみろ
http://hibari.2ch.net/test/read.cgi/php/1295956018/
796デフォルトの名無しさん:2011/02/15(火) 13:15:21
>>792
制限の中で最速って意味だと思うけど・・・・
Javaなのにネイティブコード使って「はい最速ー^^って話ではないような
797デフォルトの名無しさん:2011/02/15(火) 13:24:58
制限じゃなくて仕様な
そりゃ12345を常に"12345"に変換するだけの仕様ならずっと速く書けるが
実際にはもっと複雑で高機能なので遅くなって当たり前
798デフォルトの名無しさん:2011/02/15(火) 13:27:53
ふらっとは相変わらず香ばしいな
799デフォルトの名無しさん:2011/02/15(火) 13:38:18
あんな型に厳密でない言語で書くとかwwww
800デフォルトの名無しさん:2011/02/15(火) 15:11:55
少しはC#の話しろよ・・・
801デフォルトの名無しさん:2011/02/15(火) 16:58:36
Form上のコントロールでSplitContainerなどのコンテナを多用してコントロールを
配置しています。TabIndexを設定していますが、最後まで行ったFocusが循環して
またTabIndexの先頭に戻って来ません。正しく先頭に戻るようにするにはどうすれば
よいでしょうか?教えてください。(VS2005使用)
802デフォルトの名無しさん:2011/02/15(火) 17:02:57
leaveかなんかでfocus()すればいいんじゃ
803デフォルトの名無しさん:2011/02/15(火) 17:19:15
>>783
これをループで回すとカナリア遅くね?
もうちっと早くやりたい場合になんかいい方法論ない?
804デフォルトの名無しさん:2011/02/15(火) 17:31:24
>>803
ループで回すぐらいなら、全部取って30ずつ回せば良いだけでしょ
805デフォルトの名無しさん:2011/02/15(火) 17:58:23
Linqは最適化するにも保守するにもテストするにも使いにくい。
やたらに使いたがる奴はただの馬鹿。C++のテンプレート厨と同じ。
806デフォルトの名無しさん:2011/02/15(火) 18:01:44
>>803
Enumeratorを管理するクラスでも作れば?
807デフォルトの名無しさん:2011/02/15(火) 20:10:54
>>805
それは単にお前が無知なだけじゃね
808デフォルトの名無しさん:2011/02/15(火) 20:11:36
>>807
馬鹿乙。
809デフォルトの名無しさん:2011/02/15(火) 20:12:27
>>807
無知はおまえだろうw
810デフォルトの名無しさん:2011/02/15(火) 20:13:06
特にテストしないといけないような粒度のものをLINQっていうかラムダ式で書くなよ
811デフォルトの名無しさん:2011/02/15(火) 20:15:06
static IEnumerable<T[]> BufferWithCount30<T>(IEnumerable<T> enumerable) {
var array = new T[30];
int count = 0;
foreach (var i in enumerable) {
if (count == 30) { yield return array; count = 0; }
array[count++] = i;
}
//// 残りが欲しい時
//var leftValues = new T[count];
//for (int i = 0; i < count; i++) leftValues[i] = array[i];
//yield return leftValues;
}
812デフォルトの名無しさん:2011/02/15(火) 20:19:04
Linqを最適化って何するんだ?
813デフォルトの名無しさん:2011/02/15(火) 20:24:23
商用、業務レベルでは、ブラックボックスのライブラリでも、当然にテストする。
それでバグ発見も普通にある。大手に何度かバグ報告したことあるし。
パッチに数ヶ月かかる糞大手もあった。

ただ自らLinqとか使って保守しずらくするのは馬鹿のすること。
短いのがスマートだと思ってる馬鹿がたまにいるから困る。
保守性や仕様変更耐性上げるために冗長に書くのが残業しないための知恵。
814デフォルトの名無しさん:2011/02/15(火) 20:26:04
まあLinqは静的メソッドに過ぎないんだけどねw
815デフォルトの名無しさん:2011/02/15(火) 20:34:33
Linqって速度的にも優れてるわけじゃないんでしょ?
それならむしろ可能な限り避けるべきなんじゃないの
816デフォルトの名無しさん:2011/02/15(火) 20:34:52
馬鹿か。それ保守性と関係ないし。
817デフォルトの名無しさん:2011/02/15(火) 20:35:37
どちらかと言うと遅い。
統計使って最適化できないし。
818デフォルトの名無しさん:2011/02/15(火) 20:37:38
独自実装でハッシュ結合やグループ化しているコードとか見たくもないんだけど
819デフォルトの名無しさん:2011/02/15(火) 20:40:04
メモリ効率とレスポンスはLinqの方がいいだろ
820デフォルトの名無しさん:2011/02/15(火) 20:43:04
現在
void foo()
{
_hoge = new HogeClass();
PiyoClass A = new PiyoClass(_hoge);
PiyoClass B = new PiyoClass(_hoge);
A.ThreadStart();
B.ThreadStart();
}
としてフィールド変数_hogeを、
無限ループを持つスレッドA及びBで共有しているのですが、
この_hogeをHogeClass hoge = new HogeClass();のように、
ローカル変数として用意した場合どうなるのでしょうか

fooメソッドが終わってもhogeの実体は残り続けて、AとBで共有されるのでしょうか
821デフォルトの名無しさん:2011/02/15(火) 20:44:16
はい
822デフォルトの名無しさん:2011/02/15(火) 20:49:58
まだLinq恐怖症の奴いたのかよw
823デフォルトの名無しさん:2011/02/15(火) 20:57:31
>>822
早く就職しろ。
824デフォルトの名無しさん:2011/02/15(火) 21:06:54
そもそも3.0以降の案件にあたったことがあんまりないんだが、そろそろVB6〜1.1のリプレースで増えてきてるのか?
825デフォルトの名無しさん:2011/02/15(火) 21:07:37
>>821
そうなんですか
じゃあフィールドで値持っておく必要ないんだ・・・
なんてこった
826デフォルトの名無しさん:2011/02/16(水) 00:56:55
ベースフォームを新たに作り、それを継承してサブクラスのフォームを2つ作ろうとしてるんだけど
サブクラスのフォーム2つでフォームのHeightが違うんだ
これを実装するにはやっぱ

1.BaseではでかいほうのHeightに合わせる
2.小さいほうのサブクラスフォームのロードイベントで、Heightを設定する

ってやり方になるかな?
827デフォルトの名無しさん:2011/02/16(水) 01:07:33
Reflectorかけてコードに戻したときに、
メソッドの引数に決め打ちで入力されることがあるんですが、
これって無駄なパラメータ入れてるから最適化されてるよって事ですよね?
恥ずかしいコード書いてるって認識した方が良いですか?
828デフォルトの名無しさん:2011/02/16(水) 01:09:09
可能なら(殆どの場合そうだと思うけど)フォームの継承ではなく、
ユーザーコントロールを使った方が人生シンプル
829デフォルトの名無しさん:2011/02/16(水) 01:16:56
>>827
無駄かどうかなんてお前以外の誰が判断できるんだ。
830デフォルトの名無しさん:2011/02/16(水) 01:56:57
>>827
可読性とか変更耐性とか色々有るので、必ずしも無駄とは限らんというか
「勝手に最適化してくれるんだから、コードをカリカリにチューニングしなくてもいいや」と思っとくが吉
831デフォルトの名無しさん:2011/02/16(水) 02:07:11
ほほう
832デフォルトの名無しさん:2011/02/16(水) 03:19:59
このスレではデザインパターンとLinqはタブーだなw
833デフォルトの名無しさん:2011/02/16(水) 03:37:00
Javaを見ればすぐ失敗作だと分かることだ。
834デフォルトの名無しさん:2011/02/16(水) 03:45:27
アホがついて来れないんだよな
835デフォルトの名無しさん:2011/02/16(水) 03:49:39
Java厨も同じこと言ってた10年前。
836デフォルトの名無しさん:2011/02/16(水) 03:55:06
10年前か・・・結構ベテランもいるんだねw
837デフォルトの名無しさん:2011/02/16(水) 04:00:08
ゆとりかよ?w
どおりでLinqの欠点が全く見えないわけだw
838デフォルトの名無しさん:2011/02/16(水) 04:05:07
そういう突飛なこと言う場合は説明が必要だな
839デフォルトの名無しさん:2011/02/16(水) 04:10:39
どうせLINQが理解できなかったんだろ。
Rxとか見せたら発狂しそうw
840デフォルトの名無しさん:2011/02/16(水) 04:14:36
理解できないとかw
Z80から何十年コード書いてると思ってんだよ?w
841デフォルトの名無しさん:2011/02/16(水) 04:15:16
流石ベテランさんは違う
842デフォルトの名無しさん:2011/02/16(水) 04:23:24
実はLinqってしっくりこないんです!
843デフォルトの名無しさん:2011/02/16(水) 04:28:40
>>840
名人様が来たぞー!逃げろー!
844デフォルトの名無しさん:2011/02/16(水) 04:31:36
みながわさんはもう許してやれよw
845デフォルトの名無しさん:2011/02/16(水) 04:38:18
ゆとりがふぁびょっててワロタw
846デフォルトの名無しさん:2011/02/16(水) 04:40:54
>>845
自己紹介乙
847デフォルトの名無しさん:2011/02/16(水) 07:14:41
みながわさん来てたのかw
848デフォルトの名無しさん:2011/02/16(水) 07:18:11
>>813
linqを使わないほうが仕様変更に強いっての本当?
実例をあげてみて欲しい。
849デフォルトの名無しさん:2011/02/16(水) 08:25:59
foreachで書き直すだけなら何も変わらないだろうな
850デフォルトの名無しさん:2011/02/16(水) 08:32:14
Whereとか自力で作るってことか
不毛過ぎる・・・
851デフォルトの名無しさん:2011/02/16(水) 08:37:22
linqを使うと仕様変更できる人が少なくなる
852デフォルトの名無しさん:2011/02/16(水) 08:45:50
Whereとか使うだけで仕様変更できる人が少なくなるって…
853デフォルトの名無しさん:2011/02/16(水) 08:57:39
LINQ to ObjectなんてIEnumerable<T>を順番に取り出して処理してるだけじゃん。
この程度の事すら理解できない・理解しようとしない奴が、俺の書いたコードを弄繰り回して仕様変更するなんて寒気がするな。
854デフォルトの名無しさん:2011/02/16(水) 09:32:47
LinqってSQLの構文と微妙に違っていて使いづらいんだよな.
855デフォルトの名無しさん:2011/02/16(水) 10:03:53
メソッドの方しか書かないな
856デフォルトの名無しさん:2011/02/16(水) 10:15:50
最初は違和感あったけどインテリセンスのためだと思えば
857デフォルトの名無しさん:2011/02/16(水) 13:23:54
処理の流れと同じ順になるからSQLに不慣れな人には分かり易いんじゃね
858デフォルトの名無しさん:2011/02/16(水) 15:40:50
Linqは統計的結果を反映できないと何度言ったら
ここは無職の初心者スレだから仕方がないか。
859デフォルトの名無しさん:2011/02/16(水) 16:15:46
>>858
統計的結果ってなに?
ググってもそれらしいものがひっかからないんだが。
ソースくれ。
860デフォルトの名無しさん:2011/02/16(水) 16:28:35
DBじゃ当たり前の技術。
OracleやSQLSeverで最適化したことないのか? 少しは勉強しろ。
861デフォルトの名無しさん:2011/02/16(水) 16:35:29
とりあえず正しい用語使ってくれないと何を言ってるのか分からないよ
862デフォルトの名無しさん:2011/02/16(水) 16:35:45
質問です。
ブラウザからWebサービスをGETで叩き(引数としてaaa.htmlのURL)、
サーバーサイドに置いてあるaaa.htmlをブラウザに表示せずに
印刷ダイアログを表示して印刷させることはできるでしょうか?
ASPでもhtmlやajaxの処理でもC#での処理でも構いません。
863デフォルトの名無しさん:2011/02/16(水) 16:38:47
ページとしてちゃんとレンダリングさせる必要があるなら
webbrowserを裏で使ってレンダリングさせてレンダリングした結果を
bitmapか何かで取得して印刷すればいいんでないの?
864デフォルトの名無しさん:2011/02/16(水) 16:38:50
>>859
おいおい。
台形公式とか次元が増えると誤差や計算量増えるだろ。
モンテカルロ積分とか遺伝的アルゴリズムとか知らないのかよ。
事前統計結果が得られるなら普通に処理の重みづけができるだろうに。
将棋の思考アルゴリズムとか既に主流だろ。
865デフォルトの名無しさん:2011/02/16(水) 16:43:02
つまりLinqに合わないことにLinqを使うとダメってことですね


アホかっ!
866デフォルトの名無しさん:2011/02/16(水) 16:49:30
>>865
違う。
>>859 みたいな無学、無知が何でもLinqにしようとするのが
困るって話をすると、馬鹿だからすぐ逆ギレして笑えるってことだよ。
867デフォルトの名無しさん:2011/02/16(水) 16:56:05
>>866
そろそろ楽になってもいいんだよ・・・
868デフォルトの名無しさん:2011/02/16(水) 17:07:37
ゆとりって煽りばかりで技術的なこと一言も言わないよな。
統計的結果なんてあらゆる分野で普通に使われる科学の基本手続きなのに、
まさか統計的結果でググって見つからないとか言うし、
自分が無知なだけなのに正しい用語使えとか言うし。
昔はクグレカスって言ったけど、ググっても自分で調べられないときてる。

基本、自分が馬鹿だと気づいてないんだよね。
しかも初心者スレで教わる立場なのになぜか偉そうにしてる。
869デフォルトの名無しさん:2011/02/16(水) 17:11:31
お前はまだそれがLinqと関わってると思ってるの?
870デフォルトの名無しさん:2011/02/16(水) 17:16:46
>>860
まさか、ソースだせないの?
・統計的結果がoracleでは当たり前
・linqでは統計的結果が反映できない
この2点のソース早く頂戴。

当たり前ならすぐだせるでしょう?

「勉強しろ」なんて逃げうたないでさぁ。
871デフォルトの名無しさん:2011/02/16(水) 17:21:16
他所でやれ
872デフォルトの名無しさん:2011/02/16(水) 17:30:26
>>870
俺は彼じゃないけど、Oracleの統計情報ならこの辺り
http://itnavi.com/totteORA/Tips21.asp

linqとの関係は知りません
873デフォルトの名無しさん:2011/02/16(水) 17:30:55
ところで

統計的結果

ってなんだよ?統計は過去の産物を勝手に解釈したものに過ぎないだろう。
874デフォルトの名無しさん:2011/02/16(水) 17:32:33
まあforeachで解決できないものはLinqにする意味がないんじゃね
つかあんま突っつくなよ・・・
875デフォルトの名無しさん:2011/02/16(水) 17:38:33
つまりこういう事でしょ

ほんとはできないのに、「できる」とかっこつけちゃった手前、ひっこみが
つかなくなってしまった。
「具体的な手順を」をいわれたけど、自分で試したわけでもないし、なにより
ほんとにやってみてできないことがわかってしまったら、自分が間違っている
ことが判明してしまうから、こわくてできない。
とりあえず、「自分で試せよ、簡単なんだからそのくらいできるだろ」と
言い続けることで、ごまかすことにしておく。
876デフォルトの名無しさん:2011/02/16(水) 17:47:17
選挙で出口調査の結果「当選確実」になりました。
数十分後、他の人が当選確実です。

っていうのが「統計的結果」の一例でいいですか?
877デフォルトの名無しさん:2011/02/16(水) 17:52:48
>>869
オプティマイザの使用する情報のことを「統計的結果」って呼ぶかなあ?

仮に呼ぶとして、linqだとそれが使えなくて、foreach だと使えるってことはないとおもうんだが・・・
878デフォルトの名無しさん:2011/02/16(水) 17:57:46
他所でやってくれ
Linqの使い方が蓄積されるわけでもないし
C#の情報が残るわけでもない

専門板はスレたてが自由なんだし続けたい人は新しく建ててやってくれ
879デフォルトの名無しさん:2011/02/16(水) 18:30:56
>>877
だよね、統計的結果なんてのは良いから、ADO.NET等ではオプティマイズが効いて、
LINQでは効かないのか?って情報が知りたいところですね

いや事実であるとしたら結構大変なことだよw
880デフォルトの名無しさん:2011/02/16(水) 18:34:28
俺は初めから例外を握り潰すに絡んだ人だって気付づいてましたよ
881デフォルトの名無しさん:2011/02/16(水) 18:36:03
ほとんど糖衣構文なのにね。
882デフォルトの名無しさん:2011/02/16(水) 18:58:46
>>878
LINQとforeachの話だろ、立派なC#の話題じゃないか。
883デフォルトの名無しさん:2011/02/16(水) 18:58:53
まじ無意味なレスだったなw
884デフォルトの名無しさん:2011/02/16(水) 19:04:12
結局提起した問題自体が意味不明だったので何も結論づけられなかった。
885デフォルトの名無しさん:2011/02/16(水) 19:09:19
突然ゆとりがどうとかレッテル貼りだしたから、たぶんそうだろうなとは思った。
886デフォルトの名無しさん:2011/02/16(水) 19:15:52
結局>>832が正しかったという訳か・・・
887デフォルトの名無しさん:2011/02/16(水) 19:16:31
まあLINQ to SQLに限って言えば自動生成で最適化しづらいから
例外さんの発言も意味通じるかもね

誰もLINQ to SQLなんか使ってねえし、誰もLINQ to SQLの話なんかしてねえけど
888デフォルトの名無しさん:2011/02/16(水) 19:28:23
ttp://dl7.getuploader.com/g/6|akahell/604/datagrid.jpg
DataGridViewでこのようなドットの境界線を設定したいのですが、
どのように指定したらいいのでしょうか
889デフォルトの名無しさん:2011/02/16(水) 19:31:48
RowPostPaintとか見て自力で書く
890デフォルトの名無しさん:2011/02/16(水) 19:44:09
>>889
難しいですね
困った
891デフォルトの名無しさん:2011/02/16(水) 19:46:01
WPFだとそういうのは得意なんだけどね
892デフォルトの名無しさん:2011/02/16(水) 19:49:24
GraphicsもRowBoundsも渡してもらえるのにそんなにしんどいか?
893デフォルトの名無しさん:2011/02/16(水) 19:52:19
>>892
やったこと無い人はわけわからんだろ
それにその辺のことを自力でやる人はすでにWPFやSLへ行ってるから
日本語の資料もそれほどないだろうし
894デフォルトの名無しさん:2011/02/16(水) 19:59:58
まあある程度以上の修飾をするならwpfでやるべきだよね
winformsは標準の物を組み合わせる程度なら強力なんだが
winformsで簡単にできることがwpfで実装されていないこともあることだし
895デフォルトの名無しさん:2011/02/16(水) 20:03:05
C#で左クリックを0.5秒間隔で打つのって無理ですか?
CかC++じゃないと出来ませんよね
896デフォルトの名無しさん:2011/02/16(水) 20:04:14
C++じゃないとできないよ(本当)
897デフォルトの名無しさん:2011/02/16(水) 20:07:31
>>895
最終的にどういう結果にしたいかによるんじゃね?

決まった場所をクリックしたのを0.5秒待つのならクリックイベントひらって
待つ仕組みを入れるとかすればいいし

結局プログラムなんて見た目期待通り動けば内部の実装なんて・・・
898デフォルトの名無しさん:2011/02/16(水) 20:07:42
>>893
初心者御用達のDOBON.NETにも載ってるよ
899デフォルトの名無しさん:2011/02/16(水) 20:12:52
キー入力を別のプロセスに渡したいとかじゃなくて?
900デフォルトの名無しさん:2011/02/16(水) 20:13:36
>>899
だからその最終的な目的がよくわからんのでなんともいえない
901デフォルトの名無しさん:2011/02/16(水) 20:18:28
Microsoft SQL Server Compact 4.0がリリースされたけど使った人います?
http://www.microsoft.com/downloads/details.aspx?FamilyID=033CFB76-5382-44FB-BC7E-B3C8174832E2&displaylang=ja

3.5と違ってライセンスが完全フリーだったりするみたいで興味有るんだが、VS4SP1β入れろみたいなのが書いてあってちょっと不安
用途はスタンドアロンのwpfアプリ(個人用)を考えているんだが
902デフォルトの名無しさん:2011/02/16(水) 20:27:30
>>901
Silverlightで使えりゃなあ・・・
903デフォルトの名無しさん:2011/02/16(水) 20:33:27
SQLite依存症だからないなあ
904デフォルトの名無しさん:2011/02/16(水) 20:47:22
ダウンロード サイズ : 913 KB - 5.7 MB*

こんな小さかったっけ
昔20MBくらいあった気がする
905デフォルトの名無しさん:2011/02/16(水) 20:52:26
訂正
>SQL Server Compact 4.0 は再配布の使用許諾契約書の下で無償で再配布でき、SQL Server Compact 4.0 を再配布するアプリケーション開発者は、SQL Server Compact 再配布サイトに登録することもできます。

何処かに「完全無償」って情報見覚えがあったが、最終的には3.5と同じライセンスになったみたいですね。見間違いだったかも知れませんが
906デフォルトの名無しさん:2011/02/16(水) 21:11:43
マウスの左クリックを0.5秒間隔で打つだけです
>>895さんありがとうございます
uwscとかAHKなどのマウスで出来るようなものはC#では出来ないのですね
907デフォルトの名無しさん:2011/02/16(水) 21:28:05
BOT作りご苦労様です。
908デフォルトの名無しさん:2011/02/16(水) 21:29:42
Send Input APIではだめなのかな
ttp://pinvoke.net/default.aspx/user32/sendinput.html
909デフォルトの名無しさん:2011/02/16(水) 21:30:38
>>907
そうか、DiredtInputには渡せないのか・・・ぐぬぬ
ドイラバ書くしかないのか
910デフォルトの名無しさん:2011/02/16(水) 21:37:22
土井lover?
911デフォルトの名無しさん:2011/02/16(水) 22:05:18
ふいんき(←なぜか変換できない)
ドイラバ(←なぜか変換されてる)
912デフォルトの名無しさん:2011/02/16(水) 22:07:03
>>907
ぼくへのレスでしたらBOT作成が目的ではないです
複数管理しているWEBサーバの手動CRONをブラウザでボタンを押すだけで動かせるのですが自動化したいのです。
セキュリティとかは気にせずただ左クリックを自動で押せればいいんですが・・・
C#で出来ないと知ったのであきらめます
913デフォルトの名無しさん:2011/02/16(水) 22:21:37
それはWebBrowserかなんかでやれ
914デフォルトの名無しさん:2011/02/16(水) 22:27:26
WebBrowserコンポーネントだとナビゲート後にDOMをみていけば表示してるHP上のボタンとか
フォームの入力先とか全部いじれなかったっけ?
915デフォルトの名無しさん:2011/02/16(水) 22:29:47
C#全然関係ないけど俺だったらgmスクリプトでも書くわ
916デフォルトの名無しさん:2011/02/16(水) 22:31:40
というかあれかボタンを押した際にサーバーへ送るhttpリクエストを
そのまま送ればいいだけか
917デフォルトの名無しさん:2011/02/16(水) 22:33:12
それが最善だけどjs使ってるかもしれんし
918デフォルトの名無しさん:2011/02/16(水) 22:45:21
Ruby>Python>C#
919デフォルトの名無しさん:2011/02/17(木) 00:32:38
ちょっと失礼。てすと
920デフォルトの名無しさん:2011/02/17(木) 01:38:25
抽象クラスがどこで実装されてるか、
あるいはされてないか調べるにはどうしたら良いのでしょうか
921デフォルトの名無しさん:2011/02/17(木) 01:55:52
すべての参照を検索
922デフォルトの名無しさん:2011/02/17(木) 11:34:23
フレームワーク4.0を使って開発されているソフトってほとんどないですよね
みんな2.0ばっかりです
4.0には何か不具合があったりして避けているのでしょうか?
923デフォルトの名無しさん:2011/02/17(木) 11:36:27
単に普及度の問題
924デフォルトの名無しさん:2011/02/17(木) 14:34:26
4.0はグラフが標準でついたくらいしか、実感無いなぁ
てかXPで使うことも考えたら2.0で十分だし
925デフォルトの名無しさん:2011/02/17(木) 14:54:18
WPFなら4.0選ぶ価値あり
926デフォルトの名無しさん:2011/02/17(木) 15:53:25
タスク並列ライブラリとかMEFとか
MEFなんか目立たないけど一応標準のDIコンテナということで画期的
927デフォルトの名無しさん:2011/02/17(木) 16:04:07
並列って言っても上での例でもほとんど高速化しなかったじゃん。
結局、昔と同じで高速化するには、CPUレベルの知識ないと無理というオチだったし。
928デフォルトの名無しさん:2011/02/17(木) 16:11:10
Formの起動時の設定にあるStartPositionについて質問です
それぞれためしてみても違いがよくわからないのですが
Manualは自分が指定した位置に表示させ、CenterScreenは画面中央というのはわかるのですけど
ユーザーが窓を移動し、プログラムを終了して次回起動後には前回起動時の位置を記憶する方法をやりたいのですがどうやればいいのでしょうか
どうか教えてください、お願いいたします。
929デフォルトの名無しさん:2011/02/17(木) 16:14:21
>>927
パフォーマンスとか気にするんだったら正しい知識を持ってきちんと測定して調整するのは当たり前。
MSDNにも並列関係のドキュメントにはしつこいくらいに速くなるとは限らない測定しろと書いてある。
実際上でも適切な粒度で並列化できてれば速くなってるだろ。

>>928
ウインドウ 位置 保存 C#
930デフォルトの名無しさん:2011/02/17(木) 16:52:45
>>929
素早い回答ありがとうございます。
以下のHPで手順通りにやったのですがLocationの位置でしか起動できませんでした。
http://www.atmarkit.co.jp/fdotnet/dotnettips/438winsettings/winsettings.html
931928:2011/02/17(木) 17:08:43
大変申し訳ありませんでした
イベントハンダラにFormClosingを追加し忘れていました
無事やろうとしていた事ができました、ありがとうございます!
932デフォルトの名無しさん:2011/02/17(木) 17:20:20
System.Windows.Forms.WebBrowserで
WebBrowser.Url = new Uri(file:///c:/test/test.htm#a001"); @
のように指定してスクロールを制御したいのですが、
test.htmが変更されたときに、改めて@を呼び出してもスクロールしません
(初回読込時は意図したとおりにスクロールします)

WebBrowser.Refresh(wb.Refresh(WebBrowserRefreshOption.Completely);
を呼び出しても同じでした

test.htmが変更されるたびにファイル名を変更して
WebBrowser.Url = new Uri(file:///c:/test/test003.htm#a001");
等にすれば意図したとおりの位置にスクロールするのですが、
もっとスマートなやり方はないでしょうか?
933デフォルトの名無しさん:2011/02/17(木) 18:07:38
ツリービューでツリーノードのtagを検索したいのですが
高速に検索する方法はないでしょうか?

現在はノードを全部なめてtagを比較しています。
ノードのtagは重複していません。

treeview1.selectSingleNode(tag="hoge")
とかできるといいのですが・・・
934デフォルトの名無しさん:2011/02/17(木) 18:41:16
追加する時にハッシュテーブルに入れとけよ
935デフォルトの名無しさん:2011/02/17(木) 19:10:18
単にフォームのデザインとして、グループボックスのように四角い枠で囲って表題を付けたいんだけど、
グループボックス使っても問題ないのかね?グループボックスの機能は全然必要ないんだけど。
それともピクチャボックスとラベルでやるべき?
936デフォルトの名無しさん:2011/02/17(木) 19:20:01
>>932
たぶんキャッシュ機能の関連でそうなるんだと思うんだけど
WebBrowserの制御の問題なのか以前ここかもう一つで見たんだけど
httpヘッダーの話なのかよくわからないのでそっち方面では対策してあられないけど

今思いついた即興としては
1.変更したtest.htmlを常に動的に新しいWebBrowserコンポーネントを作成して
 コンテナへ貼り付けてBringToFrontするとか。前のWebBrowserは入れ替えた後破棄

2.ナビゲート後のDOMを解析してジャンプしたい場所を調べて自分で移動する
サンプルはここ http://cs2ch.blog123.fc2.com/blog-entry-83.html
937デフォルトの名無しさん:2011/02/17(木) 19:20:14
>>934
それいいですね
938デフォルトの名無しさん:2011/02/17(木) 19:45:14
939デフォルトの名無しさん:2011/02/17(木) 19:56:45
OpenFileDialogで開かれたファイルはどのように扱われているのですか?
940デフォルトの名無しさん:2011/02/17(木) 20:01:15
>どのように
よくわからんけど
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.openfiledialog%28v=vs.80%29.aspx#Y612

ファイルが指定されてOKボタンを押したらStreamを返してるだけ
941デフォルトの名無しさん:2011/02/17(木) 20:10:21
C#初めてネットワーク初めてでチャットアプリ作って見ようかと思ってるんだけど
参考になりそうな所ある?
942デフォルトの名無しさん:2011/02/17(木) 20:44:37
>>936,938
ありがとうございます。御飯食べてから詳しく見てみます
943デフォルトの名無しさん:2011/02/17(木) 23:16:28
質問です
シングルトンパターンなんだけど、同じ実装のインスタンスが複数欲しい時って

  public sealed class Hoge
  {
    private static Hoge _foo = new Hoge();
    public static Hoge Foo { get { return _foo; } }

    private static Hoge _bar = new Hoge();
    public static Hoge Bar { get { return _bar; } }

    private static Hoge _baz = new Hoge();
    public static Hoge Baz { get { return _baz; } }

    public void Piyo()
    {
    }
  }

みたいにしちゃっても良いんでしょうか
944デフォルトの名無しさん:2011/02/17(木) 23:19:45
パターンなんて方便だから好きなようにやればいいよ
945デフォルトの名無しさん:2011/02/17(木) 23:43:03
ただのグローバル変数だな
それが悪いとは言わないが
946デフォルトの名無しさん:2011/02/18(金) 01:40:32
>>940
ありがとうございます
中身が"F0 F1 F2 F3 F4 F5 F6 F7"というファイルを開いたのですが
これをフォームアプリケーションの各ComboBoxに"240""241"などと
表示するにはどのようにすればすればよいのでしょうか?
947デフォルトの名無しさん:2011/02/18(金) 01:42:56
最近文字を数字に・・・とかサンプルぽいの見たのにlinq論議のゴミログがうぜー
948デフォルトの名無しさん:2011/02/18(金) 01:45:32
>>946
stringとして読み込むのならそれを一旦切り離してここを参考に
http://hiros-dot.net/CS2005/String/String16.htm
949デフォルトの名無しさん:2011/02/18(金) 05:25:29
外部のCUIアプリを実行する時に、外部ウインドウを開かずに
フォームのコントロール内にコンソール画面の内容を表示させる事はできますか?
950デフォルトの名無しさん:2011/02/18(金) 05:28:48
951デフォルトの名無しさん:2011/02/18(金) 05:45:35
>>950
あ、なんとなくできそうです。有り難うございます。
952デフォルトの名無しさん:2011/02/18(金) 07:15:11
>>947
お前は黙ってろ
953デフォルトの名無しさん:2011/02/18(金) 11:02:12
C# .NET Framework v3.5 の言語仕様がほしいんだけれど、見つけられない。

C# 言語仕様は、次の場所から Microsoft Word 形式で入手できます。

●MSDN オンラインの Visual C# Developer Center

なんていうところで引っかかってここから先がわからん。URLくれくれ。
954デフォルトの名無しさん:2011/02/18(金) 12:31:57
1つのkeyに複数のvalueを収められるDictionaryクラスってありませんか?
やっぱりDictionary<string, List<string>>とかにするのが妥当ですか?
955デフォルトの名無しさん:2011/02/18(金) 12:45:01
妥当です
956デフォルトの名無しさん:2011/02/18(金) 12:54:40
クラスを2次元配列で宣言し、全てコンストラクタで初期化したい場合、
どうやって書くのが一般的でしょうか?

class Point{
・・・
}

main()
{
Point temp = new[2, 2]; // ←全部要素メモリ確保してコンストラクタで初期化したい
}
957デフォルトの名無しさん:2011/02/18(金) 13:10:00
取り敢えず初心者は二次元配列使うのやめろよ
どうしても二次元配列使いたくなったら配列の配列使え
あと配列の領域を確保するのとオブジェクトの領域を確保するのとは別の行為だから
普通に別々に書け
958デフォルトの名無しさん:2011/02/18(金) 13:17:23
>>956
for (int x = 0; x < temp.GetLength(0); x++)
{
for (int y = 0; y < temp.GetLength(1); y++9
{
temp[x, y] = new Point();
}
}

こういうことと違うの?
959デフォルトの名無しさん:2011/02/18(金) 13:18:37
1次元(要素3つ)だったらこう書けますよね。

POINT [] _temp = Enumerable.Range(0, 2).Select(_ => new POINT()).ToArray();

これを多次元にする場合どういう書き方になります?
960デフォルトの名無しさん:2011/02/18(金) 13:20:21
>> 958
そう、それなんですけど、>>959を使ったような簡略した書き方は無いのかなぁと。
2次元の場合はまだいいんですが、次元数が増えるとどういう書き方が一般的なんでしょうか?
961デフォルトの名無しさん:2011/02/18(金) 13:33:26
多次元配列は一切使わないのが一般的なんです
嫌味じゃなくてマジで
962デフォルトの名無しさん:2011/02/18(金) 13:51:54
配列の配列(Point[][])なら
Enumerable.Range(0, 2).Select(_=>Enumerable.Range(0, 2).Select(_=>new Point()))
で作れる
多次元配列ははっきり言って見放されてる。使いたいならCだと思って割り切って使え。
LINQとかC#らしい機能が使いたいなら多次元配列は捨てろ。
963デフォルトの名無しさん:2011/02/18(金) 14:01:29
>>962
なるほど、、、ご回答ありがとうございました。

多次元配列を捨てる理由っていうのは、LINQが使いにくくなるからとか
そういう理由からなんでしょうか?
964デフォルトの名無しさん:2011/02/18(金) 14:18:07
> Enumerable.Range(0, 2).Select(_=>Enumerable.Range(0, 2).Select(_=>new Point()))
アンダースコアで使わない変数を表現するの初めて見たんだけど流行ってるの?
965デフォルトの名無しさん:2011/02/18(金) 14:21:12
どうしても多次元配列でなければっていう用途が殆ど無いからじゃね?
多次元配列のためにLinqの構文乱されても割りに合わない
966デフォルトの名無しさん:2011/02/18(金) 14:25:43
>>964
正直C#を使い始めて日が浅いので、よく分かりません。
配列の初期化をするときに、ループで書いていたら、こういう方法があるって
教えてくれた人が使ってたのがアンダースコアだったのでそのまま使ってます。

>>965
なるほど、確かにLINQがすごく使いにくいなぁとは思ってました。
967デフォルトの名無しさん:2011/02/18(金) 14:42:06
>>954
Lookup<TKey, TElement>
ただしEnumerable.ToLookupでしか作れず読み取り専用
968デフォルトの名無しさん:2011/02/18(金) 15:54:55
>>964
流行ってるかは知らんけど
"x"よりも意味がないとコードで示すには"_"は適当じゃないか?
969デフォルトの名無しさん:2011/02/18(金) 17:58:32
>>968
その変数名は perl 出身の奴が
使いそうだな。
意味がないことをしめしたいなら
foo,bar が順当じゃないかな。
まあ、なんでもいいじゃんと
いう意見もあるだろうが・・・
970デフォルトの名無しさん:2011/02/18(金) 18:07:06
メタ構文変数っていうのは、名前には意味がないけどそこに何かが存在することには意味があることを示すもので
この場合は変数の存在自体に意味がないわけだからfoo,barは不適切でしょ
971デフォルトの名無しさん:2011/02/18(金) 19:02:52
>>948
ありがとうございます
テキストファイルでなくバイナリファイルなのですが
どうすればいいでしょうか
972デフォルトの名無しさん:2011/02/18(金) 19:03:47
>>969
関数型言語界隈の習慣じゃなかったっけ?
973969:2011/02/18(金) 19:44:57
>>970
ソース読まずにレスしてたよ
すまんこ
読んでみたらそのとうりです

974デフォルトの名無しさん:2011/02/18(金) 20:20:34
>>964
結構メジャーだよ。
F#が"_"が値を捨てるという意味になってるので、.NETファミリー的には良い感じ。
Scalaだと.Select(_.hoge)みたいに書ける(=>を省ける)ので、
_をxの代用にする、という流儀の人もいるけど、そちらのほうがマイナーっぽい。
975デフォルトの名無しさん:2011/02/18(金) 20:29:55
Linqをループ代わりに使うのはどうかと思うけどな
976デフォルトの名無しさん:2011/02/18(金) 20:33:11
またゆとりが暴れてんの?
977デフォルトの名無しさん:2011/02/18(金) 20:35:03
まあWhereかSelect単独でforeachに突っ込むのはどうかと思う
978デフォルトの名無しさん:2011/02/18(金) 20:37:48
初歩的な質問で申し訳ないのですが
VS2010でコンパイルしたいのですが発行でやるとsetup.exeのインストーラーでしかコンパイルできません。
アプリ単体のみでコンパイルしたいのですがどうやればいいのでしょうか?
ご教示お願いいたします。
979デフォルトの名無しさん:2011/02/18(金) 20:39:27
>>976
例外さんは間に合ってるよ
980デフォルトの名無しさん:2011/02/18(金) 20:40:45
>>978
特に設定弄らずにビルドしたらReleaseにできてないか?
981デフォルトの名無しさん:2011/02/18(金) 20:42:49
>>980
Releaseにあるものでよかったんですね
ありがとうございます、スレ汚し申し訳ありませんでした。
982デフォルトの名無しさん:2011/02/18(金) 20:43:38
>>977
リスト内包表記的なやり方で、別によくあることだと思うけど
983デフォルトの名無しさん:2011/02/18(金) 21:46:51
>>856
初期化関数をジェネリックスでも使って適当な次元分作っておくのが簡単かもね
984デフォルトの名無しさん:2011/02/18(金) 22:33:09
誰も例外さんをキャッチしないんだな・・・
985デフォルトの名無しさん:2011/02/18(金) 22:40:35
>>959
おすすめはしないが、無理やりやりたいなら自前で拡張メソッドを作る(笑
static class ArrayUtilExtensions {
public static T[,] ToArray2<T>(this IEnumerable<T> src1, IEnumerable<T> src2) {
IList<T> lst1 = src1 as IList<T>;
IList<T> lst2 = src2 as IList<T>;
if (lst1 == null) lst1 = new List<T>(src1);
if (lst2 == null) lst2 = new List<T>(src2);
var ln = Math.Max(lst1.Count, lst2.Count);
var t = new T[ln, 2];
for (var i = 0; i < ln; i++) {
if (lst1.Count > i) t[i, 0] = lst1[i];
if (lst2.Count > i) t[i, 1] = lst2[i];
}
return t;
}
}
Point [,] _temp = Enumerable.Range(0, 2).Select(_ => new Point()).ToArray2(Enumerable.Range(0, 2).Select(_ => new Point()));
986デフォルトの名無しさん:2011/02/18(金) 22:41:33
すっきりしました。ありがとうございます。
987デフォルトの名無しさん:2011/02/18(金) 23:13:15
そこまでしてLinq使わなくてもいいのにw
988デフォルトの名無しさん:2011/02/18(金) 23:19:17
temp.Init(2, 2)って感じで済むものがなんでそんな長くなってんだよw
989デフォルトの名無しさん:2011/02/18(金) 23:21:10
linqは宗教
990デフォルトの名無しさん:2011/02/18(金) 23:22:45
>>989
例外さんは呼んでないよ
991デフォルトの名無しさん:2011/02/18(金) 23:39:45
イベントに+=されたデリゲートを一発で全部消せる関数が欲しいのだが
こういう事考えてる時点でなんか間違ってるような気もする
お前らは考えたこと無いのか?
992デフォルトの名無しさん:2011/02/18(金) 23:49:12
自分のクラスのイベントならnull代入するだけ
外から全部消したいなら、考え方が間違っている
993デフォルトの名無しさん:2011/02/19(土) 01:22:13
Zip圧縮って.NETの標準ライブラリでサポートされてたっけ?
994デフォルトの名無しさん:2011/02/19(土) 01:44:31
System.IO.Compression.GZipStream
System.IO.Packaging.ZipPackage
これらは複数ファイルの圧縮に対応していない

http://dotnetzip.codeplex.com/
マイクロソフト が公開している DotNetZip。
こっち使うといい。ライセンス的にも。
995デフォルトの名無しさん:2011/02/19(土) 01:50:36
あれ、それはマイクロソフトの人だっけ?
996デフォルトの名無しさん:2011/02/19(土) 01:53:58
C#言語仕様はexpressな人のには付いてこないのね。残念。
997デフォルトの名無しさん:2011/02/19(土) 02:07:22
998デフォルトの名無しさん:2011/02/19(土) 03:18:32
またlinq厨来てんの?
999デフォルトの名無しさん:2011/02/19(土) 03:22:36
例外さんは呼んでないよ
1000デフォルトの名無しさん:2011/02/19(土) 03:30:10
キチガイ常駐してんね、ここ。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。