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

■ このスレッドは過去ログ倉庫に格納されています
2022/11/25(金) 13:16:08.91ID:HZEumDr50
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part156
https://mevius.5ch.net/test/read.cgi/tech/1663479569/
■関連スレ
C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries/
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.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
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
179デフォルトの名無しさん (ワッチョイ 6301-9yt5)
垢版 |
2023/01/03(火) 18:41:34.03ID:yYGSV1g60
ニュースアプリとかウェブで良いよな。
180.NET MAUI HighSchool (ワッチョイ 9a01-duIi)
垢版 |
2023/01/03(火) 20:49:00.39ID:KGK7R/p50
>>178
よくわからんけどWindowの中にPageを追加したらPage.DataContextでVVMのBindingできました
181.NET MAUI HighSchool (ワッチョイ 9a01-duIi)
垢版 |
2023/01/03(火) 20:54:25.22ID:KGK7R/p50
とりあえずスマホ用の5ch.netからスクレイピングした板一覧をツリー表示させることに成功した
https://github.com/VipperNanashi/5chBrowser
ただ板取得はJsonのほうがいいみたいだからJsonから板を取得する方法を模索中
2023/01/03(火) 21:11:49.20ID:WKAtXrzF0
板一覧ってjsonで取れんの?
datのみだった記憶あるが
2023/01/03(火) 21:15:53.36ID:WKAtXrzF0
ぱっと見たけどHttpClientはstatic readonlyで一本永続化したほうが良いよ
稀にしか使わないならまだしも5chブラウザってことならむしろメインオブジェクトだし
184.NET MAUI HighSchool (ワッチョイ 9a01-duIi)
垢版 |
2023/01/03(火) 22:12:10.39ID:KGK7R/p50
>>183
クラスってどう分ければいいんだろうか?
板一覧取得サービス、スレッド一覧取得サービス、スレッド取得サービスで分けようとしてたけど
どうがいいんだろ?
2023/01/04(水) 00:43:08.29ID:r5YTutFsa
Ruby on Rails では、データベースの各表の設計・関連ばかりやる

1対1、1対多、多対多など
2023/01/04(水) 02:21:56.42ID:+C+yH2XZ0
HttpClientを含むネットワーク接続用のクラスを作成してマウイ君の言うところの各サービスクラスのコンストラクタに渡しておくとか?
2023/01/04(水) 11:27:50.76ID:Ry3dqHi90
>>173
各社脱獄を目論んでいる
なんでかっていうとgoogleやAppleの気分次第でアプリを修正しなくちゃいけなくて凄く面倒くさいから
amazonはアプリ作るのやめたっぽい
amazonでこうだから他はもっと面倒くさいと思われ

うちも中小だけどあるとき
ふっと動かなくなってるなんてことあって非常に面倒くさい
もう現状でWEBコントロールにWEBページ貼り付けて強引にアプリっぽい挙動してるけど
なんかもうWEBアプリにしちゃおうか?
って話出てる
188デフォルトの名無しさん (ワッチョイ 9a01-duIi)
垢版 |
2023/01/04(水) 15:19:20.75ID:4AqXXBLo0
>>187
MAUI Blazorでいいんじゃね?それ?
2023/01/04(水) 23:29:03.48ID:7N9i2DDEM
専ブラか…
15年ぐらい前にWPFで作ってたな
そのせいでWPFにいい思いを持てない

MS死ねって思えた
2023/01/05(木) 00:08:37.28ID:vn9u9eY2a
機能をてんこ盛りにしてもガワがダサいと台無しになるんだよな
優秀なデザイナーおらんかね
2023/01/05(木) 02:16:02.09ID:/ldjRQly0
>>190
フラットデザインならツッコまれない上に最古のieでも動くはず
2023/01/05(木) 17:24:19.12ID:p6lP0uhc0
short i;

i = 0; // ok
i = true ? 1 : 0; // コンパイルエラー(キャストが必要)

三項演算子で数値を返す場合って、int固定になってしまうのは言語仕様ということでしょうか?
2023/01/05(木) 17:32:00.71ID:p6lP0uhc0
ぁぁ
上記の場合はコンパイルエラーにならないですね。

以下のようにするとエラーになります
short i;
bool hoge = true;

i = 0; // ok
i = true ? 1 : 0; // ok
i = hoge ? 1 : 0; // コンパイルエラー(キャストが必要)
2023/01/05(木) 17:35:27.31ID:/ldjRQly0
演算子の評価順番が違うだけとかそんなことない?
2023/01/05(木) 17:47:32.82ID:Eo475Zw70
特に明示しない場合、整数リテラルはintになるからってだけなのでは?
2023/01/05(木) 18:35:00.85ID:KPj6QU/BM
まず右辺の数字は整数リテラルと言うもの

変数に代入時は整数リテラルは型より大きすぎるなどしてない限り変数と同じ型とみなされる
そうしないと不便だから

次に i = hoge ? 1 : 0;
の右辺は式である
整数リテラルは代入じゃないときは暗黙的にint扱いになるので右辺の式の値の型はintになる
これでキャストが必要

i = true ? 1 : 0;
この右辺はコンパイル時に決定されてるので代入可能

short s = 7000000-6999999;
これも代入可能なのと同じ感覚
2023/01/05(木) 19:27:18.86ID:p6lP0uhc0
>>196
ありがとうございました。理解しました

確かに
const bool hoge = true;
i = hoge ? 1 : 0;
とやってコンパイル時に決定されるようにするとエラーが無くなりました。

けど簡潔に書くための三項演算子なのに
(short)(hoge ? 1 : 0);
とかやると台無しですねぇ
2023/01/05(木) 19:54:52.08ID:ZKzvhdM60
むしろ、あえてshortを使う理由の方が気になるな
2023/01/05(木) 23:18:41.14ID:QBL7vIUt0
shortを表すリテラルのサフィックスがないのか
2023/01/05(木) 23:26:14.03ID:O+NRT3S+0
>>196
> 整数リテラルは代入じゃないときは暗黙的にint扱いになるので右辺の式の値の型はintになる
> これでキャストが必要
ほんとか?
short s = b switch { true => 1, false => 2 };
はエラーにならんのだが...
2023/01/05(木) 23:27:37.63ID:O+NRT3S+0
>>199
ない、あってもいいのにと思ったけどそもそもshortなんて滅多に使わんことに気づいたわw
2023/01/06(金) 01:05:36.20ID:7HwChuQ+0
>>200
それ、varで定義したらintになってるし、右辺がintになるのは本当だな
で、c#のコンパイラ、縮小変換で切り捨てがないことが確認ができたら、暗黙の縮小変換を許可するっぽいな。

ちゃんとした言語仕様確認しないと何とも言えんが
おそらくコンパイル時に解決可能なことが前提条件じゃないかと推察するが
2023/01/06(金) 10:21:27.99ID:xMgEyxw8r
>>198
組み込み機器相手にしているとよく使う
2023/01/06(金) 10:54:04.53ID:Zk03eeCzM
文字列の中の何文字目に日付があるかを調べたいのですが、
日付の書式としては「2023/01/05(木)」といった感じで固定なものの、
日付の数字は当然日によって違ってくるわけなのでContainsだとちょっとうまくいかないです

いい方法はないでしょうか
2023/01/06(金) 11:05:52.93ID:J1J3+QokM
正規表現でググれ
2023/01/06(金) 12:19:31.93ID:buYHqiH80
>>204
static int IndexOfDateString(string str)
{
const string kDateFormat = "yyyy/MM/dd(ddd)";
int dateLength = kDateFormat.Length - 2;
int index = 0;
while ((index = str.IndexOf(')', index) + 1) >= dateLength)
{
int iStart = index - dateLength;
Console.Out.WriteLine(str.AsSpan(iStart, dateLength));
if (DateTime.TryParseExact(str.AsSpan(iStart, dateLength), kDateFormat, null, default, out var date)) return iStart;
}
return -1;
}
2023/01/06(金) 16:14:10.99ID:Zk03eeCzM
ありがとうございます
参考に(と言うかそのままなのかな?)させてもらいます
208デフォルトの名無しさん (ワッチョイ b6e9-9j0N)
垢版 |
2023/01/06(金) 16:14:19.23ID:RU2dEBn00
WinフォームアプリでgroupBoxをタブみたいに切り替えて使おうと、
コントローラを切り替えるコードを書いたのですが、groupBoxを重ねて実行したら
全てのgroupBoxが一番下のgroupBoxの子になってるようで、思うように表示されませんでした。
groupBoxを、一番下のgroupBoxの子にしない方法はありますでしょうか?
2023/01/06(金) 20:43:15.02ID:LvtbIuXd0
>>208
・・・.Designer.cs を開くと、自動生成したコードが
一番下のgroupBox.Controls.Add(子のgroupBox)
になってないかな?
だとしたら、デザインモードから子のgroupBoxをフォームに貼り付けるとき、
フォーム直下じゃなく、一番下のgroupBoxに貼り付けてると思う

自分なら、Load のタイミングで、任意のgroupBox.Controls.Add(任意の孫コントロール)
を明示的にコーディングする
2023/01/06(金) 21:39:44.23ID:buYHqiH80
>>207
Console.Out.WriteLine(str.AsSpan(iStart, dateLength));
確認用のコード消し忘れたからこれは消しといてOK
2023/01/06(金) 22:12:46.01ID:0EW5INsGM
専ブラでも作るのか?
2023/01/06(金) 22:16:48.35ID:0EW5INsGM
>>200
switch式は左辺参照して型を決める特殊な仕様らしい
int→shortに変えられる詳しい仕様は書かれていないので実装依存になるかも
2023/01/06(金) 22:48:27.26ID:Zd/Zujyt0
>>212
Target typed conditional expression とか言うらしく C# 9.0 で仕様が変わったみたい
ざっくり読んだけどいまいちよくわからん
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/target-typed-conditional-expression
2023/01/06(金) 23:11:40.08ID:i+WCiV6p0
もう誰もついて行けないほどキモい言語になったな
2023/01/06(金) 23:46:18.49ID:lAfbhCFR0
20年間建て増し増改築をくり返してるから。。。
2023/01/07(土) 00:03:23.95ID:14znWkOG0
まぁ、あっても使わなきゃいいだけなんじゃね
C++のような機能性とJavaのような読みやすさを両立してるってことで
2023/01/07(土) 01:49:54.46ID:YilgzCe20
C#ってUnityのせい(おかげ?)で簡単みたいに言われている気がしなくもないけど
まともに使える人は案外少ない印象

そりゃC++とかよりは簡単だろうけど
いきなりスラスラ組めるようになった奴はセンスあると思う
2023/01/07(土) 10:59:31.87ID:r7mle/Qh0
それはC#に限らずオブジェクト指向全般に言える話
最初は誰でも手続きぐちゃぐちゃプログラミングになるからな
2023/01/07(土) 22:36:09.82ID:pHfLuIJC0
C#の言語仕様を拡張してどんどん便利にしても.NETが旧態依然のままでぜんぜん便利にならないから誰も.NETで開発しようなんて思わないんだよな
MSはいい加減.NETそのものやライブラリにお金をかけるべきだわ不便だから誰も使わなくてハウツーやナレッジも少ないからエコシステムが構築されずどんどんC#の人気が落ちてる
JS(TS)やPythonが人気なのはスクリプトだからとか簡単だからとかじゃなくて便利で高機能なパッケージ(ライブラリ)が無料で腐るほどあって人気があるからハウツーやナレッジも豊富でエコシステムが構築されてものすごく良い循環してるからなわけよ
とりあえずいい加減P/Invokeは廃止してMS自らがラッパー提供しろって話なんよなぜ未だにC#でGlobal HookなんかのOSのAPIにアクセスするのにP/Invokeが必要なのかそもそもこれがおかしいと思わんのかな
P/InvokeなんてC/C++理解できんやつには使えるわけがないんだがMAUIとかBlazorとかフロントエンドばかり小手先の改良加えるだけでぜんぜんやる気ないだろそりゃAndroidアプリに頼るしかなくなるわな
2023/01/08(日) 01:34:28.04ID:TcqU+QzpM
その認識は間違ってると思うが…
2023/01/08(日) 02:43:36.44ID:FOdy7Dic0
またランタイムに相当するやつを別にインストールする必要があるのかってところが猛烈にダサいよね
巨大exeの配布とどっちが良いかみたいな時代と逆行した昔話を思い出すよ
結局昔のようにMS主導で強制されるまでは誰も積極的に使わないだろう
2023/01/08(日) 09:40:34.44ID:TcqU+QzpM
C#は実際のアクティブユーザー数は少ない
プログラムが趣味ですと言ってる人の中でC#使ってる人の割合が少ないと言う感覚
更にガチ勢の割合が少ない

当初.netのライブラリが充実していた(GUI除く)ので一般人はOSSやサードパーティー製をなかなか使わない風土になってる
それで開発が少ないしされてもすぐ放置される
jsonライブラリも標準が出てしまった
ユーザーはライブラリ開発しないで提供されるのを待つだけ
ガチ勢が育たない

jsは唯一のwebブラウザ向け言語なのに素では開発しづらいから便利なライブラリが開発され続けてる
ライブラリのみでなくjs自体にトランスパイルされる言語が複数開発されてる

一方C#じゃなければ実現できないことはないから積極的に開発されない

C#の人気が落ちてると感じるのは相対的に他の言語の魅力が上がってるから
と言うより20年使ってたけどC#はホビーユースが中心にもかかわらずMS以外でそんなにC#は重要視されてた時代はない

C#は基本的に想定した以外のAPIは放置されてる
GlobalHookなどは馬鹿避けで馬鹿に触らせると問題が起こるので機能を提供してないものと思われる
2023/01/08(日) 09:47:03.48ID:RamX2q3K0
ほらMAUI君のキチガイムーブのせいでこんなことになってる
2023/01/08(日) 09:48:03.50ID:TcqU+QzpM
>>219
こいつがMAUI君なのか?
2023/01/08(日) 09:56:44.66ID:QVI3ZNoXM
騒ぎに便乗している愉快犯だろうが主張が滅茶苦茶
2023/01/08(日) 10:06:02.24ID:T7l3+Pw00
ヤベぇ奴が2連発
2023/01/08(日) 10:09:17.22ID:TcqU+QzpM
C#は外部ライブラリがあまり開発されてない
純正志向が強い

js,Pythonなどは区別なく使われてる
Rustは標準ライブラリも外部ライブラリ向けに実装部分を差し替えられるように提供されてたりする
コミュニティ提供のrust入門書でも外部の乱数ライブラリを使ってる

.netは純正主義
228デフォルトの名無しさん (ワッチョイ 9301-GR7q)
垢版 |
2023/01/08(日) 10:32:30.16ID:+xzWagUM0
>>227
たしかに.NETの標準ライブラリで何でも出来すぎてOSSが盛んにならないってのはあると思う
ただサイシャープの河合社長だったり有用なOSSライブラリを作ってる人はかなりいる
みんな知らないだけ
229デフォルトの名無しさん (ワッチョイ 9301-GR7q)
垢版 |
2023/01/08(日) 10:34:46.44ID:+xzWagUM0
まさか標準ライブラリの充実がOSSの足枷になってるとはね
たしかに言語仕様的にゴミカスなJSやPythonがこんだけOSSで流行ってるって言うのは割と関係あるな
230デフォルトの名無しさん (ワッチョイ 93ad-U0xt)
垢版 |
2023/01/08(日) 10:56:45.19ID:cWCXtcgI0
仕事で使うなら標準が充実してる環境の方がいい
231デフォルトの名無しさん (ワッチョイ 9301-GR7q)
垢版 |
2023/01/08(日) 11:11:28.09ID:+xzWagUM0
>>230
まぁバージョンが新しい古いとかで動かないとかかなりあるしね
Node.jsなんてそんな感じのグチかなり聞くわ
Sysmem.Text.JsonもNewtonsoft.Jsonのアプデ頻度が高いからしゃーなしに開発されたものらしい
2023/01/08(日) 14:49:48.54ID:TcqU+QzpM
それに .net standardとかPLCとかの問題で非常にライブラリ開発がつらい時期があった
ふざけるなと思ってる人も多かったはず
233デフォルトの名無しさん (スッップ Sdb3-kOMB)
垢版 |
2023/01/08(日) 21:24:57.31ID:vR0OTCC7d
Pythonなんてライブラリのバージョンや本体のバージョンで動かなくなるのでうんざりする
2023/01/08(日) 21:52:10.63ID:PmW37SD40
それはPythonに限らんよReactもFlutterもViteもなんでもそうだ
ちゃんとパッケージを管理できてないお前のスキルが低いだけ
235デフォルトの名無しさん (スッップ Sdb3-kOMB)
垢版 |
2023/01/08(日) 22:19:24.54ID:vR0OTCC7d
>>234
そういうレベルじゃない
ライブラリ同士の整合性問題がC#の比較じゃない
そもそも比較がC#なのに何で他のを持ち出すんだ?
頭悪そう
2023/01/08(日) 22:37:24.96ID:fqXaATjG0
>>235
ここのスレタイ確認しろよ
Pythonを例に挙げている時点でお前も頭悪いよ
237デフォルトの名無しさん (ブーイモ MM35-mEot)
垢版 |
2023/01/08(日) 22:51:16.76ID:Qur7Wt30M
>>235
わかる
あれひどいよな
ものすごくメジャーライブラリでもPythonのバージョン上がると動かなくなって修正に半年とか普通にかかる
リリースされて半年~1年は実質ベータ期間
2023/01/09(月) 00:01:38.16ID:2yNmR2Eh0
他人に期待しても無駄だから安定してるの使えばいいのよ
俺もC#はpowershellとも連携させるから基本OS標準に入ってるバージョンの機能しか使わないし
2023/01/09(月) 16:28:59.82ID:CwlhWpkE0
ライセンス気にせずにExcel操作ライブラリ使うなら、読み取りはExcelDataReader、書き込みはClosedXMLがいいのかね?
EPPlusは商用ライセンス高すぎて使えないわ
240デフォルトの名無しさん (ワッチョイ 515f-DWwd)
垢版 |
2023/01/09(月) 17:37:32.83ID:vMc2E6cN0
SpreadsheetLightってのもある
あと知ってるかもしれんがEPPlusはv4系までは商用でもフリーだぞ
net standard2.0だから今後しばらくは問題ないと思う
241デフォルトの名無しさん (アウアウウー Sa85-DH5p)
垢版 |
2023/01/11(水) 11:19:45.11ID:6xJiw1N1a
単純な真理
馬鹿でも使えるようにすると馬鹿しか使わなくなる
2023/01/11(水) 12:26:53.93ID:mTSuB4YT0
>>241
HTML
はい論破
2023/01/11(水) 12:30:24.34ID:9UsnsdsEp
あれ言語?
レイアウト用のスクリプトじゃね?
2023/01/11(水) 12:31:26.63ID:xxqhJq0+0
>>241
5chのことかぁぁぁ!
2023/01/12(木) 00:35:27.24ID:1+V28XvP0
winformsってみんな普通に使ってるし自分も時々使ってるけどこれといったテキスト売ってないよね
みんななんとなくで習得してる
それでもなんとかなるほど学習コストが低いってことなのかな
2023/01/12(木) 00:39:53.96ID:Ae6OSc1r0
visualstudio使えば、割と簡単とは思うけど
GUI的な考えが分からない奴は結局ちょっと複雑になると作れないんだよなぁ
UI thread的な考えが理解出来ないとUI thread以外でUI操作しようとしたりするしw
2023/01/12(木) 01:42:03.27ID:9BD/EtRG0
>>245
比較対象がWPFなら簡単過ぎるぐらいだな
248デフォルトの名無しさん (テテンテンテン MM4b-JmZ8)
垢版 |
2023/01/13(金) 04:09:28.41ID:i9/MSi6dM
まあアレは直感的にわかりますし……
WPFの方が調べても全然出てこなくて困る、書籍も少ないし
249デフォルトの名無しさん (ワッチョイ b101-tb1I)
垢版 |
2023/01/13(金) 06:37:45.03ID:CqT5d+dn0
@ if ((choice == 2 && player == 2) || (choice == 3 && player == 1))
A if (0 <= xpos && xpos < XMAX && num[xpos] < YMAX)
B board[xpos][num[xpos]++] = player;

C for (x = 0, y = ypos, n = 0; x < XMAX; x++)
D for (x = xpos, y = 0, n = 0; y <= ypos; y++)
E for (x = 0, y = ypos - xpos, n = 0; y < YMAX; x++, y++)
F for (x = xpos - ypos, y = 0, n = 0; x < XMAX; x++, y++)
G for (x = 0, y = xpos + ypos, n = 0; y >= 0; x++, y--)
H for (x = xpos + ypos - YMAX + 1, y = YMAX - 1, n = 0; x < XMAX; x++, y--)
の各条件文内でどーゆー計算、アルゴリズムがされてるか教えてくださる人いますか??
2023/01/13(金) 06:54:01.37ID:QZjdOIAl0
何がわからんのかわからん
課題なら先生に聞け

あーChatGPTなら教えてくれるかもな
251デフォルトの名無しさん (ワッチョイ b101-tb1I)
垢版 |
2023/01/13(金) 09:13:03.94ID:CqT5d+dn0
例えば@だと、&&が論理積、||が論理和ということだと思うんですけど、演算子が分かってもその条件文内で何が行われているかとかが分からないので知りたい状態なんです。。
2023/01/13(金) 09:19:57.40ID:ohfi5XtE0
ベン図でも描けば?
2023/01/13(金) 09:21:26.34ID:r1OLO4Qgp
マジックナンバーイクナイ
2023/01/13(金) 09:25:11.90ID:QZjdOIAl0
>>251
それなら俺らもそれ以上はわからんぞ
変数名をちゃんと意味あるものにしてやって >>253 が言うようにマジックナンバーをなくすと読めるようになる
2023/01/13(金) 10:43:33.37ID:g8ppNh/ZM
>>249
いますかの答えとしてはいない
書いてるコード断片にはアルゴリズムもなにもない
それにこれ多分Cだろ
ここは C#と言う別言語のスレなのですれ違い

これは多分オセロみたいなゲームのコードだろ
縦ラインループ横ラインループと斜めラインループしてる

player1 と player2が対戦して boardが合ってXMAXとYAMXのボード幅ではみ出し判定してる
計算もアルゴリズムも何も感じられない

その前にさあIDEの使い方覚えて一行ずつ動かして何が起こってるか見てみたらいい
初心者の間は状態などを紙にでも書かないと多分わからないよ
256デフォルトの名無しさん (アウアウウー Sa85-DH5p)
垢版 |
2023/01/13(金) 10:54:17.50ID:+TkXA4uqa
マルチで Google Drive のリンクまで晒してるけど
学校名も個人名もばれるから落第だな
下手したら退学
2023/01/13(金) 11:24:47.04ID:2CVvZRFNd
ちゃんと対象言語のスレで聞いてりゃまだ可愛げがあるけど
他言語やVSCodeのスレとかにまでマルチポストだからげんなりするわ
258デフォルトの名無しさん (ブーイモ MM4b-mEot)
垢版 |
2023/01/13(金) 11:42:28.12ID:Qkt7plGTM
半期やってこれがわからないような学生に今どきCを教える大学って終わってるな
259デフォルトの名無しさん (ワッチョイ b101-tb1I)
垢版 |
2023/01/13(金) 12:02:36.51ID:CqT5d+dn0
>>255
ありがとうございます、スレ違いで申し訳ありません。
>>"これは多分オセロみたいなゲームのコードだろ
縦ラインループ横ラインループと斜めラインループしてる"
例えばどの条件文、関数からこれを読み取れたのですか?
2023/01/13(金) 12:09:39.59ID:g8ppNh/ZM
マルチなのか相手して損した
にしてもやる気がない人にはこのレベルはちょっと難しいんだろうなとも思う

二次元配列とボードがイメージとして直結してなくてx、yで盤面の位置を指してることが理解できれば変わるだろうけど
2023/01/13(金) 12:10:56.40ID:g8ppNh/ZM
リロードしてなかったから書き込みが見えてなかったけど
スレ違いなのでもうレスしない
2023/01/13(金) 12:11:52.99ID:w4pCcfcAM
わかんない人をわからせるのは
短文投稿サイトでは難儀なので
元々の問題文を貼ってくれれば
正確な回答をもらえると思いま
2023/01/13(金) 12:13:53.39ID:g8ppNh/ZM
>>262
こら!

スレ違いなので答えてはいけないしどうも他のスレでは張ってあるらしし
2023/01/13(金) 12:42:09.38ID:2CVvZRFNd
5スレマルチポスト
他所でも警告してやって
http://hissi.org/read.php/tech/20230113/Q3FUNWQrZG4w.html
http://hissi.org/read.php/tech/20230113/Q3FUNWQrZG4.html
265デフォルトの名無しさん (ブーイモ MM4b-IdlF)
垢版 |
2023/01/13(金) 22:44:16.91ID:UM8Nby1DM
データテーブルの列名が日本語になってるデータベースと、C#コードを連携します。

データテーブルのデータを保持するクラスを定義する際、同じようにして日本語を使ってフィールドを定義すれば対応関係がよくわかるのですが、英語やローマ字で定義したほうが良いでしょうか。
2023/01/13(金) 22:59:24.65ID:QrXHZOLk0
今開発してるのがまさに日本語カラムばかりなんだけどめっちゃ楽だぞ
ソースコード内でもカラムを示す箇所が視覚的にわかりやすいしインテリセンスでも埋もれない

カルチャー的に受け付けない人はいるだろうけど使ってみると考えも変わる
2023/01/13(金) 23:52:57.11ID:N2c+mgjH0
過去に行政の税システムのソースを見たら変数名が日本語だった。メーカーのPMに「日本語なんすね」と言ったら「間違いを無くすにはもうこれしかないんです」と言っていた。
税の用語は難しく数が多くて計算は複雑で、もし間違えたら記者会見して新聞記事になる。こういう対象にはそれに適した手段を用いるのが肝要だと思った。
2023/01/14(土) 00:37:39.38ID:ISrlGbh20
nameof使えるし日本語フィールド名で良いんじゃない
269デフォルトの名無しさん (ワッチョイ fd7f-PB+X)
垢版 |
2023/01/14(土) 03:37:58.98ID:xHYJkNGt0
>>266
レスありがとうございます。

>インテリセンスでも埋もれない
インスタンス名に続けて、ドットを打ったらインテリセンスで日本語名フィールドが表示されるのですね。

row_日本語の列名 みたいにしてなにか最初にアルファベットで列名に関与していることを示してみようかと思っています。
フィールドでは無意味かな。
でも、クラス名が日本語の場合は、model_日本語名 みたいな感じで最初にアルファベットをつけておくと、
インスタンス化のときにnewによるコンストラクタの呼び出しが便利かもと思っています。

>>267
たしかに。間違いはなくなりそう。日本語から英語に訳すのに時間がとられるし、それで対応関係がわからなくなってしまったら、
まったく無意味ですよね。
私も、日本語でやってみたいと思います。

>>268
https://atmarkit.itmedia.co.jp/ait/articles/1607/20/news026.html によると、
>nameof演算子を使うと、名前空間/型/メソッド/プロパティ/変数などの単純な名前(=名前空間やクラス名などで修飾されていない名前)の文字列が取得できる。

でも、何の役に立つのかピンとこない。
日本語フィールドとどう関係があるの?
2023/01/14(土) 05:06:37.76ID:XX64qgVXH
ひょっとしていまだにDataTable/DataSetを使ってるとか、生のDataReaderでレコードを取り出して1項目ずつフィールドに転記するつもりなんだろうか
EntityFrameworkなりDapperなり使わなきゃだめだよ
DapperでSQLを手書きする前提なら、nameofを使ってこんな感じ

public class T_テーブル1 {
 public string カラム1 { get; set; }
 public string カラム2 { get; set; }
 public string カラム3 { get; set; }
}

var sql1 = $"SELECT * FROM {nameof(T_テーブル1)} WHERE {nameof(T_テーブル1.カラム1)}=@val";
T_テーブル1? rec = connection.QueryFirstOrDefault<T_テーブル1>(sql, new { val = "aaa" });

string sql2 = $"INSERT INTO {nameof(T_テーブル1)}"
+ $"({nameof(T_テーブル1.カラム1)}, {nameof(T_テーブル1.カラム2)},{nameof(T_テーブル1.カラム3)})"
+ $"VALUES(@{nameof(T_テーブル1.カラム1)}, @{nameof(T_テーブル1.カラム2)}, @{nameof(T_テーブル1.カラム3)})"
connection.Execute(sql2, rec);

個人的にはクラス名(テーブル名)・プロパティ名(カラム名)については
たとえC#の命名規約に反しようと全角半角・英大文字小文字含めDB定義通りにして
SQL文組み立てにフル活用できるようにする
2023/01/14(土) 08:03:33.86ID:YVgT972+0
テーブル1とテーブル2で同じカラム名があるとダルそうですね
2023/01/14(土) 11:14:54.89ID:1tybvzL1d
テーブル名やカラム名そのままならたぶん大丈夫だとは思うけど
カッコ系や「・」なんかの全角記号がほとんど使えないのは一応注意を
273デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
垢版 |
2023/01/14(土) 14:27:07.61ID:xHYJkNGt0
>>270
レスありがとうございます。
お察しの通り、datareaderをforでぐるぐる回しながら、エンティティにデータ格納しようとしています。
ほとんどストアドプロシジャによる処理手順があり、これを実行した結果をC#で扱いたいんです。
ストアドプロシジャがあるのにEFを使う話は書籍にも見られません。

Dapperは全く勉強したことないので全然知りませんでした。
でも、そうやってnameofを使うわけなのですね。
優位性や適応についても知りたくなりました。
274デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
垢版 |
2023/01/14(土) 14:30:25.35ID:xHYJkNGt0
>>271
同じ名前のフィールドができるからですか?
でも異なるタイプのエンティティなら問題ないのかなと思います。

>>272
ありがとうございます。
気をつけます。
275デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
垢版 |
2023/01/14(土) 14:40:51.64ID:xHYJkNGt0
>>273
>でも、そうやってnameofを使うわけなのですね。

文字列内(今回はSQL文)に、クラスのフィールド名を組み込みたいときに使うと良いということがよくわかりました。
すると、その場合、クラス名、フィールド名は、データベースの列名に一致させておくことが必須ですね。
どうもありがとうございます。
2023/01/14(土) 21:37:09.12ID:JGEy8Mb7H
ちょっとまって、フィールド名とカラム名を一致させるのはnameofのためじゃなくて
EFやDapperでもって取得したレコードや更新値を全レコード/全カラム自動マッピングさせるためだよ
いまどき手動でDataReaderから1項目ずつ値転記したりDbCommand/DbParameterをいちいち指定したりなんて
もはや許されない前時代的老害コーディングだからやっちゃだめ
あとEFでのストアド実行ならふつうにSqlQuery()とかの生クエリで出来ると思う
2023/01/14(土) 23:34:32.45ID:v+aDVA7Ga
SQL 文を組み立てるのは、数十年前のやり方

Ruby on Rails では、1対1・1対多・多対多など、表同士の関連を定義する
2023/01/15(日) 00:10:03.35ID:GqZOBUMQ0
HttpClientでPostAsyncするときにユーザーエージェントを指定したい時はDefaultHeadersをいじるしかないのでしょうか。
それをするとマルチスレッドで同時に別のユーザーエージェントで送りたいときに独自で排他制御しないといけない気がします。
かと言ってSendAsyncを使うと今度はContent-Typeをapplication/x-www-form-urlencodedにしたくても勝手に後ろに文字コードの;uft-8などが付いてきて困っています。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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