ふらっとC#,C♯,C#(初心者用) Part35
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/12/17(水) 22:17:18「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
0153デフォルトの名無しさん
2008/12/23(火) 14:36:25ソースコードに戻せるという意味ならそうだよ。
0154デフォルトの名無しさん
2008/12/23(火) 15:26:450155デフォルトの名無しさん
2008/12/23(火) 15:36:23商用なら対策用ソフトが高価だが売ってるし
0156デフォルトの名無しさん
2008/12/23(火) 18:26:530157デフォルトの名無しさん
2008/12/23(火) 19:51:55俺、コメントに顔文字とか使ってるんだけどw
0158デフォルトの名無しさん
2008/12/23(火) 19:57:440159デフォルトの名無しさん
2008/12/23(火) 19:59:510160デフォルトの名無しさん
2008/12/23(火) 22:48:23(・∀・)いや、安心している場合じゃないぞw
0161デフォルトの名無しさん
2008/12/23(火) 22:50:110162デフォルトの名無しさん
2008/12/23(火) 22:53:17Mono を使えば。
0163デフォルトの名無しさん
2008/12/23(火) 22:54:170164デフォルトの名無しさん
2008/12/24(水) 02:29:580165デフォルトの名無しさん
2008/12/24(水) 03:03:370166デフォルトの名無しさん
2008/12/24(水) 04:49:40binフォルダの中のReleaseフォルダの中の.exeファイルを配布すればいいのですか?
objフォルダじゃないですよね・・・?
0167デフォルトの名無しさん
2008/12/24(水) 11:43:28それでおk
0168デフォルトの名無しさん
2008/12/24(水) 13:53:39ぴん・・・ぼけだと?w
0169デフォルトの名無しさん
2008/12/24(水) 14:11:160170デフォルトの名無しさん
2008/12/24(水) 14:21:05ありがとうね
0171デフォルトの名無しさん
2008/12/24(水) 19:47:04forに比べてそんなに便利なんですか?
0172デフォルトの名無しさん
2008/12/24(水) 19:51:00例えば配列要素を全て合計するような単純なイテレーションなら
foreach を使ったほうが速い。
0173デフォルトの名無しさん
2008/12/24(水) 19:52:210174デフォルトの名無しさん
2008/12/24(水) 20:01:42どういう使い方を想定してる?
0175デフォルトの名無しさん
2008/12/24(水) 20:02:140176デフォルトの名無しさん
2008/12/24(水) 20:04:53速いっていうのは実行速度が?
それともコーディングが?
0177デフォルトの名無しさん
2008/12/24(水) 20:07:18実行速度
0178デフォルトの名無しさん
2008/12/24(水) 20:18:090179デフォルトの名無しさん
2008/12/24(水) 20:38:40確かfor (int i = 0; i < array.Length; i++)も同様に最適化されるんだったとおもう
0180デフォルトの名無しさん
2008/12/24(水) 21:17:31C# 4.0 だと
public static IEnumerable<dynamic> WithIndex<TSource>(this IEnumerable<TSource> enumerable)
{
int index = 0;
foreach (TSource item in enumerable)
{
yield return new { Index = index, Item = item };
index++;
}
}
みたいなことができるっぽい。
今の段階だと dynamic の部分で適当にクラスを作成するしかないかな?
何かうまい抜け道がある気がするんだが。
0181デフォルトの名無しさん
2008/12/24(水) 21:23:55普通にインデクサを使ってアクセスしているのに何故高速かと思ったら最適化されているんだ。
0182デフォルトの名無しさん
2008/12/24(水) 21:29:56とんでもなく遅そうだなそれ
わざわざdynamicにする意味がわからない
struct IndexItemPair<TSource> { public int Index { get; } public TSource Item { get; } }
とか返せばいいだろ
foreachにこだわらなくてもこういうのでいいんじゃないの
static void ForEach<TSource>(this IEnumerable<TSource> source, Action<TSource, int> action) {
int index = 0;
foreach (TSource item in source) action(item, index++);
}
0183デフォルトの名無しさん
2008/12/24(水) 21:35:10こうでいいじゃん
public static void ForEach<T>
(this IEnumerable<T> e, Action<TSource, int> action)
{
int index = 0;
foreach(var item in e)
{
action(item, index);
index++;
}
}
0184デフォルトの名無しさん
2008/12/24(水) 21:36:54確か Select, Where 辺りのオーバーロードにあった気がする
んだが
0185デフォルトの名無しさん
2008/12/24(水) 21:38:440186デフォルトの名無しさん
2008/12/24(水) 21:41:46そういうのを本来の用途から外れて無理に転用するのはお行儀が悪い
items.Select((item, index) => { item.Hoge(index); return null; });
とか書かれてても何がしたいのかわからんでしょ
0187デフォルトの名無しさん
2008/12/24(水) 21:46:15その例は使い方悪すぎ。書くならこう
var items =
source
.(略)
.Select((value, index) => new { Index = index, Value = value });
foreach(var item in items) {
item.Value.Hoge(item.Index);
}
0188デフォルトの名無しさん
2008/12/24(水) 21:46:200189デフォルトの名無しさん
2008/12/24(水) 21:47:23>IEnumerator自分で実装したことがあればそんな愚論は絶対に吐けないと思うw
あほう
0190デフォルトの名無しさん
2008/12/24(水) 21:50:22(゚д゚)ハァ?
0191デフォルトの名無しさん
2008/12/24(水) 21:53:18その場合、ファイルのサイズが書き込み完了になるまでわからないのですが、
その書き込み完了をどのようにして判定すればよいでしょうか?
FileStreamとBinaryReaderを使って成長中のファイル(書き込み完了前のファイル)を読み出したい
と思っています。周期的に更新時間をチェックし、更新時間が変わらなくなったら、という判定を
考えていたのですが、もっと適切な方法はあるのでしょうか?
助言をいただけたらと思います。
0192デフォルトの名無しさん
2008/12/24(水) 21:54:33戻り値を IEnumerable<dynamic> にした理由は IEnumerable を返したかったから。
enumerable.WithIndex().Hoge(...) みたいなことがしたい。
まあ>>182の言うようにインデックスと実体のペアを返すので十分良いけど。
0193デフォルトの名無しさん
2008/12/24(水) 21:59:24配列に対するforeachと,for (int i = 0; i < array.Length//Lengthプロパティを使うのが大事; i++)
の形のforはどちらも最適化されてほとんど同じ速度になる
0194デフォルトの名無しさん
2008/12/24(水) 22:06:440195デフォルトの名無しさん
2008/12/24(水) 22:29:150196デフォルトの名無しさん
2008/12/24(水) 22:34:00素直にやったらIEnumeratorを操作したりするようなコードになることを考えれば,
差はほとんどないと言っていいと思う
0197デフォルトの名無しさん
2008/12/24(水) 23:45:51それいいねー
Perlっぽくてナイス
0198デフォルトの名無しさん
2008/12/24(水) 23:58:08型付けするだけで数百倍速くなるぞ
0199デフォルトの名無しさん
2008/12/25(木) 00:11:56まだ実装もされていない機能についてどうしてそんなことがいえるんだよ
0200デフォルトの名無しさん
2008/12/25(木) 00:28:160201デフォルトの名無しさん
2008/12/25(木) 00:37:20…まあ無いだろうな
0202デフォルトの名無しさん
2008/12/25(木) 00:41:06てか>>187で何か問題があるんか
0203デフォルトの名無しさん
2008/12/25(木) 03:22:12常識的に考えて
0204デフォルトの名無しさん
2008/12/25(木) 04:52:09private void hoge(TYPE type)
{
type v=new type();
}
みたいにコンストラクタを呼び出したいだけなんだが
0205デフォルトの名無しさん
2008/12/25(木) 05:20:54{
T t = new T();
こんなんだっけ
0206デフォルトの名無しさん
2008/12/25(木) 05:49:41void Hoge(Type type)
{
object o = Activator.CreateInstance(type);
}
T が既知なら>>205の方法で。
0207デフォルトの名無しさん
2008/12/25(木) 06:10:15どんな意味だ
0208デフォルトの名無しさん
2008/12/25(木) 06:16:47型パラメータの制約
http://msdn.microsoft.com/ja-jp/library/d5x73970.aspx
0209デフォルトの名無しさん
2008/12/25(木) 06:36:29へえこんなんあったのか
よくシリアライズ関係のクラスで引数無しのコンストラクタを
渡してコンパイルエラーになるのが謎すぎたんだけどこれのせいかよ
0210デフォルトの名無しさん
2008/12/25(木) 07:10:490211デフォルトの名無しさん
2008/12/25(木) 08:40:47ついてはいくけどさ
0212デフォルトの名無しさん
2008/12/25(木) 08:46:270213デフォルトの名無しさん
2008/12/25(木) 09:21:410214デフォルトの名無しさん
2008/12/25(木) 09:31:38食わず嫌い乙
0215デフォルトの名無しさん
2008/12/25(木) 09:34:01確かに3.5とかすげぇ便利でいいと思うんだよ・・・・
でもな・・・・でもな・・・・
現場にWin2000が現役ではびこってるからつかえねぇええええええええええええ!!!!!
あああああああ
まじめんどくせぇ・・・・
Linq使えば楽なのにとか思うところが多々あるから困る
0216デフォルトの名無しさん
2008/12/25(木) 09:44:090217デフォルトの名無しさん
2008/12/25(木) 11:29:05MONOからパクってくれば
0218デフォルトの名無しさん
2008/12/25(木) 15:15:29なんでボーランドみたいにスタティックリンクライブラりないんだよ
0219デフォルトの名無しさん
2008/12/25(木) 15:24:36必要に応じてローカルコピーで配れということになってるな
0220デフォルトの名無しさん
2008/12/25(木) 16:44:48object getTypeMaxVal(Type type) {
if (type == typeof(byte)) retun byte.MaxValue;
if (type == typeof(short)) return short.MaxValue;
if (type == typeof(int)) return int.MaxValue;
//省略...
}
の様なメソッドで求めているのですが、もっと簡単な方法があれば、
ご教授願えれば有難いです。
0221デフォルトの名無しさん
2008/12/25(木) 16:47:380222デフォルトの名無しさん
2008/12/25(木) 16:48:14×ご教授
日本語からやりなおそうな
0223デフォルトの名無しさん
2008/12/25(木) 16:51:53として最大値や最小値の範囲を表示したいのです。
それと、DELキーにより型に対応した初期値も設定したいのです。
0224デフォルトの名無しさん
2008/12/25(木) 16:53:49type.GetField("MaxValue").GetValue(null);
遅いので頻繁に必要なら結果はキャッシュしておいてね
0225220
2008/12/25(木) 16:55:30有難うございます。
0226デフォルトの名無しさん
2008/12/25(木) 18:43:190227デフォルトの名無しさん
2008/12/25(木) 18:46:290228デフォルトの名無しさん
2008/12/25(木) 18:50:540229デフォルトの名無しさん
2008/12/25(木) 18:54:25信じられん・・・
0230デフォルトの名無しさん
2008/12/25(木) 19:00:040231デフォルトの名無しさん
2008/12/25(木) 19:12:070232デフォルトの名無しさん
2008/12/25(木) 19:18:14「状態に依存しない」ってこと
0233デフォルトの名無しさん
2008/12/25(木) 19:24:070234デフォルトの名無しさん
2008/12/25(木) 19:37:28「ご教授」でもいいんだよ。
2chの誤用厨(ちょうどお前さんのような)が騒いでるのとは違って。
こういう恥ずかしい馬鹿が最近多くて困るまったく。
0235デフォルトの名無しさん
2008/12/25(木) 19:47:23意味が無いような気がするんですが
0236デフォルトの名無しさん
2008/12/25(木) 19:52:00たとえばMath.Sinはいつどこでどんな状況で使っても引数の値だけで結果が決まるんだから
インスタンスがあると逆に不自然
インスタンスっていうのは「状態」を表すんだよ
0237デフォルトの名無しさん
2008/12/25(木) 19:55:16Math.Max(x, y)を実行するためにMathのインスタンスが必要と思うか?
0238デフォルトの名無しさん
2008/12/25(木) 20:04:59「ご教授」は体系的に教えることを言う
下手クソな自己擁護乙
0239デフォルトの名無しさん
2008/12/25(木) 20:05:59それは2chの誤用厨が勝手に言ってるだけだよ。
違うってのならソースある?
いわゆる「一流」の辞書にそんなこと書いてないから。
0240デフォルトの名無しさん
2008/12/25(木) 20:06:100241デフォルトの名無しさん
2008/12/25(木) 20:06:480242デフォルトの名無しさん
2008/12/25(木) 20:09:17パフォーマンスは関係ない。
意味的に変だからやらないだけ。
つーかその変のことはコード書いてる内に自然とわかってくるから
今は深く考えなくてもいいかもしれんよ。
0243デフォルトの名無しさん
2008/12/25(木) 20:15:340244デフォルトの名無しさん
2008/12/25(木) 20:18:34ありがとうございます
privateの意味が無いような気がするんですが、これはコーダーがケアレスミスしないようにするためのものなんですか?
0245デフォルトの名無しさん
2008/12/25(木) 20:24:58ブラウン管テレビだろうとプラズマハイビジョンテレビだろうと液晶テレビだろうと
リモコンのボタン押すだけだろ?
そういうことだ
0246デフォルトの名無しさん
2008/12/25(木) 20:28:580247デフォルトの名無しさん
2008/12/25(木) 20:29:030248デフォルトの名無しさん
2008/12/25(木) 20:29:280249デフォルトの名無しさん
2008/12/25(木) 20:37:32それは「作る側」の視点に立ってるから。
使う側の視点に立てばおのずとわかる。
もしTVの裏にピンジャックが100個付いてたら、どれが映像入力端子で
どれが音声入力端子か見分けるだけでも一苦労するだろ。
外から見えるのは必要最小限の物だけでいいってこと。
0250デフォルトの名無しさん
2008/12/25(木) 20:38:530251デフォルトの名無しさん
2008/12/25(木) 20:42:02最小限のものだけが見えているからこそ
ブラウン管テレビもプラズマハイビジョンテレビも同じように扱える
なんでもかんでも中身が見えてて触れたら,マイナーチェンジでちょっとだけ仕組みを変えただけで
使ってた人から「せっかく操作方法覚えたのになんで変えるんだよ!」と文句言われることになる
0252デフォルトの名無しさん
2008/12/25(木) 20:44:34「一流」の辞書とやらの定義を出してごらんよゴミ君
■ このスレッドは過去ログ倉庫に格納されています