トップページ⇒tech
1001コメント244KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2013/11/08(金) 08:46:10.17
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問。
質問者自身なんだか意味がよく分からない質問。
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて、他スレ・他板へ行くことを勧められることがあります、ご了承下さい。

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

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

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

■関連スレ
C#, C♯, C#相談室 Part81
http://toro.2ch.net/test/read.cgi/tech/1381134494/

■コード貼るなら↓使ってください
http://ideone.com/
0002デフォルトの名無しさん2013/11/08(金) 09:44:08.47
ここけ?
0003デフォルトの名無しさん2013/11/08(金) 10:48:56.95
おつ
0004デフォルトの名無しさん2013/11/09(土) 06:08:24.18
unsafeでポインタ使うと速くなると聞いたんですが、fixedのコストが重すぎて遅くなりました。
0005デフォルトの名無しさん2013/11/09(土) 06:46:32.79
実態はポインタをエミュレートしただけのただのオブジェクト参照だからなw
0006デフォルトの名無しさん2013/11/09(土) 07:57:17.65
配列の境界チェックを無効にするオプションを教えてくれ。
0007デフォルトの名無しさん2013/11/09(土) 10:48:15.03
C言語を使うという選択
0008デフォルトの名無しさん2013/11/09(土) 10:50:34.55
「ふらっと」って、# と ♭ に掛けてるのか。今気づいた。
0009デフォルトの名無しさん2013/11/09(土) 11:18:00.41
少数2桁の数が沢山書かれたいくつかのファイルを読んで、ファイルごとにList<double>に格納しています。
このdoubleの値は変更しません。
このdouble同士をifの==で同一か判断するところがあります。
このとき近似値にまとめられて比較がうまくいかないことはあるのでしょうか?
0010デフォルトの名無しさん2013/11/09(土) 11:28:22.55
>>9
あるだろう
0011デフォルトの名無しさん2013/11/09(土) 11:34:58.79
二桁ならねえよ
0012デフォルトの名無しさん2013/11/09(土) 11:38:20.18
同じ文字列をParseした結果は常に同じ
0013デフォルトの名無しさん2013/11/09(土) 11:42:05.47
>>11
上桁が天文学的数値でもかね
0014デフォルトの名無しさん2013/11/09(土) 11:45:23.37
不安ならdecimal使っとけ
0015デフォルトの名無しさん2013/11/09(土) 11:47:22.38
double使うと頭がハゲると言われる所以である。
0016デフォルトの名無しさん2013/11/09(土) 11:54:01.63
  _人人人人人人人人人人人人人人人_
  >   ハゲがいるぞ殺せ!!!   <
   ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

        三 ( ´・ω)
       三 ー(‐∪─→
   三 / ̄ ̄ ̄ 》  ̄\
 三三 |      U ・ |                  彡⌒ ミ
  三 と|        ι| |                 ヽ(´・ω・`)ノ
  三 /_∧∨ ̄ ̄/_∧U                  (___)
0017デフォルトの名無しさん2013/11/09(土) 13:45:52.81
visualstudioのウィンドウの分割のショートカットキーってありますか?
0018デフォルトの名無しさん2013/11/09(土) 13:55:33.59
ないなら割り当てればいいだろう
0019デフォルトの名無しさん2013/11/09(土) 13:57:54.89
調べ方分からないってことか
オプションのキーボードで以下の文字列を含むコマンドを表示の所に適当に 分割 とか入力
で目当てのコマンドを選んでみて、ショートカットが割り当てられてたら表示される
0020デフォルトの名無しさん2013/11/09(土) 13:59:26.41
>>19
ありがとうがいます!!!
0021デフォルトの名無しさん2013/11/09(土) 14:35:20.27
少数二桁って1.5とか8.2とかじゃねーの?
0022デフォルトの名無しさん2013/11/09(土) 15:15:08.04
>>21
頭大丈夫?w
002392013/11/09(土) 15:47:33.70
整数3桁の小数2桁です(999.99)
decimalなら大丈夫なんですかね
だめなら100掛けて整数とするか文字列で別に持って比較しようと思います。
0024デフォルトの名無しさん2013/11/09(土) 15:56:57.58
整数部小数部合わせて14桁ぐらいまでなら比較においてはdoubleで問題ないよ
0025デフォルトの名無しさん2013/11/09(土) 16:01:43.52
doubleで問題無いと思うけど
100掛けて整数にして比較はdoubleを経由してる時点で全く意味ない
0026デフォルトの名無しさん2013/11/09(土) 16:02:17.51
初心者です

class Class1
{
public static Class1 Value { get; set; }
public void Test() { }
}

class Class2
{
static void Main()
{
Class1.Value.Test();
}
}

このプログラムの「Class1.Value.Test();」という書き方がよくわかりません。
プロパティからメソッドを呼んでる?
なんて検索したらいいかもわからなかったので教えてください。
0027デフォルトの名無しさん2013/11/09(土) 16:03:45.78
性的メソッドだからクラスから直接呼べる
正しいnew文から生成したインスタンスからは呼べない
0028デフォルトの名無しさん2013/11/09(土) 16:05:19.37
ごめんコードよく読んでなかった
0029デフォルトの名無しさん2013/11/09(土) 16:10:13.26
単純にスタティックプロパティに設定されたインスタンスのメソッド呼んでるだけだろ
0030デフォルトの名無しさん2013/11/09(土) 16:10:08.93
ばらせばわかりやすい
Class1 temp = Class1.Value;
temp.Test();
0031デフォルトの名無しさん2013/11/09(土) 16:11:04.81
プロパティにはオブジェクトを入れられる
オブジェクトにはint,string,Class,Delegateなど様々な型がある

プロパティのメソッドを呼んでいるで間違いないけど
プロパティの値であるClass1のインスタンスのメンバであるTest()メソッドを呼び出している、ということ

Class1は自分自身をプロパティとして公開してる
0032デフォルトの名無しさん2013/11/09(土) 16:13:18.09
>>29-31
納得しました!
わかりやすい説明ありがとうございます
0033デフォルトの名無しさん2013/11/09(土) 16:32:27.44
>>32
ちなみにあれはファクトリークラスというデザインパターンである
状況に応じて複雑な初期設定が必要な場合、>>26の例で言うとClass2で
インスタンス化して初期設定をするのが困難な場合がある
初期設定を済ませて安全に使える状態を保証しますという意味でStaticプロパティで公開している
初期設定はClass2でしたい場合のためにClass1自体はStaticとして宣言されていない

よく使われるのがこれ
WebRequest req = WebRequest.Create(url);
これはCreateメソッドに渡された値によって最適な設定をしたWebRequestを返している
urlだったら、Webアクセスに特化したWebRequestを返し
ローカルファイルのアドレスだった場合はそれ用の…という感じ

>>26のコードだけだと何のためにしているの?って疑問に思っても仕方がないよね
0034デフォルトの名無しさん2013/11/09(土) 16:34:57.50
動的生成するためじゃねーの?
0035デフォルトの名無しさん2013/11/09(土) 16:50:01.09
>>26はシングルトンのつもりなんじゃね
いやグローバル変数と呼ぶべきか
初心者はあまり真似しないほうがいいよ
0036デフォルトの名無しさん2013/11/09(土) 22:40:54.43
Create静的メソッドだとnewをタイプしなくていいから楽
0037デフォルトの名無しさん2013/11/10(日) 04:37:00.65
最近C#さわって無くて家にあるのはVS2005なんで
.NetFreamworkもC#2.0でしか造れないんだけど
StringのFormatは、Cのprintfみたいな仕様になった?
それとも、まだ{0}みたいな使いづらい仕様のままなの?
0038デフォルトの名無しさん2013/11/10(日) 04:43:37.47
Cの%dとかの方が見にくい
0039デフォルトの名無しさん2013/11/10(日) 06:35:30.43
Cの方がくそ仕様だろ
0040デフォルトの名無しさん2013/11/10(日) 08:17:40.70
Pythonなんか従来はC式の書式使ってたけど
クソだからって.NETを真似したものに乗り換えたんだよね
0041デフォルトの名無しさん2013/11/10(日) 08:58:25.45
つーかそんなところがひょいひょい変更されるわけないだろハゲっが
0042デフォルトの名無しさん2013/11/10(日) 09:06:38.94
printfってパディングと書式指定子併用できるの?
0043デフォルトの名無しさん2013/11/10(日) 13:13:03.28
誰がハゲやねん
0044デフォルトの名無しさん2013/11/10(日) 15:10:32.25
>>37みたいなのは使い方がわからないだけだろうな
MSDNの説明は確かにわかりづらい

{位置(,桁数):型}

System.Console.WriteLine("{0,5:D3}", 12); が
__012
(_はブランク)になるのはわかる?
0045デフォルトの名無しさん2013/11/10(日) 15:29:18.31
0,5←まずこっからわからん
0046デフォルトの名無しさん2013/11/10(日) 15:55:07.04
Environment.TickCount プロパティ
http://msdn.microsoft.com/ja-jp/library/system.environment.tickcount(v=vs.110).aspx

このコード サンプルでは、ゼロから MaxValue を 1 サイクル (24.9 日) とする負数以外の数値を取得するために、
符号ビットを取り除く処理を行っています。

using System;

class Sample
{
public static void Main()
{
int result = Environment.TickCount & Int32.MaxValue;
Console.WriteLine("TickCount: {0}", result);
}
}

以上のようにありますが
int result = Environment.TickCount & Int32.MaxValue;

この部分の意味が分かりません。
何をしているのでしょうか?
0047デフォルトの名無しさん2013/11/10(日) 16:01:29.80
>>46
この部分のもなにも、コードサンプルの処理そのものだろう
> &nbsp;このコード サンプルでは、ゼロから MaxValue を 1 サイクル (24.9 日) とする負数以外の数値を取得するために、
> 符号ビットを取り除く処理を行っています。

ビット演算分かる?
Int32.MaxValueが2進数でどんな値になるかは?
0048デフォルトの名無しさん2013/11/10(日) 16:03:38.17
>何をしているのでしょうか?

負数以外の数値を取得しています。
0049462013/11/10(日) 16:05:23.79
>>47
Int32.MaxValueは2,147,483,647
この値とEnvironment.TickCountで出た値の論理積をすれば
なんで正しい値になるのかがわかりません
0050デフォルトの名無しさん2013/11/10(日) 16:06:24.45
>>46
そのmsdnに書いてあるじゃん
>ゼロから MaxValue を 1 サイクル (24.9 日) とする負数以外の数値を取得す
>るために、符号ビットを取り除く処理
これだよ

Int32.MaxValueでアンドを取ると符号ビットを取り除けるんだよ
Int32.MaxValueの値と論理積を調べてよく考えてみれば分かるよ
0051デフォルトの名無しさん2013/11/10(日) 16:06:35.16
And演算してる
説明の通り負の数を取り除いている
01&00=00
0052デフォルトの名無しさん2013/11/10(日) 16:08:55.72
Int32.MaxValueの値を2進数で表すと
0111111(中略)1111111
この先頭の0は符号ビットといって、0なら正の数、1なら負の数を表すことになっている。
TickCountのカウントは符号を考慮しないので、ここからカウンタが1だけ増えると
1000000(中略)0000000
となる。これを符号付き整数として解釈するので、結果が負の値になってしまう。
これは不便だからInt32.MaxValueとのANDをとっている。Int32.MaxValueは符号ビット以外全部1だから、符号ビットが無視されて
0000000(中略)0000000
になってくれる。
0053462013/11/10(日) 16:09:01.24
2147483647
2進数:1111111111111111111111111111111
でした
論理積について調べてみます
0054デフォルトの名無しさん2013/11/10(日) 16:09:23.27
>>49
なぜかを考えるのは学者が考える事
凡人はそういうものだと思っておけばいい
0055デフォルトの名無しさん2013/11/10(日) 16:09:36.93
Environment.TickCountって妙な仕様だな

>>49
もって回った説明してる人が多いけど、要するにMSBを0にしてるだけでしょ
0056デフォルトの名無しさん2013/11/10(日) 16:10:23.29
>>49
Int32.MaxValueは符号ビットが0になってる

0でアンドを取ったら0になるでしょ
つまり、符号ビットが立ってってもInt32.MaxValueでアンドを取ると符号ビット
を0に出来る
0057デフォルトの名無しさん2013/11/10(日) 16:10:40.22
>>54
あんたコピペグラマだろw
さすがにそれはない
0058462013/11/10(日) 16:12:01.28
>>52
皆さんありがとうございます
わかりました
論理演算の勉強不足でした
すみません
0059デフォルトの名無しさん2013/11/10(日) 16:12:46.96
どうでもいいけど符号付き整数のMSBを符号ビットと呼ぶのはちょっと違和感感じるね
0060デフォルトの名無しさん2013/11/10(日) 16:14:24.44
>>52
じゃあカウント1の時はゼロになって正しい数値にならないということ?
2からしかカウントできないの?
0061デフォルトの名無しさん2013/11/10(日) 16:17:07.78
uint使えばいいだけじゃん
0062デフォルトの名無しさん2013/11/10(日) 16:17:54.50
>>61
確かに
0063デフォルトの名無しさん2013/11/10(日) 16:18:27.89
>>60
そりゃそうだろ
値を繰り返し採取して差を取るようなことをしてるなら、オーバーフローを考慮して、増分が負になったときの例外的対応が必要
0064デフォルトの名無しさん2013/11/10(日) 16:18:46.91
>>59
符号ビットといったほうが初心者には分かりやすいと思うけどな
MSBとか言ってもピンと来ないでしょ
最上位ビットと言ってもよかっただろうけどmsdnが符号ビットと言ってるし
0065デフォルトの名無しさん2013/11/10(日) 16:21:02.42
>>61
uintはCLS準拠じゃないからダメ
0066デフォルトの名無しさん2013/11/10(日) 16:25:13.24
>>65
なんで準拠してないんですか?
0067デフォルトの名無しさん2013/11/10(日) 16:31:03.42
暇そうな話だ
0068デフォルトの名無しさん2013/11/10(日) 16:34:03.67
実際暇なんですけど?
0069デフォルトの名無しさん2013/11/10(日) 16:39:19.84
2の補数でも乗除算のときや値を表示したりするときには
結局最上位ビットを特別扱いするんだから符号ビットでいいでしょ
0070デフォルトの名無しさん2013/11/10(日) 16:46:15.70
符号ビットが一番わかりやすいだろ
0071デフォルトの名無しさん2013/11/10(日) 16:53:29.45
>>66
Javaに符号なし整数がないから
.NETが世に出た当初、J#は主力言語と位置付けられてたからな
0072デフォルトの名無しさん2013/11/10(日) 20:56:04.84
intが16bitだった頃は、unsignedで使うのが常識でした
勿論C言語の話ですが
0073デフォルトの名無しさん2013/11/10(日) 21:02:28.07
ちょっと待ってください
誰かあなたにそんな質問をしましたか?
0074デフォルトの名無しさん2013/11/10(日) 21:08:52.16
なんだそれ
0075デフォルトの名無しさん2013/11/10(日) 21:16:14.63
>>72
意味が分からん
負数はどうしてたんだ
0076デフォルトの名無しさん2013/11/10(日) 21:35:13.10
処理系書いて無い時点で釣りでしょ
そもそも K&Rなら unsigned 単体でunsigned int なので
わざわざ冗長に書く意味が無い。
0077デフォルトの名無しさん2013/11/11(月) 00:09:14.75
>>72
俺様常識書かれてもね
しかも流れに関係ないしね
0078デフォルトの名無しさん2013/11/11(月) 03:16:19.70
だってその頃の経験値のカンストはふつうに65535ですよ。ルピーのカンストは255です。
signedならその半分じゃないですか。昔はunsignedが普通なのですよ。

負数を表現する必要なんて日常生活でも温度ぐらいです。
0079デフォルトの名無しさん2013/11/11(月) 03:22:39.69
なにいってんだこいつ
0080デフォルトの名無しさん2013/11/11(月) 03:24:39.92
歴史の事実は変わらん。昔はunsignedばかり使ってたのは事実。

歴史を知らない無知なガキは黙ってな。
0081デフォルトの名無しさん2013/11/11(月) 03:37:23.59
今でもulong使うぜ
0082デフォルトの名無しさん2013/11/11(月) 05:52:07.98
ゲームプログラムの話なのかな?
そんな特殊分野のことをいわれても知らんよ
Cどころかアセンブラでやってた時代だとか
0083デフォルトの名無しさん2013/11/11(月) 06:10:51.01
c++のライブラリ見れば符号なしが普通に使われてるのが分ると思うが。
c#やjavaは馬鹿でも使えるようにするため何でもintを基本にしてるだけ。
0084デフォルトの名無しさん2013/11/11(月) 07:25:47.40
>unsignedばかり使ってた

>符号なしが普通に使われてる

なんかニュアンスが変わってきてるぞ
0085デフォルトの名無しさん2013/11/11(月) 09:25:03.97
減算を考慮するとunsignedでも結局符号あり整数を使ってるわけで、
符号あり整数の方がむしろ自然
0086デフォルトの名無しさん2013/11/11(月) 09:35:59.88
符号はあったほうがあらゆることが自然に書けるだろ
先のTickCountの例でも、前回の値との差分をとっている場合にオーバーフローしたことを知るには
signedなら 差分 < 0 で分かりやすいが、unsignedなら 差分 & Int32.MinValue != 0 とか意味不明なコードになってしまう
0087デフォルトの名無しさん2013/11/11(月) 10:55:38.40
自分が作ったアプリケーションのクラスの階層構造をドキュメントにして
そこに色々追記したいのですがいい方法ってありますか?
0088デフォルトの名無しさん2013/11/11(月) 11:07:14.18
UML
0089872013/11/11(月) 11:10:53.42
>>88
こういったものをUMLというんですね
名前しか聞いたことがありませんでした
勉強してみます
0090デフォルトの名無しさん2013/11/11(月) 11:20:18.35
>>85-86
CPUの仕組みを知っていたらそういう馬鹿な発言はしないのだが。

ステータスレジスタ、フラグレジスタで検索しろ。
0091デフォルトの名無しさん2013/11/11(月) 11:57:44.58
くだらん
0092デフォルトの名無しさん2013/11/11(月) 15:27:54.98
今日はマイナス1日とか言ったほうが自然なのか?
0093デフォルトの名無しさん2013/11/11(月) 15:29:34.72
25時というよりマイナス1時って言った方が自然なのか?
0094デフォルトの名無しさん2013/11/11(月) 16:02:54.83
25時は、どう見ても+1時。 マイナスと言いたいのなら23時をださないと・・・
0095デフォルトの名無しさん2013/11/11(月) 19:25:22.51
UMAだと雪男やチュパカブラになっちゃうな
0096デフォルトの名無しさん2013/11/11(月) 19:58:50.86
Livet と StyleCop 両方使っているひといます?

使っている人は、クラス内のメンバの順番に関する警告は
オフにして使ってますか?
0097デフォルトの名無しさん2013/11/11(月) 21:51:16.17
&gt;&gt;90
C#スレなんだからせめてcheckedとかいえよ
0098デフォルトの名無しさん2013/11/11(月) 22:46:25.11
>>90
アドレッシングを勉強してこい
0099デフォルトの名無しさん2013/11/11(月) 23:10:31.06
青じそドレッシングが好き。
0100デフォルトの名無しさん2013/11/11(月) 23:19:00.67
俺はアグレッシブ
0101デフォルトの名無しさん2013/11/11(月) 23:21:05.50
アドレッシングてw
意味分かって言ってるのかしら
0102デフォルトの名無しさん2013/11/12(火) 00:47:46.47
>>101
アドレッシング作ったの俺だから間違いない
0103デフォルトの名無しさん2013/11/12(火) 01:09:19.11
アドレッシングもたいがいだか、唐突にフラグレジスタとか言う奴もどうかと思うぞ
0104デフォルトの名無しさん2013/11/12(火) 01:16:07.13
>>95
UMAをウマじゃなくてユーマと読むのはなんか納得出来ない
0105デフォルトの名無しさん2013/11/12(火) 02:37:06.41
世の中君のためには出来ていない
0106デフォルトの名無しさん2013/11/12(火) 03:30:44.42
>>104
UFOはウフォなのか
0107デフォルトの名無しさん2013/11/12(火) 04:06:32.47
USAはうーさーなのか
0108デフォルトの名無しさん2013/11/12(火) 04:17:15.04
UMA→ゆうま(人の名前)
0109デフォルトの名無しさん2013/11/12(火) 05:03:49.60
>>103
wwwww

演算結果の状態を変数側で持てとかギャグで言ってんのか?

本気でギャグで言ってんのか?

真性の馬鹿なのか?

真性のアホなのか?
0110デフォルトの名無しさん2013/11/12(火) 05:19:04.42
話かみあってないし
そもそもかみあわせる気もなさそうだし
不毛だからやめような
0111デフォルトの名無しさん2013/11/12(火) 05:22:00.32
CPUの話に過剰反応するのはマルチスレッド簡単君でしょ。
0112デフォルトの名無しさん2013/11/12(火) 05:39:50.11
Overflowを自分でチェックしなくても、プロジェクトの設定で例外出るようにしとけよ。

Overflow出てる時点で致命的に設計ミスなんだから。
0113デフォルトの名無しさん2013/11/12(火) 07:19:21.15
>>109
なに書いてるか自分でもわかってないだろ (w
0114デフォルトの名無しさん2013/11/12(火) 08:05:43.15
>>113
>>85 >>86
これが理解できる? CPUが既に内包してる機能を自分で実装しようとしてる。
0115デフォルトの名無しさん2013/11/12(火) 08:27:21.34
>>114
キチガイはすっこんでろ
0116デフォルトの名無しさん2013/11/12(火) 08:37:13.39
差分 < 0で判定できると思ってる馬鹿がいる。
0117デフォルトの名無しさん2013/11/12(火) 08:46:26.50
さあそろそろ仕事だぞ
無職は続けてくれ
0118デフォルトの名無しさん2013/11/12(火) 09:02:38.56
TickCount調べたらint.MaxValueの次は0にならずに
int.MinValueになってんじゃん。これ内部unsignedだろ。

win32apiはちゃんとDWORD、ULONGLONG返すし。
0119デフォルトの名無しさん2013/11/12(火) 09:10:24.59
お前らさ、せめて1読むくらいの知能になってからネットやれよ
0120デフォルトの名無しさん2013/11/12(火) 09:30:42.57
そもそも 差分 < 0 じゃなくて
現在値 < 前取得値 で済む話でsignedである必要性が全くない。

無駄な減算処理して何がしたいのだろうか。
0121デフォルトの名無しさん2013/11/12(火) 09:52:09.46
まじレスするとuintとintじゃuintのほうがオーバーフローしにくい。
オーバーフローが困る処理ではint選ぶ選択はない。迷わず、uintやulong。
0122デフォルトの名無しさん2013/11/12(火) 12:07:10.09
うるせーぞガキ
0123デフォルトの名無しさん2013/11/12(火) 12:32:59.38
>>114
すてーたすれじすたしってるぼくってすごいでしょう

ってか (w
0124デフォルトの名無しさん2013/11/12(火) 12:38:41.72
Visual C#2010ですが

Form上にtextBoxが複数ある場合に、
contextMenuStripの右クリックによる切り取りやコピーをしたtextBoxのテキストを
contextMenuStripの右クリックにより別のtextBoxに貼り付ける場合、どう書けばよいのでしょうか

ググると色々載ってますが
IDataObject data = Clipboard.GetDataObject();
if (data != null && data.GetDataPresent(DataFormats.Text) == true)
{
textBox1.Paste();
}

textBoxは複数あり、貼り付ける時にはどのtextBoxなのかは予め特定できません
フォーカスのあるコントロールを取得してもPaste();が使えません

ものすごく簡単なことなのかもしれませんが教えてください
0125デフォルトの名無しさん2013/11/12(火) 12:50:44.19
>>124
http://dobon.net/vb/dotnet/control/cmsourcecontrol.html
0126デフォルトの名無しさん2013/11/12(火) 13:00:05.34
>>125でControlが取得できたら

TextBox tb = control as TextBox;
if( tb != null )
{
 // TextBoxだった
}

で判定しよう
0127デフォルトの名無しさん2013/11/12(火) 16:31:39.60
>>125-126
ありがとうございます。
void ContextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
ContextMenuStrip menu = (ContextMenuStrip)sender;
string control = menu.SourceControl.Name;
}
で取得はできたのですが
TextBox tb = control as TextBox;でstringからTextBoxへの型変換が出来ないエラーになってしまいます
0128デフォルトの名無しさん2013/11/12(火) 17:29:15.76
Control control = menu.SourceControl;
TextBox textBox = control as TextBox;

「型」というものについて学習しましょう
ControlクラスはTextBoxとかいろいろなコントロールの基になっている型です
0129デフォルトの名無しさん2013/11/12(火) 18:09:23.10
そもそもどうしてNameプロパティが出てきたんだよ脈絡なさ杉
0130デフォルトの名無しさん2013/11/12(火) 18:57:17.49
ファイルを読み込みと書き込みができるか判断したいんですが
どうやるのでしょうか?
0131デフォルトの名無しさん2013/11/12(火) 19:01:05.75
ReadとWriteのアクセス権で開く
出来ないなら開けない

開かずにやりたいってのは
ACL読み取ったり他のプロセスが開いてるかどうか判断したり
難度が高いので君には無理
0132デフォルトの名無しさん2013/11/12(火) 19:18:19.44
使用中かどうかの判断じゃなく?
0133デフォルトの名無しさん2013/11/12(火) 19:42:35.79
読み書き可能で開けるなら、使用中ではないと判断して良いんじゃないのか、って話だろ
厳密には違うが、そのチェックは難度が高いから無理だって言ってるじゃん
0134デフォルトの名無しさん2013/11/12(火) 19:46:07.94
読み書きができるかどうかは、そのファイルを他のプロセスが使ってるかどうかとは
必ずしも関係ないよw
0135デフォルトの名無しさん2013/11/12(火) 19:46:35.08
ちなみに本当に難しいの?
セカンドオピニオンください
0136デフォルトの名無しさん2013/11/12(火) 19:49:22.92
MSDN読めば分るがセキュリティ関係は何言ってるのかさっぱり分らない。
おそらく書いてる本人もあまり分かってない。
0137デフォルトの名無しさん2013/11/12(火) 19:51:43.31
読み書きができるかどうかは、そのファイルを他のプロセスが使ってるかどうかとは
必ずしも関係ないよw
0138デフォルトの名無しさん2013/11/12(火) 20:02:02.11
気に入ってもらえた?
それは良かった
0139デフォルトの名無しさん2013/11/12(火) 20:37:52.53
>>128
ありがとうございます
もう少しいじってみます
01401302013/11/12(火) 21:04:55.98
JavaでいうFileクラスのcanRead()とか
PHPでいうis_ readable()やis_writable()とか
Rubyでいうwritable?など
こういうのはC#ではむずかしいってことでしょうか?
0141デフォルトの名無しさん2013/11/12(火) 21:09:21.72
事前判定しても実際に操作するまでに結果が変わることがあるから、実際に開いて例外を捕捉しろって方針なんでしょ
0142デフォルトの名無しさん2013/11/12(火) 21:11:27.36
File.Move("C:/test.txt", "c:/a/b/test.txt");

これでa/bフォルダ内にtest.txtを移動したいんですが
a/bフォルダはこのコードを実行するまでありません
こういうのを面倒見てくれて勝手にフォルダ作ってくれる便利なものありませんか?
0143デフォルトの名無しさん2013/11/12(火) 21:15:20.31
作ればあるよ
作らなければない
0144デフォルトの名無しさん2013/11/12(火) 21:21:15.92
var acl = File.GetAccessControl(@"C:\Users\XXXXX\Desktop\searchwp-2.6.2-fx.xpi");
var usr = Environment.UserDomainName + "\\" + Environment.UserName;

foreach (FileSystemAccessRule rule in acl.GetAccessRules(true, true, typeof(NTAccount)))
{
if (((NTAccount)rule.IdentityReference).Value == usr)
{
Console.WriteLine(rule.FileSystemRights);
}
}

さすがにCanReadでは済まないけど、大騒ぎするほど難しいとも思わない
0145デフォルトの名無しさん2013/11/12(火) 21:26:47.26
あーそのアドオン動かないんだよねFx25で
俺もやったわ
0146デフォルトの名無しさん2013/11/12(火) 21:59:29.48
4.5で非同期I/Oアクセスがサポートされたけど
HDD内の複数のファイルを同時に開こうとしたら負担がかかりませんか?
負担がかからないようにうまく調整されているんでしょうか?
0147デフォルトの名無しさん2013/11/12(火) 22:04:30.02
そんなわけねーじゃん
開くだけなら儀式みたいなもんだから負荷なんかないけど
同時に読めば競合するに決まってるだろ
0148デフォルトの名無しさん2013/11/12(火) 22:17:11.67
非同期I/Oと何も関係ない話だし
0149デフォルトの名無しさん2013/11/12(火) 22:19:28.95
あと4.5からサポートされたんじゃなくて
4.5からAsync系のメソッドが使えるようになっただけね
昔からBeginReadとかはあります
0150デフォルトの名無しさん2013/11/13(水) 00:23:18.11
IDisposable のサンプルで↓をよく見るけど、disposed フラグはマルチスレッド考慮する必要なし?
Interlocked 使ってフラグ入れ替えた方が安全じゃないかと思ったりする・・

protected virtual void Dispose(bool disposing)
{
 if(!disposed){
  if(disposing){
   // Free other state (managed objects).
  }
  // Free your own state (unmanaged objects).
  // Set large fields to null.
  disposed = true;
 }
}
0151デフォルトの名無しさん2013/11/13(水) 00:30:31.23
>>150
Disposeに限らず競合対策は呼び出す側で考慮するのが普通だと思うんですが
0152デフォルトの名無しさん2013/11/13(水) 04:22:03.52
よくググるとヒットする
変な日本語に訳されたプログラム問答のサイトの原文って
どこで見れるの?
0153デフォルトの名無しさん2013/11/13(水) 06:48:14.95
>>151
?
スレッドセーフって、呼び出し側ではなにもしなくていいってことかと...
0154デフォルトの名無しさん2013/11/13(水) 08:25:56.80
IDisposableだけスレッドセーフを考慮しても仕方ないから。
すべてのメソッドコール&プロパティアクセスにロック取得が必要になるでしょうが。
オブジェクトの方でスレッドセーフを保証するということはそういうこと
0155デフォルトの名無しさん2013/11/13(水) 15:33:45.46
フォルダ構造を保存するコレクションはありますか?
0156デフォルトの名無しさん2013/11/13(水) 16:42:29.73
LinkedList<T>でも使えば
0157デフォルトの名無しさん2013/11/13(水) 17:48:13.21
WinFormsでアプリケーションを開発しているんですがフォームがこのように表示されてしまいます。
解消方法はないのでしょうか?
http://I.imgur.com/0ooGLmG.png
0158デフォルトの名無しさん2013/11/13(水) 17:59:29.71
無効領域があるのにWM_PAINTを無視するとそうなるよ
0159デフォルトの名無しさん2013/11/13(水) 18:05:16.30
dllのソースって見れませんか?
0160デフォルトの名無しさん2013/11/13(水) 18:08:13.44
>>158
TransparencyKeyの値が変更されていたのが原因だったようです
自己解決しました
0161デフォルトの名無しさん2013/11/13(水) 18:14:37.49
>>159
出歯亀は失せろ
0162デフォルトの名無しさん2013/11/13(水) 18:25:44.14
.NETのアセンブリならILSpy
それ以外だと・・・まあdumpbin使っとけば
0163デフォルトの名無しさん2013/11/13(水) 18:42:05.38
Reflectorのフリーなバージョンがあったはずだな
手持ちのは6.8.0.61
0164デフォルトの名無しさん2013/11/13(水) 23:57:21.00
参照設定に追加してるクラスライブラリの内容を変更したんだが
ビルドしても変更内容が反映されていない
どうすればいいの?
0165デフォルトの名無しさん2013/11/14(木) 00:05:24.78
クラスライブラリだけ登録すると登録した瞬間にプロジェクトのフォルダにコピーしてあとは元が更新されても追従しない
元に追従したければクラスライブラリでなくプロジェクトを登録し、ソリューション設定で一緒にビルドされるようにする
0166デフォルトの名無しさん2013/11/14(木) 00:05:42.21
ありがとうございました
0167デフォルトの名無しさん2013/11/14(木) 12:08:03.47
DateTime datetime1 = new DateTime(2013, 11, 14);
このように時刻を設定してない変数datetime1には、時刻が0:0:0になります
このdatetime1に対して後から時刻を設定するにはdatetime1の時刻を取得して、TimeSpanで指定したい時刻の差分を加減するしかないのでしょうか?
JavaScriptみたいなsetHours()とかsetMinutes()とかsetSeconds()みたいなのってないでしょうか?
0168デフォルトの名無しさん2013/11/14(木) 12:29:06.72
>このdatetime1に対して後から時刻を設定するにはdatetime1の時刻を取得して、TimeSpanで指定したい時刻の差分を加減するしかないのでしょうか?
はい
>JavaScriptみたいなsetHours()とかsetMinutes()とかsetSeconds()みたいなのってないでしょうか?
ないです
javascriptと異なりimmutableなので
0169デフォルトの名無しさん2013/11/14(木) 12:41:14.00
Javaのいいとこどりしたくせに仕様がクソ
それがC#
0170デフォルトの名無しさん2013/11/14(木) 12:42:05.41
datetime1にAddしてもdatetime1は変化しない点も注意
0171デフォルトの名無しさん2013/11/14(木) 16:59:40.68
Javaにいいところがなかったのでヘジは新しくC#を作ったんですよ。
0172デフォルトの名無しさん2013/11/14(木) 17:04:59.04
Javaに方推論なんてないのよ
ラムダもね
0173デフォルトの名無しさん2013/11/14(木) 18:01:23.91
MSでのヘジたんの最初の仕事はJ++だったのはないしょ!?
0174デフォルトの名無しさん2013/11/14(木) 18:07:16.77
それでJavaの限界を感じたんだよ。
演算子のオーバーロードがない?馬鹿なの?みたいな。
0175デフォルトの名無しさん2013/11/14(木) 18:29:50.59
そのとき既にヘジたんはJ++にdelegate持ち込んでた。
sunがとめなかったら、今頃魔改造の限りを尽くしていたはず。
0176デフォルトの名無しさん2013/11/14(木) 19:13:10.00
デリゲートってDDX(Dialog Data Exchange)だよな
Windows3.1の頃から有る
0177デフォルトの名無しさん2013/11/14(木) 20:28:36.40
delegateって関数ポインタのことだと思ってたよ。
0178デフォルトの名無しさん2013/11/14(木) 20:33:10.12
C#で画期的だと思ったのはプロバティーだな。JavaのSetter,Getterからすごい進歩だ
0179デフォルトの名無しさん2013/11/14(木) 22:57:50.61
それはVBから持ち込まれた言語機能だろ
0180デフォルトの名無しさん2013/11/15(金) 00:03:31.35
いや、Delphi経由でObject Pascalから
0181デフォルトの名無しさん2013/11/15(金) 00:58:18.93
テキストファイルを読み込むときに文字コードが不明な場合
文字コードを判別する方法で簡単な方法は何があるでしょうか?
0182デフォルトの名無しさん2013/11/15(金) 01:07:37.94
既存の判別ライブラリを使う
0183デフォルトの名無しさん2013/11/15(金) 06:27:44.93
IMultiLanguage2使うとか
IEが使ってるやつね
0184デフォルトの名無しさん2013/11/15(金) 06:57:19.38
>>181
原理的に不可能
0185デフォルトの名無しさん2013/11/15(金) 06:58:46.13
そりゃ100%確定することはできないが……
そんな小学生みたいなこと言わなくても
0186デフォルトの名無しさん2013/11/15(金) 07:48:55.31
原理的に作成した本人に聞けば判明する。
0187デフォルトの名無しさん2013/11/15(金) 07:57:02.74
本人が知っているかは原理的に確実ではない
0188デフォルトの名無しさん2013/11/15(金) 08:02:35.63
ランダムで文字コードを選ぶツールは存在しない。
0189デフォルトの名無しさん2013/11/15(金) 08:10:20.49
文字コードという概念のないツールは存在しうる
0190デフォルトの名無しさん2013/11/15(金) 08:19:59.64
たとえば?
0191デフォルトの名無しさん2013/11/15(金) 09:04:13.05
>>181
なんでググらねーの?
http://dobon.net/vb/dotnet/string/detectcode.html
0192デフォルトの名無しさん2013/11/15(金) 09:05:43.63
ハッカー片山君も愛用してるdobonはテンプレに入れちゃえよ。
0193デフォルトの名無しさん2013/11/15(金) 09:09:15.71
C#だと厳密には無関係にならんだろ
0194デフォルトの名無しさん2013/11/15(金) 09:17:07.88
なんでMSはUTF8にBOM付けたがるの?
0195デフォルトの名無しさん2013/11/15(金) 09:18:31.03
世界中のマイナーな言語もお客だから。
0196デフォルトの名無しさん2013/11/15(金) 10:18:14.03
俺はMozillaのchardetをご愛用です
0197デフォルトの名無しさん2013/11/15(金) 13:51:48.26
>>156
それ1次元じゃないですか・・・
複数のフォルダを登録したいんですが
0198デフォルトの名無しさん2013/11/15(金) 15:19:15.69
ツリーを格納するようなコレクションは用意されてませんよ
自力でお書きください
くぐれば出てきますけどね
B+木とか
0199デフォルトの名無しさん2013/11/15(金) 17:07:41.49
XElement
0200デフォルトの名無しさん2013/11/15(金) 22:07:35.80
俺はメソッドや変数の参照の検索をよく使うんだが
おかしい?

おかしくないとしたら
おすすめのショートカットの割当キーとかある?
Ctrl + K, Rだとどうも不便な気がして
0201デフォルトの名無しさん2013/11/15(金) 22:13:45.92
別におかしくはないけどショートカットキーが必要になるほどは使わない
0202デフォルトの名無しさん2013/11/15(金) 22:24:19.38
ショートカットのおすすめを他人に尋ねる感覚が理解できません
0203デフォルトの名無しさん2013/11/15(金) 22:32:29.97
>>202
じゃあお前おすすめのラーメン屋とか人に聞くなよ
それと同じだよ
0204デフォルトの名無しさん2013/11/15(金) 22:34:27.27
どこが同じか理解できません
0205デフォルトの名無しさん2013/11/15(金) 23:00:23.49
他人のショートカットで何が開いてるかなんて知らんしな
○○は?→使ってます
超不毛
0206デフォルトの名無しさん2013/11/15(金) 23:02:26.62
>>205
他人にラーメンを勧めた
味噌ラーメン嫌いですって言われた
これが不毛か?
おまえあほだろ
0207デフォルトの名無しさん2013/11/15(金) 23:03:27.73
不毛じゃん
0208デフォルトの名無しさん2013/11/15(金) 23:04:41.70
それは間違いなく二度とラーメンの話をふらないタイプだわw
0209デフォルトの名無しさん2013/11/15(金) 23:05:36.51
質問じゃなくてアンケートだしな
質問板で答えが人によって違うもの聞いても不毛だろ
0210デフォルトの名無しさん2013/11/15(金) 23:06:02.10
どうみても不毛だな
お前がアホだろ
0211デフォルトの名無しさん2013/11/15(金) 23:07:24.05
>>207-210
自演はやめてくれ
必死すぎだろww
0212デフォルトの名無しさん2013/11/15(金) 23:08:33.43
不毛じゃん
0213デフォルトの名無しさん2013/11/15(金) 23:09:54.74
Ctrl+Shift+Y
0214デフォルトの名無しさん2013/11/15(金) 23:11:57.59
>>213
VMSだとプロセス強制終了だな
0215デフォルトの名無しさん2013/11/15(金) 23:13:00.59
片手だと指が届かんw
0216デフォルトの名無しさん2013/11/15(金) 23:14:25.16
Ctrl+V
ほら、クローンコードは邪悪って言うし・・・ね
0217デフォルトの名無しさん2013/11/15(金) 23:18:49.12
もうお前らに聞くの辞めたわ

おまえらのやってることは
おすすめのラーメン屋を聞いたのに
おすすめのカップラーメンを教えてるようなもんだぞ

役立たず共が
最低だわ
0218デフォルトの名無しさん2013/11/15(金) 23:28:17.07
自演はやめてくれ
必死すぎだろww

って言い続けてていいんだぜ
やめちゃうのかい
0219デフォルトの名無しさん2013/11/15(金) 23:31:11.71
みんなくだらない喧嘩はやめようよ!
もっと建設的な話をしようよ!!!
0220デフォルトの名無しさん2013/11/15(金) 23:31:46.04
>>217-219
自演はやめてくれ
必死すぎだろww
0221デフォルトの名無しさん2013/11/15(金) 23:37:27.43
くだらない
終了
0222デフォルトの名無しさん2013/11/15(金) 23:37:48.78
はははっ
0223デフォルトの名無しさん2013/11/16(土) 00:12:58.85
>>198
検索ワードを教えてもらえませんか?
フォルダ構造、ツリーとかで検索しても
ツリービューとかがヒットするだけで、データ保存に関しては見つかりませんでした
語弊があるといけないのでいいますが、ただオブジェクトをローカルに保存したいわけじゃありません
コード上でフォルダのツリー構造を動的に作成したいんです

あとよくぐぐれって言われたりするけど
検索するのに的確な専門用語がわかっていたらそもそも質問しないと思います
0224デフォルトの名無しさん2013/11/16(土) 00:22:03.55
ちなみにXElementを無視した理由を聞こうか
0225デフォルトの名無しさん2013/11/16(土) 00:24:56.94
>>223
しなくていいから寝ろ
0226デフォルトの名無しさん2013/11/16(土) 00:26:14.91
自分で「ツリー構造」って検索用のキーワード書いてるだろいい加減にしろw
0227デフォルトの名無しさん2013/11/16(土) 00:27:50.92
FileInfoクラスとDirectoryInfoクラスがそのまんまだろ
この手の輩は目的地がおかしいんだよなあ
0228デフォルトの名無しさん2013/11/16(土) 00:42:06.02
>>223
基本的な形は
class File {}
class Dir {
Dir[] Dirs;
File[] Files;
}
これだけでしょ
何が分からないのか全く伝わってこない
0229デフォルトの名無しさん2013/11/16(土) 00:45:47.76
ツリービュー使えばいいだけだろ
十分コレクションクラスとなりゆる
0230デフォルトの名無しさん2013/11/16(土) 00:51:04.96
(B-treeの実装ないですか?)
http://social.msdn.microsoft.com/Forums/vstudio/en-US/c51b655d-f288-4fbf-9312-9ae4278ff8b7/b-tree-implementation?forum=csharpgeneral
0231デフォルトの名無しさん2013/11/16(土) 00:52:01.54
>>228
そういう感じで自作しようかなと思ったんだけど
それようのコレクションあれば楽かなと

カスタムクラスで面倒なのは、あるフォルダを検索するときの再起検索処理
0232デフォルトの名無しさん2013/11/16(土) 00:53:42.98
>>228
あ、あとディレクトリとファイルクラスの2つを作ると面倒じゃありません?
それより1つのクラスにして、属性としてディレクトリかファイル化保持している方が
シンプルに作れると思います
0233デフォルトの名無しさん2013/11/16(土) 00:54:58.91
>>229
ツリービュー直接データとして使うのは危険だし
そんなViewにどっぷり依存したコードは書きたくないですね
0234デフォルトの名無しさん2013/11/16(土) 00:56:58.97
以後放置でよろしく
0235デフォルトの名無しさん2013/11/16(土) 00:57:52.80
好きなように勝手に作れよ初心者
0236デフォルトの名無しさん2013/11/16(土) 00:59:07.12
>>228
それとフォルダやファイル数が動的に変化する可能性が十分あるのに
配列で宣言する理由が知りたいです

なんかどうも初心者の回答者が多い気がします
初心者は紛らわしいので無理に答えなくていいです
0237デフォルトの名無しさん2013/11/16(土) 01:00:09.08
香ばしいwww
0238デフォルトの名無しさん2013/11/16(土) 01:09:19.91
>>236
あくまで基本だからList<>に変更すればいいだけだろ
0239デフォルトの名無しさん2013/11/16(土) 01:28:57.07
無理に答えなくていいと言ってるんですがね…
時間の無駄なようですし取り下げます
0240デフォルトの名無しさん2013/11/16(土) 01:36:26.74
Treeの検索すら書けない奴が素人呼ばわりってw
0241デフォルトの名無しさん2013/11/16(土) 01:42:50.41
最大使用可能メモリ容量を指定しておいて
それを超えるとスワップファイルみたいな感じでディスクに追い出して
呼び出し時にメモリに戻してくれるような
コレクションクラスありますか?
0242デフォルトの名無しさん2013/11/16(土) 01:45:53.27
>>241
こいつも放置でよろ
0243デフォルトの名無しさん2013/11/16(土) 01:48:52.45
聞いたことないし、値型を取り込んだコレクションならそいつがメモリ消費していると言えるが、
参照型だと参照しか持たないしな。
0244デフォルトの名無しさん2013/11/16(土) 01:52:49.41
capacityとsizeofで作ってろ
0245デフォルトの名無しさん2013/11/16(土) 02:13:04.01
C#で人のパソコンを遠隔操作できるような
ウイルスみたいなのって作れますか?
0246デフォルトの名無しさん2013/11/16(土) 02:22:51.66
>>245
見え透いた釣りしてんじゃねーよゴミクズ
0247デフォルトの名無しさん2013/11/16(土) 02:23:50.03
>>227
は?実ファイルやディレクトリを操作するんじゃないんですが
仮想ファイルとでもいいましょうか、アプリ上にだけ存在するファイルやフォルダですよ
0248デフォルトの名無しさん2013/11/16(土) 02:35:05.76
>>247
その仕様を表明しなかったのはあんたのミスだよな
その責任を人に押し付けるのは呆れ返るわ
0249デフォルトの名無しさん2013/11/16(土) 03:15:36.29
>>248
ナニコイツ
0250デフォルトの名無しさん2013/11/16(土) 03:33:00.83
>>248
FileInfoで済むなら質問しないでしょ
それにツリー構造を再現できるコレクションっていっているわけで
>>227は見当違いな答え
FileInfoでツリー構造を作れますか?作れないでしょ。
0251デフォルトの名無しさん2013/11/16(土) 03:35:31.22
そもそもカスタムクラスを作る必要性があると言っているわけで
FileInfoで実ファイルから検索しろなんてのはナンセンス
説明が足りないと嘆く前に自分の理解力の無さを疑問視してほしいものですね
0252デフォルトの名無しさん2013/11/16(土) 03:38:46.25
232 名前:デフォルトの名無しさん[sage] 投稿日:2013/11/16(土) 00:53:42.98
>>228
あ、あとディレクトリとファイルクラスの2つを作ると面倒じゃありません?
それより1つのクラスにして、属性としてディレクトリかファイル化保持している方が
シンプルに作れると思います

この程度のレベルなんだからfileinfoを知らなくても不思議じゃないわ
クラスを勉強したことがあるなら属性とかありえん
0253デフォルトの名無しさん2013/11/16(土) 03:40:45.00
>>252
fileinfoは知らないですねw
FileInfoなら知ってますがw
0254デフォルトの名無しさん2013/11/16(土) 03:43:51.33
レベルが低い反論だことw
0255デフォルトの名無しさん2013/11/16(土) 03:47:06.89
>>252
>>254
0256デフォルトの名無しさん2013/11/16(土) 03:50:54.15
>>252
あなた頭よさそうなので
カスタムのDirとFileクラスでツリー構造を作って
すべてのフォルダとファイルを列挙したものをIEnumrableで返すもの作ってくれませんかねw

制限時間は10分
できなきゃお前の負け
0257デフォルトの名無しさん2013/11/16(土) 04:09:06.76
>>256
お前はそのコードが書けなかったからここに質問に来たわけで
書けない奴が何で勝つことができるんだ?

てか、それほど高度でもないから作れるが、お前の態度が気に食わないから教えてやらんよ
0258デフォルトの名無しさん2013/11/16(土) 06:43:37.57
>>252 UML って知ってる?
0259デフォルトの名無しさん2013/11/16(土) 09:27:50.25
釣られすぎだろ
0260デフォルトの名無しさん2013/11/16(土) 09:43:40.94
俺が以後放置でって言った後も触り続けてるお前らが悪いよ
おちんちん腫れるよ?
0261デフォルトの名無しさん2013/11/16(土) 09:59:26.71
参照に追加で追加したcomオブジェクトをnewした場合に
そのオブジェクトが不要になった時に参照カウントを下げる必要は有りますか?
もしかして.NET、CLRが面倒を見てくれるなんてことは有りますかね?
0262デフォルトの名無しさん2013/11/16(土) 10:07:28.39
オブジェクトとして扱ってる限りRCWが参照カウント管理してくれるよ
IntPtrとして扱うとそっちは自前管理しないと駄目だけど
ただGCついでの作業になるからアウトプロセスサーバだと外部exeは即座には終了しない
0263デフォルトの名無しさん2013/11/16(土) 10:45:51.83
ただ困ったことに、アマチュアがCOMに手を出す機会が多いのは
EXCELオートメーション、つまりアウトプロセスサーバなので、
即座に終了しないことが鬼門になっていて、
Marshal.ReleaseComObjectをがむしゃらに使うといった
バッドノウハウが横行している。
0264デフォルトの名無しさん2013/11/16(土) 12:03:05.09
.net4のwpfで、デフォルトフォント(MS UI Gothic)で、半角の「a」と「r」がくっついて見えるのってどうにかならない?

後、ボタンが全角文字だけだとぼやけて、半角混じらせるとぼやけなくなる原因てどの辺りから探るべき?

両方ともWin7での話です
0265デフォルトの名無しさん2013/11/16(土) 12:09:07.87
コントロールパネル-ディスプレイの調整でcleartypeをoff。
0266デフォルトの名無しさん2013/11/16(土) 12:11:27.04
アルファベット圏の人は文字がくっつくのは平気だからねぇ。
プロポーショナルフォント使わない以外ないと思うよ。
0267デフォルトの名無しさん2013/11/16(土) 13:14:31.11
>>264
うちはなぜか(設定したかな?)デフォルトフォントがメイリオになってるけど、
MS UI ゴシにしてもくっつかなかったよ(Win7)

ぼやけはUseLayoutRoundingとかは関係ないかな
0268デフォルトの名無しさん2013/11/16(土) 13:23:05.76
>>194
BOM つけたがる MS もどうかと思うが、BOM 付いてたらまともに動かなくなるソフトもなんだかなぁ....
0269デフォルトの名無しさん2013/11/16(土) 13:25:57.01
まともじゃないデータにまともに動けってのも本末転倒だがな
0270デフォルトの名無しさん2013/11/16(土) 13:33:54.53
BOMが付いてたほうが文字コードが容易に分かっていいだろうに
0271デフォルトの名無しさん2013/11/16(土) 14:18:56.95
根本的にテキストにエンコード情報含めようとしたのがまず間違いだった
0272デフォルトの名無しさん2013/11/16(土) 14:27:46.51
BOMって呼んでるけど、元々ユニコードで定義されている文字の1つであって、
その文字コードの並びを使って判定に使っているだけだからね。
0273デフォルトの名無しさん2013/11/16(土) 14:31:35.55
だいたいASCIIテキストに好き勝手に日本語入れようとした奴が悪い。
0274デフォルトの名無しさん2013/11/16(土) 16:28:27.76
private List<Stream> SetStream(string path) {
string[] files %3d System.IO.Directory.GetFiles(
path,
"*",
System.IO.SearchOption.AllDirectories);

List<Stream> s %3d new List<Stream>();
foreach (string file in files) {
using (Stream stream %3d new FileStream(
file,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite | FileShare.Delete)) {
s.Add(stream);
}
}

return s;
}

指定ディレクトリ以下の画像ファイルをStreamで取得して戻り値で欲しいんですが、このコードだとs.Add(stream)でファイルアクセスエラーになってしまいます
原因がわからなくて悩んでます、教えてください
0275デフォルトの名無しさん2013/11/16(土) 16:29:46.29
なにか文字化けしてますが%3dはイコールです
0276デフォルトの名無しさん2013/11/16(土) 16:35:58.50
> &nbsp; &nbsp; &nbsp; &nbsp; using (Stream stream = new FileStream(
この間だけ使うって宣言してるのにそれを外部に漏らしたら駄目だろ
0277デフォルトの名無しさん2013/11/16(土) 16:57:40.48
FileStreamからMemoryStreamにコピーしたほうが後が楽なんじゃないの?
0278デフォルトの名無しさん2013/11/16(土) 17:39:11.01
>>277
ご指摘の通り、StreamをMemoryStreamでByte配列に変換することで対処できました
根本的に理解していなくてお恥ずかしいです、どうもでした
0279デフォルトの名無しさん2013/11/16(土) 17:40:27.50
それだとメモリ爆発するだろw

ストリームで持ち回さないでパスなりなんなりで持っといて
必要になってから読み込むでしょ普通

>>274の
>s.Add(stream)でファイルアクセスエラー
はでないと思うが
0280デフォルトの名無しさん2013/11/16(土) 19:15:16.96
ベースクラスのパブリックプロパティ隠蔽について質問があります

あるベースクラスを継承しているクラスがあり、ベースクラスの特定の
パブリックプロパティを隠蔽したかったのですが、なぜかクラスビューで
子クラスのプロパティを見ると、その隠蔽したいプロパティが表示されていませんでした。

プロパティも継承するとウェブサイトみても書いてあるし、
目標が達成できた事を原因がわからずに無視して良いのかわかりません。

なぜこのような事が起きるのでしょうか?標準仕様なのでしょうか?
教えていただけないでしょうか?よろしくお願いします。
0281デフォルトの名無しさん2013/11/16(土) 19:24:50.93
>>280
クラスビューに表示されないベースクラスのメンバーは「その」プロパティーだけなの?
違うでしょ。

だったら、何が起こってるか普通勘が働くと思うんだけど...
0282デフォルトの名無しさん2013/11/16(土) 20:32:23.60
それに プロパティの隠蔽 の意味を誤解してると思う
使えなくしちゃうというより 上書き だと思うよ
0283デフォルトの名無しさん2013/11/16(土) 20:34:29.28
C# で VB の option strict off みたいなことは出来ますか?
0284デフォルトの名無しさん2013/11/16(土) 20:36:54.65
C#を自分のVB脳に合わせようとするんじゃなくて、
自分のVB脳を捨てて新しい脳みそを買ってきたほうがいいよ
0285デフォルトの名無しさん2013/11/16(土) 20:39:17.23
相変わらず口が悪いな。
0286デフォルトの名無しさん2013/11/16(土) 20:40:09.53
>>284
その反応もたいがい馬鹿っぽい。
dynamicはVBがOption Strict Offで出来たことを吸収する方向性だから
0287デフォルトの名無しさん2013/11/16(土) 20:40:47.77
プログラマなんか辞めて奴隷を雇い発給でこき使いC#を書かせればいいんじゃないかな?
0288デフォルトの名無しさん2013/11/16(土) 20:42:36.08
>>286
おまえはまだOption Strict Offの凶悪さを知らない
0289デフォルトの名無しさん2013/11/16(土) 20:43:12.20
レイトバインディング
0290デフォルトの名無しさん2013/11/16(土) 20:43:51.04
varもたいがいだろ。
0291デフォルトの名無しさん2013/11/16(土) 20:44:33.98
昔のBASICなら当たり前の実装なのに凶悪だなんて酷い。
0292デフォルトの名無しさん2013/11/16(土) 20:45:14.84
option strict off とメソッドのオーバーロードと相性の悪さの破壊力はすごいよ! 
0293デフォルトの名無しさん2013/11/16(土) 20:45:22.45
offにすると世界観変わるよな
技術あるなら間違いは侵さないし
超絶高速開発が可能になる
0294デフォルトの名無しさん2013/11/16(土) 20:46:27.29
>>288
期待はしてないが具体的にどうぞ。
0295デフォルトの名無しさん2013/11/16(土) 20:47:46.51
>>286
違うよ。全然違うよ。
0296デフォルトの名無しさん2013/11/16(土) 20:58:10.78
横レス。
option strict offでぐぐって出てきたやつだけど、これはヒドイと思うのがC#的感覚じゃない?

Dim filewrite As System.IO.StreamWriter
filewrite = New System.IO.StreamWriter(path, System.IO.FileMode.Truncate)

StreamWriterクラスには、StreamWriter(String, Boolean)という引数を取るものはあるが、
StreamWriter(String, System.IO.FileMode)の引数を取るものはない→間違った使い方しなければ起きないミス。
System.IO.FileMode.Truncateは非0→暗黙の型変換でtrueとしてコンパイル通っちゃうそうな。

つかこの時点でVisualStudioは警告だしてくれないのかな?
0297デフォルトの名無しさん2013/11/16(土) 21:01:28.32
どうやって?
0298デフォルトの名無しさん2013/11/16(土) 21:02:44.70
varを多様する奴は馬鹿ということ。
0299デフォルトの名無しさん2013/11/16(土) 21:04:54.49
var hoge = obj as Hogeeee;
if( hoge != null )
{
 ...
}

varだと最初3文字が if( と揃って美しく感じちゃうんだわー
0300デフォルトの名無しさん2013/11/16(土) 21:05:45.36
2chで見ると揃ってないから共感できねえw
0301デフォルトの名無しさん2013/11/16(土) 21:05:57.11
プロポーショナルフォントで台無し
0302デフォルトの名無しさん2013/11/16(土) 22:07:51.69
デリゲートの引数にrefキーワードって使えないんすか?
0303デフォルトの名無しさん2013/11/16(土) 22:14:00.97
class Program
{
delegate void xxx(ref int a);

static void Main(string[] args)
{
xxx zzz = yyy;
int c = 3;
zzz(ref c);
Console.WriteLine(c);
}

static void yyy(ref int b) { b = 1; }
}

何を言ってるのかさっぱり分からん
状況はなsるべく正確にな
0304デフォルトの名無しさん2013/11/16(土) 22:14:10.02
使えるよ
既存のジェネリックの型引数には使えないからActionやFuncは無理だけど
0305デフォルトの名無しさん2013/11/16(土) 22:15:13.02
ああ、自分で型定義しないと駄目なんすか、アリがトン
0306デフォルトの名無しさん2013/11/17(日) 00:12:03.41
ピクチャーボックスに画像を張り付けて、それをドラッグで移動できるようにしたのですが、
当然ピクチャーボックス自体にイベントを持たせているため画像が無い部分をクリックしても
移動できる仕様になってしまいます
画像自体をクリックしないとマウスイベントが起きないようにするにはどうすればいいでしょうか?
0307デフォルトの名無しさん2013/11/17(日) 00:19:42.30
画像の座標取得すればいいじゃん
0308デフォルトの名無しさん2013/11/17(日) 01:21:12.03
>>306
画像があるときだけイベントが起きるようにすればいい
0309デフォルトの名無しさん2013/11/17(日) 01:37:56.33
Enumを基本型にキャストする時も余計なコストって掛かります?
0310デフォルトの名無しさん2013/11/17(日) 01:38:59.87
クリックした位置に画像があるかどうかを判定すればいいと言う事ですね
0311デフォルトの名無しさん2013/11/17(日) 12:44:00.59
何でそういう発想になるのかな。
PictureBoxのサイズを画像に合わせればいいだけ。
これなら画像に透過部分があっても対応できる。
馬鹿じゃないの
0312デフォルトの名無しさん2013/11/17(日) 14:07:42.85
C#のXMLに慣れるとJavaが苦痛でしょうがないんですがそういうものですか?
0313デフォルトの名無しさん2013/11/17(日) 14:10:55.27
XAMLだろ
0314デフォルトの名無しさん2013/11/17(日) 14:13:17.21
よくXAMLに慣れたね
才能あるよ君
0315デフォルトの名無しさん2013/11/17(日) 15:58:41.96
c#ではC++ネイティブとC#マネージドの混在アセンブリはできないの?
0316デフォルトの名無しさん2013/11/17(日) 16:01:09.83
JavaFX2あるやん(震声)
0317デフォルトの名無しさん2013/11/17(日) 16:14:35.89
>>315
混在アセンブリはC++/CLIで書くんだよ
0318デフォルトの名無しさん2013/11/17(日) 16:26:05.59
C++って難しいと思ったけどC#の本読んで覚えた後だと結構楽だな。
楽って言っても初心者レベルでだけど
0319デフォルトの名無しさん2013/11/17(日) 16:46:10.15
C++何となく使えるぐらいなら
全体の0.01%くらいは修めたことと言っていいよ
0320デフォルトの名無しさん2013/11/17(日) 16:47:21.71
C++/CLIと違って混在アセンブリできないんじゃDLLにして呼ぶしかないとはなんとも不便だな。
0321デフォルトの名無しさん2013/11/17(日) 16:50:24.71
C%2b%2bぜんぜん楽じゃないですよ・・・
そもそもシンタックスが似て非なる物、Objective-Cよりマシってところでしょ
まず型が名前も使い方もC#とぜんぜん違うから、画像処理ライブラリのソース転用しようと思っても大変ですよ
C%2b%2bでなんでも作れる人ってすごいっすわ、リスペクトします
0322デフォルトの名無しさん2013/11/17(日) 16:51:08.97
最近、暗号化してからレスする人がいるがほんと止めてほしい。
0323デフォルトの名無しさん2013/11/17(日) 16:53:42.28
暗号化て
0324デフォルトの名無しさん2013/11/17(日) 16:54:58.20
非可逆暗号化しないで欲しい
0325デフォルトの名無しさん2013/11/17(日) 17:04:21.97
だから、非可逆じゃなくて不可逆だし、英語ならどちらもcodeだが日本語の語彙では
暗号と符号の区別があるんだからちゃんと区別して使ってくれよ
0326デフォルトの名無しさん2013/11/17(日) 17:07:28.01
f73d97ea3807f05fe9d44c80c9c9a7df
0327デフォルトの名無しさん2013/11/17(日) 17:08:15.43
暗号化してからレスする人がいなくなれば起こらない問題であり根本的にそちらを解決すべき
0328デフォルトの名無しさん2013/11/17(日) 18:24:49.62
すみません、くだらない質問なのですがC#ではいわゆる関数のようなものは宣言できないのでしょうか?
今、とりあえずclassの中にstaticなメソッドとして書いてるのですが
0329デフォルトの名無しさん2013/11/17(日) 18:28:03.29
!?

いわゆる関数の例をもってこいよ
他の言語でいいから

クラスの外に置けないのかって意味なら置けない
0330デフォルトの名無しさん2013/11/17(日) 18:41:26.19
Cみたいな関数宣言はないのかってことでしょ
C#はないよ
0331デフォルトの名無しさん2013/11/17(日) 18:47:37.68
>>328
天才ですね。MSの多くの標準ライブラリもそうなってます。
0332デフォルトの名無しさん2013/11/17(日) 18:48:02.03
少し意味が変わるけど
particialやabstractメソッド
あとインターフェイス
0333デフォルトの名無しさん2013/11/17(日) 18:59:48.59
interfaceの使い道がわからないんだ、何度ググってもこれ!ってのがない
クラス・メンバ・引数・戻り値を縛るコーディング規約くらいにしか使い道が思い浮かばない
でも超重量級フレームワークはinterfaceだらけ、何故?
0334デフォルトの名無しさん2013/11/17(日) 19:03:15.80
C#でXMLを読み込む場合
XmlTextReader
XmlDocument
の二択になりますが、どう使い分ければいいのですか?
0335デフォルトの名無しさん2013/11/17(日) 19:04:45.42
すいませんLinqを使わない前提だと
XmlTextReader
XmlDocument
XmlReader
の三択ですね
0336デフォルトの名無しさん2013/11/17(日) 19:12:20.87
>>333
素人が理解しようとかおこがましいんだよ
1ヶ月経ってから取り組め
0337デフォルトの名無しさん2013/11/17(日) 19:20:20.35
XmlDocだけでいいよ
他のクラスは使い道全くない
0338デフォルトの名無しさん2013/11/17(日) 19:23:51.17
何かシビアな要求があってSAX方式でやりたい時くらいかねえ
0339デフォルトの名無しさん2013/11/17(日) 19:27:14.34
なんでXDocumentを除外するのかよく分からんけど
0340デフォルトの名無しさん2013/11/17(日) 19:30:31.86
>>333
具象クラスは型と実装を定義する
抽象クラスは型と「一部の実装」を定義する
インターフェースは型を定義する

ただこれだけ

実際のプログラミングの話としては
イテレータの内部アルゴリズムを全て決める→具象クラス
イテレータの内部アルゴリズムを一部決める→抽象クラス
イテレータの内部アルゴリズムを一切決めない→インターフェース

非常に単純
0341デフォルトの名無しさん2013/11/17(日) 19:32:01.53
いや何が出来るかじゃなくて・・・
まあいいや面倒くさい
0342デフォルトの名無しさん2013/11/17(日) 19:36:22.21
相手に伝わるように質問できない
相手の言った回答も理解できない、する気がない

処置なしっすな
0343デフォルトの名無しさん2013/11/17(日) 19:37:41.68
トドメは必要だろう
0344デフォルトの名無しさん2013/11/17(日) 19:39:06.02
文字列の暗号化だけに留まらず、内容まで暗号化するとは。さっぱり理解できん。
0345デフォルトの名無しさん2013/11/17(日) 19:52:02.67
>>340
べつにインターフェースなんてなくてもいいんじゃね?
必要性が分からない。
0346デフォルトの名無しさん2013/11/17(日) 19:59:24.97
>>345
現状ではインターフェースがないと多重継承できないからインターフェース不要ってことはあり得ない
「だったらインターフェースなくして抽象クラスを多重継承可能にすればいいじゃん」って話は別に考える必要があるけど
0347デフォルトの名無しさん2013/11/17(日) 20:07:51.36
例えば IEnumerableインターフェースを持ってるクラスはforeachが使える
でももちろんコード的にはそれぞれのクラスで実装が違う

「このインターフェースを持っているクラスはこの機能が使える」
って感じで機能的に同じものを持たせるとき使うんよ

まあ>>346が言ってるようにC#は多重継承ができないから
それを複数継承できるインターフェースで誤魔化すってこともできるけどね
0348デフォルトの名無しさん2013/11/17(日) 20:12:18.32
スクリプトでforeachできるクラスはどういう仕組みなの?
0349デフォルトの名無しさん2013/11/17(日) 20:19:25.22
昔は抽象クラスを関数の引数にしていたMSが急にinterfaceに書き換えた。
なんでそんなことしたの?
0350デフォルトの名無しさん2013/11/17(日) 20:21:03.57
>>346
ああすまん、どっちかと言うと

> 「だったらインターフェースなくして抽象クラスを多重継承可能にすればいいじゃん」

にならなかった理由かわからん、の方。

>>347
だからインターフェースの説明なんていちいちしてもらわなくていいよ。
I〜は多重継承除けばクラスでもできるだろ?
0351デフォルトの名無しさん2013/11/17(日) 20:22:52.37
>>350
> 多重継承ができれば、インターフェイスはなくてもよい。事実、C++にインターフェイスはない。
> にもかかわらず、C#やJavaといった比較的新しい言語で多重継承が禁止されているのは、
> 継承が過剰に強力すぎる機能であり、容易にトラブルを引き起こすという経験による。
> 強力すぎる継承の機能を適正な水準まで制限した結果が、
> 継承するクラスは1個までという制約とインターフェイスの導入である。
http://www.atmarkit.co.jp/ait/articles/0211/20/news001.html
0352デフォルトの名無しさん2013/11/17(日) 20:24:27.09
要するに

分かってないのに答えてる奴二人。分かってるのにふざけてる奴一人。だな。
0353デフォルトの名無しさん2013/11/17(日) 20:25:48.62
>>351
なに言ってるんだ。実装の多重継承は頭がハゲるから禁止なんだよ。
0354デフォルトの名無しさん2013/11/17(日) 20:26:12.95
>>352
質問を装って自分が望む答えを当てさせるクイズを出題してる奴一人と
クイズを無視して文面通りに答えてる奴二人だろう
0355デフォルトの名無しさん2013/11/17(日) 20:26:51.83
どれが質問者でどれが横槍だかわからんわ
質問者はコテ入れてくれ
03563332013/11/17(日) 20:27:07.70
なんかオレを語る奴がいるけど>>341とか違うからね

>>347
そこがよくわからないんだけど、IEnumerableにしてもInterfaceは>>340でも言われてる通り実装が一切ないでしょ
実装のないクラスを継承する意味がよくわからないんだよ、たとえば

interface hoge{
public int hogs{get; set;}
public void hoge{}
}
class hogehoge : hoge{
}

実装のないクラスを継承する意味がわからないってのがInterfaceの使い道がわからないって理由なんだけど
0357デフォルトの名無しさん2013/11/17(日) 20:32:15.20
>>356
ネタ晴らしすんなよ

くだらねえネタで長引きそうだから幕引いてやったってのに
0358デフォルトの名無しさん2013/11/17(日) 20:32:52.80
>>356
IEnumerableは空だから継承したら自分で実装するんだぜ。
実装したら自分のクラスがforeachで使えるんだぜ。すごくね?
0359デフォルトの名無しさん2013/11/17(日) 20:33:29.73
>>357
死ね
0360デフォルトの名無しさん2013/11/17(日) 20:34:02.77
>>356
>>347に書いてる通りじゃないか?
同じ機能を与えるにしても実装はクラスごとに異なるから実装の中身を書くわけにもいかない

その例だとhogeっていうインターフェースを継承したクラスは
public void hoge()っていうメソッドで特定の機能が使えることが補償されるわけだ
0361デフォルトの名無しさん2013/11/17(日) 20:34:14.71
インターフェースも継承できたらよかったと思うんだが、できない/しない理由ってなんだろう?
0362デフォルトの名無しさん2013/11/17(日) 20:35:06.57
インターフェイスは継承するものではない
実装するものだ
0363デフォルトの名無しさん2013/11/17(日) 20:35:35.45
>>361
OOP的に考えて、継承が必要になる様な物はクラスにすべき
interfaceは "機能" であって、 "物" じゃないからな
0364デフォルトの名無しさん2013/11/17(日) 20:36:14.09
>>361
インターフェースは他のインターフェースを継承できるよ
0365デフォルトの名無しさん2013/11/17(日) 20:36:54.75
Attributeは継承されないけどなんか勘違いしてね
0366デフォルトの名無しさん2013/11/17(日) 20:38:04.71
COMのインターフェイスみたいにメンバーが追加されていく仕様だったりありだったかも
0367デフォルトの名無しさん2013/11/17(日) 20:41:51.15
>>365
privateメンバが継承されないのと同じで継承とはいっても全てが引き継がれるわけではないからなぁ…
0368デフォルトの名無しさん2013/11/17(日) 20:42:56.67
interfaceの実装のテストほど面倒なものはない。
使う予定のないものはそのままreturnしてやる。
0369デフォルトの名無しさん2013/11/17(日) 20:46:52.55
>>368
「使う予定がない」ってどういう状況?
他のメソッドの引数としてそのインスタンスを渡したら渡された側のメソッドがバグるだろ
渡された側はインターフェースの全てのメソッドが実装されてる前提で渡されたインスタンスを使うんだから
03703332013/11/17(日) 20:50:40.95
>>358
そこがまた不思議なんだけど、 実装のないはずのinterfaceであるIEnumerableを継承するとForeachで使える機能
IDisposableはdisposeの強制?なぜ実装のないはずのinterfaceを継承してるのに実装があるの?
あとどの解説も多重継承できるとかばかりで実際の開発でこう使うんだよってのがないんだよね
0371デフォルトの名無しさん2013/11/17(日) 20:53:35.39
この理解力足りない奴を相手に暇なお前らは延々と講義を続ける気なのか?
いつまで続ける気だ
0372デフォルトの名無しさん2013/11/17(日) 20:56:47.57
>>370
> 実際の開発でこう使うんだよってのがないんだよね

インターフェースをクラス設計に取り入れる必要があるのはフレームワークやライブラリを作る側の人間。
ビジネスクラスの開発が中心になる「実際の開発」ではフレームワークを使うことはあっても作ることはない。
「ビジネスクラスを設計する上でインターフェースをどう使えばいいのか」という情報が少ないのはそういう理由。
0373デフォルトの名無しさん2013/11/17(日) 20:58:03.22
class Hoge : ISomeInterface

と書いたから魔法のように機能が追加されるわけではなくて
自分でシコシコとISomeInterfaceの要求するメソッド等を実装するんだよハゲ

このクラスを使う側からしたらISomeInterfaceが目印となって使い方が分かるんだよこのズルムケが
0374デフォルトの名無しさん2013/11/17(日) 21:00:04.13
汎用的なクラスを作る場合はインターフェースは役に立つけど、
ごく狭い範囲でしか利用されない特化型のクラスを作る場合はインターフェースは不要
だから一般人がインターフェースを使ってクラス設計する方法を学ぶ必要はない
0375デフォルトの名無しさん2013/11/17(日) 21:01:44.36
>>370
では宿題。

IEnumerableを使わずに継承関係のないクラスAとBの両方に列挙の機能を与えた上で、
かつAとBを使う側は同じ方法で列挙できるようにするにはどうしたらいい?
0376デフォルトの名無しさん2013/11/17(日) 21:03:38.07
インターフェイスなんかイラネ、って言ってるんだから当然できるよねw
03773332013/11/17(日) 21:05:25.49
>>375
ObjectクラスのインスタンスとしてA, Bのインスタンスを保持しておき、
使用時はそれぞれクラスA, Bにダウンキャストすればいいだけでは?
0378デフォルトの名無しさん2013/11/17(日) 21:06:06.59
>>369
IFormattableとか真面目に実装しないということ。
0379デフォルトの名無しさん2013/11/17(日) 21:08:14.74
API等の公開クラスをわざわざsealedする時って嫌がらせ以外にどんな理由が考えられますかね?
0380デフォルトの名無しさん2013/11/17(日) 21:08:52.85
>>377
何を言ってるのか分からないが、「Objectクラスのインスタンス」はObjectという型が
持っている以上の機能なんか何もありませんよ。

つまり列挙なんか出来ませんが
0381デフォルトの名無しさん2013/11/17(日) 21:10:36.37
使い方としては、プラグインとかあるかな。
アプリとプラグイン間で取り決めたインターフェースに従えば、
実際にどんな名前のどんなクラスで実装しているか公開する必要が無くて、
アプリ側はそのインターフェースに対してのみの単一の実装をすればいいから。
0382デフォルトの名無しさん2013/11/17(日) 21:10:44.71
>>365
それ。interfaceに継承可能な属性が使えたらいいなと思うことはある。
0383デフォルトの名無しさん2013/11/17(日) 21:11:23.10
>>379
あるクラスを不変クラスにしたい場合
継承を禁止しないと不変クラスにはできない
0384デフォルトの名無しさん2013/11/17(日) 21:15:27.87
自分は定義済みのinterfaceしか使わないなぁ。
アプリ内ならクラスの継承で終わっちゃうし。
0385デフォルトの名無しさん2013/11/17(日) 21:19:35.45
>>383
派生クラスの実装によって派生元クラスが変化する可能性があるからって事ですか?
と言う事は継承を許してるクラスは全て継承されることによって変化する事を受け入れてる
って事ですよね?
具体的にどういう可能性があるのか今一分かりませんが
0386デフォルトの名無しさん2013/11/17(日) 21:20:11.22
自作クラスをforeachとかdisposeとかに対応させるぐらいかな。
03873332013/11/17(日) 21:28:07.78
>>380
Object o1 = new MyClass1();
Object o2 = new MyClass2();
(MyClass1) o1.iterator();
(MyClass2) o2.iterator();
0388デフォルトの名無しさん2013/11/17(日) 21:37:41.77
>>387
意味が分からない。

では、引数xを1つとってxを列挙するメソッドを、引数に継承関係のないクラスAとBの
どちらのインスタンスも指定して呼び出せるようにするにはどうするの?
03893332013/11/17(日) 21:48:08.01
>>388
public void 列挙(Object x)
{
 if (x is ClassA)
  ((ClassA) x ).doSometiong();
 if (x is ClassB)
  ((ClassB) x ).doSometiong();
}
0390デフォルトの名無しさん2013/11/17(日) 21:49:41.96
>>389
それって型安全じゃないよね。
っていうか、想定される実装の数だけifを書くの?w
0391デフォルトの名無しさん2013/11/17(日) 21:51:23.27
castって重いんだぜぇ?
0392デフォルトの名無しさん2013/11/17(日) 21:54:48.65
333じゃないけど眠いから早く答え教えて
0393デフォルトの名無しさん2013/11/17(日) 22:01:08.26
>>392
全裸待機で凍死寸前?
0394デフォルトの名無しさん2013/11/17(日) 22:05:36.89
個人で小規模なアプリ作っている程度ならインターフェースを自作する必要性ってないからな
なんで必要なんだって疑問に思っても仕方がない

自分はインターフェースからまず作っていってイメージを掴んでいくけどね
なんとなくこういう機能がほしいけど実装を書くのは面倒だからとりあえずインターフェース書いとけみたいな
03953332013/11/17(日) 22:08:10.75
>>390-392
インターフェースを使わなくても「特定のメソッドを持ったクラスを同様に扱う」ことは可能
http://ideone.com/aDwqBp
0396デフォルトの名無しさん2013/11/17(日) 22:08:56.30
そんなの空メソッドでいいじゃん。
0397デフォルトの名無しさん2013/11/17(日) 22:10:01.15
dynamicちゃんがあればinterfaceの代わりになれるよな・・・気持ち悪いけど

後、interfaceはstaticもあっていいと思うんだ
というかdynamicでstaticを呼び出したい
0398デフォルトの名無しさん2013/11/17(日) 22:11:14.66
リフレクションで出来るってのは出来るとは言わない
0399デフォルトの名無しさん2013/11/17(日) 22:11:37.48
>>390
後出しじゃんけん乙
取り敢えず負けを認めろよ
04003332013/11/17(日) 22:20:45.30
結局インターフェースじゃないとダメなシーンは存在しないってこと?
実態を伴わずに言葉や権威だけが独り歩きするバズワードみたいなもんか
0401デフォルトの名無しさん2013/11/17(日) 22:22:21.85
public void write(Iwrite x) { x.write(); }
ならチェックいらなくなるじゃん。

そんなに糞遅いほうがいいの? Javaで我慢できる人?
0402デフォルトの名無しさん2013/11/17(日) 22:25:52.26
てかインターフェース使わないでっていうお題じゃなかったっけ?
0403デフォルトの名無しさん2013/11/17(日) 22:27:25.80
もちろんC++もアセンブラもなくても機械語だけで同じこと書けるよ。だから?
0404デフォルトの名無しさん2013/11/17(日) 22:30:47.29
じゃあおまえinterface禁止な。絶対に継承して実装するんじゃねーぞ。
0405デフォルトの名無しさん2013/11/17(日) 22:31:07.88
インターフェース無かったらifでクラス毎に分けるキチガイみたいな実装になるぞ
もしくはリフレクション使った型安全じゃない実装

staticなインターフェースは無いから仕方なく下の方法使ってる
ParseとTryParseまとめろよMS
0406デフォルトの名無しさん2013/11/17(日) 22:33:36.00
WCFみたいにinterfaceを要求するものがあったりするから厄介
0407デフォルトの名無しさん2013/11/17(日) 22:40:17.29
>>399
意味が分からない。
0408デフォルトの名無しさん2013/11/17(日) 22:42:10.58
>>397
型安全じゃないんだから代替になんかならない。
何をいってんの
0409デフォルトの名無しさん2013/11/17(日) 22:42:12.90
「インターフェイスじゃないとダメなシーン」と言ってるからには、
インターフェイスの使い方は分かるんだよね。
じゃあ他の方法とインターフェイスを使った場合とでコストの小さい方を選択すればすむことでは。

それが、
>でも超重量級フレームワークはinterfaceだらけ、何故?
その理由であり幼と‥‥どうした ATOK 。w ‥‥用途なんだろ。
0410デフォルトの名無しさん2013/11/17(日) 22:43:10.19
不毛だ
ほら不毛だ
俺が茶々入れた段階で話し打ち切ってりゃ良かったんだよチンカスの諸君
0411デフォルトの名無しさん2013/11/17(日) 22:44:02.89
っていうか、333はこれ面白いと思ってやってるのかね。
だとしたらかなりのお変人だね。
0412デフォルトの名無しさん2013/11/17(日) 22:44:51.16
1万行もc#を書けば目覚めるさ。
04133332013/11/17(日) 23:07:16.69
>>408
GetType().GetMethod("someMethod") でメソッドの有無を確認すれば型安全にリフレクションは使えるが
0414デフォルトの名無しさん2013/11/17(日) 23:11:26.45
どんだけ遅いコード書きたいんだ、こいつ。
ループ回してどんだけ遅くなるか計測してみ。

超重量級フレームワークが応答なしフレームワークになるわ。
0415デフォルトの名無しさん2013/11/17(日) 23:12:30.06
そうやって構う
0416デフォルトの名無しさん2013/11/17(日) 23:12:43.66
>>413
http://msdn.microsoft.com/ja-jp/library/8zz808e6.aspx
例外の項目見ろ
0417デフォルトの名無しさん2013/11/17(日) 23:20:08.49
>>413
型安全というのは普通はコンパイル時の概念ですよ
0418デフォルトの名無しさん2013/11/17(日) 23:21:12.49
っていうか、だから面白いと思ってやってるのかこれ。
0419デフォルトの名無しさん2013/11/18(月) 00:02:37.22
XmlDocumentで
<root><div>test</div></root>っていう要素のテキストノードを
XmlElement root = doc.DocumentElement;
XmlNodeList nodeList = root.GetElementsByTagName("div");
XmlElement element = (XmlElement)nodeList.Item(0);
element.RemoveChild(element.FirstChild);
// element.innerText = "" // これもだめだった

これの結果が
<root><div /></root>にならず、
<root><div></div></root>ってなるんですが、これだと空でも一応テキストノードは存在してますよね
どうやってテキストノードを消せますか?
0420デフォルトの名無しさん2013/11/18(月) 00:48:35.21
確か<hoge/>と<hoge></hoge>って同じ意味だろ

結果をどうやって作ってるのか知らんがxmlwriterのオプションとかになければ自分で実装するしかないな
0421デフォルトの名無しさん2013/11/18(月) 07:39:08.69
>>407-408
型安全なんて >>375, >>388 にも書いてない条件後出ししてなに難癖つけてるんだ?
0422デフォルトの名無しさん2013/11/18(月) 08:16:00.35
C#の裏ワザとかあります?
0423デフォルトの名無しさん2013/11/18(月) 10:32:02.10
うんこに触ると手にうんこが付くという裏ワザならあるけど
0424デフォルトの名無しさん2013/11/18(月) 11:53:32.29
C#で作成したアプリのワード切替方法を教えてください。

やりたい事:
画面上で「切替」ボタンを押すと、
- タスクバー上のアイコン画像を別の画像に切り替える。
- アプリの左上にあるアイコン画像も別の画像に切り替える。

どうやって切替って実装したら良いのでしょうか?
0425デフォルトの名無しさん2013/11/18(月) 12:07:04.28
wm_seticon投げればできたはずだが
このスレか相談室でアイコンキャッシュがどうのって話もでてたし
今もうまく行くかどうかは分からない
04263352013/11/18(月) 12:32:26.27
XMLファイルが
小さいときはXmlDocument
大きいときはXml(Reader|Writer)
を使うという結論になりました
XmlText(Reader|Writer)は非推奨でXml(Reader|Writer)を使うようですね
XDocumentはなんか中途半端でコードが書きやすい以外にメリットがない気がしました
0427デフォルトの名無しさん2013/11/18(月) 12:51:52.67
>>425
Windows API 使わないと出来ないのですね。。。
アイコン以外のラベルで代替する事にします。
0428デフォルトの名無しさん2013/11/18(月) 12:53:18.58
>>424
Form.Iconプロパティにアイコンを設定する
今見たらWM_SETICONも飛んできたよ

ところでワード切替ってなに?
0429デフォルトの名無しさん2013/11/18(月) 13:20:52.36
さすがです大佐
0430デフォルトの名無しさん2013/11/18(月) 13:27:22.78
>>428
そうすると、リソースに2画像を仕込んでおいて
プログラムから
Form.Iconプロパティ
に設定する方法でいけるという事でしょうか?
※リソースに2画像を仕込む方法とかも教えて頂けると幸いです。

※ワード切替はこっちの事です。忘れてください。
0431デフォルトの名無しさん2013/11/18(月) 13:37:35.14
XMLに要素を追加したり属性を追加したりテキストノードを書き換えたりするのは
XmlReaderはできないのですか?
0432デフォルトの名無しさん2013/11/18(月) 13:51:57.31
リーダーって何だと思ってんだ君は
0433デフォルトの名無しさん2013/11/18(月) 14:33:48.23
コンボボックスで
リストに表示されるのはフルネームを表示させて
選択してコンボボックスを閉じたときに表示されるのは
選択された名前の苗字だけにしたいです
こういう場合どうすれば実現できますか?
0434デフォルトの名無しさん2013/11/18(月) 16:12:46.99
ファイルを作成するだけのコードですが
こういうときusingの中で明示的にCloseするのは何故ですか?
いろんなサイトを見てもCloseしてるのとしてないのがありよくわかりません
usingは勝手に閉じてくれるからCloseを呼ばなくてもいいと思うんですが何故ですか?

using (FileStream fileStream1 = File.Create("file.txt"))
{
fileStream1.Close();
}
0435デフォルトの名無しさん2013/11/18(月) 16:14:45.32
>>434
Closeする必要ないよ
0436デフォルトの名無しさん2013/11/18(月) 16:15:56.44
しないことにします
無駄ですよね
0437デフォルトの名無しさん2013/11/18(月) 16:18:19.77
>>434
予想だけど、OrasamaStreamがDisposeとCloseで動作が異なるとか、
作者がそう思い込んでるとか、
Close出来なかったときのtry-catchをusingの内部に書いてるとか

ってどこのサイトよ?url教えて
0438デフォルトの名無しさん2013/11/18(月) 16:20:03.17
http://jeanne.wankuma.com/tips/csharp/file/create.html
0439デフォルトの名無しさん2013/11/18(月) 16:22:23.00
>>434
たまにあるようなそういう書き方してるところw
0440デフォルトの名無しさん2013/11/18(月) 16:24:25.46
IDisposableを実装しているクラスなら
Dispose()呼ぶだけでいい
Close()を呼ぶ必要は全くないよ
0441デフォルトの名無しさん2013/11/18(月) 16:30:57.78
>>434
using内部でエラーが発生した場合、閉じられないからCloseする必要がある
0442デフォルトの名無しさん2013/11/18(月) 16:32:17.32
>>441
あほかw
知識がないのに答えない方がいいぞw
0443デフォルトの名無しさん2013/11/18(月) 16:32:43.01
>>440
それは実装による
CloseとDisposeは必ずしも同じじゃない
0444デフォルトの名無しさん2013/11/18(月) 16:36:07.16
>>434
FileStreamに関してはusignしてればCloseする必要はないよ
0445デフォルトの名無しさん2013/11/18(月) 16:37:48.94
でもClose()するクセはつけとけ。
0446デフォルトの名無しさん2013/11/18(月) 16:40:02.50
なんでもかんでもClose()つけてるコードはまじで嫌い
ちゃんと理解しろよって思う
0447デフォルトの名無しさん2013/11/18(月) 16:40:12.30
Disposeが存在するのはc#の欠陥だからな。
0448デフォルトの名無しさん2013/11/18(月) 16:40:43.05
using構文の出たての頃はdisposeだとフラッシュされずに
クローズするとかデマが飛び交ったが、
MSのサイトでcloseと同等と解説されたので決着。
俺様ライブラリは実装によるかもな。
0449デフォルトの名無しさん2013/11/18(月) 16:40:58.19
開けたら閉めろってばぁちゃんが言ってた。
0450デフォルトの名無しさん2013/11/18(月) 16:41:19.22
>>443
必ずしもってなんだよww
おまえ意味わかってないだろww
0451デフォルトの名無しさん2013/11/18(月) 16:42:05.22
実装による決まってるのにそこに噛み付く奴はアホとしか。
0452デフォルトの名無しさん2013/11/18(月) 16:42:19.91
>>448
そうそう俺様ライブラリ以外は気にする必要ないよ
0453デフォルトの名無しさん2013/11/18(月) 16:42:59.53
実装によるのは当たり前だろ
0454デフォルトの名無しさん2013/11/18(月) 16:44:37.83
変数名にlockが使えません
lockは予約語ですか?
string lock = "a";
0455デフォルトの名無しさん2013/11/18(月) 16:45:08.25
おまえらILの状態見たことないのかよ
IL見ればすぐ理解できるぞ
0456デフォルトの名無しさん2013/11/18(月) 16:45:30.61
>>446
こういう馬鹿が一番困る。オブジェクト思考に完全に反する。
内部の実装まで理解してコード書いてられるか。

Close()が用意されてるならOpen()したらClose()する。それだけ。
0457デフォルトの名無しさん2013/11/18(月) 16:45:44.70
>>454
lock 予約語
で検索してください
0458デフォルトの名無しさん2013/11/18(月) 16:45:47.52
DisposeとCloseを分けたのは混乱の元というのは確か。
後追いのjava7はtry-with-resourcesで、
既存のクラスのcloseメソッドにAutoCloseable#closeや
その継承interfaceをつけて回った。
こっちの方がすっきりする。
0459デフォルトの名無しさん2013/11/18(月) 16:51:29.44
>>456
それはその通りなんだが、>>434とか(明示的に)Openしてないよね
暗黙的にOpenされてるものもCloseしとけ、って思う?
0460デフォルトの名無しさん2013/11/18(月) 17:00:15.87
msdnでもわざわざcloseとかしてないけど
0461デフォルトの名無しさん2013/11/18(月) 17:00:34.32
>>456
今ってこういう考えのやつが増えてるのか?
なんか悲しいな
0462デフォルトの名無しさん2013/11/18(月) 17:07:39.23
ドキュメントなんか読む気ねーよバーカwwwwww

って恥晒してるだけだし、別に悲しまなくてもよくね
0463デフォルトの名無しさん2013/11/18(月) 17:18:00.26
じゃおまえはC++の頃に糞汚いprintfやqsortの実装読んだのか?
0464デフォルトの名無しさん2013/11/18(月) 17:21:05.55
これ以上バカにレスすのはやめとけな
0465デフォルトの名無しさん2013/11/18(月) 17:24:30.71
closeに無頓着なチームが9x系を作ってcloseに煩かったチームがNTを作った。
closeつけてる奴のコードは安心して使える。
0466デフォルトの名無しさん2013/11/18(月) 17:26:14.49
Close()を実装しない奴はDispose()も実装してない可能性高いからな。
0467デフォルトの名無しさん2013/11/18(月) 17:35:09.65
>>465
もうcloseは必要ないって結論出たからいいよ
0468デフォルトの名無しさん2013/11/18(月) 17:37:23.52
こういう馬鹿が一番困る。
0469デフォルトの名無しさん2013/11/18(月) 17:38:34.70
close書かない馬鹿はusingも使わないから困る。
0470デフォルトの名無しさん2013/11/18(月) 17:38:58.16
>>468
こういう馬鹿が一番困る。
0471デフォルトの名無しさん2013/11/18(月) 17:39:46.32
>>469
そんなバカはおまえだけだろ
0472デフォルトの名無しさん2013/11/18(月) 17:40:48.81
>>465
98で.Netは動きませんよ?
0473デフォルトの名無しさん2013/11/18(月) 17:40:51.99
closeは書かなくていいなんてわざわざ馬鹿いう奴って頭悪いだろ。
close必要なクラスもいっぱいあるのに、
他人が勘違いする可能性を考えてない典型的なアスペ君。
0474デフォルトの名無しさん2013/11/18(月) 17:42:29.69
>>473
こういう馬鹿が一番困る。
0475デフォルトの名無しさん2013/11/18(月) 17:42:51.25
この中でいうと、そうだな、>>471 が信用できないな。
0476デフォルトの名無しさん2013/11/18(月) 17:43:00.21
>>472
ナイスツッコミ
0477デフォルトの名無しさん2013/11/18(月) 17:45:36.47
こういう馬鹿どもがC++の仕事すると途端にメモリリークしまくるんだよな。

VBでは〜とかC#だといらないからとか馬鹿言い出す。ほんとうっとうしい。
0478デフォルトの名無しさん2013/11/18(月) 17:46:25.37
Close()とusingに関しては散々調べて検証したことあるが
個人で作ったライブラリ以外は
using使えばClose()必要ないよ
0479デフォルトの名無しさん2013/11/18(月) 17:46:53.43
IDisposableで注意しとくのは、俺々ライブラリとMutexくらいかな
0480デフォルトの名無しさん2013/11/18(月) 17:47:02.80
>>477
そんなバカはおまえだけだろ
0481デフォルトの名無しさん2013/11/18(月) 17:47:51.74
>>479
だな
無駄にClose()やってるコードは俺も好きじゃない
0482デフォルトの名無しさん2013/11/18(月) 17:48:20.92
>>478
散々調べる暇があるなら迷わずclose()したほうが楽だろ。
0483デフォルトの名無しさん2013/11/18(月) 17:49:02.91
>>480
だな。Close()してるコードは変態だね。
0484デフォルトの名無しさん2013/11/18(月) 17:49:52.44
Close()はするべきじゃないね。
0485デフォルトの名無しさん2013/11/18(月) 17:50:10.97
>>482
おかげで胸をはってClose()いらないってわかったからよかったよ
0486デフォルトの名無しさん2013/11/18(月) 17:50:36.80
トイレのドア閉めてするようなもんだよな。アホすぎ。
0487デフォルトの名無しさん2013/11/18(月) 17:52:55.10
なんにでもCloseしろって言ってるような上司は信用しない方がいいぞ
0488デフォルトの名無しさん2013/11/18(月) 17:53:51.31
>>472
.NET1.0 .NET1.1 .NET2.0は一応サポートしてた
0489デフォルトの名無しさん2013/11/18(月) 17:55:49.86
最近のゆとりにいくら冷蔵庫のドアは閉めろと言ってもいうことをきかない。
0490デフォルトの名無しさん2013/11/18(月) 17:58:23.94
>>489
もう閉まってるのに閉めようとするボケた老害に困ってます
0491デフォルトの名無しさん2013/11/18(月) 18:00:21.19
注意するとこういいます。「C#はcloseする必要ないので」

馬鹿です。
0492デフォルトの名無しさん2013/11/18(月) 18:00:49.12
自動ドアも自分で閉めろ
0493デフォルトの名無しさん2013/11/18(月) 18:00:56.13
Vista以降のマスターボリュームを変更する方法をおしえてください
0494デフォルトの名無しさん2013/11/18(月) 18:02:11.39
>>493
検索すればすぐ出てきたので
検索しましょう
0495デフォルトの名無しさん2013/11/18(月) 18:02:43.67
C#でwin32api呼んでcloseしない馬鹿がいかに多いことか。

このスレが原因か。
0496デフォルトの名無しさん2013/11/18(月) 18:03:20.81
>>491
そんなバカはおまえだけだろ
0497デフォルトの名無しさん2013/11/18(月) 18:04:08.15
>>495
そんなバカはお前の周りだけだろ
0498デフォルトの名無しさん2013/11/18(月) 18:04:10.63
>>495
こういうデマ流すやついるから気を付けろよ
0499デフォルトの名無しさん2013/11/18(月) 18:05:17.37
ウイルス作る場合ってC#で大丈夫ですか?
0500デフォルトの名無しさん2013/11/18(月) 18:06:47.56
やっぱりおまえらが犯人か。片山もこのスレにいたんだろ?
0501デフォルトの名無しさん2013/11/18(月) 18:07:59.24
片山ってどうなったんだ?
0502デフォルトの名無しさん2013/11/18(月) 18:10:33.94
>>495
類友
0503デフォルトの名無しさん2013/11/18(月) 18:11:31.53
この中に警察から聞き込みされた奴とかいんの?
0504デフォルトの名無しさん2013/11/18(月) 18:13:06.85
さすがにいないだろ
0505デフォルトの名無しさん2013/11/18(月) 18:16:25.58
聞き込みってか官庁不正アクセスで逮捕されたことはあるよ
0506デフォルトの名無しさん2013/11/18(月) 18:19:20.56
>>505
不正アクセスって
パスワードかIDでも入れたの?
0507デフォルトの名無しさん2013/11/18(月) 18:22:00.78
いや誤認逮捕
0508デフォルトの名無しさん2013/11/18(月) 18:23:14.78
>>494
ぼくが傑作してヒットしたものだとXPまでのにしか対応してないサンプルばかりでしたが
何が検索でヒットしたのか教えてください
0509デフォルトの名無しさん2013/11/18(月) 18:26:08.80
>>508
傑作してヒットしたならいいじゃない
0510デフォルトの名無しさん2013/11/18(月) 18:26:59.32
くだらねえw
0511デフォルトの名無しさん2013/11/18(月) 18:29:12.75
ここまで自演
0512デフォルトの名無しさん2013/11/18(月) 18:30:19.83
やっと一人レスしてくれた。疲れたからもう寝る。
0513デフォルトの名無しさん2013/11/18(月) 18:32:06.55
>>494
分からないのに無理してレスしなくていいんですよ
0514デフォルトの名無しさん2013/11/18(月) 18:35:37.48
>>513
みんなの為に
わからないけどがんばってレスするよ
0515デフォルトの名無しさん2013/11/18(月) 18:38:43.80
Closeなんて無駄に頑張ってたもんな
0516デフォルトの名無しさん2013/11/18(月) 18:40:40.12
すまん。自動煽りレスアプリをcloseし忘れてた。
0517デフォルトの名無しさん2013/11/18(月) 18:41:46.80
自動煽りレスアプリとかVIPでしか使わないぞ
0518デフォルトの名無しさん2013/11/18(月) 18:43:31.20
俺だったら悲しくてそんなことできんわw
0519デフォルトの名無しさん2013/11/18(月) 18:43:56.08
マジかよ
じゃあ俺の自動煽りレスアプリと煽り合ってたのって・・・
0520デフォルトの名無しさん2013/11/18(月) 18:45:37.87
>>421
馬鹿だろお前。
プログラミングにおける型安全性の重要性が、俺の質問の仕方で変るのか。
0521デフォルトの名無しさん2013/11/18(月) 18:46:12.61
>>519
おい自動煽りフラグ立てんなよ
0522デフォルトの名無しさん2013/11/18(月) 18:54:26.21
初心者です
下のコードでAのフラグが含まれていなのに、Aが含まれていると判定されてしまいます。
どのように改善すればよろしいでしょうか。お教え願います。
using System;

[Flags]
public enum SampleOptions
{
A = 0x00,
B = 0x01,
C = 0x02,
}

class Program
{
static void Main(string[] args)
{
SampleOptions opt = SampleOptions.B | SampleOptions.C;

if (((opt & SampleOptions.A) == SampleOptions.A) &&
((opt & SampleOptions.C) == SampleOptions.C))
{
Console.Write("AとCのフラグが含まれています。");
}
Console.ReadLine();
}
}
0523デフォルトの名無しさん2013/11/18(月) 18:55:01.37
>>522
いやです
0524デフォルトの名無しさん2013/11/18(月) 19:00:43.56
>>522
ビット演算の結果を考えてみろ
0525デフォルトの名無しさん2013/11/18(月) 19:01:40.37
>>524
コードください
0526デフォルトの名無しさん2013/11/18(月) 19:03:14.15
A = 0x01,
B = 0x02,
C = 0x04,
05275222013/11/18(月) 19:04:18.12
そもそもenumの値の設定がダメってことですかね?
0528デフォルトの名無しさん2013/11/18(月) 19:10:49.72
>>527
ビット演算というものは
2の累乗の値どうしじゃないとダメなんだよ
0529デフォルトの名無しさん2013/11/18(月) 20:16:13.41
日中の喧騒が嘘のような静けさ
0530デフォルトの名無しさん2013/11/18(月) 20:24:53.78
Form1.cs以外の別ファイルからフォームのコントロール(例えばtextBox1)にアクセスする方法を伝授してください
0531デフォルトの名無しさん2013/11/18(月) 20:29:03.09
Modifiersを変える
0532デフォルトの名無しさん2013/11/18(月) 20:29:08.85
>>530
まずそのForm1の参照を入手する
0533デフォルトの名無しさん2013/11/18(月) 20:48:43.04
>>531-532
これでtextBox1に関する変更とかキーイベントはTextBox.cs見たいな感じでわけられそうです
0534デフォルトの名無しさん2013/11/18(月) 20:51:54.22
?
0535デフォルトの名無しさん2013/11/18(月) 21:22:07.33
partialでやれ
0536デフォルトの名無しさん2013/11/18(月) 22:01:00.65
>>535
partialはhttp://minoproject.asablo.jp/blog/2008/09/06/3747904の記事によると
こういう場合はやらないほうがいいと思うんですがなぜですか?
0537デフォルトの名無しさん2013/11/18(月) 22:04:01.57
>>536
ココの記事にもかいてありました

http://ufcpp.net/study/csharp/oo_class.html#partial_class
0538デフォルトの名無しさん2013/11/18(月) 22:04:45.05
アンカーミス
>>537は>>535あて
0539デフォルトの名無しさん2013/11/18(月) 22:23:53.66
close()について話しませんか?
0540デフォルトの名無しさん2013/11/18(月) 22:26:16.41
話しません
0541デフォルトの名無しさん2013/11/18(月) 22:46:39.70
>>536
partialで分けたくなるような場合は設計が悪いからクラス自体を分割しろってこと
0542デフォルトの名無しさん2013/11/18(月) 23:10:08.75
componentをcontrolとしてformに登録したいのですが可能でしょうか?
0543デフォルトの名無しさん2013/11/19(火) 00:16:51.26
>>541
まあ見通しが悪くてクラスを分割したくなったら
#regionだけでなんとかするのを検討するな
どうしてもと言うなら継承を使って機能を分ける
0544デフォルトの名無しさん2013/11/19(火) 00:34:35.04
時代はパーシャル
0545デフォルトの名無しさん2013/11/19(火) 00:39:22.60
よっ、発展途上人
0546デフォルトの名無しさん2013/11/19(火) 00:47:31.79
C#のunsafeってダブルポインタないですよね?
0547デフォルトの名無しさん2013/11/19(火) 00:48:37.49
普通に使えるけど
0548デフォルトの名無しさん2013/11/19(火) 00:51:56.19
>>520
重要性なんて関係ないだろ。

どうするの? ⇒ こうすりゃできるだろ。で、終了だよ。
0549デフォルトの名無しさん2013/11/19(火) 00:53:49.62
言い返したいお年頃なんだろなー
流せよガキ
0550デフォルトの名無しさん2013/11/19(火) 01:02:28.41
intの配列型のプロパティをgetにして読み取り専用にしたはずなのに
別のクラスからそのプロパティの配列の要素に値をセットできます・・・
なぜですか?
0551デフォルトの名無しさん2013/11/19(火) 01:04:42.12
配列は参照型だから
ttp://msdn.microsoft.com/ja-jp/library/vstudio/k2604h5s.aspx
これは"クラスライブラリの"ガイドラインだけど、配列をそのまま公開するなって言うのがある
0552デフォルトの名無しさん2013/11/19(火) 01:09:47.30
>>551
そうなんですね・・
知らなかったのでそこらへんをもうちょっと勉強してみます
ありがとうございます
0553デフォルトの名無しさん2013/11/19(火) 01:10:08.01
面倒だけど必要ならReadOnlyCollection<T>でラップ
0554デフォルトの名無しさん2013/11/19(火) 01:55:20.60
そうだよなぁ
参照型だから普通に考えgetにしてもて意味ないよな
あほだった・・・
0555デフォルトの名無しさん2013/11/19(火) 06:20:56.04
吠え?
0556デフォルトの名無しさん2013/11/19(火) 08:37:16.85
遅くて変更できるプロパティなんていらないということ。全部publicでok
0557デフォルトの名無しさん2013/11/19(火) 11:02:42.30
デバッグモードで実行時
コンソールアプリケーションでは
System.IndexOutOfRangeExceptionが発生すると止まりますが
フォームアプリケーションでは
出力ウィンドウにはSystem.IndexOutOfRangeExceptionでるものの
特に止まらないので気づきにくいです

こういうものなのでしょうか?
0558デフォルトの名無しさん2013/11/19(火) 11:10:06.95
間違えました
フォームのロードイベントのところに
これが発生する処理を書くと
一応そこで止まりますが
フォーム自体はちゃんと表示されるため
エラーが発生したと気づきにくいです
0559デフォルトの名無しさん2013/11/19(火) 12:38:11.23
止まっても気づかないなら爆発するしかねえな
0560デフォルトの名無しさん2013/11/19(火) 12:42:17.51
Undefined Symbol:止まる
0561デフォルトの名無しさん2013/11/19(火) 12:48:37.20
正しく動いていても忙しくてイベントに応答しなかったら勝手に強制終了させるWindows。
0562デフォルトの名無しさん2013/11/19(火) 12:56:30.70
エラーが発生する可能性のある個所には
try-catchを書いておくしかないな
0563デフォルトの名無しさん2013/11/19(火) 15:03:12.62
tryなんてやったらどんなことになるか想像もできないからやらない
0564デフォルトの名無しさん2013/11/19(火) 15:23:54.24
>>561
つまりプリエンプティブマルチタスクを実現したのは間違いだったんだよ!(バーン
0565デフォルトの名無しさん2013/11/19(火) 17:14:54.24
つ Application.ThreadException
0566デフォルトの名無しさん2013/11/19(火) 19:11:27.49
>>548
馬鹿だろお前。
何の話をしてるんだ馬鹿。

333がやってたのは「俺の質問に333が答えるゲーム」なのか馬鹿。
違うだろうが馬鹿。

インターフェイスの存在意義の話をしてたんじゃないのか馬鹿。
インターフェイスを使わないと型安全に書くことが困難なケースが存在することは
インターフェイスの存在理由になるんじゃないのかよ馬鹿。
0567デフォルトの名無しさん2013/11/19(火) 19:14:08.97
機能の説明の仕方が悪いせいで初めて触れる人には全く有用性が伝わらない
数学の教育にもそういうところありますね
0568デフォルトの名無しさん2013/11/19(火) 19:14:18.79
何人釣られるかニヤけながら書いてんじゃねーよ
死ね
0569デフォルトの名無しさん2013/11/19(火) 21:05:17.13
DisposeとCloseについて話しませんか?
0570デフォルトの名無しさん2013/11/19(火) 21:05:17.06
TabControlの中にTabPageを置きました
タブをクリックするとタブの部分にフォーカスされて点線で囲まれる状態になるのですが
この点線を消したいと思って、フォーカスさせないようにしたらいいと思ったんですが
TabPageのプロパティにはTabStopがないので設定できませんでした
どうしたらこの点線の枠を非表示にできますか?
0571デフォルトの名無しさん2013/11/19(火) 21:19:35.44
バイナリ解析してハック
0572デフォルトの名無しさん2013/11/19(火) 21:24:49.22
>>570
MSDNのメンバ一覧をよく見たら?
ShowFocusCuesをオーバライドするだけだと思うよ
0573デフォルトの名無しさん2013/11/19(火) 21:45:12.89
うう(;_;)オーバーライドしてみたんですがきえませんっ!
0574デフォルトの名無しさん2013/11/19(火) 21:55:20.81
や〜い引っかかったwww
0575デフォルトの名無しさん2013/11/19(火) 22:17:31.06
オーナードロー
0576デフォルトの名無しさん2013/11/19(火) 23:20:15.09
TabPageのOnDrawItemをオーバーライドしてもFocus Cueだけは勝手に描画しやがるなw
妙な動作だな
0577デフォルトの名無しさん2013/11/19(火) 23:29:05.74
くっ・・・(>_<) こ、ここの先輩たちでも苦戦することにチャレンジしてるのかorz
0578デフォルトの名無しさん2013/11/19(火) 23:31:33.54
ほっといて他をコーディングしたら?
点線とかどうでもいいだろ
0579デフォルトの名無しさん2013/11/19(火) 23:34:48.28
SSDにインスコしたらまるでメモ帳のごとく起動してワロタw
こんな高性能なPCだと激重アプリ作っちゃいそうだわww
0580デフォルトの名無しさん2013/11/19(火) 23:35:39.91
お呼びじゃないからすっこんでろ田吾作
0581デフォルトの名無しさん2013/11/19(火) 23:35:59.77
C# タブコントロール 点線
でぐーぐる先生に質問とかしてみた? 要件次第だけど、一番上に同じような質問ががが。
0582デフォルトの名無しさん2013/11/19(火) 23:39:41.99
>>580
無職のおっさん調子乗るなよ
0583デフォルトの名無しさん2013/11/20(水) 00:14:48.51
>>577
正攻法と思えないが一応、TabControlのOnDrawItemで

protected override void OnDrawItem(DrawItemEventArgs e)
{
  Action a = () => {タブの描画処理};
  BeginInvoke(a);
}

これでシステム側がフォーカスの四角を描画した後にタブの描画処理を実行できる。
当たり前だけどe.Graphicsはもちろん使えない。

WPFがいいとも思わないけどWindows Formはこういう泥臭いのが欠点だな
0584デフォルトの名無しさん2013/11/20(水) 01:28:48.24
>>566
> インターフェイスの存在意義の話をしてたんじゃないのか馬鹿。

>>375 がアホみたいな宿題だしたから、それに答えただけだ、ば〜か (w
0585デフォルトの名無しさん2013/11/21(木) 13:46:36.65
画像読み込みを高速化しようとしてたんだけどLockBitsって意外と重いのね
5000x5000ぐらいの画像だとLockBitsだけで1秒ぐらいかかる
せっかくマルチスレッドとかで他の処理を高速化してもLockBitsが時間の半分以上しめてるんだよね
C++だとLockBitsなんてしなくてもすぐ画素にアクセスできるだろうしやっぱこれ以上早くするにはC++でも使わないといけないのかな?
0586デフォルトの名無しさん2013/11/21(木) 15:02:26.42
1ピクセルごとしてたらそりゃ重いわな。
一回lockしたら処理終わるまでBitmapData使いまわすんだぞ。
まさか25,000,000個の画像ファイルじゃないよな?
0587デフォルトの名無しさん2013/11/21(木) 15:38:52.66
C#でも先頭アドレスだけ取得して、後は連続した画素にアクセスする物なんだが・・・
0588デフォルトの名無しさん2013/11/21(木) 15:49:43.50
トランザクション知らないんだな
0589デフォルトの名無しさん2013/11/21(木) 15:51:29.21
それは話が全然違う。c#は単にメモリがどんどん移動するから。
0590デフォルトの名無しさん2013/11/21(木) 16:00:14.08
>>586,587
一回しかLockBitsしてないよ
でも解像度5000x5000の画像ともなるとたった一回のLockBitsでも結構時間かかるみたいなんだよ
アドレス固定に時間がかかってるとかなのだろうか

BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, bmp.PixelFormat);
これだけで1秒かかる
0591デフォルトの名無しさん2013/11/21(木) 16:09:05.41
スペックがしょぼい
0592デフォルトの名無しさん2013/11/21(木) 16:28:01.29
それクライアントにも言えるか?
0593デフォルトの名無しさん2013/11/21(木) 16:29:52.81
>>586
25,000,000回のLockBitsが1秒で済むとか、逆にありえねーよ
0594デフォルトの名無しさん2013/11/21(木) 16:30:53.83
System.Drawingのクラス群は巨大な画像を想定して作られてないからな。
5000x5000のBitmapが作れただけでも運が良かったと喜ぶべきだろう。

さらに巨大な画像を扱うなら
System.Windows.Media.Imagingへの移行を考えた方がいい。
0595デフォルトの名無しさん2013/11/21(木) 16:32:09.62
>>590
DirectXを使って読み込んだら速いよ
時間がかかるのはメモリ領域の確保だからね
より高速なメモリとGPUを使えば速くなる
0596デフォルトの名無しさん2013/11/21(木) 16:33:59.75
そんなに時間掛かるか?
  ・OS : WinVista(x86)Ultimate SP2
  ・CPU : Intel Core i5 2500k @3.30GHz
  ・RAM : 4GB (DDR3 SDRAM 2GB * 2)
  ・IDE : Visual C# 2010 Express
  ・ターゲット : .NET Framework 4

static void Main(string[] args)
{
  Stopwatch sw = new Stopwatch(); Bitmap bmp = null; BitmapData bd = null;

  for (int i = 0; i < 5; i++)
  {
    bmp = new Bitmap(5000, 5000);
    sw.Start();
    bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, bmp.PixelFormat);
    sw.Stop();

    System.Console.WriteLine(sw.Elapsed);
    sw.Reset();
    bmp.UnlockBits(bd);
  }
}

出力結果
00:00:00.0000474
00:00:00.0000069
00:00:00.0000069
00:00:00.0000069
00:00:00.0000078
0597デフォルトの名無しさん2013/11/21(木) 16:40:49.90
読み込んで何をするのかわからないが
表示するだけなら部分的に読み込んで表示する手法が妥当じゃないかな
5000x5000解像度のモニタを使っているのではないだろうし
一度にすべてを読み込む必要はないよね
0598デフォルトの名無しさん2013/11/21(木) 16:41:16.06
遅いのはPixelFormatの変換だろうね。
>>596だと変換が入らないので早い。
05995962013/11/21(木) 16:42:30.89
>>598
納得した
確かになあ
0600デフォルトの名無しさん2013/11/21(木) 16:44:43.49
>>596
初心者は無理して答えなくていいよ
06015852013/11/21(木) 16:56:28.57
ありがとう
ImagingやDirectXを検討してみるよ

あとよくわかんないけどPixelFormatの変換なんて行われてるのね
LockBitsではbmpと同じPixelFormatを指定してるのに

それとやっぱマルチメディア関係はC++でやるべきなんだろうなぁ…
0602デフォルトの名無しさん2013/11/21(木) 16:56:47.81
>>595
うけるw
GPUのメモリをロックとか超遅いんですけどwww
0603デフォルトの名無しさん2013/11/21(木) 17:01:47.10
>>601
そっちの環境では>>596のコードでも遅いの?

>>596のコードでも遅いなら

> ImagingやDirectXを検討

でいいと思うけど、
>>596のコードだと早いなら、原因を究明しておかないと、
DirectXやImagingで同じ間違いを繰り返すだけだよ。
0604デフォルトの名無しさん2013/11/21(木) 17:05:40.74
結局ゲーム制作とかで色々画像動かすようになるとDirectXに落ち着くんだな
0605デフォルトの名無しさん2013/11/21(木) 17:05:42.57
さっさと原因特定しろよ。LockBits一回に1秒もかかるわけないんだから
0606デフォルトの名無しさん2013/11/21(木) 17:07:45.84
質問者はまず再現コードを出すべきだったんじゃないかな?
0607デフォルトの名無しさん2013/11/21(木) 17:32:06.84
new Rectangle(0, 0, bmp.Width, bmp.Height)
これにどのくらいかかるんだよ?
この時間もLockBitsの時間なのか?
0608デフォルトの名無しさん2013/11/21(木) 17:34:24.18
ああ、それは遅くない例だったのか
遅いコードはよ
06095852013/11/21(木) 17:50:52.97
どうやらBitmapのインスタンスの作成方法に問題があるみたい
Bitmap bmp = (Bitmap)Image.FromStream(new FileStream("画像パス", FileMode.Open, FileAccess.Read)), false, false);
だとbmp作成は早いけどLockBitsは遅い
Bitmap bmp = new Bitmap("画像パス");
だとbmp作成は遅いけどLockBitsは0ミリ秒

前者のLockBitsと後者のbmp作成は同じぐらい時間かかってる
Image.FromStreamはnew Bitmapと違って画像データの検証を行ってないから高速らしくて使ってたんだけど、
検証してないbmpをLockBitsするとそのとき検証して時間がかかるって感じなのだろうか
0610デフォルトの名無しさん2013/11/21(木) 17:52:48.01
なんで.NETのソースコード読まないの?
中身見てどこに時間かかってるのか調べりゃいいだけじゃん
0611デフォルトの名無しさん2013/11/21(木) 18:21:37.00
1秒毎に処理を行おうと思ったんですが
ミリ病ずれます
これは何がげんいんですか?
0612デフォルトの名無しさん2013/11/21(木) 19:13:27.93
DisposeとCloseについて話しませんか?
0613デフォルトの名無しさん2013/11/21(木) 19:16:10.79
話しません
0614デフォルトの名無しさん2013/11/21(木) 19:23:10.68
う
0615デフォルトの名無しさん2013/11/21(木) 19:23:50.01
間違えて送信ボタン押しちゃった
0616デフォルトの名無しさん2013/11/21(木) 19:38:26.22
詫びなら肉体で
0617デフォルトの名無しさん2013/11/21(木) 19:44:30.99
初心者そっちのけで、中級者、上級者が煽り合うのは、なんとかならんのか
0618デフォルトの名無しさん2013/11/21(木) 19:47:43.26
初心者、初心者L2、初心者L3だろ
0619デフォルトの名無しさん2013/11/21(木) 20:08:58.52
>>617
初心者を肴に雑談するスレじゃねえの?
0620デフォルトの名無しさん2013/11/21(木) 20:52:19.32
このスレに上級者はいないだろww
笑わせんなよwww
0621デフォルトの名無しさん2013/11/21(木) 21:21:37.04
結局、碌に切り分けもせずLockBits()のせいにしてただけか。
0622デフォルトの名無しさん2013/11/21(木) 22:16:22.98
Typeをキーにしたキャッシュを作る場合、オーソドックスにConcurrentDictionary使う方法�@と、static class<T>使う方法�Aのメリット・デメリットってどんなもん?

�@
public static string GetName<T>(T source) {
 return cache.GetOrAdd(typeof(T), t => t.GetProperties()[0].Name);
}
private static ConcurrentDictionary<Type, string> cache = new ConcurrentDictionary<Type, string>();

�A
public static string GetName<T>(T source) {
 return Cache<T>.Name;
}
private static class Cache<T> {
 static Cache {
  Name = typeof(T).GetProperties()[0].Name;
 }
 public static readonly string Name;
}
0623デフォルトの名無しさん2013/11/21(木) 22:23:41.45
�AはJIT時に静的解決されるから圧倒的にアクセスが速いしメモリも食わない
�@は動的にTypeオブジェクトから値を引いてくる必要があるときに使う
本当に>>622のコードだけなら�Aにしない理由はない
0624デフォルトの名無しさん2013/11/22(金) 00:50:55.47
なるほど・・
実際に計測してみても、�Aの方が圧倒的に早かったわ
0625デフォルトの名無しさん2013/11/22(金) 00:53:48.63
本当に>>622のコードだけなら�Aにしない。理由はない。
0626デフォルトの名無しさん2013/11/22(金) 01:38:05.75
言語に関してでもないんだが、VSでデバッグするじゃろ?コードが違うわけでもないのにパソコンごと固まるんだよね・・・(´;ω;`)たまにおきるんだけどソリューションが破損するときもあって本当に悩んでる、知ってる人がいれば教えていただきたいです

すでに試したこと
・別のコードの書き方
・再インストール
・リカバリー
・バージョンの変更2012→2013
・別のプロジェクトで制作
よろしくお願いします
0627デフォルトの名無しさん2013/11/22(金) 01:51:00.34
パソコンのスペックは?
0628デフォルトの名無しさん2013/11/22(金) 04:50:37.84
>>617
ちょっと難しい課題が出るとネタに逃げるんだよな
0629デフォルトの名無しさん2013/11/22(金) 08:07:45.95
>>626
そんだけじゃなんともかんとも
特定のライブラリを参照にいれてると起きるとかじゃないの?
0630デフォルトの名無しさん2013/11/22(金) 10:32:49.94
ハードが原因だな。
0631デフォルトの名無しさん2013/11/22(金) 10:38:34.36
PCが逝かれかけてる説もあるな
メモリテストとかHDDのテストしてみたらいいんじゃないか
0632デフォルトの名無しさん2013/11/22(金) 12:05:01.09
クラスをファイルごとに分けるとやっぱりオーバーヘッドは大きくなるものですか?
0633デフォルトの名無しさん2013/11/22(金) 12:13:03.45
まあ、多少はね
boooooostしたりはしないけど
0634デフォルトの名無しさん2013/11/22(金) 12:17:14.61
なるほど
Form1.csに全部書いたほうが動作が速そうですね
500行ぐらいなら分けなくてもいいですよね
0635デフォルトの名無しさん2013/11/22(金) 12:23:35.78
ソースを分けるのか、アセンブリを分けるのか
あと何のオーバーヘッドかによるな
コンパイラなのか、実行速度なのか
0636デフォルトの名無しさん2013/11/22(金) 12:25:34.97
VC#でF6押してexeファイルができますよね
それの実行速度です
0637デフォルトの名無しさん2013/11/22(金) 12:28:16.54
ミリセカンドとかナノセカンドとかを気にするならそうすればいいけど
可読性を考えたほうが良いと思うよ。
0638デフォルトの名無しさん2013/11/22(金) 13:18:46.17
ちょっと上で話題に上がったusingなんですけど
これってCloseだけじゃなくてDisposeも面倒見てくれるって認識であってますか?
0639デフォルトの名無しさん2013/11/22(金) 13:23:30.26
usingはCloseの面倒は見ない。Disposeの面倒しか見ない。
Disposeをどう実装するかはクラスの実装者に委ねられている。
Disposeの実装を確認したくないのならusingを使うな。
0640デフォルトの名無しさん2013/11/22(金) 13:24:15.36
例えばSQLiteに接続する場合
var connection = new SQLiteConnection("〜");で開いたら閉じないといけませんが
commenction.Closeとcommenction.Disposeの両方が存在しまして
usingを使わない場合、CloseとDispose両方実行しないといけないでしょうか?
0641デフォルトの名無しさん2013/11/22(金) 13:26:50.67
やってみれば分かるけど、両方呼ぶとObjectDisposedExceptionがスローされるかもよ♪
0642デフォルトの名無しさん2013/11/22(金) 13:35:49.18
データベースを閉じたいときはCloseにして
アプリケーションを終了するときにDispose
というのでOKですか?
0643デフォルトの名無しさん2013/11/22(金) 13:59:37.93
だから実装による。実装によるということは実装した人が勝手に決める。
なのでどのデータベースの、どのアプリの、どのバージョンのどのクラスかによって全然違うので答えられない。
実装によるとは逆アセしないかぎり本当のことは分らないということ。

分らないと答えるとアホみたいなので
「実装による」と答えると頭がいいように見えるのでみなそう言うの。
0644デフォルトの名無しさん2013/11/22(金) 14:17:02.19
基本的にはusingを使わないのが正解
0645デフォルトの名無しさん2013/11/22(金) 14:38:03.21
最初の質問だとusingはDisposeが補償されるってだけだな

CloseとDisposeに関しては実際に実装によるし
似たような質問あるから読んでみれば?
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1126226831
0646デフォルトの名無しさん2013/11/22(金) 16:14:44.29
Disposeが何をするかドキュメントに書いてないライブラリは品質が低い
間違いない
0647デフォルトの名無しさん2013/11/22(金) 16:17:59.20
PGなら分ると思う。ドキュメントは最後。
0648デフォルトの名無しさん2013/11/22(金) 17:02:08.53
最後だから品質を測るに値するんだろタコ野郎
0649デフォルトの名無しさん2013/11/22(金) 17:07:43.25
Disposeが何をするかは聞いて欲しくない
0650デフォルトの名無しさん2013/11/22(金) 18:07:14.43
Disposeは何度呼び出してもよいように作るのが「原則」だよね?
0651デフォルトの名無しさん2013/11/22(金) 18:38:18.50
OpenFileDialogで存在しないファイルを指定すると
>ファイルが見つかりません。
>ファイル名を確認して再実行してください。
ってメッセージダイアログが表示されますが
大抵のソフトだと「存在しません。新規作成しますか?」って問い合わせしてくれるんですが
これはどうやればいいのでしょうか?
0652デフォルトの名無しさん2013/11/22(金) 18:48:12.38
俺もusing使わない派だはw
0653デフォルトの名無しさん2013/11/22(金) 18:57:27.22
>>651
ダイアログを自分で作る
0654デフォルトの名無しさん2013/11/22(金) 19:16:08.98
>>651
OpenFileDialog.CheckFileExists = false;
に、すればとりあえずOKが返るから、
その後ファイルが存在するかチェックして、無かったら作りますか?って聞く
0655デフォルトの名無しさん2013/11/22(金) 20:39:57.94
沢山の助言ありがとうございます
最近ブルスクが頻繁に発生するですよね
このせいかなあ・・・
0656デフォルトの名無しさん2013/11/22(金) 20:42:00.39
VSに限らず開発環境はPCに負担掛けるし無茶苦茶に環境汚すからな
0657デフォルトの名無しさん2013/11/22(金) 21:09:31.66
Windowsがダメなんじゃないの?
Androidにすればいいのに。
Linuxだから安全だしクリーンだよいろんな意味で。
世界の役にも立てるし。
0658デフォルトの名無しさん2013/11/22(金) 21:12:37.37
ハハッナイスジョーク
0659デフォルトの名無しさん2013/11/23(土) 00:14:30.72
.net4 での Task の効率的な使い方は、非同期メソッド間を ContinueWith で繋いでいくでOK?

非同期メソッド().ContinueWith(t => {
 同期処理();
 return 非同期メソッド();
}).Unwrap().ContinueWith(t => {
 // 以降同様
})

↓みたいなのはあんまり意味ないよな?
Task.Factory.StartNew(() => {
 非同期メソッド();
 非同期メソッドをwait();
 同期処理();
 非同期メソッド();
 非同期メソッドをwait();
 // 以降同様
});
0660デフォルトの名無しさん2013/11/23(土) 00:55:40.65
>>659
後者で十分、前者は過剰じゃね?

前者はこういう使い方ならする。
もっともnet4.5ならasync/awaitを使うが。

var task = Task.Factory.StartNew<int>(() => {
  Thread.Sleep(3000);
  return 999;
 }).ContinueWith((i) => {
textBox1.Text = i.Result.ToString();
 },TaskScheduler.FromCurrentSynchronizationContext());
0661デフォルトの名無しさん2013/11/23(土) 02:04:49.42
.NET4.0環境でもMicrosoft.Bcl.Async入れればasync/awaitが使えるみたいだな
0662デフォルトの名無しさん2013/11/23(土) 02:52:25.77
こんばんは。
ランダムな文章をつくろうとしているのですが、たとえば「あいうえお」という文字だけで10文字のランダムな文章を生成するにはどのような書き方をすればいいのでしょうか。
現状、string1,string2... と作っていって、乱数生成→switchで割り当て という流れで書いていますが、ソースがとても綺麗とはいえません。
複雑な処理だったらヒントだけでも結構です、よろしくおねがいします。
0663デフォルトの名無しさん2013/11/23(土) 03:29:33.01
>>659
前者はひとつのファイルパスを取得する度にパース処理を複数同時に実行する
後者は一度に全ファイルパスを取得してから連続でパース処理をする

後者のほうが速いしPCへの負担も少ない
非同期且つマルチスレッド処理が必要な場面って通常ほとんどないよね
ミクロ的な処理、例えば独自の画像処理アルゴリズムやパースアルゴリズムを
マルチコアを利用して高速処理したいなんて場合しか思い浮かばないけどな
0664デフォルトの名無しさん2013/11/23(土) 03:33:20.43
>>662
char[] 文字セット=new char[]{'あ'、'い'、'う'、'え'、'お'};
var r=rnd(5);
return 文字セット[r];
0665デフォルトの名無しさん2013/11/23(土) 07:57:10.24
>>660,663
環境はasp.net mvc4のコントローラーがTask<ActionResult>を返す奴で、非同期メソッドはSOAP通信の予定
それでも後者の方がいい?

2012使えるなら使いたかった・・
0666デフォルトの名無しさん2013/11/23(土) 08:30:16.90
Controlのオーバーライド出来ないプロパティをシャドウイングしただけなのに
フォームがちゃんとサブクラスのプロパティを使ってくれるのはなぜ?
0667デフォルトの名無しさん2013/11/23(土) 11:11:31.61
JSONとYAMLは標準ライブラリで用意されてもいいと思うんですが何故MSはしないのか
こういうのってどこかに議論されてないですか?
0668デフォルトの名無しさん2013/11/23(土) 11:21:44.02
TOIBEの言語ランキングの上から10個の中で
その2つのパーサーが標準ライブラリに用意されてる言語の数を数えてみろ

なんでこうマイナーな奴は声がでかいんだろうな
0669デフォルトの名無しさん2013/11/23(土) 11:23:09.63
JavaScriptSerializer
YAMLはマイナーで無駄に複雑なので無くて当然
0670デフォルトの名無しさん2013/11/23(土) 11:23:26.51
JSONはお前が知らないだけであるよ
0671デフォルトの名無しさん2013/11/23(土) 11:29:14.58
YAMLで標準ってRubyしか知らんな
JSONは結構標準サポートありそうだ
0672デフォルトの名無しさん2013/11/23(土) 11:29:31.63
YAMLは害悪だからさっさと消えるべき
たかが設定ファイルごときになんであんな複雑なもん使う必用があるんだよ
手書き向きのリッチな言語が欲しかったら中途半端なことするよりいっそスクリプト言語を設定に使うわ
0673デフォルトの名無しさん2013/11/23(土) 11:31:46.39
>>667
提案はこちらから可能
http://connect.microsoft.com/
0674デフォルトの名無しさん2013/11/23(土) 11:36:30.22
いやJSONはSystem.Web.Script.Serialization.JavaScriptSerializerで使えるからね
YAMLは永遠に無いと思う
0675デフォルトの名無しさん2013/11/23(土) 11:42:49.60
そもそも>>667の疑問はMSにぶつけるべきもので
MSが何を考えているか、外からああでもないこうでもないと議論してもナンセンスだろ
作者の心情を答えなさいゲームでもやるのか?
それとも同調票を取りまとめてごり押しを狙ってるのか?
0676デフォルトの名無しさん2013/11/23(土) 11:44:49.61
RELAX NGはどうなんかな
0677デフォルトの名無しさん2013/11/23(土) 11:54:30.94
一般的なXMLスキーマはMSにとって手書きするものじゃないから、
特に必要性は感じてないだろうね
0678デフォルトの名無しさん2013/11/23(土) 13:24:45.32
Nugetしろってことだろ
0679デフォルトの名無しさん2013/11/23(土) 13:43:00.26
C#のJSONなんてメモリに全部読み込む仕様じゃん
ファイルサイズの大きいデータを扱うならXMLReader最強説
0680デフォルトの名無しさん2013/11/23(土) 13:51:06.66
それなら素直にバイナリを送受信します
単純バカじゃないんで
0681デフォルトの名無しさん2013/11/23(土) 13:56:00.72
>>667
YamlDotNetでも使ってろ
0682デフォルトの名無しさん2013/11/23(土) 13:56:54.04
大きいって何KB〜MBを想定しているのだろう
0683デフォルトの名無しさん2013/11/23(土) 13:57:15.79
2GB超えてからだろ。
0684デフォルトの名無しさん2013/11/23(土) 14:08:44.68
100MB越えれば十分大きい
>>683は極端な例
0685デフォルトの名無しさん2013/11/23(土) 14:10:44.06
テキストにすると弄る馬鹿がいるからな。バイナリがいい。
0686デフォルトの名無しさん2013/11/23(土) 14:10:59.88
100MBをXMLで送るんですか?
0687デフォルトの名無しさん2013/11/23(土) 14:13:59.02
>>664
ありがとうございました。
0688デフォルトの名無しさん2013/11/23(土) 14:20:12.00
MenuStripにメニューを追加したんですが
メニューが有効でないときに、プロパティのShortcutKeyに設定したショートカットキーを押すと実行されます
メニューが有効じゃなくてもショートカットキーは効いちゃうんですがこういうものなんですか?
0689デフォルトの名無しさん2013/11/23(土) 15:12:25.69
100MBのjsonとかxmlはもう設計ミスだろ・・・
0690デフォルトの名無しさん2013/11/23(土) 15:24:54.92
>>689
別にそんなことはない。
データモデリング的には容量は絶対的な指標ではなく、かなり優先順位が低い要素になる
0691デフォルトの名無しさん2013/11/23(土) 15:25:52.90
MenuStripにドロップダウンに5つサブメニューを追加したんですが
追加する位置を指定する方法ってありませんか?
0692デフォルトの名無しさん2013/11/23(土) 15:26:35.99
LinuxでASP動かしたいからmod monoとXSPで格闘してるけどうごかねー・・・
こういう環境設定がダルすぎるからLinux嫌いなんだよなー
俺はプログラミングがしたいんであって鯖の設定なんてどうでもいいんだよ・・・
IISみたいなオールインワンmonoサーバー誰か作ってくれないかな
0693デフォルトの名無しさん2013/11/23(土) 15:32:47.86
今なら100M程度なら全然ありだな。
1Gレベルだと優先順位が低い、とは言ってられなくなる。
0694デフォルトの名無しさん2013/11/23(土) 15:33:08.19
youやれよ
0695デフォルトの名無しさん2013/11/23(土) 15:34:19.80
>>692
諦めてScalaでも使っとけ
0696デフォルトの名無しさん2013/11/23(土) 15:36:18.12
開発用のアプリケーションサーバーくらい起動できるようにしろよとは思う
0697デフォルトの名無しさん2013/11/23(土) 15:37:05.98
なんでも間でもLinuxでやろうとする奴はダメプログラマ
0698デフォルトの名無しさん2013/11/23(土) 15:40:43.16
問題があっても自分で何とかできるのがオープンソースの利点だろ?
手間をかける気がないなら、IISを使えって
0699デフォルトの名無しさん2013/11/23(土) 15:48:12.17
オレ、Windows嫌いなんで
プロはLinuxでやるものですから

みたいな初心者的思想なんだろ
0700デフォルトの名無しさん2013/11/23(土) 15:52:17.03
違うよw
Windows以外の案件でも.NET、よーするにC#で開発したいからだよ
ネイティブクライアントアプリはLinuxやOS Xで修正無しでそのまま動いたし
XamarinやUnityなんかでWindows以外でも.NETってぜんぜんイケてるじゃない
だったら大嫌いなJava使いたいないんだよ、俺はC#に惚れてんだよ
0701デフォルトの名無しさん2013/11/23(土) 15:53:05.02
ライセンスコスト無しでASP.NETが使えるぅ!
お得♪お得♪
ひゃっぽ〜い!!

みたいな初心者的思想かもしれない
0702デフォルトの名無しさん2013/11/23(土) 16:03:04.20
>>700
気持ちはわかるんだけど、どんどん自分からコミットしていく位でないと厳しいんじゃないかなぁ?

Xamarinのフォーラムとか見てみなよ。
何でこの程度の事が・・・と思うようなトラブルだらけだから。

それでも、OS X、iOS、Androidはまだいい。
Xamarinが積極的に改善してくれるから。
LinuxはXamarinの利益に結びつかないので、あんたみたいな奴が改善しなきゃ
ずっとそのままだぜ?
0703デフォルトの名無しさん2013/11/23(土) 16:03:49.12
俺は・・・・C#に・・・・惚れてるんだ(キリッ


wwwwwwwwwwwwwwwwwwwwwwwwwwww
0704デフォルトの名無しさん2013/11/23(土) 16:04:54.12
何でもいいけど幼稚臭い奴多いな。
0705デフォルトの名無しさん2013/11/23(土) 16:05:41.58
>>688と>>691お願いします
0706デフォルトの名無しさん2013/11/23(土) 16:07:53.75
>>688はそういうもの。

>>691は何言ってるのか理解不能。
回答を催促する前に文章を推敲することを少しは覚えるべき。
0707デフォルトの名無しさん2013/11/23(土) 16:09:22.66
>>704
そう思うならお前が来なきゃいいだろks
0708デフォルトの名無しさん2013/11/23(土) 16:10:23.95
>>706
文章書くの苦手だから推測してくれよ
この程度もわかんねーの?
0709デフォルトの名無しさん2013/11/23(土) 16:11:05.92
>>706
理解できないならレスすんなよ
0710デフォルトの名無しさん2013/11/23(土) 16:12:00.48
理解できないなら質問すんなよ
0711デフォルトの名無しさん2013/11/23(土) 16:13:44.94
5列分のメニュー項目作ったって事だろ

・新規作成
・開く
・保存
・名前を付けて保存
・閉じる

てな感じに
この間に新規二項目作りたいがその位置を指定するにはどうするかを聞きたいだけだと思うが
0712デフォルトの名無しさん2013/11/23(土) 16:14:35.39
>>710
スレタイ読めねーのかks
0713デフォルトの名無しさん2013/11/23(土) 16:14:37.01
>>706
理解できてもどうせお前の許容範囲を超えてるから
0714デフォルトの名無しさん2013/11/23(土) 16:17:59.24
途中にInsetすればいいんだよ。
0715デフォルトの名無しさん2013/11/23(土) 16:28:17.46
>>706-714
Insertで出来ました
ありがとうございます
説明不足ですみません
0716デフォルトの名無しさん2013/11/23(土) 16:38:30.16
>>713
初心者いじめしている程度のお前に言われたくない
0717デフォルトの名無しさん2013/11/23(土) 17:08:21.72
>>711
マニュアル読めよ
コレクション取り出して挿入するだけ
0718デフォルトの名無しさん2013/11/23(土) 17:11:29.20
はあ?
0719デフォルトの名無しさん2013/11/23(土) 17:12:57.45
>>718
口臭いです
0720デフォルトの名無しさん2013/11/23(土) 17:20:58.76
C、C++ユーザーで始めてC#やるんだけど。変数の寿命についておしえてちょ。
private void Form1_Load(.....省略)
{
  DataTable data = new DataTable();
  data.Columns.Add("商品",typeof(string));
  data.Columns.Add("値段",typeof(int));
  cmb商品選択.DataSource = data;    //←cmb商品選択=コンボボックスコントロール
  cmb商品選択.DisplayMember = "商品";
  cmb商品選択.ValueMember = "値段";
}
↑このようにForm1_Loadで処理をした後、同じFormクラス内で
private void CommandButton1_Click(.........省略)
{
  int 値段 = cmb商品選択.SelectedValue as int;
}
↑これで、選択された商品の値段を取得することができます。

質問
Form1_Load()内で、作成したDataTable dataは、ロードされている間はずっと生きてるんですか??それともデータがコピーされているのですか?
例えば、
private void Form1_Load(....省略){  int a = 1;  }
と
private void CommandButton1_Click(.....省略){  int a = 2;  }
があったとして、
それぞれのint aは、それぞれの関数の処理が終わったら、そこで解放されて値は保証されないのがC言語だったのですが....。
C#の場合は、cmb商品選択はメンバ変数として領域が確保されていますが、DataTable dataはメンバ関数内のローカル変数です。
なのに、データが保証されているのは、cmb商品選択.DataSource = data; で丸々コピーをしているのですか?
0721デフォルトの名無しさん2013/11/23(土) 17:25:02.02
ローカル変数はメソッドを抜けるまで
インスタンス変数はオブジェクトが破棄されるまで
静的変数はしらん
0722デフォルトの名無しさん2013/11/23(土) 17:27:07.30
>>721
そうすると
cmb商品選択.DataSource = null
or
data = null;
とするまでは、
メモリ上にDataTable dataが生きてるってことですか?
0723デフォルトの名無しさん2013/11/23(土) 17:28:33.30
>>720
どうでもいいけどCはともかくC++は未経験者の発言としか思えないw
0724デフォルトの名無しさん2013/11/23(土) 17:35:38.77
オブジェクトの生存期間となると
null入れても即開放されるわけじゃないし
可視範囲として認識したほうが良いんじゃないのか
0725デフォルトの名無しさん2013/11/23(土) 17:37:21.73
プロではないので、こまけー名前はいいの。
でも寿命は、把握しておかないとあかんでしょ。
0726デフォルトの名無しさん2013/11/23(土) 17:37:25.29
ローカル変数は最終使用箇所まで
P/Invokeで使うような用途だとスコープ内でもGCされてる可能性がある
0727デフォルトの名無しさん2013/11/23(土) 17:39:26.12
C++とC#はほとんど同じ。

ただC#のデストラクタは欠陥品で使い物にならないということぐらい。
0728デフォルトの名無しさん2013/11/23(土) 17:39:44.38
C#にはGCというものがあってだな
通常の変数経由でのアクセスが可能な限りは勝手に解放されることはないので気にする必要はない
0729デフォルトの名無しさん2013/11/23(土) 17:40:06.89
>>724
そうすると、実際には、データの保証はないってこと?

Class Fomr1
{
  DataTable data;

  private void Form1_Load(...............)
  {
    data = new DataTable();
    cmb商品選択.DataSource = data;
  }
  private void CommandButton1_Click(..........)
  {
    処理
  }
}

としなきゃいけないってことなの?
0730デフォルトの名無しさん2013/11/23(土) 17:40:21.09
C++と違ってローカル変数の参照を返してもいいです
0731デフォルトの名無しさん2013/11/23(土) 17:41:54.39
C#にはGCというものがあってだな
通常の変数経由でいらなくなってもなかなか解放してくれないこともあっていろいろ気にする必要がある

using、Dispose()使ったりとか
0732デフォルトの名無しさん2013/11/23(土) 17:42:14.74
>>729
cmb商品選択から参照されてるから消えない
0733デフォルトの名無しさん2013/11/23(土) 17:42:17.20
C++でもnewでインスタンス作ったならポインタ返しても問題ないよ
0734デフォルトの名無しさん2013/11/23(土) 17:42:30.41
面倒くさいなw

そのForm1のインスタンスが破棄されるまでdataは確保されたまんま
0735デフォルトの名無しさん2013/11/23(土) 17:42:46.61
>>720 >>729
newはC言語のmallocと同じ。
だからmallocで確保した領域と同じように扱えばいいだけ
違う点は自分でfreeしなくてもGCが自動的に解放してくれること
0736デフォルトの名無しさん2013/11/23(土) 17:43:13.19
>>728
>通常の変数経由でのアクセス....


これは、
cmb商品選択.DataSource = data;で紐付けされている間。
という解釈でいいの?
それとも
data.インスタンス変数、data.クラス変数........と書ける範囲(つまり例だとForm1_Load()の中)だけ
という解釈でいいの?
0737デフォルトの名無しさん2013/11/23(土) 17:44:26.83
紐付けされている間で且つ、cmb商品選択も生きてる間。
0738デフォルトの名無しさん2013/11/23(土) 17:44:27.95
前者です
0739デフォルトの名無しさん2013/11/23(土) 17:44:55.67
>>736
参照型変数にはオブジェクトのポインタが入っている
newしたオブジェクト(領域)のポインタがどこかの変数に入ってさえいれば解放されることはない
07407202013/11/23(土) 17:45:18.31
>>723-735
ありがと。
>>736を書いてる間に、新たな疑問も解決のレスがあったようだ・・・。

理解しました。
0741デフォルトの名無しさん2013/11/23(土) 17:50:28.50
>>740
こーゆー>>734のように人を上から目線のわりに、全然言語仕様を理解してないやつより>>740は遥かに上位だと思うwww
寿命はしっかりと覚えるのは安定したシステムを作るのに絶対必要だからな 良いことだ
0742デフォルトの名無しさん2013/11/23(土) 17:56:17.69
適当な解答ばかりだな
プロセス終了以外では破棄される保証はないだろ
0743デフォルトの名無しさん2013/11/23(土) 17:57:03.74
>>735
Cユーザーにはこれが一番わかりやすいだろうな。
てかC#バリバリです!!!なんて言ってるやつで実はわかってないやつは本当に多い。
Dispose()は何のためにあるの???なんてやつが業務システム組んでるかと思うとゾッとする。
0744デフォルトの名無しさん2013/11/23(土) 17:58:13.94
>>742
「破棄される保証の質問」じゃねーべな
「値が保証されている期間(寿命)」の質問だべな
0745デフォルトの名無しさん2013/11/23(土) 17:58:22.81
ドキュメントや仕様を知ろうとしない人のためにあるものでないことは確かですね>Dispose
アホはおとなしくCloseだのDestroyだのしなさい
0746デフォルトの名無しさん2013/11/23(土) 17:58:52.86
>>742
めくらは目のお医者が先だぞ
小学校の方がいいかな
0747デフォルトの名無しさん2013/11/23(土) 18:01:17.19
>>745
デストラクタが欠陥品だからDisposeを追加したんだろ。
0748デフォルトの名無しさん2013/11/23(土) 18:01:40.43
たびたびすいません
フォームにmenuStripを配置して
親メニュー ファイル(&F) の下に
サブメニュー 開く(&O) を置きました
んでALT+Fでファイル(F)にフォーカスが移動するのは当然なんですが
ALTだけを押してもフォーカスがファイル(F)に移動してしまいます
KeyDownイベントにALT+Aで特定の処理を行いたいのですが、ファイル(F)にフォーカスが映ってしまうのでこまっています

VC#2010とかJane Styleなどメジャーなソフトでは
ALTを押したときはメニューにフォーカスが移動しませんが、ALTを離したらフォーカスが移動するようです
ALTを離すまでに、メニューにないキーと組み合わせることで、メニューにフォーカスがうつらないようなんですが
これはどうやるのでしょうか?
0749デフォルトの名無しさん2013/11/23(土) 18:02:11.61
Disposeがデストラクタの代わりになると思っている人がここに一人
別にそんな規定はない
0750デフォルトの名無しさん2013/11/23(土) 18:03:22.19
そういう風にプログラムを書けば良い
0751デフォルトの名無しさん2013/11/23(土) 18:04:50.82
>>749
0点。
0752デフォルトの名無しさん2013/11/23(土) 18:05:17.09
コードぱくるけど

DataTable *p;
private void Form1_Load(.....省略)
{
  DataTable data = new DataTable();
  cmb商品選択.DataSource = data;    //←cmb商品選択=コンボボックスコントロール
  p = &data;
}
private void CommandButton1_Click(.........省略)
{                                  ↓後述の質問用マーク
  cmb商品選択.DataSource = null;    //@
  p++;                            //%
  p--;                            //#
  cmb商品選択.DataSource = p;      //$
  p++;                            //\
  cmb商品選択.DataSource = null;    //&
}
ってことやったら100%の保証がなくなるのはどこ?
@の位置?%の位置?#の位置?$の位置?\の位置?&の位置?
というのを聞かれたことがあって答えられなかったことが昔あった(;_;)
0753デフォルトの名無しさん2013/11/23(土) 18:05:44.40
>>751
頭にバグがあるようですな
そちらの欠陥の修復からどうぞ
0754デフォルトの名無しさん2013/11/23(土) 18:06:20.78
disposeしようが参照がなくなろうが寿命ではない
0755デフォルトの名無しさん2013/11/23(土) 18:06:51.97
>>753
さっさと答えを書けよ、ハゲ。
0756デフォルトの名無しさん2013/11/23(土) 18:06:56.73
コードぱくるのはいいけど、C++のつもりなのかこれは
0757デフォルトの名無しさん2013/11/23(土) 18:09:06.63
C#じゃこんな風にポインタを使えない
0758デフォルトの名無しさん2013/11/23(土) 18:11:32.24
>>752
質問する前にコンパイル通るか確認しようや
な?
0759デフォルトの名無しさん2013/11/23(土) 18:11:36.88
>>752
c#ではそういうコードは書けない。
確保したメモリがどんどん移動するのでまずは固定してからじゃないとポインタは取得できない。
固定した場合は固定解除するまでは保持される。
0760デフォルトの名無しさん2013/11/23(土) 18:42:04.64
>>748
フォームにこのコードを書く。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
&nbsp;if (keyData == (Keys.Alt | Keys.A))
&nbsp;{
&nbsp;&nbsp;Console.WriteLine("alt+A");
&nbsp;&nbsp;return true;
&nbsp;}
&nbsp;return base.ProcessCmdKey(ref msg, keyData);
}
07617602013/11/23(土) 18:44:05.51
訂正

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Alt | Keys.A))
{
Console.WriteLine("alt+A");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
0762デフォルトの名無しさん2013/11/23(土) 18:46:26.10
ソース暗号ブームきてんね。
0763デフォルトの名無しさん2013/11/23(土) 18:53:41.39
int[,] screen = new int[width, height];

の int[,] ってどういう意味なんでしょうか?
0764デフォルトの名無しさん2013/11/23(土) 18:54:25.80
>>760-761
ありがとうございます
定義してないショートカットー気を押してもフォーカスがメニューに行くので
このように改造しました

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Alt | Keys.F))
{
this.ファイルFToolStripMenuItem.ShowDropDown();
return base.ProcessCmdKey(ref msg, keyData);
}
return true;
}

C#ってなんでこういう仕様になっているのでしょうか
不便で仕方ないです
0765デフォルトの名無しさん2013/11/23(土) 18:54:41.75
new intの後ろに書いてあるだろ
0766デフォルトの名無しさん2013/11/23(土) 18:56:07.56
ただ>>764だとALTだけを押してメニューにフォーカスされないので妥協します
0767デフォルトの名無しさん2013/11/23(土) 18:57:46.37
>>764
それだとALT*F4で閉じられなくなっちゃうよ
0768デフォルトの名無しさん2013/11/23(土) 18:59:03.68
MENDOKUSEEEEEEEEEEEEEEEE
0769デフォルトの名無しさん2013/11/23(土) 19:00:24.45
C#はかゆい所に余計なことをしてくる言語
0770デフォルトの名無しさん2013/11/23(土) 19:10:07.02
>>758
ビルダーを拡張してるんだろ
マイクロソフトはいろいろ用意してくれてるから簡単だぞ
0771デフォルトの名無しさん2013/11/23(土) 19:30:38.79
XSPやっと動いたわ・・・ほんと開発環境くらいyumで一括インストールさせてくれよ
なんかXamarinも商売っ気出しまくりな割にこの辺ぜんぜんユーザビリティじゃないよな
0772デフォルトの名無しさん2013/11/23(土) 19:33:43.58
class Block {
public Point[] sq;
public int color;
public Block(Point[] sq, int color) {this.sq = sq; this.color = color;}

}


これの Point[] とは何なのでしょうか?調べたらpoint構造体というものなのかなと思いましたが、
なにをするものなのかがよくわかりませんでした。


また、{}の中は何をしているのでしょうか?

おそらく初歩的な質問だと思うのですが、この程度の理解度ですと、どこから勉強すべきでしょうか?
ご指摘いただけると幸いです。
0773デフォルトの名無しさん2013/11/23(土) 19:36:00.80
配列
コンストラクター
0774デフォルトの名無しさん2013/11/23(土) 19:36:15.05
>>772
その程度の理解度だとガチの初心者レベル
つまりC#の一番最初から学ぶべき
0775デフォルトの名無しさん2013/11/23(土) 19:38:07.13
>>773
>>774
ご指摘ありがとうございます。
基本から頑張ってみます。
0776デフォルトの名無しさん2013/11/23(土) 19:39:23.16
Xamarinって今どの分野狙ってんの?
0777デフォルトの名無しさん2013/11/23(土) 19:54:21.63
水虫の薬?
0778デフォルトの名無しさん2013/11/23(土) 20:08:18.10
>>776
iOS/Androidアプリの開発環境でしょ
VS使ってコーディングからコンパイルまで出来るのは魅力的だよね
Windows上からOS XとRemoteで直接iOSにデプロイまでできるみたいだし
サブスクリプションの制約と価格は糞だけどな
0779デフォルトの名無しさん2013/11/23(土) 20:35:37.53
アプリっても2種類あるじゃん
サーバーサイドかクライアントサイドか
でもASPに力入れてないって発言から察するにクライアントサイドしか見てないんだろうな
0780デフォルトの名無しさん2013/11/23(土) 20:45:22.07
>>777
ダマリンをご使用中ですか
そんな奴は家に上げられねえ
0781デフォルトの名無しさん2013/11/23(土) 21:48:37.46
金がある奴はIISを使うからね。
XSPは貧乏人しか使わないので、商売にならない。
0782デフォルトの名無しさん2013/11/24(日) 00:31:07.69
>>754
アクセスする手段がなくなったらゴミになるだけだろ
実際には死んでいるがメモリーを圧迫しているだけな
0783デフォルトの名無しさん2013/11/24(日) 00:41:59.65
まるでお前だね
0784デフォルトの名無しさん2013/11/24(日) 01:17:34.12
>>661
async/awaitの為だけに2012買ったのに・・・orz
0785デフォルトの名無しさん2013/11/24(日) 01:18:10.51
m9(^Д^)
0786デフォルトの名無しさん2013/11/24(日) 01:19:46.62
いやasync/awaitは2012以降でしか使えないぞ
>>661は2012で.NET4.0をターゲットにしているときにasync/awaitを使う方法
0787デフォルトの名無しさん2013/11/24(日) 01:24:59.31
VS2010用はAsync CTP Libraryがあるぞ
ただし、更新プログラムの干渉でそのままじゃインストールできず、VSの再インストールが必要になる可能性が高い
0788デフォルトの名無しさん2013/11/24(日) 05:35:24.27
間違って>>780の靴で歩いてみたい
0789デフォルトの名無しさん2013/11/24(日) 06:23:35.79
想像してワロタ
0790デフォルトの名無しさん2013/11/24(日) 09:14:03.74
ガベージコレクションでないC#早く出ないかな
0791デフォルトの名無しさん2013/11/24(日) 09:41:41.96
GCは言語仕様なので、それはもうC#mとかそんな何かだな
0792デフォルトの名無しさん2013/11/24(日) 09:57:27.25
GCを使わないフレームワークも用意しないと。
0793デフォルトの名無しさん2013/11/24(日) 10:54:52.39
必要も無いのにファイナライザを使ってないかい?
ファイナライザのないオブジェクトのGCは遅くないよ。
0794デフォルトの名無しさん2013/11/24(日) 11:18:59.70
GCが鬱陶しい時って非同期で2つ以上のスレッド並列化するときくらいかな
C#のI/Oの遅さって何が原因なんだろう、業務システムばかり作ってる奴等ってDBやADOの扱いには長けてるけど
画像一覧表示でImage大量に並べたりするから笑ったわ、あいつら大量のデータ扱う癖に言語のパフォーマンスなんて気にしないんだからw
0795デフォルトの名無しさん2013/11/24(日) 11:26:01.23
>>790
Borland C++ Builder かな。
売り方工夫すればもっと流行ってたと思う。
0796デフォルトの名無しさん2013/11/24(日) 11:28:44.82
>>794
> 画像一覧表示でImage大量に並べたりするから笑ったわ、あいつら大量のデータ扱う癖に言語のパフォーマンスなんて気にしないんだからw

それ言語のパフォーマンスと言うよりライブラリーとかの方じゃね?
0797デフォルトの名無しさん2013/11/24(日) 11:31:12.44
ボーランドは今
0798デフォルトの名無しさん2013/11/24(日) 11:39:18.16
業務システムはパフォーマンスよりコードのシンプルさが重要
0799デフォルトの名無しさん2013/11/24(日) 11:42:46.20
>>795
DelphiもGCなかったよね?
.NET版のDelphiはどうだったのだろう。

ボーランドはヘジたんの心の中に・・・
0800デフォルトの名無しさん2013/11/24(日) 11:55:54.83
>>794
画像一覧表示では画像を一個ずつ表示しますとかにしたらいいん?
そりゃスライドショーやがな
0801デフォルトの名無しさん2013/11/24(日) 12:11:22.75
画像を読む際の言語のパフォーマンスってなんだよ
P/Invokeのオーバーヘッドか?
0802デフォルトの名無しさん2013/11/24(日) 12:15:44.82
一覧表示する前にまだ表示する必要のない画像まで読み込んで縮小加工してるんだろう。
0803デフォルトの名無しさん2013/11/24(日) 12:18:07.83
業務ならそれこそ表示する画像だけDBから引っ張ってくると思うんだけど…
0804デフォルトの名無しさん2013/11/24(日) 12:22:32.15
その辺にしとけ
日曜の昼から無粋な突っ込みで>>794の気分を害する権利はお前らにはない
0805デフォルトの名無しさん2013/11/24(日) 13:37:32.80
かっこいい・・・
0806デフォルトの名無しさん2013/11/24(日) 13:53:44.84
Imageコントロール並べてそこに出力してるってことね
表示形式まで動的に変更するのにダブルバッファリングとか考えてないんだよね
実際に複数Imageに出力するのと単体Imageにオフスクリーンサーフェスで画像処理してから1つのビットマップとして出力した場合パフォーマンスが何倍も違う
0807デフォルトの名無しさん2013/11/24(日) 14:00:23.07
業務システムで遅いって言われたら、機械買い替えさせるチャンスなのだよ
0808デフォルトの名無しさん2013/11/24(日) 14:05:40.79
Win95の時代じゃあるまいしそんな程度でパフォーマンスの違いなんて出ないと思うけどw

っていうかスクロールが必要になるほど多数の画像の表示が必要になるなら、どっちにしろ
仮想化的な処理が必要になるけどそのあたり分かってるのかね
0809デフォルトの名無しさん2013/11/24(日) 14:10:44.35
出るよ、やったことあるの?
1920x1080のJPEG画像を100ms更新した場合
6つのImageコントロールにそれぞれ同時出力した場合と、ダブルバッファリングで1つに出力した場合のパフォーマンスって半端じゃなく違う
0810デフォルトの名無しさん2013/11/24(日) 14:13:42.67
それのどこが画像の一覧表示なのか
0811デフォルトの名無しさん2013/11/24(日) 14:15:51.42
>>809
素人はあまり知ったような口をきかないほうがいいよ
恥をかくことになる
08128042013/11/24(日) 14:28:34.60
せっかく庇ったのに
馬鹿じゃねえのそのまま死ね
0813デフォルトの名無しさん2013/11/24(日) 17:46:54.98
まだ始めたばっかりの頃マップの表示かなにかで、自力で描画するとかわからなくてpicturebox10000個動的に作って並べたことある。
画像なしでインスタンス作成でプログレスバー出すレベルだった
0814デフォルトの名無しさん2013/11/24(日) 17:48:00.79
お前だけ適度に改行しないからすぐ分かるな
0815デフォルトの名無しさん2013/11/24(日) 17:56:01.22
携帯とかスマホから書いてるとそうなるね
0816デフォルトの名無しさん2013/11/24(日) 19:33:06.79
プログラマなら
そのへん
考えようぜ
0817デフォルトの名無しさん2013/11/24(日) 19:36:34.81
字余り字足らずがはんぱないな
0818デフォルトの名無しさん2013/11/24(日) 19:44:47.10
恥ずかしいやつだな
まったくww
08196652013/11/24(日) 20:32:46.20
質問追加
非同期メソッドって、awaitもしくはContinueWithで繋いでいくものじゃないの?

↓こういうやり方だと同期メソッドと変わらないと思うんだが、考え方間違ってる?
var t = 非同期メソッド();
t.Wait();
継続処理();

※非同期メソッドは、Task<T>を返すメソッド、もしくは、イベントベース非同期メソッドをTask<T>を返すようにラップしたもの
これとか→http://blogs.msdn.com/b/pfxteam/archive/2009/06/19/9791857.aspx
0820デフォルトの名無しさん2013/11/24(日) 20:54:58.45
基本的にはそうだけど時と場合によるし…
0821デフォルトの名無しさん2013/11/24(日) 21:04:33.49
MDIでMenuStripマージしない方法教えてほしいんだが
0822デフォルトの名無しさん2013/11/24(日) 21:09:20.89
マージしないように設定するだけでしょ
0823デフォルトの名無しさん2013/11/24(日) 21:15:36.45
そういうプロパティがあったことしか覚えてないからMSDNでも見な
0824デフォルトの名無しさん2013/11/25(月) 10:23:13.21
VisualStudioでforeachと打っても、括弧の那珂でインテリセンスが効かないのはなぜですか?
「foreach (」のあとに型以外が来ることがあるのですか?
0825デフォルトの名無しさん2013/11/25(月) 11:36:08.89
>>824
艦これでもやってろw
08268242013/11/25(月) 12:19:46.33
タイプミスです。
那珂→中
なんでこんな変換が・・・
0827デフォルトの名無しさん2013/11/25(月) 12:30:17.43
効くけど?
0828デフォルトの名無しさん2013/11/25(月) 19:36:00.65
(打った段階ではポップアップは出ない Ctrl+SPACE打てば出せる
何か一文字打ったらポップアップが出る

まあ最近はforeachのときはもうvarしか打たなくなったけど
0829デフォルトの名無しさん2013/11/25(月) 19:37:49.77
foreachでtabおせばok
0830デフォルトの名無しさん2013/11/25(月) 20:28:27.74
private ABC()
{
 DataTable d = new DataTable();
 データテーブルの作成
 DataGridViewコントロール.DataSource = d;
}
ABCが毎秒呼ばれるような場合は、DataTableをDispose()するように変更したほうがいいの?
↓こんなかんじで。

private DataTable d = null;
private ABC()
{
 if(d != null)
 {
   DataGridViewコントロール.DataSource = null;
   d.Dispose();
 }
 d = new DataTable();
 データテーブルの作成
 DataGridViewコントロール.DataSource = d;
}
0831デフォルトの名無しさん2013/11/25(月) 20:35:42.11
神経質だな
0832デフォルトの名無しさん2013/11/25(月) 20:54:54.54
DataTableなんてちょっと多めにメモリ食ってるだけのマネージオブジェクトだから放置でも問題ない
0833デフォルトの名無しさん2013/11/25(月) 21:12:21.33
メモリ管理はGCに頼らず可能な限りPGが管理すべき。
業務で組むならな。
08348242013/11/25(月) 21:16:14.63
>>828
>>829
一応出す方法もあるんですね。次からやってみます。
0835デフォルトの名無しさん2013/11/25(月) 21:17:20.43
こう自動GCを止めることは出来ないのかね
0836デフォルトの名無しさん2013/11/25(月) 21:23:36.00
仕事でVSを使うとVSの偉大さを痛感する
Mac版も出してMS様
0837デフォルトの名無しさん2013/11/25(月) 21:25:23.30
>>833
アンマネージドならね
>>832はマネージドと言っている
0838デフォルトの名無しさん2013/11/25(月) 21:37:02.21
駄目な時にはファイナライザスレッドごと固まってどうしようもにい
真面目に考えるだけ無駄
0839デフォルトの名無しさん2013/11/26(火) 01:39:00.01
>>835
お前にやらせるよりは自動でやった方がいいってのが時代の流れですね
0840デフォルトの名無しさん2013/11/26(火) 01:57:04.76
なんでclose()とdisponse()があるの?
0841デフォルトの名無しさん2013/11/26(火) 02:00:01.41
その話はしません
0842デフォルトの名無しさん2013/11/26(火) 02:00:07.08
そこはdispenseぐらいボケろよ
0843デフォルトの名無しさん2013/11/26(火) 02:03:01.71
>>842
それでボケとかwww
くっさwwwwwwwwwwwwwwwwwwwww
0844デフォルトの名無しさん2013/11/26(火) 07:05:37.13
マネージド、アンマネージド
云々のまえに、さらには解放の前に、無駄なオブジェクトを発生させないこと

これが重要だとmsdnに書いてある
まぁ途中までしか読んでないけど
0845デフォルトの名無しさん2013/11/26(火) 08:10:51.95
>>840
リソースは保持したまま接続だけは閉じておくとかあるだろ
0846デフォルトの名無しさん2013/11/26(火) 08:14:32.08
>>840
「Closeで閉じないと気持ち悪い」と言うメンタル的なものじゃないかな?
0847デフォルトの名無しさん2013/11/26(火) 09:24:17.09
open-closeを対応付ける意味を強調するものと
仕組みを作って自動的にdisposeするものというちがいじゃないか
0848デフォルトの名無しさん2013/11/26(火) 10:08:08.22
>>845-847
意見分かれすぎだろ
0849デフォルトの名無しさん2013/11/26(火) 10:27:52.19
>>833
Disposeで管理できるのはアンマネージドリソースだけで
メモリ回収はあくまでもGCの仕事だぞ
Disposeを呼び出したからといってメモリが開放されるわけじゃない
0850デフォルトの名無しさん2013/11/26(火) 10:50:53.21
>>845
接続そのものがリソースなんですけど
0851デフォルトの名無しさん2013/11/26(火) 10:53:35.79
>>830
DataSetやDataTableがDisposableなのは、
MarshalByValueComponentのせい
リモーティングでデータセットを通信に使わなければ、
外部リソースは抱えてない
0852デフォルトの名無しさん2013/11/26(火) 11:55:14.22
ソケット接続の際に以下のエラーでうまくいきません
全く分からずピンチなのでアドバイスなど頂けたら幸いです。

System.Net.Sockets.SocketException (0x80004005)
ソケットが接続されていないか、
sendto 呼び出しを使ってデータグラム ソケットで送信するときにアドレスが指定されていないため、
データの送受信を要求することは禁じられています。
0853デフォルトの名無しさん2013/11/26(火) 12:21:00.14
>System.Net.Sockets.SocketException (0x80004005)
だけじゃ、そこに書いてる以上のことはわからない

udp使ってるの?
0854デフォルトの名無しさん2013/11/26(火) 12:46:54.69
ボタンを押したら爆発エフェクトが出るようにしたいんだけどどうやるん?visualstudioでつ
0855デフォルトの名無しさん2013/11/26(火) 13:27:55.75
スヌーピーは関係あるの?
0856デフォルトの名無しさん2013/11/26(火) 16:52:12.26
やっぱり逆アセに強いのは
C#より圧倒的にJavaだよな
0857デフォルトの名無しさん2013/11/26(火) 16:58:32.17
なんで?
0858デフォルトの名無しさん2013/11/26(火) 17:04:12.59
中間コードを吐かないから
0859デフォルトの名無しさん2013/11/26(火) 17:45:53.14
逆アセ対策なんかしてるの?
どーせ破る気なら破られるんよ
0860デフォルトの名無しさん2013/11/26(火) 17:50:00.38
>>859
中国にマネされないように
逆アセ対策は必要だろ
0861デフォルトの名無しさん2013/11/26(火) 17:55:55.14
>>860
中国人舐めすぎww
0862デフォルトの名無しさん2013/11/26(火) 17:59:22.54
中華なら実行ファイルが出回る前にソース入手してるレベル
0863デフォルトの名無しさん2013/11/26(火) 18:06:06.04
コメントは逆アセ不可能だよね?
遊びで変なコメント書くタイプだから
逆アセできたらまずい
0864デフォルトの名無しさん2013/11/26(火) 18:07:33.77
コンパイル時に削除されるだろ
ドキュメンテーションコメントは知らんが
0865デフォルトの名無しさん2013/11/26(火) 18:13:05.41
誰かドキュメンテーションコメントについても教えてください・・・
0866デフォルトの名無しさん2013/11/26(火) 19:04:02.65
>>848
C#にはVBみたいにクラスのメンバーにインターフェイスの別名のメンバー名を
被せて公開する機能がないからしょうがないけど、あまり格好はよくないな。
0867デフォルトの名無しさん2013/11/26(火) 19:22:28.55
Disposeの扱いはMS内部でも.NET1.xと2.0の間で
考え方が変わってきた気がする。
using構文が追加になったのは.NET2.0からで、
このへんから自動リソース管理といった側面が強くなって、
NET3.5で決定的になった。
0868デフォルトの名無しさん2013/11/26(火) 19:40:37.09
usingはC#1.0からあるよw
VBは2005からだけど
0869デフォルトの名無しさん2013/11/26(火) 19:55:40.12
ありゃ、勘違いしてたかorz
0870デフォルトの名無しさん2013/11/26(火) 20:17:06.75
マネしようとすればC#もjavaもたいしてかわらんだろ
0871デフォルトの名無しさん2013/11/26(火) 21:02:11.60
C#の内部エンコーディングってなんでしょうか?
コンソールアプリとかで普通にコマンドプロンプトに出力できるということはSJIS?
0872デフォルトの名無しさん2013/11/26(火) 21:06:57.51
UNICODE リトルエンディアン
入力と出力時に変換している。
0873デフォルトの名無しさん2013/11/26(火) 22:15:12.78
>>866
いや明示的実装で隠せばクラスの外から見る限りは実質同じだ
VBやC++/CLIで明示的に別名で実装してもIDisposableにキャストすれば当然Dispose呼べるんだから
0874デフォルトの名無しさん2013/11/26(火) 22:23:40.20
C#の場合
ネストが深くなるとしたらswitchとif
どちらの方が速いですか?
0875デフォルトの名無しさん2013/11/26(火) 22:27:14.46
☆☆☆☆☆☆ここから想像で語る不毛なスレになります☆☆☆☆☆☆

自分で測定しろカス
0876デフォルトの名無しさん2013/11/26(火) 22:34:02.48
>>875
わからないならレスすんなよww
0877デフォルトの名無しさん2013/11/26(火) 22:35:23.87
>>874
実データで実行してみて、どの条件が何回に一回ヒットするか調べます
おそらく極端に偏っているはずです
その場合、頻度が高い順にifを並べます
もし偏ってない場合はswitchを使います
0878デフォルトの名無しさん2013/11/26(火) 22:40:58.35
>>877
神回答ですね
0879デフォルトの名無しさん2013/11/26(火) 22:59:54.34
>>873
だから明示的実装で隠したらIDisposableにキャストしないとDispose呼べなくなっちゃうでしょ?

VBの仕様なら、Closeという同じpublicメソッドにIDisposalbe.Disposeを
割り当てることが出来る。(重要なのは、言語的にIDisposable.Disposeの実態が
Closeであることを保証できること)
08808742013/11/26(火) 23:08:43.37
>>877
頻度が高いもの特定する方法がわかりません
遺伝的アルゴリズムなどで頻度を特定するのでしょうか?
0881デフォルトの名無しさん2013/11/26(火) 23:12:47.68
え・・・?
0882デフォルトの名無しさん2013/11/26(火) 23:13:25.16
統計による分岐予測はCPUに実装済みです。
0883デフォルトの名無しさん2013/11/26(火) 23:15:27.76
>>879
でもDbConnectionは基底クラスのComponentがIDiposableだから
CloseにImplements IDisposable.Disposeは付けられないぞ
0884デフォルトの名無しさん2013/11/26(火) 23:18:27.51
Cとか使ってるわけでもないんだし
プログラムの見やすさ >>>> スピード
だろ
分岐が多いのはswitchでそんなに多くないのはifでいい
0885デフォルトの名無しさん2013/11/26(火) 23:20:13.16
ifを使わないブームが懐かしいな。
0886デフォルトの名無しさん2013/11/26(火) 23:20:27.02
まーたはじまった
0887デフォルトの名無しさん2013/11/26(火) 23:21:49.21
流れが速くなるのはマルチスレッド
0888デフォルトの名無しさん2013/11/26(火) 23:24:32.52
はいはい死ね
0889デフォルトの名無しさん2013/11/26(火) 23:46:07.20
AggregateException.Handle(() => true) でTaskのファイナライザの例外を抑止できるであってる?

エラーが発生したTaskを捨てる場合の話です
0890デフォルトの名無しさん2013/11/27(水) 00:54:08.46
どうしてそういう解釈になると思うの?
0891デフォルトの名無しさん2013/11/27(水) 00:59:13.97
ILSpyだとコメントも見えるのね
0892デフォルトの名無しさん2013/11/27(水) 01:00:50.84
なわけない
そんな情報はアセンブリに残らない
0893デフォルトの名無しさん2013/11/27(水) 03:03:26.97
頻度が高い云々というよりswitchはジャンプテーブルつかうから
定数値の比較には必ずswitch使うべきとかじゃないの
0894デフォルトの名無しさん2013/11/27(水) 03:34:26.73
つか、時間かけて調査するほどパフォーマンス改善は望めないから
読みやすさとか好みで選択しても構わんでしょ
0895デフォルトの名無しさん2013/11/27(水) 03:36:59.07
初心者ほど速度に拘る
0896デフォルトの名無しさん2013/11/27(水) 07:02:36.24
そうそう。
C#じゃなくてCでの実例だがだが、、
関数呼び出しを減らして1つの関数が何千行にもなってたりとか、
確かに同じ配列に対する処理ではあるが、for文を減らす為に
色んな異なる機能を1つのループに入れ込んだりとか。
当然それも関数分け無しで。。
0897デフォルトの名無しさん2013/11/27(水) 07:06:21.62
>>890
TaskScheduler.UnobservedTaskException でエラーが出なくなったことが根拠なんだが、そういうことがmsdnとかにも載ってないし、どこ見ればいいんだか・・
0898デフォルトの名無しさん2013/11/27(水) 07:18:31.63
メモリ管理を意識しない結果、メモリ不足に陥る.NETって欠陥じゃね?

.NETのプログラム4.5本流すとモッサリが始まる。
作りが悪いのは確かだろうが、メモリを潤沢に使いすぎ言語仕様が諸悪の根源な気がする
0899デフォルトの名無しさん2013/11/27(水) 07:25:22.46
だからってそんな連中にC++で書かせてもメモリ破壊で動かないプログラムが出来上がるだけだよ
0900デフォルトの名無しさん2013/11/27(水) 07:28:10.95
>>898
お前にウンコード書かれるよりマシなんだよ
0901デフォルトの名無しさん2013/11/27(水) 07:28:42.43
マシンスペック書かずにンな事言われてもなあ
0902デフォルトの名無しさん2013/11/27(水) 07:30:44.63
C++は誰でもMSやGoogleの社員ですら漏れなく
メモリリークやメモリ破壊を発生させまくる言語ですよ?
0903デフォルトの名無しさん2013/11/27(水) 07:41:02.34
メモリは使った方がいい
0904デフォルトの名無しさん2013/11/27(水) 07:42:55.58
C++だってメモリ管理は極力RAIIに任せるのが普通だろ
あれ安全のために処理効率をけっこう犠牲にしてるんだぞ
それだけ人力メモリ管理は嫌われてるんだ
0905デフォルトの名無しさん2013/11/27(水) 08:22:02.46
>>904
処理効率を犠牲にってどこで犠牲になってるの?
0906デフォルトの名無しさん2013/11/27(水) 08:30:38.83
メモリ拡張しろよ
0907デフォルトの名無しさん2013/11/27(水) 08:39:06.14
Form1枚だけなのに8MB
タスクマネージャーで一覧にされるとちょっと恥ずかしい
0908デフォルトの名無しさん2013/11/27(水) 08:43:15.54
>>902
C/C++の学習課題で2本ほどゲーム開発したがリリース時にリークは一件もなかったけどな
リークさせる人ってどこかおかしいのかも
注意力とかが散漫になる障害ってあるじゃん
ああいうの患ってんじゃね?
0909デフォルトの名無しさん2013/11/27(水) 08:50:26.00
>>908
規模が小さけりゃ余裕
大規模且つ多人数で開発する様になると、そんな事言っていられなくなる
0910デフォルトの名無しさん2013/11/27(水) 10:23:49.69
自己愛性パーソナリティ障害っぽいのがいるな
0911デフォルトの名無しさん2013/11/27(水) 10:41:37.50
C#やJavaでも酷いメモリリーク起こしてるプログラムは普通にあるけどな
画像など容量の大きなオブジェクトへの参照が残ったままでGCの対象外になってたり
0912デフォルトの名無しさん2013/11/27(水) 11:12:41.64
サーバーサイドでもないのにメモリリーク気にしなくてもいい
0913デフォルトの名無しさん2013/11/27(水) 11:15:15.32
>>912
メモリリークを気にしなくていいクライアントアプリケーションって何だ?
ゲームもWebブラウザもメモリリーク起こしたら終わりだが
0914デフォルトの名無しさん2013/11/27(水) 11:51:46.84
終わりとかおおげさだなw
0915デフォルトの名無しさん2013/11/27(水) 12:11:09.20
>>889,897
Taskでの例外は通常、
Task.Waitやその機能を内包するTask.Resultを使った時点で、
呼び出しもとのスレッドに伝播される。
WaitやResultを呼び出さずに放置された例外は、
TaskのファイナライザでTaskScheduler.UnobservedTaskExceptionを呼び出し、
そこで処理されなかった場合はプロセスを終了する(.NET4.0の動作)

AggregateExceptionをHandleするかどうかは、WaitやResultの後の話なので、
TaskScheduler.UnobservedTaskExceptionの呼び出しには直接は関係ない。
0916デフォルトの名無しさん2013/11/27(水) 17:41:25.57
>>898
おおっ!同じこと思ってるやつが居た!
メモリの解放までプログラマがやっぱり管理するべき!という思想で基本的には教え、学ぶべき。
最初からGCがやるから・・・・って習ったやつが作ると、結局、メモリ管理が適当でメモリリーク起こしてる。

どんなに最新のマシンを使っても、.netのプログラムを数本実行するとホントに重さを感じる。
0917デフォルトの名無しさん2013/11/27(水) 17:42:43.59
ないわー
0918デフォルトの名無しさん2013/11/27(水) 17:46:03.16
GCの解放の仕様やタイミング等々がわかりにくいのが最大の欠点なんだよ

GCの動作仕様の説明があるが、あれはプログラミングにだいぶ慣れた人間しかイメージで理解できない。
GCの動作仕様を理解していないやつが大半で、そいつらが頻繁にメモリリークを引き起こし、
ベテランのプログラマは、どんな言語でもメモリリークの発生はきわめて稀。
0919デフォルトの名無しさん2013/11/27(水) 17:50:55.59
>>912
こーゆー考えの人も多いよね
サポ「windowsを再起動してください。」
それで、一時的には速度は戻るけどさ。
でも客を目の前にしてwindowsの再起動〜業務プログラムの起動までって体感時間めちゃくちゃ長いんだよね
0920デフォルトの名無しさん2013/11/27(水) 17:56:59.17
>>918
GCの仕様以前の問題の奴も多い
デバッグしてみると不要になったオブジェクトへの参照がいつまでも残ってたりして、GC以前の問題だわって呆れること多い
0921デフォルトの名無しさん2013/11/27(水) 18:00:12.73
メモ帳とか電卓とか、ああいうアプリケーションなら気にしなくてもいいが
Webブラウザの様に開きっぱなしにしとくアプリだと、メモリリークは駄目だわな

>>916
>どんなに最新のマシンを使っても、.netのプログラムを数本実行するとホントに重さを感じる
すげー疑問なんだが
その「重さを感じる」のは、そもそもメモリが原因なのか?
(メモリ残量が、動作速度に影響を及ぼす程に圧迫されるのか?)
0922デフォルトの名無しさん2013/11/27(水) 18:08:08.43
>>919
○立ソフトは毎回それ言いやがる。どうみてもリソース解法忘れのバグなのに。
0923デフォルトの名無しさん2013/11/27(水) 18:25:11.63
検収通せばこっちのもんさw
せいぜい再起動を繰り返してクレタマエ
0924デフォルトの名無しさん2013/11/27(水) 18:30:05.89
>>923
この手のバグって検収で見抜くの無理ゲーだろww
0925デフォルトの名無しさん2013/11/27(水) 18:31:43.70
詐欺に近い
0926デフォルトの名無しさん2013/11/27(水) 18:33:24.14
>>921
俺もこれ知りたい
0927デフォルトの名無しさん2013/11/27(水) 19:18:11.36
>>921
さぁ
でも、.NETのプログラムしか起動してないし、
まったく同じ環境(同じ.NETのプログラムは入ってる。)で、.NETのプログラムを起動してない端末は、重くなったりしない。
0928デフォルトの名無しさん2013/11/27(水) 19:21:51.75
お も い こ み
0929デフォルトの名無しさん2013/11/27(水) 19:22:18.60
お も い こ ま な い
確実に重いの
0930デフォルトの名無しさん2013/11/27(水) 19:23:02.01
体重計にでも乗ったのか
0931デフォルトの名無しさん2013/11/27(水) 19:24:58.30
重いのがメモリが原因なのかって話じゃないの?
0932デフォルトの名無しさん2013/11/27(水) 19:26:34.39
定量性のかけらもない
不毛な話すんの止めろハゲ野郎
0933デフォルトの名無しさん2013/11/27(水) 19:26:39.79
>>927
「さぁ」って事ないだろwww
メモリ使用量なんてタスクマネージャでも見れば解るだろうが
0934デフォルトの名無しさん2013/11/27(水) 19:28:35.92
おそらくGCが原因だな。メモリ断片化してんだろ。
適当にコード書いてGCに頼りすぎるとそうなる。
0935デフォルトの名無しさん2013/11/27(水) 19:32:29.53
当て推量の思い込みか
本当に仕事してんのか
0936デフォルトの名無しさん2013/11/27(水) 19:33:29.25
さぁ
今手元にないし確認はできないな。
でも確かに重かったよ。
0937デフォルトの名無しさん2013/11/27(水) 19:35:52.96
>>916
少なくともマネージドなメモリ使ってる限り、「リーク」はない
あったらフレームワークのバグ

>>934
単純にメモリが少ないだけだろ
GCに行くまでも無く必要メモリに対して実装メモリがが少ないだけ
GCはあくまで使い終わったメモリを片付けてくれるだけで、必要メモリが減るわけじゃない
0938デフォルトの名無しさん2013/11/27(水) 19:38:35.57
じゃあ言い方を変えるよ
不必要に参照を残してしまう
0939デフォルトの名無しさん2013/11/27(水) 19:39:07.59
>>937
断片化のサンプルコード。
https://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/
0940デフォルトの名無しさん2013/11/27(水) 19:43:31.24
GCは悪くないな
0941デフォルトの名無しさん2013/11/27(水) 19:44:11.92
でも万能じゃないよね
0942デフォルトの名無しさん2013/11/27(水) 19:50:22.78
まあ、GCがあるからメモリのやりくり気にしないプログラマが増えるってのは真実かもしれんが
そもそもメモリのやりくりにプログラマが気を使わなくて良いようにシステムでメモリ管理するようにした結果がGCなわけで
本末転倒だな
0943デフォルトの名無しさん2013/11/27(水) 19:50:25.66
誰か万能とか言ってるのか…?
0944デフォルトの名無しさん2013/11/27(水) 19:52:12.11
他の言語でメモリーリークさせる馬鹿がいなければ生まれなかっただろうに
0945デフォルトの名無しさん2013/11/27(水) 19:54:02.12
Close()しない馬鹿がいるからな。
0946デフォルトの名無しさん2013/11/27(水) 19:54:53.45
人間は怠けたがる生き物だから
自分で開放しなくてもだれかが自動で開放してくれという要望はいずれ出るんじゃね
0947デフォルトの名無しさん2013/11/27(水) 19:55:43.11
いつになった自動でプログラム書いてくれるのか。
0948デフォルトの名無しさん2013/11/27(水) 19:57:16.22
>>937
> 少なくともマネージドなメモリ使ってる限り、「リーク」はない

↓

> ただしガベージコレクションにおいても、今後使用することのないオブジェクトへのポインタを
> いつまでも保持しているようなコードでは、いつまでもオブジェクトが解放されず、メモリ不足を起こしてしまう。
> これは論理的な設計の問題であり、ガベージコレクションを持つ処理系においてもこの種のメモリリークは発生する。
http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
0949デフォルトの名無しさん2013/11/27(水) 19:58:50.64
今度は定義の差で泥沼になりますねー
毛が生えてない挙句にジメジメしつこいんだよクソカス
0950デフォルトの名無しさん2013/11/27(水) 20:01:43.45
おいおいって感じ…
0951デフォルトの名無しさん2013/11/27(水) 20:04:22.98
小うるさいのは最後の断末魔だろうなー
こう猫も杓子もGCGCじゃたまにfreeやdeleteしたくなるよな
0952デフォルトの名無しさん2013/11/27(水) 20:06:51.29
>>949
プログラムの終了まで解放されないメモリ領域がメモリリークとみなされるか否か、で泥沼になるのか?
0953デフォルトの名無しさん2013/11/27(水) 20:12:01.86
…すでに兆候が見えているがw
0954デフォルトの名無しさん2013/11/27(水) 20:13:00.25
>>952
自分への指摘は絶対に認めないマって非常に多いのよ
0955デフォルトの名無しさん2013/11/27(水) 20:16:04.52
ファイッ!!
0956デフォルトの名無しさん2013/11/27(水) 20:21:09.24
GCは完全ではない。
であれば、GC機能がある言語は「メモリ管理(解放)は考えない。」って教え方は改めるべきな気がする。

メモリ管理はプログラマがやる。でも人間だからミスはする。それはGCが補助して解放する。
さて、掴みっぱなし問題が残る。
これは、
「メモリ管理をする気のないプログラマ」
と
「メモリ管理までしているプログラマ」
では、発生確率が違ってくると思う。
0957デフォルトの名無しさん2013/11/27(水) 20:35:56.02
違うよ
GC自体が邪悪な思想だから
メモリの解放はプログラマが管理するべき
0958デフォルトの名無しさん2013/11/27(水) 20:40:43.08
無限ループって怖くね?
プログラマーは無限ループを恐れない?
いやいやいやいやいや
0959デフォルトの名無しさん2013/11/27(水) 20:45:21.53
>マネージ コードのメモリ リークについて多くの開発者が
>示す最初の反応は、「そんなはずはない」というものです。
>馬鹿ですね。

http://msdn.microsoft.com/ja-jp/magazine/cc163491.aspx
0960デフォルトの名無しさん2013/11/27(水) 20:49:11.88
引用元にない文章を勝手に付け加えるのはやめようや
0961デフォルトの名無しさん2013/11/27(水) 20:50:00.79
馬鹿にされた気がしましたか?
それは失礼。
0962デフォルトの名無しさん2013/11/27(水) 20:50:57.89
下品だな
0963デフォルトの名無しさん2013/11/27(水) 20:54:14.61
お も い こ み は解決したのか?
0964デフォルトの名無しさん2013/11/27(水) 20:54:57.14
さっきから俺が書いたレスを、自分が書いたかのようにレスする奴がいるんだが
剽窃やめろや
0965デフォルトの名無しさん2013/11/27(水) 20:58:18.88
ああ〜それは俺ですね。
クソくだらない話を止めてくれる気配がないんで、
さっきから両方煽ってるわけですけど、なにか文句でも御座いますでしょうかね?
0966デフォルトの名無しさん2013/11/27(水) 20:59:53.63
おまえ俺だったのか…
0967デフォルトの名無しさん2013/11/27(水) 21:02:49.87
ID表示はよ
0968デフォルトの名無しさん2013/11/27(水) 21:04:24.28
自演っていいな〜
0969デフォルトの名無しさん2013/11/27(水) 21:04:49.43
彼らは自演し放題
0970デフォルトの名無しさん2013/11/27(水) 21:06:58.71
GCが管理してくれないかね
0971デフォルトの名無しさん2013/11/27(水) 21:16:23.87
なんか悲惨だな。
0972デフォルトの名無しさん2013/11/27(水) 21:25:16.37
なんやこれ。
読むの面倒だから有用なレスだけ挙げてくれ。
0973デフォルトの名無しさん2013/11/27(水) 21:31:12.11
もう次スレ要らないよね (´・ω・`)
0974デフォルトの名無しさん2013/11/27(水) 21:42:21.93
一人キチガイが荒らしてるようだ。
0975デフォルトの名無しさん2013/11/27(水) 21:57:15.33
まさにgarbage
0976デフォルトの名無しさん2013/11/27(水) 22:01:34.05
まあCloseとDisposeとかいう本当にどうでもいい議論よりはマシじゃね
0977デフォルトの名無しさん2013/11/27(水) 22:12:27.71
クラス同士の関係が複雑になってオブジェクトのライフサイクルが把握しづらくなると、
巨大なデータを読み込んだオブジェクトへの参照がうっかり残ったままになってメモリリークを起こすことがある。

例えばWebブラウザではタブを閉じたのにタブ内のリソースの一部が解放されないとかね。
タブ内のリソースに対しタブ外からの参照が残ってるとそういうことが起きる。

だからタブが閉じた際に連動して内部のオブジェクトも全て参照が切れるように適切にライフサイクルを構築する必要があり、
そのためにはUMLなどを用いてクラス同士の関係を明確に把握しておく必要がある。
0978デフォルトの名無しさん2013/11/27(水) 23:11:54.34
それはまことかねマスオ君
0979デフォルトの名無しさん2013/11/27(水) 23:16:22.04
俺まともな仕様書がある現場で働いたことないな
大抵最初にリキいれて作ったけど現状の実装とぜんぜん違う古いドキュメントだったり
ユースケースやERやUMLなんて必要なんですか?
それ読めばなんの説明もなしに顧客が望むソフトウェアが作れるんですか?
夢物語
0980デフォルトの名無しさん2013/11/27(水) 23:22:59.84
オープンソースで作ってるFirefoxとかChromeってUMLとか仕様書はあるのかな?
もしないのなら、仕様書なんてなくてもあの程度のソフトウェアが作れるってことだよね
0981デフォルトの名無しさん2013/11/27(水) 23:27:54.83
能力次第でしょうねえ
0982デフォルトの名無しさん2013/11/27(水) 23:34:16.25
仕様書は絶対必要
ただし仕様書が先行してはいけない
仕様書はかならずコードから生成するのが世界標準
0983デフォルトの名無しさん2013/11/27(水) 23:35:37.33
>>980はどうなんですか?
仕様書はなくてもWebブラウザのように巨大なソフトウェアを管理できていますよね?
0984デフォルトの名無しさん2013/11/27(水) 23:41:13.28
980はあるのかな?としか言ってないじゃん
ないなんて何を根拠にどこから断定してきたの?
0985デフォルトの名無しさん2013/11/27(水) 23:44:31.87
980というレス番は存在します
0986デフォルトの名無しさん2013/11/27(水) 23:45:02.60
俺、一部上場の大手の現場に何社も入ったけどさ
現実はウォーターフォールじゃないんですよ
顧客の我が侭で結局望まないアジャイルで仕様変更でイテレーションの連続になっちゃうんですよ
多かれ少なかれそうなるのに時間・お金のコストを多大にかけてまで、他人が読んだらわけわかめな仕様書って作る意味あるんすかね?
0987デフォルトの名無しさん2013/11/27(水) 23:51:21.97
意味が分からなくても、仕様書はないと困るなぁ。
だって、顧客がわがままだからと言って作る側への指示もそれをそのまま伝えてくるだけじゃ、こっちが大変じゃん。
試験仕様を作る時にあるのとないのとじゃ大違い。

まあ、後から読んで本当に信用できる仕様書がどのくらいあるの買って聞かれたら、答えに困るけどな。
0988デフォルトの名無しさん2013/11/27(水) 23:56:29.22
言質を紙に残すだけだろ
難しく考えるなよw
0989デフォルトの名無しさん2013/11/27(水) 23:56:50.82
一人で作れる程度の規模だったら別にいらんけど、
複数人数で作るときに、どういう設計で作るとかの認識を共有する為には必要だよな。
0990デフォルトの名無しさん2013/11/28(木) 00:15:13.05
仕様書書く人とプログラム作る人が同じなら後から作ればいいけど
他人にプログラム作らせるのに、仕様書なしで全部口頭で指示するのか
0991デフォルトの名無しさん2013/11/28(木) 00:21:26.45
このスレ働いている人あんまいないんじゃ
0992デフォルトの名無しさん2013/11/28(木) 00:42:57.86
雑談したいなら相談室でやれ
ここは質問スレだ
0993デフォルトの名無しさん2013/11/28(木) 00:44:01.90
ほ
0994デフォルトの名無しさん2013/11/28(木) 00:49:24.92
カッカすんなよ。
0995デフォルトの名無しさん2013/11/28(木) 08:20:54.18
>>990
他人に投げるならインターフェースとユニットテストはコードレベルまで固めて渡す
手間はかかるがやはりこれが1番安心できるね
ちなみに仕様書は混乱の元だから最低限の概要だけ有れば良い
0996デフォルトの名無しさん2013/11/28(木) 08:46:44.69
ま
0997デフォルトの名無しさん2013/11/28(木) 10:03:30.28
いつの時代も下手くそプログラマのせいで資源不足に陥る
0998デフォルトの名無しさん2013/11/28(木) 10:10:38.73
つかメモリだけでなく、処理能力まで奪っていきやがる
0999デフォルトの名無しさん2013/11/28(木) 11:24:38.23
不憫やな
1000デフォルトの名無しさん2013/11/28(木) 11:28:25.62
ふらっとVisual C#,C♯,C#(初心者用) Part109
http://toro.2ch.net/test/read.cgi/tech/1385605674/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。