X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 6fe5-uQHI)
垢版 |
2023/08/08(火) 09:21:19.30ID:aeM2XQJJ0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part158
https://mevius.5ch.net/test/read.cgi/tech/1679783460/
■関連スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
初心者はまずVisual Studioを使いましょう。なおVisual Studioの使い方などに関しては各バージョンで違うので専用スレでお願いします
http://www.visualstudio.com/downloads/
■情報源
https://learn.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://learn.microsoft.com/en-us/dotnet/standard/class-libraries
https://referencesource.microsoft.com/
https://source.dot.net/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
++C++; // 未確認飛行 C
https://ufcpp.net/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0324デフォルトの名無しさん (ワッチョイ 23bc-uznD)
垢版 |
2023/10/02(月) 09:26:07.11ID:lKJ+23Y70
>>317
配列宣言において型が違うことは重要じゃないよ
どんな型の配列だって作れるわけだから
それが分からないことこそが基礎ができてない証拠であって
君の言う「必要なところ」がやれてないということ
>>315のリンク先をきちんと理解すれば>>314
>tiletype型には定数の文字列が入ると思っていましたが、整数値であるcolumnsとrowsを代入しているあたりが分からないです。
>何らかの文字列の定数が入ると考えていますた
という疑問と想定が間違っていたことに気づく
まずそこから始めよう
0326デフォルトの名無しさん (ワッチョイ 9bc8-RAiU)
垢版 |
2023/10/02(月) 12:48:13.11ID:NgblnbYV0
批判は一切受付けません!のスタイル
そもそもこんなことに何日も掛けて進まない時点でこいつには無理
0328デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/10/02(月) 15:30:17.92ID:TDDpdEaf0
>>318
>>325
返信してくれた5人が違う事を言ってたら、その中からどれか選ぶしかないじゃないですか。
あと、基礎やるにしてもどうせすべて使うわけじゃないし、必要な部分だけやるスタイルです
>>324
リンク先見てきます
0329デフォルトの名無しさん (ワッチョイ 9b9b-RAiU)
垢版 |
2023/10/02(月) 15:35:28.81ID:NgblnbYV0
要約すると、
基礎を学ぶ気はない貴様らは俺の聞いたことに答えればいいんだ

つまり、教えてもらおうではなく聞きだそうというスタイル
0330デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/10/02(月) 15:36:53.97ID:TDDpdEaf0
>>329情報源は色々です
0332デフォルトの名無しさん (ワッチョイ 85ad-6Yc9)
垢版 |
2023/10/02(月) 16:21:12.93ID:f2fMpIlB0
このレベルの基礎はすべて使うけどね
0333デフォルトの名無しさん (ラクッペペ MMcb-/u/1)
垢版 |
2023/10/02(月) 16:26:16.56ID:ATaGJaaDM
とりあえず環境構築してるならまずサンプルコードそのままコピペして実行しろ
いろいろ考えながらコードを弄っているうちに分かってくるからさ
疑問点は人に聞く前にまず自分で試して経験しろ
0334デフォルトの名無しさん (ワッチョイ 2d34-uQQ6)
垢版 |
2023/10/02(月) 16:36:07.28ID:c5cuOzSD0
visual studioでステップ実行汁
0335デフォルトの名無しさん (アウアウウー Sa89-5C2y)
垢版 |
2023/10/02(月) 16:40:30.40ID:sFvf9xp1a
>>327
>>331
ほんそれ
荒らしの相手レスする香具師も荒らしと看做せばいい
質問オウム返しはそもそも問題解決する気が無くて荒らしたいのだろう
0336デフォルトの名無しさん (ワッチョイ 8501-6YkV)
垢版 |
2023/10/02(月) 17:29:56.66ID:eOR7lDrh0
色々なブレイクポイントで止めて中身を確認、理解する
理解できない部分は置いといて次に進む繰り返し
過去の疑問も解けていく

これは必須の作業。これをやればほとんどの疑問、分析は自己解決できる

昔はPRINTいっぱい埋め込んだものだ
今は楽ちん
0338デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/10/02(月) 20:13:50.59ID:TDDpdEaf0
>324
列挙型でも数字はありますもんね。
ようやく少し理解
0340デフォルトの名無しさん (ワッチョイ 05dc-uznD)
垢版 |
2023/10/02(月) 20:54:18.72ID:3brSOCVN0
>>338
いや、理解できてない
数字がある(=型に数値と互換性があるという意味と推察)かどうかは配列で扱ううえで全く関係ないよ

君が「数字がないもの」と思っているものの配列は理解できる?
例えば文字列配列を配列の長さ3で宣言できる?
0341デフォルトの名無しさん (ワッチョイ 05dc-uznD)
垢版 |
2023/10/02(月) 21:17:33.82ID:3brSOCVN0
>>338
なんで数字にこだわるのかわからなかったけど
> tileList = new TileType[ columns, rows ];
>の部分でtiletype型には定数の文字列が入ると思っていましたが、整数値であるcolumnsとrowsを代入しているあたりが分からないです

ひょっとしてcolumnsとrowsで二次元配列のサイズを指定してるのを
配列tileListにcolumnsとrowsの値を入れていると誤解してる?
0342デフォルトの名無しさん (ワンミングク MMa3-AwC8)
垢版 |
2023/10/02(月) 21:19:04.73ID:lujPkxOVM
荒らしの相手をするのは荒らし
0344デフォルトの名無しさん (ワッチョイ 23e5-VEJP)
垢版 |
2023/10/03(火) 08:07:13.74ID:Uvzxz0ni0
>>341
そうじゃなくて、配列宣言は定数値じゃないといけないと思ってるんでしょ
だから皆から他人のコードを読む以前、基礎がわかってない、先に本なり見て学べって散々言われてるんよ
0346デフォルトの名無しさん (ワッチョイ e3db-uznD)
垢版 |
2023/10/03(火) 10:16:03.76ID:Ovgwwfj90
>>344
それだと「整数値であるcolumnsとrowsを代入している」とは言わないだろう
tileList = new TileType[]{columns, rows};
みたいに初期値を入れてると誤認してるからこそだろう
そして「tiletype型には定数の文字列が入ると思っていました」というのは
tileList = new TileType[]{TileType.PLAYER, TileType.BLOCK};
のような書き方を指していると推察できる
0347デフォルトの名無しさん (ワッチョイ 23e5-VEJP)
垢版 |
2023/10/03(火) 11:03:15.13ID:Uvzxz0ni0
>>346
「定数の文字列が入ると思っていましたが、整数値であるcolumnsとrowsを代入している」ね
要するに配列宣言には定数を使用すると思ってたのに整数型変数使ってるのなんで?ってことよ
0349デフォルトの名無しさん (ワッチョイ e3db-uznD)
垢版 |
2023/10/03(火) 11:29:47.91ID:Ovgwwfj90
>>347
「tiletype型には定数の文字列が入ると思っていましたが、整数値であるcolumnsとrowsを代入している」ね
columnsとrowsが配列のサイズを指定していることを理解していればそうは言わんでしょ
TileType型の配列の初期値に整数値が入るのなんで?ってことよ
0350デフォルトの名無しさん (ワッチョイ e3db-uznD)
垢版 |
2023/10/03(火) 11:40:39.38ID:Ovgwwfj90
>配列宣言は分かっているんですが、型が違いますよね
とか
>列挙型でも数字はありますもんね
って発言からもTileType型の配列には数値は入らないと思ってたけど入るんだと自分を納得させてるフシがある
0353デフォルトの名無しさん (ワッチョイ 23c6-wNmW)
垢版 |
2023/10/03(火) 17:03:23.96ID:L0v6ZlZp0
単に定数値という言葉の意味をわかってないだけでしょたぶんTyleType型の各値のことを言ってる
なんなら宣言という言葉の意味もわかってないし代入すらわかってない可能性もある
0354デフォルトの名無しさん (ワッチョイ 1b22-uQQ6)
垢版 |
2023/10/03(火) 17:33:35.58ID:1Tt4UNmg0
スレタイさ、見て発言してる?
0355デフォルトの名無しさん (ラクッペペ MMcb-0bz8)
垢版 |
2023/10/03(火) 17:52:34.34ID:CTojctYiM
再掲

配列の要素のデータ型が列挙型(の変数)というだけであって配列そのものが特殊なものという訳ではない

この倉庫番のコードではマップのデータをcsv形式のテキストで設定してtileListという名の配列に格納している
格納する際に配列の要素はcsv内の整数データからTileTypeで定義された列挙型の変数に変換される

https://i.imgur.com/iA3fRKM.png
0357デフォルトの名無しさん (ワッチョイ ae8d-OOOs)
垢版 |
2023/10/07(土) 18:26:09.89ID:kQU1DN1N0
interfaceのクラス変数としてintとかの変数持たせるのはstatic intにしても同じことって理解
でいいですか?
0359デフォルトの名無しさん (ワッチョイ ae8d-OOOs)
垢版 |
2023/10/07(土) 19:00:10.87ID:kQU1DN1N0
クラス変数は誤植ですねごめんなさい。interfaceの中に変数宣言できたことです。
0362デフォルトの名無しさん (ワッチョイ ae09-Ju92)
垢版 |
2023/10/07(土) 19:38:58.26ID:isyrDxYL0
C#でインターフェイスにフィールド(メンバ変数)を定義することはできないよ
なのでどういうのを想定しているのか回答者は全然分からない
用語を間違ってる可能性もあるからまずこういうコードというのを示してみたら
0369デフォルトの名無しさん (オイコラミネオ MMad-GYY9)
垢版 |
2023/10/07(土) 20:11:20.39ID:Dbx341NqM
誤植ですねについてああだこうだ言うのが揚げ足取り
イエスかノーかで答えてくださいに知らないと答えたのについてああだこうだ言うのが揚げ足取り

全然どうでもいいことにいちいち突っかかってくるID:M9UZ8U5c0が悪い
0372デフォルトの名無しさん (ワッチョイ aea0-OOOs)
垢版 |
2023/10/07(土) 21:33:04.56ID:kQU1DN1N0
特に継承するわけでもないinterfaceの変数を使っていたので
staticでよくね?って思ったまでです。
0380デフォルトの名無しさん (ワッチョイ 6959-n+VP)
垢版 |
2023/10/08(日) 19:57:18.08ID:7GYxqXei0
(1)オブジェクト指向プログラミング A. クラスの定義 B. オブジェクトの生成 C. カプセル化 D. 継承 E. ポリモーフィズム

(2)関数型プログラミング A. 高階関数 B. クロージャ C. ラムダ関数 D. ジェネレータ E. デコレータ
0383デフォルトの名無しさん (ワッチョイ da79-4iaA)
垢版 |
2023/10/09(月) 00:47:00.57ID:N+sXw7NG0
Taskについて質問です。
階層構造データを再帰的に探索する処理を階層ごとにTask.Factory.StartNewで並列化させて作ってるのですが、
WinFormsのControl.Invokeのように、子タスク内から親タスクのコンテキスト上で実行させたい処理があります。
今は親タスクで作成したリストを追加するActionを子タスクに渡して、後で親タスクでリストから取り出して処理を行っていますが、
可能であればControl.Invokeのように、子タスクのコンテキストのタイミングで親タスクのコンテキストに明示的に移って実行したいと考えています。
これを実現する方法があれば教えてください。Invokeの仕組みを解説してるサイトもあったのですが、意図する方法は見つかりませんでした。
void parent_proc(Tree tree) {
var locker = new ReaderWriterLockSlim(); var datalist = new List<string>(); var tasklist = new List<Task>();
Action<string> adddata = (string d) => { //排他制御でデータをリストに追加
locker.EnterWriteLock(); datalist.Add(d); locker.ExitWriteLock(); };
foreach (var node in tree) {
if (node.child != null) {
var task = Task.Factory.StartNew(() => { child_proc(node.child, adddata); }, TaskCreationOptions.AttachedToParent);
tasklist.Add(task);
} else {
datalist.Add(node.data);
}
}
Task.WaitAll(tasklist.ToArray());
foreach (var data in datalist) { //今は親タスクのコンテキスト上で処理している
}
}

void child_proc(Tree tree, Action<string> adddata) {
foreach (var node in tree) {
if (node.child != null) {
Task.Factory.StartNew(() => { child_proc(node.child, datalist); }, TaskCreationOptions.AttachedToParent);
} else {
adddata(node.data); // このリスト追加処理を無くして、ここで親コンテキストに移って実行したい
}}}
0384デフォルトの名無しさん (オイコラミネオ MMad-GYY9)
垢版 |
2023/10/09(月) 10:33:03.03ID:iALOF4I2M
分かってると思うけど親コンテキストには移れない
親に処理を委譲してるだけ
人間と同じ

それなら親が適切なタイミングでリストを見て実行する様に書き換えるだけだろ
当然waitもawaitも出来ない
脳内でじっくり何をやるか順をシミュレートして考え直すしかない
0385デフォルトの名無しさん (ワッチョイ da79-4iaA)
垢版 |
2023/10/09(月) 11:18:08.46ID:N+sXw7NG0
>>384
ありがとうございます。
よくよく考えるとControl.Invokeにはメッセージループがあるので、
ワーカスレッドから渡されたdelegateを同期的に実行するタイミングがある事に気付きました。
今回の場合Task.WaitAllにタイムアウトを入れて、子タスクのデータを泥臭くポーリングすることで意図する事ができました。

while (!Task.WaitAll(tasks, 50)) { check(); } // check内で子タスクデータを処理
check(); // 全子タスクが完了した後残りデータがあれば処理

ウィンドウが無いケースでもExecutionContextで強引に実現できそうな記事も見つかりましたが、
やろうとしてる事に対して複雑になりすぎるので今回はこれでいこうと思います。
0386デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/10(火) 06:13:55.38ID:Cej5/emK0
キャストとパースは同じものでしょうか?
キャストは型変換で、その手法の1つがパースというイメージです。
0388デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/10(火) 10:21:35.45ID:Cej5/emK0
キャストとParseメソッドの違いは、主に次の点です:

キャストは同じ型の変換に使用されます。つまり、基本的なデータ型間での変換(例: int から double への変換)に適しています。一方、Parseメソッドは、異なる型のデータを文字列から変換するために使用されます。

キャストは基本的に明示的な型変換です。つまり、変換先の型を明示的に指定する必要があります。例えば、(int)doubleValue というように変換先の型をカッコ内で指定します。一方、Parseメソッドは、変換元の文字列が適切な形式であることを確認し、それを適切な型に変換します。具体的な型指定は不要です。

理解
ありがと(*´ω`*)
0390デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/10(火) 18:19:35.44ID:Cej5/emK0
テキストファイルから読み込んだ数字というのは文字列なんですね
だからparseが必要ってことか
0391デフォルトの名無しさん (アウアウウー Sa39-OOOs)
垢版 |
2023/10/12(木) 11:00:16.99ID:u59ybXeVa
float32/64からint32/64にキャストするときって
小数点以下は勝手に切り捨てられるってことで良いのかな
オーバーフローしてたらどうするのかな
色々面倒だよね
「同じ型の変換」って言われると
int32<->int64
の間のキャスト観たいなのを想像する
これも問題無い訳じゃないけど
parseは文字列からの変換を普通に思い浮かべるが
jsonのparseとかみたいに構造まるごと変換のときも使うしな
0394デフォルトの名無しさん (ワッチョイ 615f-Hwqz)
垢版 |
2023/10/13(金) 01:32:05.01ID:/NTFMnAJ0
VisualC#を独習している者です。

教えてください。
GridViewコントロールに←→のような、カレント行を移動させるボタンって、ツールとして用意されていないのでしょうか?
コマンドボタンコントロールを並べて自作するしかないのでしょうか?
0398デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/13(金) 07:24:31.11ID:5yHLdduY0
プログラミングの基礎固めってどこまでやるもんでしょうか
成果物作ろうとしても基礎が出来ないと効率悪いですよね
0401デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/13(金) 13:08:28.58ID:5yHLdduY0
>>400
配列の使い方程度なら基礎ですよね?
ゲームなどの成果物はすぐにでも作りたいのですが、他人のコードを読めない問題に直面しまして、基礎からやり直しです。
0404デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/13(金) 14:09:32.71ID:5yHLdduY0
ただの誹謗中傷になってる場合は、出来るだけ見ないようにしてます
0406デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/13(金) 14:17:45.01ID:5yHLdduY0
それは受け取り方にもよるんですよね
特に人格に対する中傷なんかは得るものがない割に、気が滅入ります
主観的にどう受け取るかという部分もありますし、誹謗中傷の定義は万人共通ではないかと
0407デフォルトの名無しさん (ラクッペペ MM0e-1G1b)
垢版 |
2023/10/13(金) 14:25:28.33ID:61zwOKk/M
配列の宣言、作成、初期化、参照

古典のC言語でもポインタが理解できなくてリタイヤする奴は沢山いた

C#ではとても書きやすくなっているが同じ機能があるということは同様に難しいということ
逃げるなら早い方が良い
0409デフォルトの名無しさん (ワッチョイ 6e83-AlWi)
垢版 |
2023/10/13(金) 14:56:06.30ID:U+TO1bu90
>>406
お前はもう来るなよ
消えろや
0410デフォルトの名無しさん (ワッチョイ b133-Ju92)
垢版 |
2023/10/13(金) 15:44:17.55ID:dO1Gm34h0
>>401
Unityでゲーム作るのが目的なんだろ?
だったら、作って覚える系の入門書をどれか一冊こなしてみればいいと思うよ
そうすれば何が不足しているのか、もう少し具体的に自覚できるようになるから
0412デフォルトの名無しさん (ワッチョイ 8542-AlWi)
垢版 |
2023/10/13(金) 19:01:36.48ID:aXuG2/tR0
入門書を読めというアドバイスには意地でも耳を傾けない初心者
0414デフォルトの名無しさん (ワッチョイ 0a76-lHjV)
垢版 |
2023/10/13(金) 21:10:42.40ID:zzxv1uCg0
他人のコードを読み解くのは自分でコードを書くよりも能力が要る
断片的なネット記事から基礎を学習するのも他言語でプログラミングに慣れてないとちょっと厳しい
まぁ、完全な初心者は定番の入門書を読めってことなんだけど、聞く気無いんだろうなぁ
0417デフォルトの名無しさん (ワッチョイ 5a36-byzf)
垢版 |
2023/10/13(金) 22:57:31.42ID:9b0YvF5R0
初心者には入門書「だけ」は無理だよ
環境設定とか、バージョンの組み合わせとかで動かないことが多い
その場合、初心者は解決できない
ググっても無駄だし
0418デフォルトの名無しさん (ワッチョイ da79-4iaA)
垢版 |
2023/10/13(金) 23:21:21.97ID:79LHTXDX0
俺はお前が判んなくても一向に困らないし相手してやってるのは自己満足の暇つぶしでしかねーんだよ有難く思えよ?ただし理解しようとしない馬鹿の常駐だけは勘弁
がこのスレ住人の大体の本音だろう。つまり馬鹿の相手をするな
0419デフォルトの名無しさん (ワッチョイ 7b5a-VGqS)
垢版 |
2023/10/14(土) 01:34:27.59ID:Z8feDlim0
他人のコードを読むと勉強になると言うのは嘘。
情弱は、それに引っ掛かる

正しくは、他人のコードを無限に時間を浪費して読むと、
ほんの少し分かると言うだけ。
それを10年やっても、半年ぐらいの初心者に勝てない

他人のコードを読むのは、自分で書くよりも、10倍以上難しいし、
さらに悪い事に、記憶の定着率も最悪。
だから、勉強にならない

初心者は、掌田津耶乃みたいな入門書で良い

特に、ひろゆき・ホリエモンみたいなプログラミングの素人に聞かない事。
彼らは、やった事ないでしょ?
0422419 (ワッチョイ 7b5a-VGqS)
垢版 |
2023/10/14(土) 02:44:05.87ID:Z8feDlim0
これで初心者が、Ruby on Rails を学んで転職していくのが分かるでしょ?

それ以外の言語が通用しない理由。
10年やっても、何も作れないから

大学でC をやった香具師の99%が、プログラミングはしょーもない。
何も作れないとやめていく。
Cの教師が職を失いたくないからやってるだけなのに、それにだまされているだけ

C# も同じ。初心者ができるわけない。
9割がモデラー。プログラマーなんて、ほぼいない

Rails以外で、初心者が転職できる事はない!
難しさの桁が違う

3D モデルを作って動かすんだよ。
クォータニオンとか、数学物理をやっていないと無理。
Python と同じ。文系なんて採用されないでしょ。
だから、文系のアホは皆、Railsへ行く

プログラマーはまず、Railsなどをやった後の話
0423デフォルトの名無しさん (ワッチョイ c941-efC7)
垢版 |
2023/10/14(土) 03:58:59.56ID:kxoihP4v0
C/C++も結局は環境依存の各種ライブラリを使わないと初心者では大したものは作れない
普通の授業だとファイル入出力までで終わりで
ディレクトリ操作のdirect.hなんて教えてくれる所は少ないからな
■ このスレッドは過去ログ倉庫に格納されています

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