ふらっとC#,C♯,C#(初心者用) Part82
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/12/14(水) 19:44:03.87「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。立てる前に埋めんなよチンパンども。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっとC#,C♯,C#(初心者用) Part81
http://toro.2ch.net/test/read.cgi/tech/1321434660/
■関連スレ
C#, C♯, C#相談室 Part69
http://toro.2ch.net/test/read.cgi/tech/1323354868/
ミスターサタンのC#相談室
http://hibari.2ch.net/test/read.cgi/tech/1092656075/
VB.NET質問スレ(Part37)
http://hibari.2ch.net/test/read.cgi/tech/1317448996/
くだすれC++/CLI(初心者用)part2
http://hibari.2ch.net/test/read.cgi/tech/1268613679/
0153デフォルトの名無しさん
2011/12/18(日) 22:31:03.65あなたが違いが分からずに使っているんですよ。
0154デフォルトの名無しさん
2011/12/18(日) 22:35:31.900155デフォルトの名無しさん
2011/12/18(日) 22:47:08.07System.Windows.Forms.Timerにしたらうまくいきました
>>152
System.Threading.Timerではフォームにアクセスできないようです
0156デフォルトの名無しさん
2011/12/18(日) 22:48:37.160157デフォルトの名無しさん
2011/12/18(日) 22:49:15.30System.Threading.TimerだろうがアクションをUIスレッドで実行すればアクセスできるわ
0158デフォルトの名無しさん
2011/12/18(日) 22:50:17.760159デフォルトの名無しさん
2011/12/18(日) 23:28:14.70メチャ勉強になるなあ。
TryGetValueと書き換えプロセスに変数をかますことを検討します。
>>149
キーがふたつ、同じ要素についてるんですね。直接書き換えるのはムリなんですね。
>>153
そういえばそうだ。
>>150
あそこは荒らしが居る・・・ガクブル・・・・
>>158
ワラにもすがる思いで・・・
arraylistにulongが保存できればこんなことには・・・
これがダメなら次はHashtabelにてを出すしかない!
0160デフォルトの名無しさん
2011/12/18(日) 23:38:15.08駄目だこれ
0161デフォルトの名無しさん
2011/12/18(日) 23:42:24.630162デフォルトの名無しさん
2011/12/18(日) 23:47:56.150163デフォルトの名無しさん
2011/12/18(日) 23:49:27.530164デフォルトの名無しさん
2011/12/18(日) 23:56:38.350165デフォルトの名無しさん
2011/12/18(日) 23:56:45.430166デフォルトの名無しさん
2011/12/19(月) 00:00:56.40桁上がりは誰になるんだろう?
0167デフォルトの名無しさん
2011/12/19(月) 00:13:08.520168デフォルトの名無しさん
2011/12/19(月) 00:14:13.24問答無用で上書きするリングバッファ用意するだけじゃね?
0169デフォルトの名無しさん
2011/12/19(月) 00:34:37.50180fps出てたのが8fpsとか。
うーむ・・・
0170デフォルトの名無しさん
2011/12/19(月) 00:40:32.08ありがとう。検討させてもらう。ただあまり重くなる処理はちょっと・・・
>>168
それまた調べさせてもらうわ。ここの人は親切だな。
このexampleってファイルで#defineで文字列を数字に定義できれば問題は全て解決されるんだけど・・・
http://unity3d.com/support/documentation/Manual/Platform%20Dependent%20Compilation.html
C#には文字列を数字に定義する事ができないって言うじゃないか・・お茶吹いたわ・・
0171デフォルトの名無しさん
2011/12/19(月) 00:41:33.650172デフォルトの名無しさん
2011/12/19(月) 00:46:20.210173デフォルトの名無しさん
2011/12/19(月) 00:58:08.280174デフォルトの名無しさん
2011/12/19(月) 01:00:43.710175デフォルトの名無しさん
2011/12/19(月) 01:12:26.10しかし国語の授業で何か役に立ったことなんて在っただろうか?
0176デフォルトの名無しさん
2011/12/19(月) 01:13:49.020177デフォルトの名無しさん
2011/12/19(月) 01:21:26.800178デフォルトの名無しさん
2011/12/19(月) 01:25:59.340179デフォルトの名無しさん
2011/12/19(月) 01:30:41.58using System.Collections;
public class PlatformDefines : MonoBehaviour {
void Start () {
#if UNITY_EDITOR
Debug.Log("Unity Editor");
#endif
#if UNITY_IPHONE
Debug.Log("Iphone");
#endif
#if UNITY_STANDALONE_OSX
Debug.Log("Stand Alone OSX");
#endif
#if UNITY_STANDALONE_WIN
Debug.Log("Stand Alone Windows");
#endif
}
}
>このexampleってファイルで#defineで文字列を数字に定義できれば問題は全て解決されるんだけど・・・
って言うけど全然どこが問題なのか分からん
参照設定してあれば動くだろこれ
0180デフォルトの名無しさん
2011/12/19(月) 01:33:59.340181デフォルトの名無しさん
2011/12/19(月) 01:35:53.78#define HOGE 9999
これがしたいだけ
C/C++のプリプロセサ識別子のことを、この子は”文字列”と呼んでいるから意味不明気味になってる
0182デフォルトの名無しさん
2011/12/19(月) 01:38:25.670183デフォルトの名無しさん
2011/12/19(月) 01:43:40.210184デフォルトの名無しさん
2011/12/19(月) 02:07:01.64どれ買えばいいかな?
独習c#だけ読んだ。
0185デフォルトの名無しさん
2011/12/19(月) 02:10:50.98読んでないだろ
0186デフォルトの名無しさん
2011/12/19(月) 02:21:05.230187デフォルトの名無しさん
2011/12/19(月) 02:36:45.61信じてくれ。
読んでこれなんだ。
0188デフォルトの名無しさん
2011/12/19(月) 02:41:20.43これを期に買ってみようと思うんだが、何かオススメはある?
0189デフォルトの名無しさん
2011/12/19(月) 05:12:58.38なんというか、C#以前の問題すぎてヤバい。
#define での定数定義とか、C++でもやっちゃダメな部類のことよ。
const 使う。
0190デフォルトの名無しさん
2011/12/19(月) 05:33:50.17C#のパッケージに入ってた、はじめてのC#と
本屋で買った使える500の技ってやつだったな
これだけでそれなりにはできた
全部イベントハンドラに書いてたけどw
0191デフォルトの名無しさん
2011/12/19(月) 06:09:13.350192デフォルトの名無しさん
2011/12/19(月) 08:03:01.42それについてはいろいろあるんですよ。
c++でプリプロセッサ識別子をビットに変換する事で識別子としての記述のわかりやすさと
ビットによる高速性を両立するプログラムをc#に移植しなければならなかった。
0193デフォルトの名無しさん
2011/12/19(月) 08:26:34.940194デフォルトの名無しさん
2011/12/19(月) 09:27:46.36朝一のコーヒー返せwwwwwww
0195デフォルトの名無しさん
2011/12/19(月) 10:41:05.20だいいちそんなこと気にする必要があるレベルとはとても思えないな
0196デフォルトの名無しさん
2011/12/19(月) 11:04:59.12void myFunc(){
//処理
};
これより
myFunc = function(){
//処理
};
みたいな感じのほうがいいなぁ
デリゲートやラムダ式を使えば後者の書き方ができるの?
0197デフォルトの名無しさん
2011/12/19(月) 11:18:20.190198デフォルトの名無しさん
2011/12/19(月) 11:27:08.74出来るだけラムダ式で書いたほうが良いのかな?
0199デフォルトの名無しさん
2011/12/19(月) 11:27:47.780200デフォルトの名無しさん
2011/12/19(月) 11:29:03.320201デフォルトの名無しさん
2011/12/19(月) 11:55:30.190202デフォルトの名無しさん
2011/12/19(月) 12:08:09.06なんかできるみたいだな・・・・
>>194
カフェインは毒だ
>>195
コンパイル時定数!できそうだな。
0203デフォルトの名無しさん
2011/12/19(月) 12:08:39.54別に用意されてる機能を使いきらなければいけないってルールはないぞ
Linqとか使ってればそこそこ便利ではあるが、必要に迫られていない物を無理して使っても良いことはない
0204デフォルトの名無しさん
2011/12/19(月) 12:38:23.80アレイリスト名[3]=4;
でいいんですよね?
0205デフォルトの名無しさん
2011/12/19(月) 12:40:31.660206デフォルトの名無しさん
2011/12/19(月) 12:45:03.71オーバーロードまで考えたらその書き方はいまいちかも。
実際、そういう定義の仕方する言語はオーバーロードできないこと多い。
>>198
何と比べて?
匿名メソッド構文と比べてだと、利点しかないんでラムダ式一択。
(匿名でない普通の)メソッドと比べてだと、その場で短く書きたいかどうか次第。
長くなったら普通のメソッドにして、ちゃんとした名前つけるべきだと思う。
逆に、 x => x > 0 とか、式1個なもんに対していちいちメソッド作りたくない。
0207デフォルトの名無しさん
2011/12/19(月) 12:46:46.37そもそも ArrayList はもう使っちゃだめだから。
List<int> ね、その場合。
リスト名[3] = 4; は間違い。
0ベースだから、3番目のインデックスは、0, 1, 2 の 2。
0208デフォルトの名無しさん
2011/12/19(月) 13:06:36.33ありがごとうございます。
int r=0;
リスト名[r]=1;
r++
リスト名のインデックスに変数を入れることはできるのでしょうか?
0209デフォルトの名無しさん
2011/12/19(月) 13:15:53.10http://headline.2ch.net/test/read.cgi/bbynews/1324267486/
0210デフォルトの名無しさん
2011/12/19(月) 13:31:31.12できる
あとその使い方だと前置インクリメントの方がいいな
最適化されるから関係ないけど
0211デフォルトの名無しさん
2011/12/19(月) 13:36:21.28そのレベルはさすがに、2chに書き込む前に自分でコード書いて確認した方が早くね?w
0212デフォルトの名無しさん
2011/12/19(月) 13:40:52.44後置をぜんぶ前置にしたわ。プログラムっていろいろあるんですね。
このスレはすごく勉強になります。ありがとう!
0213デフォルトの名無しさん
2011/12/19(月) 13:42:04.01書き込み少し控えるわ。
0214デフォルトの名無しさん
2011/12/19(月) 15:11:24.20実行回数が毎回バラバラなのも、そーゆー物なのでしょうか?
int intNum = 0;
string strBuff = "";
private void button1_Click(object sender, EventArgs e)
{
Parallel.For(0, 1000, (int r) =>
{
subHoge();
subHage();
});
textBox1.Text = strBuff;
}
private void subHoge()
{
strBuff = strBuff + intNum.ToString("00000") + "Hoge\r\n";
intNum++;
}
private void subHage()
{
//textBox1.Text = textBox1.Text + "Hage\r\n";
strBuff = strBuff + "Hage\r\n";
}
0215デフォルトの名無しさん
2011/12/19(月) 15:15:12.25実行回数が変わってるんじゃなくて、
intNum の更新が競合してるんじゃないかと。
0216デフォルトの名無しさん
2011/12/19(月) 15:27:47.80全部間違ってる
0217デフォルトの名無しさん
2011/12/19(月) 15:34:31.40更新が競合しているというより、明らかに1000回実行してないですね。
HogeとHage合わせても450回程度でした。
>>216
http://codezine.jp/article/detail/4697?p=3
を見ると、これでも良さそうな気がするのですが・・・。
何がやっちゃいけないことなのでしょうか?
よろしくお願いします。
0218デフォルトの名無しさん
2011/12/19(月) 15:40:38.31だから、実行回数をnumIntでカウントしてるんじゃないの?
競合したら、実行された回数よりもその数字小さくなるよ。
その記事のは、異なるスレッドが同じデータを読み書きしない作りになってるから平気なだけ。
0219デフォルトの名無しさん
2011/12/19(月) 15:44:18.80結果がおかしくなるはず
0220デフォルトの名無しさん
2011/12/19(月) 15:49:24.270221デフォルトの名無しさん
2011/12/19(月) 15:50:50.03二つの関数でstrBuffを使用しているので、そこで競合しているのですね。
ありがとうございます。
でも、Parallel.Forの中をsubHoge()だけにしても、やはり1000回は動作しませんでした。
後は何かありますでしょうか?
0222デフォルトの名無しさん
2011/12/19(月) 15:54:08.81StringBuilder strBuff
locked(strBuff)
0223デフォルトの名無しさん
2011/12/19(月) 15:58:46.11違うよ、それも問題だけど、そこだけじゃないよ。
numInt++ を System.Threading.Interlocked.Increment(ref numInt) に変えてみて。
0224デフォルトの名無しさん
2011/12/19(月) 15:59:50.76数字の順番が変わってしまう可能性があるが
そうならない方法は思いつかなかったので頭いい人教えて
private void subHoge()
{
var tempInt = Interlocked.Increment(ref numInt) - 1;
while(true) {
var tempStrOld = strBuff;
var tmpStrNew = tmpStrOld + tempInt.ToString("00000") + "Hoge\r\n";
if (Interlocked.CompareExchange(ref strBuff, tempStrNew, tempStrOld) == tempStrOld) break;
}
}
private void subHage()
{
while(true) {
var tempStrOld = strBuff;
var tmpStrNew = tempStrOld + "Hage\r\n";
if (Interlocked.CompareExchange(ref strBuff, tempStrNew, tempStrOld) == tempStrOld) break;
}
}
0225デフォルトの名無しさん
2011/12/19(月) 16:03:09.25ロックフリーコードとか、アプリ側で書くなw
それはもっと下層のインフラの中にとどめとくもんだw
0226デフォルトの名無しさん
2011/12/19(月) 16:18:17.080227デフォルトの名無しさん
2011/12/19(月) 16:20:33.45どうなれば正解なのか知らんが、それを避けるなら
結局全体をロックする必要があるから並列化の意味なし
0228デフォルトの名無しさん
2011/12/19(月) 16:25:15.07そこロックしたら何の意味もない
0229デフォルトの名無しさん
2011/12/19(月) 16:57:26.99そもそも実用品じゃないと思うんだが
0230デフォルトの名無しさん
2011/12/19(月) 17:05:51.43結局、全部ロックしちゃえば解決という答えにしかならない
並列化するんなら可能な限りスレッドごとに別個に処理して
あとでまとめるのが基本
0231デフォルトの名無しさん
2011/12/19(月) 17:12:06.28だいぶ安定しました!
でも、やっぱり抜けがあります。
>>222のlockedってどこにあるのでしょう・・・?
System.Threadingの中には無いようですし、ググってもlock文しか出て来ませんでした。
0232デフォルトの名無しさん
2011/12/19(月) 17:19:32.89Interlockedとか使わなくていいよ。そこだけロックしない意味がない。
strBuffをStringBuilderにして、
subHogeとsubHageの中身全体をlock(strBuff) { }で囲めばうまくいくはず。
全く並列化の意味ないけど、それはやろうとしてることがおかしいから仕方ない。
0233デフォルトの名無しさん
2011/12/19(月) 18:06:26.39元々が「画像を取り込んで、保存と画像処理を同時に出来ないかな」で試しにやってみた程度ですので
ちと混乱の元になりそうなのでもう少し勉強してみます。
ありがとうございました。
0234デフォルトの名無しさん
2011/12/19(月) 18:30:46.72そこを踏まえたライブラリにして欲しいもんだ
0235デフォルトの名無しさん
2011/12/19(月) 20:03:59.930236デフォルトの名無しさん
2011/12/19(月) 20:13:37.100237デフォルトの名無しさん
2011/12/19(月) 20:39:19.21サンキュー!
0238デフォルトの名無しさん
2011/12/19(月) 21:10:30.25http://msdn.microsoft.com/ja-jp/library/ee461502.aspx
0239デフォルトの名無しさん
2011/12/19(月) 21:33:28.03自民党が要請した復興予算は累計17兆円
自民党の17兆が7月時点でに決定されていたのなら
今の日本はもう少し違って居た筈だ
ちなみに関東大震災のときは復興予算として現在の価値にして150兆円以上を組んでいた。
この事実を知れば、予算の規模の小ささ、ましてや増税なんて奇知涯にも程があると思わざる負えない
帰化人だらけの民主党に復興なんて はなっから無理な話なんだよ
0240デフォルトの名無しさん
2011/12/19(月) 22:37:43.430241デフォルトの名無しさん
2011/12/19(月) 22:45:58.210242デフォルトの名無しさん
2011/12/20(火) 00:46:16.85ムリダナ・x・
0243デフォルトの名無しさん
2011/12/20(火) 00:54:28.38起動後にキー操作を受け付けるウィンドウがその起動したアプリになってしまうのですが、
起動した後もキー操作を自分のフォームで受け付けるようにするにはどういう方法でやれば良いでしょうか。
0244デフォルトの名無しさん
2011/12/20(火) 01:03:30.410245デフォルトの名無しさん
2011/12/20(火) 20:57:17.56Win32APIのShellExecuteを使って起動してみたのですが、
表示状態の引数を色々試したのですがどれもフォーカスが移ってしまいました
ただ起動する以外にもすることがあったら使い方を教えていただきたいです。
0246デフォルトの名無しさん
2011/12/20(火) 20:59:27.70速度を気にする場合はC++,Cを選択するべきでしょうか?
また、C#で作った場合、monoへの移植は容易でしょうか?
そしてC#とJavaはどちらが早いでしょうか?
0247デフォルトの名無しさん
2011/12/20(火) 21:00:53.90ソース晒してみ
0248デフォルトの名無しさん
2011/12/20(火) 21:15:49.98>C#はC++,Cに比べると速度は遅いですか?
そうでもないよ
>速度を気にする場合はC++,Cを選択するべきでしょうか?
本当に速度が必要ならそうすべき
数学とか物理学とか科学技術計算とかならぬ
ただし生産性とのトレードオフを考慮
>また、C#で作った場合、monoへの移植は容易でしょうか?
とりあえずC#は言語
monoはフレームワークだよ
Windowsべったりに書かなければ容易でしょう
>そしてC#とJavaはどちらが早いでしょうか?
一概には言えない
0249デフォルトの名無しさん
2011/12/20(火) 21:27:47.25ソース一覧
http://www.bulldog.co.jp/ ブルドックソース株式会社 東京都
http://www.kagome.co.jp/ カゴメ株式会社 愛知県
http://www.otafuku.co.jp/ オタフクソース株式会社 広島県
http://www.ikari-s.co.jp/ イカリソース株式会社 大阪府
http://www.kikkoman.co.jp/ キッコーマン株式会社 千葉県
http://www.oliversauce.com/オリバーソース株式会社 兵庫県
http://www.sky-net.or.jp/toshi/ カープソース 広島県
http://www.maruki-su.com/ 株式会社 川上酢店 愛知県
http://www.kozima.co.jp/ 小島食品製造株式会社 愛知県
http://www.komi.co.jp/ コーミ株式会社 愛知県
http://www.sankyohikari.co.jp/ サンキョーヒカリ 愛知県
http://www.junmaru.co.jp/ 株式会社 純正食品マルシマ 広島県
http://www.papaya-sauce.co.jp/ パパヤソース本舗 大洋産業株式会社 京都府
http://www.takahashisauce.com/ 高橋ソース株式会社 埼玉県
http://www.choko.co.jp/ チョーコー醤油株式会社 長崎県
http://www.timelyhit.ne.jp/ajiyoko/shop/sauce/sauce1.htm 阪神ソース株式会社 兵庫県
http://www.kyoto-thinking.co.jp/hirota/ 京風味ソース本舗 蛇ノ目食品廣田徳七商店 京都
http://www.optic.or.jp/com/fujiisauce/fujiisauce.html 有限会社 藤井ソース工場 岡山県
http://www2.neweb.ne.jp/wd/hikari/ ヒカリ食品 徳島県
http://www.hat.hi-ho.ne.jp/aokia/ 下北沢ビレッジソース 丸寿食品工業株式会社 東京都
http://www.yamayashokuhin.co.jp/ 山屋食品株式会社 東京都
http://brothersauce.com/ ブラザーソース森彌食品工業株式会社
http://www.asahi.co.jp/you/t20011026.html 神戸地ソース物語
【関連団体】
http://www.maff.go.jp/koueki/sougou/35/35.htm (社)日本ソース工業会
http://www.japan-tomato.or.jp/ 社団法人 全国トマト工業会
http://www.soysauce.or.jp/ 日本醤油協会
0250デフォルトの名無しさん
2011/12/20(火) 21:30:58.130251デフォルトの名無しさん
2011/12/20(火) 21:33:46.92寒いよ
0252デフォルトの名無しさん
2011/12/20(火) 21:55:29.21ShellExecute(this.Handle.ToInt32(),"Open","calc.exe","c:\\windows","",5);
最後の引数をいろいろ試しました
宣言部はこうです↓
[DllImport("shell32.dll", EntryPoint="ShellExecuteA")]
static extern int ShellExecute (
int hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
int nShowCmd);
■ このスレッドは過去ログ倉庫に格納されています