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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9e9f-LwdJ)
垢版 |
2018/10/04(木) 18:56:38.41ID:JnxMNCXd0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1533466544/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
535デフォルトの名無しさん (アウアウカー Sa9d-Gc0T)
垢版 |
2018/11/13(火) 02:20:42.52ID:bZ0HXQ7Xa
>>534
return抜ける時にchar[20]が消えちゃうんでしょ?
んで、そう言う時にreturn抜けても消えないのがstatic char[20]
2018/11/13(火) 02:24:11.95ID:1GLtCoZ4a
だから、普通はそんなことしませんて...
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13118051728
2018/11/13(火) 02:26:43.91ID:7xmY+SYc0
>>534
それじゃあ>511と問題が違うだろw
だから、ポインターの戻り値なんてレジスタで帰るから気にすんなって話。それにnewしたオブジェクトはヒープに取られるんだから、スタックだって気にしなくていいぞ。
538デフォルトの名無しさん (アウアウカー Sa9d-Gc0T)
垢版 |
2018/11/13(火) 02:28:55.08ID:bZ0HXQ7Xa
んで、今度は呼び出元全部がchar[20]と同じに(1回目も2回目も2回目と同じ値に変化する?)なりかねないので、通常

void int_to_str(int x,char* str)
{
  sprintf(str, "%d", x);
}

と言うふうに、出力用のポインタ引数用意する。
539デフォルトの名無しさん (アウアウカー Sa9d-Gc0T)
垢版 |
2018/11/13(火) 02:31:57.72ID:bZ0HXQ7Xa
>>536
言ってること同じやん( ´Д`)y━・~~
2018/11/13(火) 02:32:00.35ID:1GLtCoZ4a
>>537
だからレジスタで返るとかそういう問題じゃないんですがw

問題が違うのは当たり前w
だから、C#にも>>534と同類の落とし穴があることを心配しているんじゃないかなと思って
>>516みたいに書いたわけ

もちろん別のことを心配してるのかもしれん。

>それにnewしたオブジェクトはヒープに取られるんだから、スタックだって気にしなくていいぞ。
だから最初からそう言っていますw
2018/11/13(火) 02:34:25.29ID:1GLtCoZ4a
>>539
同じじゃないでしょ。
>と言うかポインタは普通返さない。
これ間違ってるから>>518
2018/11/13(火) 02:38:05.39ID:1GLtCoZ4a
たぶん>>537の人はポインタと左辺値の区別がついてないんじゃないのかな。
これはポインタって言葉の使い方が混乱してるからしょうがないけど

それともそもそもスタックとかポインタの意味が分かってないのか
2018/11/13(火) 02:38:54.17ID:p27/Ddjo0
C#のnewに相当するのはC++でもnewだし、C#でもstackallocでスタック配列は可能
しかもローカル変数のアドレスを取得し返すコードもunsafeならビルドできる
返すものが抜けるスタックだと不正なのはレジスタも呼出規約も言語も関係ない

C++でもお行儀はともかく適切にdeleteすれば済むし、C#ならGCが回収するってだけ

>>531
戻り値たるintとかどっかいってる上に奇妙な文法増えちゃうよ
544デフォルトの名無しさん (アウアウカー Sa9d-Gc0T)
垢版 |
2018/11/13(火) 02:49:42.48ID:bZ0HXQ7Xa
>>541
言い過ぎだとしても、>>538的な方が普通な気がするが。
試しに普通のポインタ返す関数を。。。とここまで書いて関数ポインタ思い出した。

でも通常かと言うと疑問。
組込関数にもあるけど、それを通常と言って良いかどうか。
それと同じ仕組みの関数作るのが通常とは思えない。
2018/11/13(火) 07:44:20.95ID:4VfxC09pd
ピクチャーボックスに書いた線の座標を配列にいてれおいて、右クリックの時に一つ前に書いた線を消したい時って再描画させるにはどうしたら出来ますか?

配列の最後を消して配列要素分ループして書いても書けず、前の書いた線が残りっぱなしでやり方が分かりません。
2018/11/13(火) 07:56:39.45ID:OewfmfIr0
>>545
再描画する前にピクチャーボックスを掃除しているか?
再描画処理が正しいか?
2018/11/13(火) 09:19:44.70ID:4VfxC09pd
>>546
線色変えたら同じ線上にかかれてました。
しかし、前に書いた線が消えません。
どうすれば消えますか?一回全てクリア?
2018/11/13(火) 09:43:33.96ID:r8TlMUhn0
>>547
線を書くときに上書きされた背景などの部分も含めて書き直す。
2018/11/13(火) 12:26:10.47ID:oXvGF3Wua
>>545
なんか、何回も同じようなこと聞いてない?

private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
  if (e.Button == MouseButtons.Right) pictureBox1.Invalidate();
}

そんで描画処理はPaintイベントに書く

Windowsの描画の基本は、他のウィンドウが重なるなどして描画した絵が消されたら
(無効化されたら)その都度再描画。
プログラムの都合で再描画が必要な場合がInvalidate()等を呼んで強制的に無効化する。

PictureBoxは無効化されたら自動で背景色か背景画像で塗りつぶされるはず。
だから前に書いた線を消す必要はない
2018/11/14(水) 21:51:00.00ID:wbMCB4xt0
XORで線引くと、もう一度XORでなぞると元に戻る。
これなら古いのを再描画する必要がない
2018/11/14(水) 22:33:05.99ID:3L2XIs1L0
XORはグレー背景に弱いから真面目に線引くこと考えた方がいい
552デフォルトの名無しさん (アウアウカー Sa85-ZFLo)
垢版 |
2018/11/15(木) 03:05:16.76ID:lNkjj0jra
メモリ上にビットマップ展開、そこに描画して画面はメモリ上のビットマップを表示するだけ。
画面の大きさ分のビットマップでメモリ喰うけど、再描画に時間取られない。
2018/11/15(木) 06:20:27.21ID:Hpd5UC3KM
懐かしい
2018/11/15(木) 07:16:16.62ID:AUtHx5s50
前に画面の選択範囲のスクリーンショットとる機能作った時に一番苦労したのが
選択範囲を示すための四角の点線をうまく表示することだったわ
555デフォルトの名無しさん (アウアウカー Sa85-ZFLo)
垢版 |
2018/11/15(木) 12:43:10.25ID:lNkjj0jra
>>553
今はどうか知らんが、昔は定番テクニックだったよね。-> >>552
2018/11/15(木) 12:59:29.31ID:0i/BmJkF0
今はテクスチャだから四角形プリミティブ重ねればいいのだけ。
2018/11/15(木) 13:22:50.19ID:lrjlJOeNa
>>555
553が言ってるのはXOR描画じゃないの?
Win9x時代はエクスプローラ等でアイテムの選択状態を表す時や、>>554が言ってる
ラバーバンドの簡易的な実現方法として利用されてたと思う

リソースが貧弱だった時代に高価なビットマップを保持するなんて愚策を
定番にしていた人がそうそういたとは思えんね

それやってたの、即時モードの描画が理解できなかった、98時代のおじさん
だけだと思う

っていうかWin32ってもう20年以上歴史があるんだからいい加減>>552みたいな
発想は卒業したらどうなんだろう

これ、WPFみたいな保持モードの考え方と全然違うよw
558デフォルトの名無しさん (アウアウカー Sa85-ZFLo)
垢版 |
2018/11/15(木) 13:23:12.34ID:lNkjj0jra
Direct2Dとかだっけ。
触った事ないなぁ。。。

ペイントっぽいアプリとか程度だったら、どっちが楽なんだろ。。。
559デフォルトの名無しさん (アウアウカー Sa85-ZFLo)
垢版 |
2018/11/15(木) 13:29:33.73ID:lNkjj0jra
>>557
ううむ。そうか。
でもウィンドウが重なったらXOR以前に再描画するものが消えてるんだが。。。

確かに翁とか愛称ついてるあたり古い考えの人だった気もするが、当時でも有効だったなら
今では解像度はタブレット以下が多い割にメモリ積み放題だし、昔より手軽な割に有効だと思うんだが。。。
560デフォルトの名無しさん (アウアウカー Sa85-ZFLo)
垢版 |
2018/11/15(木) 13:33:22.82ID:lNkjj0jra
あ、WPFが別物ってのは理解出来る。
とはいえ、ペイントもどき作ってないからどうだろ。。。
HTML5のCanvasの仕組み次第だな。
少なくとも、Formsでは今でも有効。-> >>552
2018/11/15(木) 19:09:16.78ID:qi3FyInE0
画像描画の話題そのものはいいとしてコントロールの描画とImageプロパティへの描画と画面への描画の区別がついていない人がいる気がする
元の質問は「初期化しろ」で終わっているからどうでもいいんだろうけど
562デフォルトの名無しさん (ワッチョイ 3e67-sNvt)
垢版 |
2018/11/17(土) 17:07:48.79ID:eS8uuMhZ0
https://www.youtube.com/watch?v=Arlz1lgaO-0
こういうソフトってc#ですか?
pythonではきついですか
2018/11/17(土) 17:19:03.08ID:8wpf7s1e0
>>562
プログラム言語というより、数学の知識があるかないかじゃない?幾何学とか、行列とか
2018/11/17(土) 17:21:21.05ID:8wpf7s1e0
それを踏まえて、Windowsで動かしたいならC#の親和性が高いし、
UIをブラウザにしたいならC#でなくてもいいし。
2018/11/17(土) 17:37:36.65ID:rc62Vrp5a
>>562
こういうのはアルゴリズムが全てで、言語なんかどうでもいい
言語云々言ってるレベルの人には遠すぎる目標だから、いったんもっと手前にマイルストーンを置いたほうがいい
確実に挫折するから
566デフォルトの名無しさん (ワッチョイ 3e67-sNvt)
垢版 |
2018/11/17(土) 17:55:07.29ID:eS8uuMhZ0
言語は何でもいいんですね
じゃあC#で頑張ってみます

フィボナッチなんとかでしたっけか
567デフォルトの名無しさん (アウアウイー Sa2d-4yv2)
垢版 |
2018/11/17(土) 17:58:49.17ID:bZFmP2aXa
>>562
無理だろう
リンクを開いたら『かっぱ寿司』のCMだった
寿司は握れない
2018/11/17(土) 18:03:29.40ID:rc62Vrp5a
>>566
勘違いさせてしまったようだが、これを作れるレベルの人なら言語の選択なんか全くどうでもいい些細な問題だという意味だぞ
GUIが一通り使えて3Dのレンダリングができるなら作れるっちゃ作れる
569デフォルトの名無しさん (ワッチョイ 3e67-sNvt)
垢版 |
2018/11/17(土) 18:10:45.85ID:eS8uuMhZ0
であれば向いているのは、pythonよりはc#ということになりますか?(ただのイメージですが)
2018/11/17(土) 18:25:34.63ID:tg8QC7+S0
openGLなら素直にCとかC++使った方がいいとは思う
できるできないじゃなくて初心者なら単純に調べ易さが大事やろ
571デフォルトの名無しさん (ワッチョイ 3e67-sNvt)
垢版 |
2018/11/17(土) 18:28:18.79ID:eS8uuMhZ0
c#でdirectxやopenGlを使うのは一般的ではないということでしょうか?
cとかc++は超難易度が高いと聞くのでどうなのかなと思ってました
2018/11/17(土) 18:31:24.61ID:/a1P+H3qM
C#ならUnity3D使えばいい
できるどころではなく、現代において3Dプログラミングをするなら最も初心者が入りやすい選択だ
2018/11/17(土) 18:38:39.23ID:tg8QC7+S0
>>571
最近は知らないけどあくまでC/C++用ライブラリのラッパーがあるだけだから
変なところでつまづく可能性あるのがつまんないじゃん
実装が中途半端だったりするのもあるから
webに転がってるサンプルがそのまま動いた方が楽やろ
C/C++は深みはまれば無限の闇だけどシンプルに使う分にはなにも難しくない
だって大半のプログラマはCから入ってるんだし
Unityは全く知らんからその辺は別の人に
574デフォルトの名無しさん (ワッチョイ 3e67-sNvt)
垢版 |
2018/11/17(土) 18:41:57.34ID:eS8uuMhZ0
>>572
あくまで1から作ってみたかったので
後ゲームエンジンはgodot使ってたりします

>>573
じゃあCから入ってみます
2018/11/18(日) 10:42:50.75ID:PoFSPoaKa
asp.net core 2.1 MVCの検証属性
Javaだと検証属性にgroupsを設定できるのだがasp.net coreには同等の機能は存在しない?
2018/11/18(日) 11:57:32.69ID:ve9l0Wxid
>>575
具体的に何がしたいの?
2018/11/18(日) 12:12:56.71ID:PoFSPoaKa
>>576
押したボタンによって検証定義を変えたいのだけど検証のグルーピングって他に使い道あったっけ?
2018/11/18(日) 12:18:03.17ID:XN88gtNzM
>>577
諦めてFluent Validationとか使えば
2018/11/19(月) 05:43:43.79ID:r5HrKoSb0
コーディングしてて思うけど変数名とかつけるのがめちゃ難しい
dataとかinfoとか抽象的で何を指してるのかわからんようにならないように
意を示すような単語を探したいが探しきれない

csvファイルを読み込んだバイナリデータを受けとる変数名とかstreamって名前にすべきなのか?
2018/11/19(月) 07:18:33.39ID:bSg94FGhM
>>579
日本語のカタカナのアルファベット表記でよい
お前の脳みそがなんの辞書も持ち合わせていない雑魚だった場合
全クラスの全変数の数分その都度エキサイト翻訳にかける工数が必要になる
1000個以上あればもちろん1000回以上だ
つまり、雑魚なお前はそのくだらん作業で工数の大半を食い潰す
日本語アルファベット表記で妥協しろ
2018/11/19(月) 07:47:24.91ID:SGbs8fwRa
>>579
変数名で悩む前にスコープを短くすればいいのでは?
2018/11/19(月) 08:00:47.12ID:OxHzXIEP0
>>579
変数名は変数管理台帳に登録してあるのしか使っちゃだめだよ
2018/11/19(月) 08:05:33.08ID:hJCk5pq9M
業務データを扱ってて直感的に理解したいときには変数名を日本語にしてる。
エディタ操作面で色々不便だけど。
2018/11/19(月) 09:00:57.18ID:IHvfubsWd
こんな争いも起きるしね
https://github.com/dotnet/corefx/issues/33553
2018/11/19(月) 09:13:29.97ID:E9Vggb2iM
名前以前にそもそもパブリックメンバにタプル使うなってガイドラインがあったはずだけど、もうMS自身が破って解禁されちゃうのか
引数のデフォルト値なんかも当初はパブリックメンバには禁止だったはずだけどMSが平然と無視し始めて完全に形骸化したね
2018/11/19(月) 09:33:40.04ID:KXf7P7MS0
>>585
TupleとValueTuple混同してないか?
2018/11/19(月) 11:10:29.95ID:E9Vggb2iM
>>586
https://docs.microsoft.com/en-us/dotnet/csharp/tuples
> Even so, they are most useful for utility methods that are private, or internal.
> Create user-defined types, either class or struct types when your public methods return a value that has multiple elements.
2018/11/19(月) 12:00:00.99ID:IHvfubsWd
>>585
ちゃんとリンク先読んだ?
2018/11/19(月) 12:25:52.05ID:fArXgqhAa
>>579
自分で書いているように抽象的な名前であることが可読的でない原因。
そうであればベタベタに具体的な名前を付ければいいでしょう

例えばアップルの株価ならstockPriceOfAppleとか

必要もないのに冗長な名前を付けることはないけど
必要ならたとえローカルでも長い名前を付けることを躊躇してはいけないと個人的には思う
2018/11/19(月) 12:32:35.67ID:wcZZ2xz30
IEnumerableの変数名は散々迷った挙げ句に複数形にしちゃうけど、良い名称あるのかな
2018/11/19(月) 12:41:02.88ID:llK6EUKu0
>>582
職業ノンプロだけど、変数管理台帳とかまじであるの?
2018/11/19(月) 12:41:57.85ID:llK6EUKu0
ちなみに日本語変数とか、一般的な企業のコーディング規約で引っかからない?
2018/11/19(月) 12:43:33.18ID:zfAWS6U+M
扱うデータの複数名をつけるけど
スコープ短い汎用的な変数名なら
list, items, resultsあたりをよく使う
2018/11/19(月) 13:44:29.92ID:eViuowHop
>>591
組み込み系からやってる会社なら必需品だぞ。
2018/11/19(月) 14:54:04.03ID:5ovmWsrD0
goは変数名短くて楽
2018/11/19(月) 15:58:15.07ID:xnCC+WkJM
>>594
ローカル変数とかも??
2018/11/19(月) 18:02:20.58ID:FVlkObn9d
初心者だけど、変数を引数に渡した先の変数名はいつも困る。
2018/11/19(月) 18:20:18.21ID:llK6EUKu0
>>597
アンスコ付けとけ
2018/11/19(月) 18:21:10.13ID:eViuowHop
>>596
当たり前だろ。
スタックサイズの計算に必要なんだから。
2018/11/19(月) 18:29:32.97ID:IHvfubsWd
>>594
なぜ?
2018/11/19(月) 19:01:01.30ID:2DWiAtf3a
>>579
>csvファイルを読み込んだバイナリデータを受けとる変数
はstring配列やbyte配列だと思うけど
固有の型へすぐ変換するだろうから、その短い間ならdataなどでいいんじゃないか
個人的にはstreamという変数名ではSystem.IO.Stream型だと思ってしまう
2018/11/19(月) 20:04:15.35ID:JjCiYhkEM
>>591
当然だろ。プロジェクトを示す3桁のアルファベットと5桁の数字で構成される変数名しか使えない。
2018/11/19(月) 20:30:54.04ID:Wy1p2BEz0
SEIがそうだったな…
2018/11/19(月) 20:48:07.07ID:q9mHg/N90
変数を管理大腸でうんこでた
2018/11/19(月) 21:33:53.01ID:p0KmRpJRd
オープンクローズの原則ってファクトリーパターン実装していたら拡張側は知らず知らずの内に実現していた...??
2018/11/19(月) 23:37:56.35ID:h32vib960
Guid.NewGuid()で生成したIDが幸運にも重複してシステムをバグらせた人いますか?
2018/11/19(月) 23:47:06.98ID:miDxs9F80
ねーよ
2018/11/20(火) 02:05:47.13ID:+fOoRbBp0
マーフィーの法則発動
2018/11/20(火) 07:48:29.05ID:8DsnvWPe0
var禁止の会社でうっかりvar使ったのいっぱい書いちゃったのだが一括でなおす方法ってある?
ちなVS2010
2018/11/20(火) 07:57:26.72ID:kdpbOy6R0
new deleteの呪縛から解放されたと思ったのもつかの間、
今度は簡略化し過ぎて気づかないopen closeの罠が沢山散りばめられたw
2018/11/20(火) 19:25:54.22ID:oZWGPYxPM
>>609
ctrl+h
2018/11/21(水) 03:58:49.62ID:egIEZrm6a
禁止する理由ってなに
2018/11/21(水) 04:03:21.33ID:7eNzoDu+0
>>612
Java信者
2018/11/21(水) 04:04:10.28ID:7eNzoDu+0
…が時代に取り残された腹いせ
2018/11/21(水) 21:09:33.00ID:JLIdSz/ja
ここに書いたらコードレビュー誰かしてくれる?
616デフォルトの名無しさん (ワッチョイ 3903-k2K5)
垢版 |
2018/11/21(水) 21:12:12.58ID:JM/nMfDs0
>>615
レビューしてやってもええけどどのくらい率直に言ってもええんや?
メンタル強い方か?
2018/11/21(水) 21:19:03.07ID:OrJlxNWN0
>>615
ここの住人はマウンティングするだけだからやめておけ
2018/11/21(水) 21:53:36.32ID:9cx/wCEp0
>>615
そういうのは質問じゃないんだから相談室でやってくれ
2018/11/21(水) 22:17:28.28ID:61i9o8Bqd

おまんこ
620デフォルトの名無しさん (ワッチョイ 3903-k2K5)
垢版 |
2018/11/21(水) 23:20:39.67ID:JM/nMfDs0
よく言った
2018/11/23(金) 09:21:25.95ID:Z6RMu5t9d
string.Format などで使う {0} みたいなのよ呼び方って「プレースホルダー」で合っていますか?
2018/11/23(金) 09:29:06.81ID:w9GMx5b20
うん
623デフォルトの名無しさん (ワッチョイ d3a5-ylOc)
垢版 |
2018/11/23(金) 09:37:10.04ID:ApOE6+zI0
C#はJavaみたく1ファイル/1クラスじゃないけど
皆さんどうしてます?
短いクラスがいくつかあるとき1つのファイルにまとめます?
なんかファイルが多いと読みにくくなるような気もするし
分かれてる方が分かりやすいって人もいるのかな?
2018/11/23(金) 09:37:27.77ID:Z6RMu5t9d
>>622
ありがとうございます
2018/11/23(金) 09:41:35.57ID:w9GMx5b20
>>623
試行錯誤しながら開発してる時は同じファイルに複数クラス書いて、後からバラす
インターフェイスと実装クラスが一対一で、かつ量が大したことない場合はひとつにまとめたり
2018/11/23(金) 09:43:27.05ID:OqByd5h70
>>623
基本的にはフォルダ分別だけど、json受信用とかのフィールド定義だけなら1ファイルにまとめちゃうかな。可読性が上がる。
2018/11/23(金) 10:04:34.96ID:o5J4ZB2+a
>>623
俺は仕事なら余計な裁量入れるのが面倒だから機械的に1ファイル1クラス
個人的に開発するときは自分が見やすい程度に纏めることもある
628デフォルトの名無しさん (ワッチョイ d3a5-ylOc)
垢版 |
2018/11/23(金) 10:13:21.65ID:ApOE6+zI0
基本は1ファイル/1クラスで
まとめるのは特別な事情ってのが多数なのかな
ありがとうございました
2018/11/23(金) 10:17:56.37ID:w9GMx5b20
あとはEnumとその拡張メソッド定義クラスとかもまとめるかな
2018/11/23(金) 11:33:34.05ID:OqByd5h70
1ファイル1クラスって見積の事情じぁあねーだろな?
2018/11/23(金) 11:52:12.06ID:IXAfq7SI0
VSからクラスやインターフェース作成すれば1クラス1ファイルが基本だと判ると思うけど
2018/11/23(金) 11:56:31.89ID:X4mqBgACd
>>631
そういうことを質問してるんじゃないだろ
2018/11/23(金) 13:00:59.52ID:OqByd5h70
>>630
まあこれは半分冗談なんだけどさ、リファクタリングしてコード短くしたら見積もり下がるじゃねーかと先輩に怒られたとかそーゆう話をネットで見たことがあるのでね。高くするためにファイル数増やしてるなんてことない?って話
2018/11/23(金) 14:33:15.86ID:gLExdUeZ0
Javaのような糞みたいなことするなよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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