X



ふらっと C#,C♯,C#(初心者用) Part132
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん 転載ダメ (ワッチョイ 1e9a-XSap)
垢版 |
2017/10/09(月) 19:00:56.93ID:Y4203ffV0
「どんなにくだらない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
0853デフォルトの名無しさん (アウアウエー Sa4a-pdK9)
垢版 |
2017/11/04(土) 20:49:38.51ID:mF4CZaPha
>>848
マジモンかよ

俺個人が使うか、あるいは一般に多用されるかどうかはともかく、
参照型であろうと変数の値(つまり参照)そのものを書き換えたいケースは存在すると思われる。

たとえばStringのようなイミュータブルな型や配列の長さのように変更できない要素を
持つ型の場合、元の値を利用しつつそれを加工した値を返すにはrefを使うしかない
0873デフォルトの名無しさん (ワッチョイ 4d06-dVlt)
垢版 |
2017/11/04(土) 22:40:24.62ID:WGNINBFE0
ファイルを削除や移動する前に、他のソフトで使用中かどうかを調べるのに
R/Wモードでオープンしたときに例外が発生するかしないかで判断するしか無い
この処理のときはcatchでfalse返して例外を握りつぶしている
0877デフォルトの名無しさん (ワッチョイ c28a-cDlW)
垢版 |
2017/11/05(日) 00:13:35.57ID:m9wZGInC0
例外をどこで処理するか(または投げっぱなすか)という基準をきちんと決めないとカオスになりがち
でも事前に決めて徹底させるのが難しい場面も多いのよね
0878デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/05(日) 00:49:39.43ID:/t3HbS0w0
タスケテ!!!
RARを回答する方法がわからないの!
なんか組み込みでいいのないの!?
0881デフォルトの名無しさん (ワッチョイ e227-MwDY)
垢版 |
2017/11/05(日) 01:34:09.45ID:27Wvnc5t0
適当に検索してみたら、それなりにref stringとかを伴うコードがあった
最近のref絡みの言語拡張を見てもコンパイラ絡みのガチガチに最適化するところとかはref引数の使いどころがあるっぽい
https://github.com/dotnet/corefx/blob/ab0c04f10c8094731d13de6f0ceaa71dd776aa00/src/System.CodeDom/src/System/CodeDom/Compiler/Executor.cs

あと、二重ポインタを扱うPInvokeとかでもでてくる
0883デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/05(日) 01:51:07.20ID:/t3HbS0w0
>>879
ぐぬぬだよ!
exeとdll持ってきてコマンドラインにするかあ
0884デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/05(日) 02:12:10.73ID:/t3HbS0w0
外部のexeをインスタンス化してそれにコマンド発行ってできる?出来た気がする
7Zipを複数起動して複数ファイルの圧縮と解凍をしたいのよ
0885デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/05(日) 02:25:25.39ID:/t3HbS0w0
ProcessStartInfoか
なんでもないです
0887デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/05(日) 04:13:51.92ID:/t3HbS0w0
>>886
えー
SSDやRAMに出しても?
メモリ内で解凍してデータ加工して再圧縮できない?全部メモリ内で

外部ツール使ってたら無理か
0891デフォルトの名無しさん (ワッチョイ 0219-lboT)
垢版 |
2017/11/05(日) 08:45:03.60ID:TvjmwwI20
>>871
仕組みは良くわからんけどスタックトレースを辿るとかの処理が重いと思ってる。
速度の必要の無い処理はオレオレ例外投げてエラー処理してる。
その方がコードがスッキリ書けるし。
0893デフォルトの名無しさん (ワッチョイ 0219-lboT)
垢版 |
2017/11/05(日) 09:02:12.28ID:TvjmwwI20
>>877
例外をどこで処理するかは非常に簡単だが皆分かってない。

・例外をcatchして処理できる場合はcatchして処理する
・処理できない場合は何もしなくて(無駄にcatch throwもしない)呼び出しもとに任せる
・最後はAppDomain.UnhandledException等で拾ってログ吐いて落とす

何も出来ないのにcatchしてエラーメッセージだけ出すヤツ多すぎ。
0898デフォルトの名無しさん (ワッチョイ 711e-9Rqp)
垢版 |
2017/11/05(日) 10:20:40.26ID:vfJyTH9D0
アプリ作るたびに
ViewModelBaseのSetProperty<T>(ref T field, T newValue
を作って毎回使ってるな。
で、今ちょうどJavaでMVVMやってて、refないのでSetPropertyがかけなくてつらい・・
if (this.value != value) {
 this.value = value;
notifyほにゃ
}
refないのでプロパティ毎に3行書いてるんだけど死にたい。
0900デフォルトの名無しさん (ワッチョイ 711e-9Rqp)
垢版 |
2017/11/05(日) 10:56:36.45ID:vfJyTH9D0
んん??
どういうことそれ。引数2つ??
3つ使って
SetProperty<T>(T field, T newValue, Action<T> setterActon)
こんな感じならいけそだけど。
SetPropert(field1, 10, t => field1 = 10)
後は最後にproperyNameを渡す引数追加して。
0901デフォルトの名無しさん (ワッチョイ 711e-9Rqp)
垢版 |
2017/11/05(日) 11:01:15.31ID:vfJyTH9D0
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;
}
コンパイルしてねぇけどこんな感じかな。
0902デフォルトの名無しさん (ワッチョイ e227-MwDY)
垢版 |
2017/11/05(日) 11:11:46.25ID:27Wvnc5t0
>>888
前とは別の人だし、githubで適当に検索してみただけだから特に時間もかけてないんだけどね
roslynとかで"ref 適当な型名"で検索しても、何件か引っかかるし一応新しいコードでも(美しいかはおいといて)使ってるんじゃないかな
軽くしか見てないけどnullなら初期化ってしてるコードが多いけど、ArrayBuilerはある程度有効活用になってそうな雰囲気

ref値型いらないって言ってるのはホントの初心者でしょ
そちらは明らかに使いみちだらけ
0907デフォルトの名無しさん (アウアウエー Sa4a-pdK9)
垢版 |
2017/11/05(日) 12:03:01.14ID:8CRgy4j+a
まだ変なのが暴れてるけど、参照型であれ値型であれrefなんか必要ない、
であれば主張に一貫性があり一理ある。

筋が通らないのは。refは値型でしか意味がないという主張。
昨日説明した通り値型参照型の違いはrefの有用性と関係ない。

>>906
>>904がそうい言いたいのかどうか分からないけど、例外の処理方法や
どの程度「真面目に」処理するかだって所詮要件次第なのに、例外の話になると
妙に教条主義的になる変な人がいるのは確かだ
0916デフォルトの名無しさん (オッペケ Srf1-RCX9)
垢版 |
2017/11/05(日) 14:08:16.80ID:+CtSMn6Br
>>912
素人なら自作関数には両方使わない
唯一あるとすれば
パフォーマンスをシビアにする必要がある
かつフィールドをたくさん持った値型
の場合だがそんな状況はアプリにもよるがそうそう無い
0917デフォルトの名無しさん (ワッチョイ 6e8a-cDlW)
垢版 |
2017/11/05(日) 14:15:44.96ID:tjXjX3Hx0
>>893
と赤間さんが言ってたね
0919デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/05(日) 18:22:15.77ID:/t3HbS0w0
藤原竜也に戻せよ
0920デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/05(日) 18:23:05.50ID:/t3HbS0w0
誤爆
0926デフォルトの名無しさん (アウアウエー Sa4a-pdK9)
垢版 |
2017/11/05(日) 21:52:08.84ID:RoulHjpBa
>>922
ああこの記事ね。
個人的にはあんまりロジカルじゃないと思うんだよねこの記事。
読んでいて感じるいくつかの「なぜ」に対する答えがない

(1) エラーを業務エラーとそれ以外に大別するのはいいとして、なぜ前者に例外機構を
使ってはいけないのか?

(2) なぜ集約例外ハンドラーみたいなスパテッティーを推すのか。
そもそもそういうスパゲッティーを避けるための仕組みが例外機構ではなかったのか?

(3) いくら何でも
「よほどのことがない限り、アプリケーションで try-catch を書いてはいけません」
これは言い過ぎではないのか。
0928デフォルトの名無しさん (ワッチョイ 457f-XJHg)
垢版 |
2017/11/05(日) 22:12:12.00ID:5Sua66ij0
リトライとかの回復処理は全部ライブラリー内で完結してることが前提なんだろうな。
言いたいことは分からないでもないけど、想定しているアプリがすごく狭い気がする。
0934デフォルトの名無しさん (ワッチョイ 0219-lboT)
垢版 |
2017/11/06(月) 06:29:36.68ID:6qywALcU0
>>928
例外に落ちた時点で回復可能なエラーって限られてるぞ。
ファイルがロックされて書き込めないとか。
殆どは回復不能だし、デッドロックにしてもリトライするより適切にロックしているかやロジックを見直す必要があるだろうし。
ま、例外の原因で一番多いのは自分の仕込んだバグだw
0938デフォルトの名無しさん (ワッチョイ 46e7-SXc1)
垢版 |
2017/11/06(月) 16:16:18.79ID:sVTioIv70
ネットで更新してるアプリってテキストファイルの文字読み込んでプログラミングしてるんだなその方が変更しやすいのか?
0941デフォルトの名無しさん (ブーイモ MMb6-uPgn)
垢版 |
2017/11/06(月) 17:36:08.18ID:Z+IOadg3M
ランチャー的なフォームから小画面を起動するフォームアプリを作ったのですが、小画面大量に出すと重くなります。小画面毎に別スレッドで起動する方法を教えてください
0944デフォルトの名無しさん (ワッチョイ 46e7-SXc1)
垢版 |
2017/11/06(月) 17:48:57.32ID:sVTioIv70
なんだ勘違いかテキストで読み込んでるのは理由あんまりないんだ
0948デフォルトの名無しさん (ワッチョイ 2e9a-lboT)
垢版 |
2017/11/06(月) 17:56:54.41ID:JuX+gvIy0
>>945
フォームを別に表示したら元のフォームには影響しないし
10や20くらいの別フォーム起動したくらいで重くなったことはない
小画面で何をやっているかわからないしスレッド分けて〜では多分解決しない
>>944
スレ違いだと思うけどアンチウィルスのパターンデータ更新みたいなのと勘違いしているだろ
VisualStudioだってバイナリアップデートなんだから
0949デフォルトの名無しさん (ワッチョイ 417f-dVlt)
垢版 |
2017/11/06(月) 18:06:53.58ID:piexXh++0
関数にListを渡す時に関数内で要素を書き換えできないようにするにはどうすればいいですか
0950デフォルトの名無しさん (ガックシ 0626-a3yt)
垢版 |
2017/11/06(月) 18:08:01.18ID:QmwWSIUM6
無理です
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況