ふらっと C#,C♯,C#(初心者用) Part132
レス数が950を超えています。1000を超えると書き込みができなくなります。
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part131
http://mevius.5ch.net/test/read.cgi/tech/1504861931/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://mevius.5ch.net/test/read.cgi/tech/1492843013/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured >>840
とりあえず、refは値型以外には使い道が無いのは確定で。 >>848
マジモンかよ
俺個人が使うか、あるいは一般に多用されるかどうかはともかく、
参照型であろうと変数の値(つまり参照)そのものを書き換えたいケースは存在すると思われる。
たとえばStringのようなイミュータブルな型や配列の長さのように変更できない要素を
持つ型の場合、元の値を利用しつつそれを加工した値を返すにはrefを使うしかない 最近見たrefはBindableBaseの中だったな、ref Tとかジェネリックの場合
普段は使わないね 議論ごっこやりたいのなら
ふらっと C#,C♯,C#(議論用)
http://mevius.2ch.net/test/read.cgi/tech/1469538912/
で好きなだけやってくれ。ワッチョイもないから 意味もなく
try
{
・・・
{
catch
{}
や
try
{
・・・
{
catch (Exception ex)
{
throw ex;
}
するヤツってアフォですか?
お願いだから辞めてください。 >>856
プログラマがそこで例外が発生しうることを認識してそのコードを書いていることを
明示する意味はあるよ。
>>851といい、ちょっと単細胞過ぎないか? >>850
了解
>>853を見る限りおまえの言う通りだな
>>851
さすがにそれは極論過ぎ >>857
c#で>>856やるとそこまでのスタックトレース消し去ることになるんだけど正気? ファイルが読めない程度で例外返すクラスとか一旦握り潰して動作を変えたい >>862
go言語が例外処理の機能を無くした理由の1つは、大半のプログラマーが例外処理を正しく扱えないから。
本当にそう思うよ。 >>860
まあ後者はたしかに普通やらないと思う。
ただ、例外情報なんて必ずしも常に必要とは限らない。 >>865
TryXXXなんてのがあるように、そもそも成功したかどうかしか関心がない場合もあるでしょ >>867
それは例外でエラーを拾はないでエラー処理をしたい場合。
例外処理は少々重い。 >例外処理は少々重い。
初回の例外発生の時にその例外クラスがロードされるみたいなんだけど、その事? >>864
常に必要ではないが、それをわざわざ消す必要があるか? ファイルを削除や移動する前に、他のソフトで使用中かどうかを調べるのに
R/Wモードでオープンしたときに例外が発生するかしないかで判断するしか無い
この処理のときはcatchでfalse返して例外を握りつぶしている >>872
まあ、たとえ使わなくてもInnerExceptionに食わせて再スローした方がベターだとは思う >>874
Java出身の人がよくやる勘違いだよね 例外で何を伝えたいかどう制御したいか決まってなければ迷うかもしれない
例外出ても継続できる内容なのかもあるかな 例外をどこで処理するか(または投げっぱなすか)という基準をきちんと決めないとカオスになりがち
でも事前に決めて徹底させるのが難しい場面も多いのよね タスケテ!!!
RARを回答する方法がわからないの!
なんか組み込みでいいのないの!? >>878
7Zipのライブラリで回答できた
https://sevenzip.osdn.jp/sdk.html
使い方はすっかり忘れたから聞かないでくれ CodeDomだからC#創成期だね
いわゆるひとつのレガシー >>879
ぐぬぬだよ!
exeとdll持ってきてコマンドラインにするかあ 外部のexeをインスタンス化してそれにコマンド発行ってできる?出来た気がする
7Zipを複数起動して複数ファイルの圧縮と解凍をしたいのよ ProcessStartInfoか
なんでもないです >>884
ファイルIO絡むから、複数同時に動かすとむしろ遅くなるんじゃないかな。 >>886
えー
SSDやRAMに出しても?
メモリ内で解凍してデータ加工して再圧縮できない?全部メモリ内で
外部ツール使ってたら無理か >>881
夜中まで必死にググった努力は認める w
>>882の言うように今時としてはいまいちのコードだよ 「ref string」が何に使えるかは置いておいて、これで合ってる?
ttps://ideone.com/k9UegY >>886
むしろI/O絡むから複数同時の意味がある >>871
仕組みは良くわからんけどスタックトレースを辿るとかの処理が重いと思ってる。
速度の必要の無い処理はオレオレ例外投げてエラー処理してる。
その方がコードがスッキリ書けるし。 >>881
いつの間にか、ref 参照型 は不要から ref 全て不要に変わってるし。
ref 値型は必要でしょう。 >>877
例外をどこで処理するかは非常に簡単だが皆分かってない。
・例外をcatchして処理できる場合はcatchして処理する
・処理できない場合は何もしなくて(無駄にcatch throwもしない)呼び出しもとに任せる
・最後はAppDomain.UnhandledException等で拾ってログ吐いて落とす
何も出来ないのにcatchしてエラーメッセージだけ出すヤツ多すぎ。 言語仕様としてref値型が必要なのはわかるけど
じゃあ使うかというと使わないかな
もう何年も書いた記憶がない ゲームで自分で当たり判定を書いたとき
GC を避けるため使ったことがあるな >>894
hoge.TryParseも使った事がないと? .TryParse( ) は ref じゃなくて out アプリ作るたびに
ViewModelBaseのSetProperty<T>(ref T field, T newValue
を作って毎回使ってるな。
で、今ちょうどJavaでMVVMやってて、refないのでSetPropertyがかけなくてつらい・・
if (this.value != value) {
this.value = value;
notifyほにゃ
}
refないのでプロパティ毎に3行書いてるんだけど死にたい。 SetProperty(value, v => field = value)
でいいだろ
設定先が単純なフィールドでない場合にも対応できるしJavaでも同じ んん??
どういうことそれ。引数2つ??
3つ使って
SetProperty<T>(T field, T newValue, Action<T> setterActon)
こんな感じならいけそだけど。
SetPropert(field1, 10, t => field1 = 10)
後は最後にproperyNameを渡す引数追加して。 SetPropert(field1, 10, t => field1 = 10)
は
SetProperty(field1, 10, t => field1 = t)だった
bool SetProperty<T>(T field, T newValue, Action<T> setterActon, string propertyName) {
if (!object.equals(field, newValue)) return false;
setterAction(newValue);
onPropertyChanged(propertyName);
return true;
}
コンパイルしてねぇけどこんな感じかな。 >>888
前とは別の人だし、githubで適当に検索してみただけだから特に時間もかけてないんだけどね
roslynとかで"ref 適当な型名"で検索しても、何件か引っかかるし一応新しいコードでも(美しいかはおいといて)使ってるんじゃないかな
軽くしか見てないけどnullなら初期化ってしてるコードが多いけど、ArrayBuilerはある程度有効活用になってそうな雰囲気
ref値型いらないって言ってるのはホントの初心者でしょ
そちらは明らかに使いみちだらけ 例外が必ず適切にはかれるわけではないからこうしろって言われても困る >>902
いいわけは要らんよ
君がref参照型が有効だと思うコードを晒せばいいだけ まだ変なのが暴れてるけど、参照型であれ値型であれrefなんか必要ない、
であれば主張に一貫性があり一理ある。
筋が通らないのは。refは値型でしか意味がないという主張。
昨日説明した通り値型参照型の違いはrefの有用性と関係ない。
>>906
>>904がそうい言いたいのかどうか分からないけど、例外の処理方法や
どの程度「真面目に」処理するかだって所詮要件次第なのに、例外の話になると
妙に教条主義的になる変な人がいるのは確かだ >>907
例外が適切に吐かれないって事が有るのか知りたい。 >>907
> まだ変なのが暴れてるけど
自己紹介ですか? ref はCの&にあたるものだが、&iは普通に使うけど&pなんて見たこと無いってことだ >>894
パフォーマンスを求められる処理には縁がない人なんですね 素人なのでref/outの使い道がよくわからないのですが、public変数にするとかじゃだめなんですか? >>912
メソッド実行するたびにインスタンス作成すればおk >>912
全部Public変数にしたら引数も戻り値も不要だね。
君は天才かも。 >>912
素人なら自作関数には両方使わない
唯一あるとすれば
パフォーマンスをシビアにする必要がある
かつフィールドをたくさん持った値型
の場合だがそんな状況はアプリにもよるがそうそう無い >>917
赤間って誰?
MSDNのコラムにc#の例外処理について解説していた良い記事があったんだが見つからんわ。
C と C++のが見つかったw
https://msdn.microsoft.com/ja-jp/library/cc440190(v=vs.71).aspx 「よほどのことがない限り、アプリケーションで try-catch を書いてはいけません。」
これよ、これ。例外処理の本質。 >>924
そうはいってもファイルが読めないだけで例外だすじゃん >>922
ああこの記事ね。
個人的にはあんまりロジカルじゃないと思うんだよねこの記事。
読んでいて感じるいくつかの「なぜ」に対する答えがない
(1) エラーを業務エラーとそれ以外に大別するのはいいとして、なぜ前者に例外機構を
使ってはいけないのか?
(2) なぜ集約例外ハンドラーみたいなスパテッティーを推すのか。
そもそもそういうスパゲッティーを避けるための仕組みが例外機構ではなかったのか?
(3) いくら何でも
「よほどのことがない限り、アプリケーションで try-catch を書いてはいけません」
これは言い過ぎではないのか。 リトライとかの回復処理は全部ライブラリー内で完結してることが前提なんだろうな。
言いたいことは分からないでもないけど、想定しているアプリがすごく狭い気がする。 アプリケーションってよりビジネスロジックって言いたかったのかね >>926
(1)や(3)はコメントで回答されてるんじゃないの?
集約例外ハンドラーは業務エラーを戻り値で表現しようと
例外で表現しようと必要じゃない? てか集約例外ハンドラーがスパゲッティってどういうこと?
エラーメッセージやログ処理して終了するだけのごく短いコードだと思うけど違うの? >>928
例外に落ちた時点で回復可能なエラーって限られてるぞ。
ファイルがロックされて書き込めないとか。
殆どは回復不能だし、デッドロックにしてもリトライするより適切にロックしているかやロジックを見直す必要があるだろうし。
ま、例外の原因で一番多いのは自分の仕込んだバグだw >>932
集約例外に回復コードを仕込もうと思ってるんだろ。 糞ベンダーは、全てのメソッドにtry-catchを入れるコーディング規約。 ネットで更新してるアプリってテキストファイルの文字読み込んでプログラミングしてるんだなその方が変更しやすいのか? ランチャー的なフォームから小画面を起動するフォームアプリを作ったのですが、小画面大量に出すと重くなります。小画面毎に別スレッドで起動する方法を教えてください 設計が間違ってます
小画面を大量に出さないようにしましょう 小画面の意味がわからないし、大量とはどのくらいなのかもわからない なんだ勘違いかテキストで読み込んでるのは理由あんまりないんだ >>942
そこをなんとか
>>943
10枚程度です。 ツールでボットやwebチェッカー使ってるんじゃないかな
ボット一個にwindow1個とか
そういうのはwindow一個で多数のものを扱うべき
リソースの無駄 >>945
フォームを別に表示したら元のフォームには影響しないし
10や20くらいの別フォーム起動したくらいで重くなったことはない
小画面で何をやっているかわからないしスレッド分けて〜では多分解決しない
>>944
スレ違いだと思うけどアンチウィルスのパターンデータ更新みたいなのと勘違いしているだろ
VisualStudioだってバイナリアップデートなんだから 関数にListを渡す時に関数内で要素を書き換えできないようにするにはどうすればいいですか >>949
C#7.2を待つかそのlistをコピーして渡すか書き換えないように気を付けるかしてください レス数が950を超えています。1000を超えると書き込みができなくなります。