23/01/05 19:27:18.86 p6lP0uhc0.net
>>196
ありがとうございました。理解しました
確かに
const bool hoge = true;
i = hoge ? 1 : 0;
とやってコンパイル時に決定されるようにするとエラーが無くなりました。
けど簡潔に書くための三項演算子なのに
(short)(hoge ? 1 : 0);
とかやると台無しですねぇ
201:デフォルトの名無しさん
23/01/05 19:54:52.08 ZKzvhdM60.net
むしろ、あえてshortを使う理由の方が気になるな
202:デフォルトの名無しさん
23/01/05 23:18:41.14 QBL7vIUt0.net
shortを表すリテラルのサフィックスがないのか
203:デフォルトの名無しさん
23/01/05 23:26:14.03 O+NRT3S+0.net
>>196
> 整数リテラルは代入じゃないときは暗黙的にint扱いになるので右辺の式の値の型はintになる
> これでキャストが必要
ほんとか?
short s = b switch { true => 1, false => 2 };
はエラーにならんのだが...
204:デフォルトの名無しさん
23/01/05 23:27:37.63 O+NRT3S+0.net
>>199
ない、あってもいいのにと思ったけどそもそもshortなんて滅多に使わんことに気づいたわw
205:デフォルトの名無しさん
23/01/06 01:05:36.20 7HwChuQ+0.net
>>200
それ、varで定義したらintになってるし、右辺がintになるのは本当だな
で、c#のコンパイラ、縮小変換で切り捨てがないことが確認ができたら、暗黙の縮小変換を許可するっぽいな。
ちゃんとした言語仕様確認しないと何とも言えんが
おそらくコンパイル時に解決可能なことが前提条件じゃないかと推察するが
206:デフォルトの名無しさん
23/01/06 10:21:27.99 xMgEyxw8r.net
>>198
組み込み機器相手にしているとよく使う
207:デフォルトの名無しさん
23/01/06 10:54:04.53 Zk03eeCzM.net
文字列の中の何文字目に日付があるかを調べたいのですが、
日付の書式としては「2023/01/05(木)」といった感じで固定なものの、
日付の数字は当然日によって違ってくるわけなのでContainsだとちょっとうまくいかないです
いい方法はないでしょうか
208:デフォルトの名無しさん
23/01/06 11:05:52.93 J1J3+QokM.net
正規表現でググれ
209:デフォルトの名無しさん
23/01/06 12:19:31.93 buYHqiH80.net
>>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;
}
210:204
23/01/06 16:14:10.99 Zk03eeCzM.net
ありがとうございます
参考に(と言うかそのままなのかな?)させてもらいます
211:デフォルトの名無しさん
23/01/06 16:14:19.23 RU2dEBn00.net
WinフォームアプリでgroupBoxをタブみたいに切り替えて使おうと、
コントローラを切り替えるコードを書いたのですが、groupBoxを重ねて実行したら
全てのgroupBoxが一番下のgroupBoxの子になってるようで、思うように表示されませんでした。
groupBoxを、一番下のgroupBoxの子にしない方法はありますでしょうか?
212:デフォルトの名無しさん (ワッチョイ bb5f-TwI4)
23/01/06 20:43:15.02 LvtbIuXd0.net
>>208
・・・.Designer.cs を開くと、自動生成したコードが
一番下のgroupBox.Controls.Add(子のgroupBox)
になってないかな?
だとしたら、デザインモードから子のgroupBoxをフォームに貼り付けるとき、
フォーム直下じゃなく、一番下のgroupBoxに貼り付けてると思う
自分なら、Load のタイミングで、任意のgroupBox.Controls.Add(任意の孫コントロール)
を明示的にコーディングする
213:デフォルトの名無しさん
23/01/06 21:39:44.23 buYHqiH80.net
>>207
Console.Out.WriteLine(str.AsSpan(iStart, dateLength));
確認用のコード消し忘れたからこれは消しといてOK
214:デフォルトの名無しさん
23/01/06 22:12:46.01 0EW5INsGM.net
専ブラでも作るのか?
215:デフォルトの名無しさん
23/01/06 22:16:48.35 0EW5INsGM.net
>>200
switch式は左辺参照して型を決める特殊な仕様らしい
int→shortに変えられる詳しい仕様は書かれていないので実装依存になるかも
216:デフォルトの名無しさん
23/01/06 22:48:27.26 Zd/Zujyt0.net
>>212
Target typed conditional expression とか言うらしく C# 9.0 で仕様が変わったみたい
ざっくり読んだけどいまいちよくわからん
URLリンク(learn.microsoft.com)
217:デフォルトの名無しさん
23/01/06 23:11:40.08 i+WCiV6p0.net
もう誰もついて行けないほどキモい言語になったな
218:デフォルトの名無しさん
23/01/06 23:46:18.49 lAfbhCFR0.net
20年間建て増し増改築をくり返してるから。。。
219:デフォルトの名無しさん
23/01/07 00:03:23.95 14znWkOG0.net
まぁ、あっても使わなきゃいいだけなんじゃね
C++のような機能性とJavaのような読みやすさを両立してるってことで
220:デフォルトの名無しさん
23/01/07 01:49:54.46 YilgzCe20.net
C#ってUnityのせい(おかげ?)で簡単みたいに言われている気がしなくもないけど
まともに使える人は案外少ない印象
そりゃC++とかよりは簡単だろうけど
いきなりスラスラ組めるようになった奴はセンスあると思う
221:デフォルトの名無しさん (ワッチョイ 99a7-DWwd)
23/01/07 10:59:31.87 r7mle/Qh0.net
それはC#に限らずオブジェクト指向全般に言える話
最初は誰でも手続きぐちゃぐちゃプログラミングになるからな
222:デフォルトの名無しさん
23/01/07 22:36:09.82 pHfLuIJC0.net
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アプリに頼るしかなくなるわな
223:デフォルトの名無しさん
23/01/08 01:34:28.04 TcqU+QzpM.net
その認識は間違ってると思うが…
224:デフォルトの名無しさん
23/01/08 02:43:36.44 FOdy7Dic0.net
またランタイムに相当するやつを別にインストールする必要があるのかってところが猛烈にダサいよね
巨大exeの配布とどっちが良いかみたいな時代と逆行した昔話を思い出すよ
結局昔のようにMS主導で強制されるまでは誰も積極的に使わないだろう
225:デフォルトの名無しさん
23/01/08 09:40:34.44 TcqU+QzpM.net
C#は実際のアクティブユーザー数は少ない
プログラムが趣味ですと言ってる人の中でC#使ってる人の割合が少ないと言う感覚
更にガチ勢の割合が少ない
当初.netのライブラリが充実していた(GUI除く)ので一般人はOSSやサードパーティー製をなかなか使わない風土になってる
それで開発が少ないしされてもすぐ放置される
jsonライブラリも標準が出てしまった
ユーザーはライブラリ開発しないで提供されるのを待つだけ
ガチ勢が育たない
jsは唯一のwebブラウザ向け言語なのに素では開発しづらいから便利なライブラリが開発され続けてる
ライブラリのみでなくjs自体にトランスパイルされる言語が複数開発されてる
一方C#じゃなければ実現できないことはないから積極的に開発されない
C#の人気が落ちてると感じるのは相対的に他の言語の魅力が上がってるから
と言うより20年使ってたけどC#はホビーユースが中心にもかかわらずMS以外でそんなにC#は重要視されてた時代はない
C#は基本的に想定した以外のAPIは放置されてる
GlobalHookなどは馬鹿避けで馬鹿に触らせると問題が起こるので機能を提供してないものと思われる
226:デフォルトの名無しさん
23/01/08 09:47:03.48 RamX2q3K0.net
ほらMAUI君のキチガイムーブのせいでこんなことになってる
227:デフォルトの名無しさん
23/01/08 09:48:03.50 TcqU+QzpM.net
>>219
こいつがMAUI君なのか?
228:デフォルトの名無しさん
23/01/08 09:56:44.66 QVI3ZNoXM.net
騒ぎに便乗している愉快犯だろうが主張が滅茶苦茶
229:デフォルトの名無しさん
23/01/08 10:06:02.24 T7l3+Pw00.net
ヤベぇ奴が2連発
230:デフォルトの名無しさん
23/01/08 10:09:17.22 TcqU+QzpM.net
C#は外部ライブラリがあまり開発されてない
純正志向が強い
js,Pythonなどは区別なく使われてる
Rustは標準ライブラリも外部ライブラリ向けに実装部分を差し替えられるように提供されてたりする
コミュニティ提供のrust入門書でも外部の乱数ライブラリを使ってる
.netは純正主義
231:デフォルトの名無しさん
23/01/08 10:32:30.16 +xzWagUM0.net
>>227
たしかに.NETの標準ライブラリで何でも出来すぎてOSSが盛んにならないってのはあると思う
ただサイシャープの河合社長だったり有用なOSSライブラリを作ってる人はかなりいる
みんな知らないだけ
232:デフォルトの名無しさん
23/01/08 10:34:46.44 +xzWagUM0.net
まさか標準ライブラリの充実がOSSの足枷になってるとはね
たしかに言語仕様的にゴミカスなJSやPythonがこんだけOSSで流行ってるって言うのは割と関係あるな
233:デフォルトの名無しさん
23/01/08 10:56:45.19 cWCXtcgI0.net
仕事で使うなら標準が充実してる環境の方がいい
234:デフォルトの名無しさん
23/01/08 11:11:28.09 +xzWagUM0.net
>>230
まぁバージョンが新しい古いとかで動かないとかかなりあるしね
Node.jsなんてそんな感じのグチかなり聞くわ
Sysmem.Text.JsonもNewtonsoft.Jsonのアプデ頻度が高いからしゃーなしに開発されたものらしい
235:デフォルトの名無しさん (オイコラミネオ MM5d-DSRP)
23/01/08 14:49:48.54 TcqU+QzpM.net
それに .net standardとかPLCとかの問題で非常にライブラリ開発がつらい時期があった
ふざけるなと思ってる人も多かったはず
236:デフォルトの名無しさん
23/01/08 21:24:57.31 vR0OTCC7d.net
Pythonなんてライブラリのバージョンや本体のバージョンで動かなくなるのでうんざりする
237:デフォルトの名無しさん
23/01/08 21:52:10.63 PmW37SD40.net
それはPythonに限らんよReactもFlutterもViteもなんでもそうだ
ちゃんとパッケージを管理できてないお前のスキルが低いだけ
238:デフォルトの名無しさん
23/01/08 22:19:24.54 vR0OTCC7d.net
>>234
そういうレベルじゃない
ライブラリ同士の整合性問題がC#の比較じゃない
そもそも比較がC#なのに何で他のを持ち出すんだ?
頭悪そう
239:デフォルトの名無しさん
23/01/08 22:37:24.96 fqXaATjG0.net
>>235
ここのスレタイ確認しろよ
Pythonを例に挙げている時点でお前も頭悪いよ
240:デフォルトの名無しさん
23/01/08 22:51:16.76 Qur7Wt30M.net
>>235
わかる
あれひどいよな
ものすごくメジャーライブラリでもPythonのバージョン上がると動かなくなって修正に半年とか普通にかかる
リリースされて半年~1年は実質ベータ期間
241:デフォルトの名無しさん
23/01/09 00:01:38.16 2yNmR2Eh0.net
他人に期待しても無駄だから安定してるの使えばいいのよ
俺もC#はpowershellとも連携させるから基本OS標準に入ってるバージョンの機能しか使わないし
242:デフォルトの名無しさん
23/01/09 16:28:59.82 CwlhWpkE0.net
ライセンス気にせずにExcel操作ライブラリ使うなら、読み取りはExcelDataReader、書き込みはClosedXMLがいいのかね?
EPPlusは商用ライセンス高すぎて使えないわ
243:デフォルトの名無しさん
23/01/09 17:37:32.83 vMc2E6cN0.net
SpreadsheetLightってのもある
あと知ってるかもしれんがEPPlusはv4系までは商用でもフリーだぞ
net standard2.0だから今後しばらくは問題ないと思う
244:デフォルトの名無しさん
23/01/11 11:19:45.11 6xJiw1N1a.net
単純な真理
馬鹿でも使えるようにすると馬鹿しか使わなくなる
245:デフォルトの名無しさん (ワッチョイ 99a7-DWwd)
23/01/11 12:26:53.93 mTSuB4YT0.net
>>241
HTML
はい論破
246:デフォルトの名無しさん (ササクッテロリ Sp4d-1ccR)
23/01/11 12:30:24.34 9UsnsdsEp.net
あれ言語?
レイアウト用のスクリプトじゃね?
247:デフォルトの名無しさん (ワッチョイ 2bbb-Jp3v)
23/01/11 12:31:26.63 xxqhJq0+0.net
>>241
5chのことかぁぁぁ!
248:デフォルトの名無しさん
23/01/12 00:35:27.24 1+V28XvP0.net
winformsってみんな普通に使ってるし自分も時々使ってるけどこれといったテキスト売ってないよね
みんななんとなくで習得してる
それでもなんとかなるほど学習コストが低いってことなのかな
249:デフォルトの名無しさん
23/01/12 00:39:53.96 Ae6OSc1r0.net
visualstudio使えば、割と簡単とは思うけど
GUI的な考えが分からない奴は結局ちょっと複雑になると作れないんだよなぁ
UI thread的な考えが理解出来ないとUI thread以外でUI操作しようとしたりするしw
250:デフォルトの名無しさん
23/01/12 01:42:03.27 9BD/EtRG0.net
>>245
比較対象がWPFなら簡単過ぎるぐらいだな
251:デフォルトの名無しさん
23/01/13 04:09:28.41 i9/MSi6dM.net
まあアレは直感的にわかりますし……
WPFの方が調べても全然出てこなくて困る、書籍も少ないし
252:デフォルトの名無しさん
23/01/13 06:37:45.03 CqT5d+dn0.net
① if ((choice == 2 && player == 2) || (choice == 3 && player == 1))
② if (0 <= xpos && xpos < XMAX && num[xpos] < YMAX)
③ board[xpos][num[xpos]++] = player;
④ for (x = 0, y = ypos, n = 0; x < XMAX; x++)
⑤ for (x = xpos, y = 0, n = 0; y <= ypos; y++)
⑥ for (x = 0, y = ypos - xpos, n = 0; y < YMAX; x++, y++)
⑦ for (x = xpos - ypos, y = 0, n = 0; x < XMAX; x++, y++)
⑧ for (x = 0, y = xpos + ypos, n = 0; y >= 0; x++, y--)
⑨ for (x = xpos + ypos - YMAX + 1, y = YMAX - 1, n = 0; x < XMAX; x++, y--)
の各条件文内でどーゆー計算、アルゴリズムがされてるか教えてくださる人いますか??
253:デフォルトの名無しさん
23/01/13 06:54:01.37 QZjdOIAl0.net
何がわからんのかわからん
課題なら先生に聞け
あーChatGPTなら教えてくれるかもな
254:デフォルトの名無しさん
23/01/13 09:13:03.94 CqT5d+dn0.net
例えば①だと、&&が論理積、||が論理和ということだと思うんですけど、演算子が分かってもその条件文内で何が行われているかとかが分からないので知りたい状態なんです。。
255:デフォルトの名無しさん
23/01/13 09:19:57.40 ohfi5XtE0.net
ベン図でも描けば?
256:デフォルトの名無しさん
23/01/13 09:21:26.34 r1OLO4Qgp.net
マジックナンバーイクナイ
257:デフォルトの名無しさん
23/01/13 09:25:11.90 QZjdOIAl0.net
>>251
それなら俺らもそれ以上はわからんぞ
変数名をちゃんと意味あるものにしてやって >>253 が言うようにマジックナンバーをなくすと読めるようになる
258:デフォルトの名無しさん
23/01/13 10:43:33.37 g8ppNh/ZM.net
>>249
いますかの答えとしてはいない
書いてるコード断片にはアルゴリズムもなにもない
それにこれ多分Cだろ
ここは C#と言う別言語のスレなのですれ違い
これは多分オセロみたいなゲームのコードだろ
縦ラインループ横ラインループと斜めラインループしてる
player1 と player2が対戦して boardが合ってXMAXとYAMXのボード幅ではみ出し判定してる
計算もアルゴリズムも何も感じられない
その前にさあIDEの使い方覚えて一行ずつ動かして何が起こってるか見てみたらいい
初心者の間は状態などを紙にでも書かないと多分わからないよ
259:デフォルトの名無しさん
23/01/13 10:54:17.50 +TkXA4uqa.net
マルチで Google Drive のリンクまで晒してるけど
学校名も個人名もばれるから落第だな
下手したら退学
260:デフォルトの名無しさん
23/01/13 11:24:47.04 2CVvZRFNd.net
ちゃんと対象言語のスレで聞いてりゃまだ可愛げがあるけど
他言語やVSCodeのスレとかにまでマルチポストだからげんなりするわ
261:デフォルトの名無しさん (ブーイモ MM4b-mEot)
23/01/13 11:42:28.12 Qkt7plGTM.net
半期やってこれがわからないような学生に今どきCを教える大学って終わってるな
262:デフォルトの名無しさん (ワッチョイ b101-tb1I)
23/01/13 12:02:36.51 CqT5d+dn0.net
>>255
ありがとうございます、スレ違いで申し訳ありません。
>>"これは多分オセロみたいなゲームのコードだろ
縦ラインループ横ラインループと斜めラインループしてる"
例えばどの条件文、関数からこれを読み取れたのですか?
263:デフォルトの名無しさん
23/01/13 12:09:39.59 g8ppNh/ZM.net
マルチなのか相手して損した
にしてもやる気がない人にはこのレベルはちょっと難しいんだろうなとも思う
二次元配列とボードがイメージとして直結してなくてx、yで盤面の位置を指してることが理解できれば変わるだろうけど
264:デフォルトの名無しさん
23/01/13 12:10:56.40 g8ppNh/ZM.net
リロードしてなかったから書き込みが見えてなかったけど
スレ違いなのでもうレスしない
265:デフォルトの名無しさん
23/01/13 12:11:52.99 w4pCcfcAM.net
わかんない人をわからせるのは
短文投稿サイトでは難儀なので
元々の問題文を貼ってくれれば
正確な回答をもらえると思いま
す
266:デフォルトの名無しさん
23/01/13 12:13:53.39 g8ppNh/ZM.net
>>262
こら!
スレ違いなので答えてはいけないしどうも他のスレでは張ってあるらしし
267:デフォルトの名無しさん
23/01/13 12:42:09.38 2CVvZRFNd.net
5スレマルチポスト
他所でも警告してやって
URLリンク(hissi.org)
URLリンク(hissi.org)
268:デフォルトの名無しさん (ブーイモ MM4b-IdlF)
23/01/13 22:44:16.91 UM8Nby1DM.net
データテーブルの列名が日本語になってるデータベースと、C#コードを連携します。
データテーブルのデータを保持するクラスを定義する際、同じようにして日本語を使ってフィールドを定義すれば対応関係がよくわかるのですが、英語やローマ字で定義したほうが良いでしょうか。
269:デフォルトの名無しさん (ワッチョイ b101-fx7m)
23/01/13 22:59:24.65 QrXHZOLk0.net
今開発してるのがまさ
270:に日本語カラムばかりなんだけどめっちゃ楽だぞ ソースコード内でもカラムを示す箇所が視覚的にわかりやすいしインテリセンスでも埋もれない カルチャー的に受け付けない人はいるだろうけど使ってみると考えも変わる
271:デフォルトの名無しさん
23/01/13 23:52:57.11 N2c+mgjH0.net
過去に行政の税システムのソースを見たら変数名が日本語だった。メーカーのPMに「日本語なんすね」と言ったら「間違いを無くすにはもうこれしかないんです」と言っていた。
税の用語は難しく数が多くて計算は複雑で、もし間違えたら記者会見して新聞記事になる。こういう対象にはそれに適した手段を用いるのが肝要だと思った。
272:デフォルトの名無しさん
23/01/14 00:37:39.38 ISrlGbh20.net
nameof使えるし日本語フィールド名で良いんじゃない
273:デフォルトの名無しさん
23/01/14 03:37:58.98 xHYJkNGt0.net
>>266
レスありがとうございます。
>インテリセンスでも埋もれない
インスタンス名に続けて、ドットを打ったらインテリセンスで日本語名フィールドが表示されるのですね。
row_日本語の列名 みたいにしてなにか最初にアルファベットで列名に関与していることを示してみようかと思っています。
フィールドでは無意味かな。
でも、クラス名が日本語の場合は、model_日本語名 みたいな感じで最初にアルファベットをつけておくと、
インスタンス化のときにnewによるコンストラクタの呼び出しが便利かもと思っています。
>>267
たしかに。間違いはなくなりそう。日本語から英語に訳すのに時間がとられるし、それで対応関係がわからなくなってしまったら、
まったく無意味ですよね。
私も、日本語でやってみたいと思います。
>>268
URLリンク(atmarkit.itmedia.co.jp) によると、
>nameof演算子を使うと、名前空間/型/メソッド/プロパティ/変数などの単純な名前(=名前空間やクラス名などで修飾されていない名前)の文字列が取得できる。
でも、何の役に立つのかピンとこない。
日本語フィールドとどう関係があるの?
274:デフォルトの名無しさん
23/01/14 05:06:37.76 XX64qgVXH.net
ひょっとしていまだに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文組み立てにフル活用できるようにする
275:デフォルトの名無しさん
23/01/14 08:03:33.86 YVgT972+0.net
テーブル1とテーブル2で同じカラム名があるとダルそうですね
276:デフォルトの名無しさん
23/01/14 11:14:54.89 1tybvzL1d.net
テーブル名やカラム名そのままならたぶん大丈夫だとは思うけど
カッコ系や「・」なんかの全角記号がほとんど使えないのは一応注意を
277:デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
23/01/14 14:27:07.61 xHYJkNGt0.net
>>270
レスありがとうございます。
お察しの通り、datareaderをforでぐるぐる回しながら、エンティティにデータ格納しようとしています。
ほとんどストアドプロシジャによる処理手順があり、これを実行した結果をC#で扱いたいんです。
ストアドプロシジャがあるのにEFを使う話は書籍にも見られません。
Dapperは全く勉強したことないので全然知りませんでした。
でも、そうやってnameofを使うわけなのですね。
優位性や適応についても知りたくなりました。
278:デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
23/01/14 14:30:25.35 xHYJkNGt0.net
>>271
同じ名前のフィールドができるからですか?
でも異なるタイプのエンティティなら問題ないのかなと思います。
>>272
ありがとうございます。
気をつけます。
279:デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
23/01/14 14:40:51.64 xHYJkNGt0.net
>>273
>でも、そうやってnameofを使うわけなのですね。
文字列内(今回はSQL文)に、クラスのフィールド名を組み込みたいときに使うと良いということがよくわかりました。
すると、その場合、クラス名、フィールド名は、データベースの列名に一致させておくことが必須ですね。
どうもありがとうございます。
280:デフォルトの名無しさん
23/01/14 21:37:09.12 JGEy8Mb7H.net
ちょっとまって、フィールド名とカラム名を一致させるのはnameofのためじゃなくて
EFやDapperでもって取得したレコードや更新値を全レコード/全カラム自動マッピングさせるためだよ
いまどき手動でDataReaderから1項目ずつ値転記したりDbCommand/DbParameterをいちいち指定したりなんて
もはや許されない前時代的老害コーディングだからやっちゃだめ
あとEFでのストアド実行ならふつうにSqlQuery()とかの生クエリで出来ると思う
281:デフォルトの名無しさん
23/01/14 23:34:32.45 v+aDVA7Ga.net
SQL 文を組み立てるのは、数十年前のやり方
Ruby on Rails では、1対1・1対多・多対多など、表同士の関連を定義する
282:デフォルトの名無しさん (ワッチョイ cd35-5Koo)
23/01/15 00:10:03.35 GqZOBUMQ0.net
HttpClientでPostAsyncするときにユーザーエージェントを指定したい時はDefaultHeadersをいじるしかないのでしょうか。
それをするとマルチスレッドで同時に別のユーザーエージェントで送りたいときに独自で排他制御しないといけない気がします。
かと言ってSendAsyncを使うと今度はContent-Typeをapplication/x-www-form-urlencodedにしたくても勝手に後ろに文字コードの;uft-8などが付いてきて困っています。
283:デフォルトの名無しさん (ワッチョイ cd35-5Koo)
23/01/15 00:11:09.01 GqZOBUMQ0.net
記載し忘れましたがHttpClientはひとつのオブジェクトを用意して同時に使います。
284:デフォルトの名無しさん
23/01/15 00:44:00.15 pBiKKGenM.net
WebRequest、WebClient、ServicePoint は廃止されている
[アーティクル]
2023/01/05
URLリンク(learn.microsoft.com)
> WebRequest、WebClient、ServicePoint の各クラスは古い形式としてマークされており、コンパイル時に SYSLIB0014 警告が生成されます。
285:デフォルトの名無しさん
23/01/15 00:45:46.03 pBiKKGenM.net
勘違いして全然違うのを投入した
286:デフォルトの名無しさん
23/01/15 00:56:53.85 AxXMsEIz0.net
FormUrlEncodedContentを持ったHttpRequestMessageをSendAsyncでPOSTしても
Content-Type: application/x-www-form-urlencoded
だけだったけど
.NET7, .NET Fx 4.8両方で
287:デフォルトの名無しさん
23/01/15 01:00:32.76 GqZOBUMQ0.net
すみません、また記載し忘れていましたがFormUrlEncodedConentを使用すると文字コードをShiftJISにしたいのですができず困っています。
あとはまだ試してしないのですがスペースが%20になってしまうとのことでそちらについても都合が悪いです。
288:デフォルトの名無しさん
23/01/15 01:01:36.57 GqZOBUMQ0.net
%20ではなく+です
289:デフォルトの名無しさん
23/01/15 01:08:45.78 GqZOBUMQ0.net
HttpContentというクラスを独自にはせいさせるとできるかもしれないです
明日ためしてみます
290:デフォルトの名無しさん
23/01/15 01:18:15.52 AxXMsEIz0.net
URLリンク(stackoverflow.com)
HttpContentから派生じゃなくてByteArrayContentを直に使えばいいらしいよ
291:デフォルトの名無しさん
23/01/15 01:20:48.86 GqZOBUMQ0.net
ByteArrayも試したのですが何かしらの問題があったような気が…
すみません、明日さいど確認してみます
292:デフォルトの名無しさん
23/01/15 01:23:56.33 R4vpna1L0.net
仕事かな
293:デフォルトの名無しさん (オイコラミネオ MMe5-7DGa)
23/01/15 01:41:17.79 pBiKKGenM.net
HttpClientのサードパーティー製をNugetで探すと上位の方にかなりパンチの効いたのが出てくる
294:デフォルトの名無しさん
23/01/15 02:02:46.64 C2q54ZnWd.net
>>277
業務を知らないRuby馬鹿
295:デフォルトの名無しさん
23/01/15 05:17:18.02 14wHoUoo0.net
>>276
ありがとうございます。
EFもかなり発展しているということなのですね。
以前はまだ未完成みたいな感じだったので、利用を躊躇しておりました。
ストアドの実行もEFでやってみたいと思います。
ただEFについては勉強が必要なので、少し時間がかかりそうです。
DataReaderはVBのときからやっているので、やっぱりいじり方がわかりやすいんですね。
>>277
表同士の結合は、ストアドプロシージャでやっては今の時代はダメなんですかね。
296:デフォルトの名無しさん
23/01/15 05:21:23.11 14wHoUoo0.net
>>291
いちおう、ドメイン駆動設計なども学びはしました。
リポジトリ、モデル、アプリケーション、プレゼンに分けて構築しています。
でも、効率が良さそうなのはわかりますが、EFとかはどうも苦手意識があって。
いつか、慣れていく必要がありそうだとは思っています。
297:デフォルトの名無しさん
23/01/15 05:25:16.63 I1C/y1wm0.net
DB畑なら特定の環境に依存する中途半端なことするより普通にSQL文使うのを選ぶと思うけど
298:277
23/01/15 05:54:23.73 r5uLxMWea.net
Ruby on Rails では、各データベース(DB)の方言に依存しないように、
O/R マッパーで、3大DB のSQLite, PostgreSQL, MySQL を使う
多くはPostgreSQLだから、AWS Aurora とも互換性ある
O/R マッパーを使わないと、各列の型も異なる
299:デフォルトの名無しさん
23/01/15 09:53:02.70 BFqmBeHGd.net
>>291
いきなりRailsを持ち出す奴は構ってはいけない
この板の鉄則
300:デフォルトの名無しさん
23/01/15 11:50:48.71 AgwxnFRxM.net
>>292
リポジトリのインターフェースがきちんと定義されててDBの実装に依存する部分が全てリポジトリの実装クラス側に隠蔽されてるなら中身は好きにすりゃ良い
後でリファクタリングするのも大した手間じゃない
リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装は依存性を分離できてないから基本的には良くない設計
(良くない設計だけど開発効率を重視して採用することはある)
301:デフォルトの名無しさん
23/01/15 13:38:07.36 GqZOBUMQ0.net
ByteArrayContentの件ですが、ほかのヘッダーと同様にHttpRequestMessage.Headers プロパティでContent-Typeを設定していましたが、これではContent-Typeだけリクエスト文に現れませんでした。
しかし、ByteArrayContentのHttpContentHeaders.ContentType プロパティに設定することで無事、目的のContent-Typeが送信されるようになりました。
ご協力ありがとうございました。
302:デフォルトの名無しさん
23/01/15 17:02:40.66 pBiKKGenM.net
おもしろhttpclient代替ライブラリの出番はなかったと
残念
303:デフォルトの名無しさん
23/01/15 17:03:22.46 i8CV0envM.net
>>296
>リポジトリのインターフェースがきちんと定義されてて
データベースなどの入れ替えに対応させるためですね。
>リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装
これはいまいちピンとこないです。
どういう問題を持っているのですか。
304:デフォルトの名無しさん
23/01/15 17:27:16.78 pBiKKGenM.net
動かない時点で問題だろ
依存を切ってるはずなのに
305:デフォルトの名無しさん (ブーイモ MMde-fQuj)
23/01/15 18:01:55.48 i8CV0envM.net
>>299について、>>300さんへ
言い方がまずかったです。
>リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装
これがどういう実装になってるのかなと。
リポジトリから返される型とは、モデルクラスでしょう。エンティティのことだと思います。
この型の名前を変えるとは、モデルクラスの名を変えるということですかね。
単純にかんがえると、コンパイル段階でエラーになると思います。
SQL文も動かなくなるとは、リポジトリがエンティティを受け入れる段階をいうのかな。
でも、リポジトリの永続化メソッドの引数の型と、エンティティの型が合わないという話なら、やはりコンパイルでエラーになる。
こういう話ではないのかな?
306:デフォルトの名無しさん (ブーイモ MMde-laSj)
23/01/15 18:44:05.72 Tpvfm3sDM.net
>>299
ここにEF使ったリポジトリとSqlCommandやDataReaderを使ったリポジトリの両方を実装してるサンプルであるから見てみるといい
URLリンク(www.shoeisha.co.jp)
>>270が動かなくなる実装の一例
307:デフォルトの名無しさん
23/01/15 19:07:02.30 pBiKKGenM.net
>>301
なんで段落じゃなくて毎回改行してんの?
308:デフォルトの名無しさん
23/01/15 19:07:55.22 IyrCQBsgr.net
>>270が動かなくなるって具体的にどういうこと?
カラムnを実際のテーブルの列名と違う名前にしようとしたとかそういうこと?
309:デフォルトの名無しさん
23/01/15 20:23:54.22 k2EAOSQD0.net
正直、不必要なレベルの過剰な依存性の排除だと思うけどな
もしやるならDBを使わない選択が必要な程の
310:デフォルトの名無しさん
23/01/16 07:18:54.98 3crLqciiM.net
>>276
うーん?
どこかでやらなきゃいけないのを
先延ばしにしただけのような?
俺はその構造になんの意味も感じなかった
なぜなら絶対にどこかで指定する必要があってその場所が変わるだけだから
間に一つ挟んだら取り決めが増えるだけで何も変わらんよ
311:デフォルトの名無しさん
23/01/16 09:06:23.76 15MDnu2bd.net
>>302
>>270はDapperを使ったコードだけどEFやSqlCommandの例とどんな関係が?
312:デフォルトの名無しさん
23/01/17 03:21:23.70 Pa/g9qeO0.net
ASP.NETの勉強を始めました。具体的にはASP.NET MVC5 実践プログラミングって本を使っています。
その中でentity frameworkを使ってdbcontextをうにゃうにゃしてデバッグ実行時にデータベースが制作されるようにしてページに表示して…みたいなことをやりました。
それでmdfファイルってのが出来あがってたのですがそれについて質問です。
これが出来上がったデータベースであって、sqlserverがデータを保存する形式ってのは分かりました。
これつまりC#(entity framework?)サイドからするとsqlserverは別に起動してなくてもデータベース本体だけあれば読み込めるということなんでしょうか。
それとも起動時に勝手に裏でsqlserverが立ち上がってたりするのでしょうか。
一応本の流れにそってSQL Express LocalDB edition 11.0なるものはインストールしています。
すいませんこれまでの開発でmanagement studio経由でいじるとかそれくらいしか経験無いんでよく分かってないです。
厳密にはC#の質問じゃないと思うんですけどよろしくお願いします。
313:デフォルトの名無しさん
23/01/17 03:46:50.51 g2NvLQQ30.net
>>308
すでに立ち上がってるSQLServerと通信する形となります
SQLServerが動いてなかったらもちろん意味を成しません
アプリから処理を呼び出し→SQLServerに接続→SQLServerがmdfファイルを編集
という感じだと思います
314:デフォルトの名無しさん
23/01/17 03:48:48.44 g2NvLQQ30.net
SQLServerは起動しっぱなしですね
応答により電源がついたり消えたりするという形ではないです
315:デフォルトの名無しさん
23/01/17 07:20:20.73 s3m6BVtYM.net
LANケーブル抜けたら?
316:デフォルトの名無しさん
23/01/17 09:30:13.79 mymdZu3lM.net
>>311
差し直しましょう
317:デフォルトの名無しさん
23/01/17 09:37:04.80 FlIYwx2Q0.net
神に祈れば掃除のおばちゃんがエアコンを切らない
318:デフォルトの名無しさん
23/01/17 21:28:25.23 Pa/g9qeO0.net
>>309
ありがとうございました。sqlserverちゃんと起動してるかとか確認しないとだめですね
319:デフォルトの名無しさん
23/01/18 00:09:04.38 hk0QW4ON0.net
あの紫の本かな 現状MVCのテキストってあれくらいしかないよね
ちょこっと読んで放置してたけど読み直すか
320:デフォルトの名無しさん
23/01/18 00:28:03.93 3sYvYO2/0.net
>>314
CompactとかLocalDBとかは常にインスタンスが上がってるような形じゃないけどな
321:デフォルトの名無しさん (ワッチョイ 1579-iekx)
23/01/18 08:28:02.80 rq0JYZ+R0.net
>>312
再接続するプログラムになってるかな?
322:デフォルトの名無しさん (ワッチョイ ca01-FIs7)
23/01/18 08:53:04.91 vYh8JMIk0.net
>>314
( ̄ー ̄)bグッ!
323:デフォルトの名無しさん
23/01/18 11:14:23.74 2vbdQEqi0.net
LANケーブルを指しなおすプログラム?
324:デフォルトの名無しさん
23/01/18 12:06:41.51 wDe6wdJea.net
掃除のおばちゃんを制御するプログラムを弄れ
325:デフォルトの名無しさん
23/01/18 12:18:27.54 LLGrNdcqa.net
再接続というのは物理的に切断されたものが復旧した時に再度コネクションすることだぞここでは
326:デフォルトの名無しさん
23/01/18 12:39:01.52 3lDNp2YJa.net
>>316
そいつらはインプロセスだからある意味呼び出し側が起動してたらLocalDBのプロセスも上がってるってことだが
それ以前にCompactはもう忘れたけどLocalDBはSQL-Serverと同じでDBMSの起動とインスタンスの起動は違うぞ
SqlLocalDB.exe start / stop でインスタンスを起動/停止できる
URLリンク(learn.microsoft.com)
327:デフォルトの名無しさん
23/01/18 13:27:16.30 igIZvBCZ0.net
>応答により電源がついたり消えたりするという形ではないです
ここが分からんw
鯖が物理的に別にあるってことかな
328:デフォルトの名無しさん
23/01/18 14:36:35.17 3sYvYO2/0.net
>>322
LocalDBはインプロセスじゃない
インスタンス事前に起動させて複数プロセスからアクセスとかできなくはない
まあ大概は自動でインスタンス上がるんだが、手動でもできるってだけ
つかその文脈、DBMS(の起動)とインスタンス(の起動)ってどういう使い分けなの?
329:デフォルトの名無しさん
23/01/18 15:18:33.28 UiCoGtZYd.net
selenium webdriverのC#版の話題ってここでいいですか?
操作対象のdriverオブジェクトから、
Winformsで言う普通のウィンドウハンドル(NativeWindowHandle)を取得したいんですが、driver.CurrentWindowHandleプロパティで得られる値はselenium専用のウィンドウ識別用の文字列のようで使えませんでした。
stackoverflowとか見てもプロセスからタイトル名で探索する、みたいないまいち冴えない方法しか何故か見つかりませんでした。
ブラウザを操作してるのに一意なハンドル情報を得る方法が無いなんて考え難いので、何か方法はあると踏んでるのですが、たどり着きませんでした。上の冴えない方法より洗練された方法があれば教えて下さい。
330:デフォルトの名無しさん
23/01/18 15:20:53.55 Hg1RmCSYa.net
>>324
> LocalDBはインプロセスじゃない
すまん、ボケてたわ
単にリモート接続できないSQL-Serverだったな
> つかその文脈、DBMS(の起動)とインスタンス(の起動)ってどういう使い分けなの?
DBMSはSQL Server VSS Writerサービス(sqlwriter.exe)の話
インスタンスはリンク先読めばわかる
複数インスタンスとか使ったことないのかな?
331:デフォルトの名無しさん (ワッチョイ 954f-wtyD)
23/01/18 16:15:25.52 /+rmiMsB0.net
>>325
Seleniumはマルチプラットフォームなんで
Windowsローカルの話なんて知らんというのはごく当たり前のように思うが
332:デフォルトの名無しさん (オッペケ Sr6d-2lig)
23/01/18 16:36:04.45 oNP58X/Tr.net
>>325
以前に探して見つからなかった記憶
そのときはやりたいことがウィンドウの最小化ぐらいだったんで
RemoteWebDriver.Manage().Window.Minimize()
を探し出して解決
333:デフォルトの名無しさん (スップ Sdea-dnaz)
23/01/18 20:05:06.38 UiCoGtZYd.net
>>327
>>328
ありがとうございます。参考になりました。
switchto~で何か出来そうな気もしましたが、
いまいち動きが読めないので今回は大人しく冴えない方法を使う事にします。
334:デフォルトの名無しさん (ワッチョイ 292f-EsBK)
23/01/18 20:57:22.30 3sYvYO2/0.net
>>326
WriterをしてDBMSとか言うやつは初めて見たわ
通常の文脈であればDBMSはDBエンジンをメインとした一式で
SQL Serverにおいてはまさにインスタンスなんだが
つかSQL ServerのVSS Writerって、べつに必須じゃなかった気がするけど
シャドウコピーできなくなるからオンラインバックアップ取れないだけで
いわゆるlazy writerみたいなDB Writerと勘違いしてるのかね
335:デフォルトの名無しさん (ワッチョイ a501-ue0x)
23/01/18 21:17:36.32 q1S59c8f0.net
>>330
> つかSQL ServerのVSS Writerって、べつに必須じゃなかった気がするけど
SQL-Server VSS Writer とシャドーコピーサービスは別物だぞ
あとSQL-Serverのインスタンスはプロセスとは関係ない
sqllocaldb create\|c "instance name" [version-number] [-s]
とかで増やすこともできるけど増やしてもプロセスやスレッドは増えないよ
ちなみにOracleでもインスタンスの用語はデータベースファイルセットの意味で使われてる
URLリンク(docs.oracle.com)
336:デフォルトの名無しさん (ワッチョイ 292f-EsBK)
23/01/18 22:36:22.92 3sYvYO2/0.net
>>331
シャドウコピーはOSが提供してる機能のことで、VSS WriterはSQL Serverがそれを使うためのサービスな
>SQL-Serverのインスタンスはプロセスとは関係ない
SQL Serverのインスタンスの実態はsqlserver.exeってプロセスだが?
ローカルDBでも、インスタンスごとにsqlserver.exeってプロセスが動くんだが?
337:デフォルトの名無しさん
23/01/25 14:22:50.07 VgR3j9B70.net
C#のexeやdllはILマシン語にコンパイルされるというのを知りました
でも例えばCのexeはそのCPUに対応するマシン語になりますよね
ですけどC#のexeは一旦JITを通して実行される
この一度通すっていうのをどうやって判断しているんでしょうか
C#のexeをCのexeみたいに直接実行しようとして実行できねーよってならないのはどういう仕組みなんでしょうか
338:デフォルトの名無しさん
23/01/25 14:57:50.37 cPQ/8DlSM.net
C#のexeに「僕に含まれてるデータをJITを通して実行してね」て、CPUに対応するマシン語で書いてあるんじゃね?
339:デフォルトの名無しさん
23/01/25 14:58:14.37 KPuKutaL0.net
>>333
atmarkit.itmedia.co.jp/fdotnet/dotnetwork/index/index.html
古い記事だが基本は変わってない
340:デフォルトの名無しさん
23/01/25 15:01:44.79 UaGoD80Hp.net
8086系は相対ジャンプや相対コールが無かったから
プログラム実行前にアドレス解決しなきゃならないとか
色々前処理が必要だったんだ
その延長で前処理に色々やらせる処理を追加してるなんて
普通にやっているんだよなぁ
341:デフォルトの名無しさん
23/01/25 15:09:07.39 YO+oGQTm0.net
C#が関係なくなっちゃうけど、主要Linux系OSは同じような仕組みで他のCPU用の実行ファイルとかまで動いちゃう
342:デフォルトの名無しさん
23/01/25 16:41:58.38 SH9Oxo2M0.net
VC# datagridviewにて
CurrentCellChangedイベントで選択セルの結果を取得したいと思いました。
(rowfilterなどで変化した場合もとりたいため、clickイベントにしませんでした)
しかし、DBから読み込んだ時点ですぐ発生するイベントにて
System.NullReferenceExceptionがでます。
CurrentCell.Value == null で判断できるのかと思いましたが違うようでした。
データがなかったときに何もしないというコードはどう書くべきなのでしょうか。
今までPHPで簡単なものを作っておりましたが、
コントロールプロパティやイベントが何を返してて、
どう対処するのかが基礎的なものがわかりません。
nullが返ってくるんだから if nullじゃないの?というのが間違ってる...のでしょうか?
URLリンク(ideone.com)
343:デフォルトの名無しさん
23/01/25 17:00:33.96 VgR3j9B70.net
>>335
あーこれは本当に素晴らしい記事でした。ありがとうございました。
windowsローダーとかPEフォーマットとかまーったく知らなかったですね。機械語の塊の実行ファイルをOSが読んでいくくらいにしか思ってませんでした。これやっぱ常識なんですかね。
C#の本読んでも当たり前のようにCLRとか出てきてよくわかんねぇとかなってましたけどこれが前提知識ならそりゃ分からんわってなりました。
344:デフォルトの名無しさん
23/01/25 17:49:01.17 +bDum9h60.net
>>338
他のクラスでも同じだがCurrentCell.Value == nullの前にCurrentCell== nullを判定しないとnullに属するメンバを指定したら存在するはずがないのでエラーになる
if (dgv.CurrentCell== null || dgv.CurrentCell.Value == null)
{
return;
}
345:デフォルトの名無しさん
23/01/25 17:56:26.24 Q2YcVXM80.net
>>338
VSでデバッグ実行したら、例外が出たときにそこで止まって発生した行が表示されるよね
そこでローカルウィンドウとかでどの変数に何が格納されているか確認するといいよ
346:デフォルトの名無しさん
23/01/25 17:59:52.43 SH9Oxo2M0.net
>>340
ありがとうございます!!
>DataGridView.CurrentCell.get が null を返しました
おかげさまでようやく
このエラーメッセージが何を言いたいのか理解できました。
347:デフォルトの名無しさん
23/01/25 18:01:47.91 E6MdhQPL0.net
.NET Frameworkランタイム入れていない
古いWindowsで開くと形式がおかしいとか言われたはず
348:デフォルトの名無しさん
23/01/25 18:03:19.22 SH9Oxo2M0.net
>>341
ありがとうございます!!
いま改めて見たら
dgv.CurrentCellがnull であって
dgv.CurrentCell.value ではなかったです。
この違いにまったく気づいてなく
頭をかかえていました。
349:デフォルトの名無しさん
23/01/25 22:33:14.66 VgR3j9B70.net
datagridviewは本当に色々とめんどくさいよね
起きるイベントの順番とかタイミングとかカオスでバグが出まくる
350:デフォルトの名無しさん
23/01/26 01:02:50.84 41WP6aJtd.net
>>345
お前が馬鹿なだけ
351:デフォルトの名無しさん
23/01/26 22:49:39.84 lq03KzKz0.net
多分なんちゃらview全般に言えるのでは
352:デフォルトの名無しさん
23/01/27 17:54:28.03 taOXdrfWM.net
別に変なことしたくねーのに
変なことしたいでしょ?
って前提で作られててな
353:微妙なイベントの順番をハンドリングしないと普通のことも できないのは正直クソだと思う
354:デフォルトの名無しさん
23/01/28 13:20:46.28 I9B5TSew0.net
シンプルなテーブルを作るにあたりDataGridViewとListViewどっち使うか毎度悩む
そしてこいつらは行や列の結合セルを作れない事に気付いてTableLayoutPanelに移行しようとするもこっちはこっちでデータとのバインディングが面倒で断念
最終的にはただのControlクラスを継承したまっさらな白紙にOnPaintで自力描画する事に落ち着くのである
355:デフォルトの名無しさん
23/01/28 14:52:36.43 iXjFLTNM0.net
null 許容参照型について教えて下さい。
class Person
{
// null 非許容だと警告が表示されるので、null 許容にしています。
public string? Name { get; set; }
}
上記のケースで、null 非許容のまま警告を回避する為に、プロパティ宣言時に、下記のようにしようと考えています。
public string Name { get; set; } = string.Empty;
ただ、Name プロパティを参照する時に求める要件は「null でない事」ではなく「人名が代入されている事」なので、
string.Empty で null 警告を回避しても、string.Empty は人名ではない為、意味がありません。
この場合、Name を参照する側では、
if ( person.Name != null )
をチェックするか
if ( person.Name != string.Empty )
をチェックするかが変わるだけで、null 許容参照型にするメリットを感じないのですが、メリットはあるのでしょうか?
356:デフォルトの名無しさん
23/01/28 15:02:12.75 acHVjvs20.net
ケースによるが、コンストラクタを用意して
public Person(string name)
{
Name=name;
}
357:デフォルトの名無しさん
23/01/28 15:03:19.66 acHVjvs20.net
とやって、全てのオブジェクトには名前があるように保証できるようにするのが俺のやり方だわ
358:デフォルトの名無しさん
23/01/28 16:32:58.07 SSo2rJoBd.net
>>349
結合セルもできないのか
そういうの考えるともう枯れたHTMLで画面作る方が楽だなーって思う
359:デフォルトの名無しさん
23/01/28 16:37:13.72 qgiHv5Wf0.net
>>350
空文字は許容されてなくてnull関連の演算子も使わないならどっちでもいいんじゃね
360:デフォルトの名無しさん
23/01/28 18:21:00.62 DKSWYQK4a.net
>>350
null許容の場合は空文字とnull両方を考慮しないといけないだろう
361:デフォルトの名無しさん
23/01/29 06:55:37.48 Tvr/A6EZa.net
>>349
WPFでやれば楽よ
362:デフォルトの名無しさん
23/01/29 10:10:30.46 Bt1+Pj/S0.net
>>349
個人開発なら構わんが、会社でそういう糞コントロール作るなよ
保守するのが面倒くさい
363:デフォルトの名無しさん
23/01/29 10:26:49.48 tvJJpmA20.net
>>349
最近気づいたけど
セルの変更しないなら
いっそピクチャーボックスもあり
スクロール制御しないと駄目だけど
364:デフォルトの名無しさん
23/01/29 11:24:21.80 1KUwXnGJ0.net
大昔からString.IsNullOrWhiteSpaceでチェックしていたから気にしたことなかったわ
365:デフォルトの名無しさん
23/01/30 22:17:23.47 4W3kbClF0.net
JsonSerializerでdynamic型の配列に異なる型のオブジェクトを混在させたのもをSerializeしてからDeserializeするときに型を復元するにはどうすればよいでしょうか。
366:デフォルトの名無しさん
23/01/30 22:26:24.35 rXBejGf/a.net
キャスト
367:デフォルトの名無しさん
23/01/30 23:02:54.21 4W3kbClF0.net
キャストする型が不定なので保持しておきたいのですがそのような機能はないでしょうか。
参照関係はメタデータとして保持できるのですが…
なければ独自で型情報を保持するしかないと思うのですが、List<Hoge>のような型が存在する場合にGetType().Nameを読み取ってもList`1のような謎の文字列になってしまい…
368:デフォルトの名無しさん
23/01/30 23:08:33.77 oFd10dGn0.net
普通はtypeofとかisとか使うんじゃね?
369:デフォルトの名無しさん
23/01/30 23:10:20.10 oFd10dGn0.net
object型で何で扱って、typeofとかisとか使ってマッチさせるんじゃねえの?
370:デフォルトの名無しさん
23/01/30 23:12:24.68 4W3kbClF0.net
全てのパターンの型でマッチするものを探すようなコードを実装するということでしょうか。
汎用的なものは難しいですかね
371:デフォルトの名無しさん
23/01/30 23:33:12.81 EKczJlFVa.net
jsonに型情報なんか入ってないからプログラマが型を教えてやるしかねーぞ
入れられるならプロパティとして入れとけ
372:デフォルトの名無しさん
23/01/30 23:41:03.69 4W3kbClF0.net
うーむ…中々難しいのですね。
辞書に色々ごちゃごちゃにぶち込んで一発でシリアル化、一発で逆シリアル化とはいかないですか。
373:デフォルトの名無しさん
23/01/30 23:50:54.82 EKczJlFVa.net
プロがやれば何とかなると思うから依頼してみなよ
さすがに詳しいことをここで聞いたり説明したりするのはめんどいわ
374:デフォルトの名無しさん
23/01/30 23:52:57.23 4W3kbClF0.net
確かになんとかはなるかもしれませんね…
簡単にはいかないのは確か、というところでしょうか。
JsonSerializerが参照情報だけではなく型情報もメタデータとして保持できればよかったのですがね。
375:デフォルトの名無しさん
23/01/30 23:58:17.04 IhW3z+yo0.net
>>367
TypeNameHandling.All
しかしセキュリティリスクがあるからおススメできない
376:デフォルトの名無しさん
23/01/31 09:16:17.88 d4xiAPDr0.net
XMLでよければXmlSerializerがあるがな。
377:デフォルトの名無しさん
23/01/31 19:05:24.58 t9l1A9G+0.net
jsonのと比べてXmlSerializerだと何か良いことがあるのかね
378:デフォルトの名無しさん
23/01/31 21:43:56.67 d4xiAPDr0.net
>>372
型情報を含んでる
379:デフォルトの名無しさん
23/01/31 21:48:53.87 tyybi/5mp.net
型情報あっても、その型を解釈出来なけりゃ意味が無いからなぁ
送り手と受け手で同じ型宣言つかわにゃ
380:デフォルトの名無しさん
23/01/31 22:18:53.12 eUQUkrMna.net
おなじ宣言つかえばいいのでは
381:デフォルトの名無しさん
23/01/31 22:25:35.04 tyybi/5mp.net
作成者が同じとも限らないし、言語が違うとかもあるし
限定的な使い道しか無いんだよなぁ
382:デフォルトの名無しさん
23/01/31 22:37:59.59 JUpN+VeK0.net
何がしたいんだ?
自分も使えないデータを知らない人に渡して活用してもらうのか?
383:デフォルトの名無しさん
23/01/31 22:39:07.69 lNQXIXaf0.net
そもそもどういう理由でJSONを選んだのか
シリアライザも色々あるから、それに適さないデータを無理に扱おうとしても苦労するだけよ
384:デフォルトの名無しさん (ワッチョイ 8335-6BSU)
23/02/01 01:00:31.32 gXlE0Qft0.net
用途→状態保存
なぜ→特になし
385:デフォルトの名無しさん
23/02/01 04:01:10.47 RyGmTTdX0.net
>>367
辞書に入れる要素のクラス自身をdynamicにするんじゃなくて
そのクラス内のプロパティにdynamicから継承したクラスをズラズラ並べたら?
泥臭いけど、やりたい事は実現できる
386:デフォルトの名無しさん
23/02/01 07:07:59.79 OQq7+g560.net
URLリンク(learn.microsoft.com)
だから他のクラスに読み出す必要性は?
387:デフォルトの名無しさん
23/02/01 11:28:10.11 BH4poKX+a.net
Marshal だろ。たいていの言語にある。
でも、言語のバージョンが異なると互換性がない
dRuby みたいな分散・リモートオブジェクト。
送信先で、オブジェクトを復元できる機能
ただし、プロセスID など、各システムで固有のものは送れない・復元できない
例えば、システムA のプロセスID・100 を送っても、
システムB の100に出来ない
388:デフォルトの名無しさん
23/02/01 11:59:27.64 UTKch+wba.net
そもそもクラス名を指定すれば復元できるんだからクラスを保存するのは普通
ただのデータ構造
389:デフォルトの名無しさん
23/02/01 14:10:05.95 ebRzTgdK0.net
async/awaitが出た頃に「BackGroundWorkerは時代送れだから使うな」
って聞いた気がするけども、ググると新しい記事でも使っています。
用途次第なのでしょうが、BackGroundWorkerも使って良いのでしょうか?
390:デフォルトの名無しさん
23/02/01 15:00:43.93 v1HsWaA1d.net
>>384
廃止になる情報は見つからないね
391:デフォルトの名無しさん
23/02/01 15:09:07.40 Ke8/ro290.net
古いframeworkのバージョンしか使えない場合とか
392:デフォルトの名無しさん
23/02/01 19:04:34.85 dDom2t/30.net
async汚染が気になって使えない
393:デフォルトの名無しさん
23/02/01 19:55:41.40 maza5pHhp.net
プロパティに非同期呼び出しがあって詰んだ思い出
394:デフォルトの名無しさん
23/02/02 06:15:09.17 upKEKEWBa.net
>>384
性能は同じだから、どっちを使っても良いと思う
395:デフォルトの名無しさん
23/02/03 17:52:58.42 Dixtr4kT0.net
win32apiのTextOut関数を使ってコントロールへ文字を表示したいのですが
マウスをドラッグして、そのコントロールを含むフォームのサイズを変更したときに
タイミングによっては例外が発生してしまいます、どのように修正するのが正当なやり方でしょうか?
void MyTextOut(){
TextOut(......)
}
protected override void OnPaint(){
MyTextOut()
}
396:デフォルトの名無しさん
23/02/03 21:39:19.06 Ug5oxsRH0.net
まずどんな例外が発生しているのかそういう情報が無いと誰も答えられないような
397:デフォルトの名無しさん
23/02/03 21:48:19.59 0nuP02J20.net
そもそも、なんでTextOutなんて使ってんの
398:デフォルトの名無しさん (ワッチョイ da7c-+rQD)
23/02/03 22:00:34.75 Ug5oxsRH0.net
確かにw
DrawString()とかで良さそうな
URLリンク(dobon.net)
399:デフォルトの名無しさん (ワッチョイ a702-fO7+)
23/02/03 22:06:21.54 0nuP02J20.net
C#は、基本設計として危険な生のハンドル操作をする必要がない作りになっている
ろくにエラー処理もしない(出来ない)奴が直接Win32APIを叩くのがそもそも間違ってる
400:デフォルトの名無しさん (ワッチョイ 4e7b-f7VM)
23/02/03 22:17:15.42 j/Zv+95r0.net
>>390
質問する際は>>391の言う通りどんな例外かを示さないとエスパー呼んでくるしかない
あとせっかくコードを出すのなら再現する最低限のコード書けば答える側もわかりやすいし、最低限のコード作って確認したら自分で解決もしやすい
個人的にはどうでもいいだろうけど、protected overrideなのにbase呼んでないのが気になった
URLリンク(learn.microsoft.com)
401:デフォルトの名無しさん
23/02/04 01:30:11.94 Oed2Ku7T0.net
LINEのc#のオープンチャットがあったので入ってみたらスマホのめちゃくちゃ狭い画面でソース貼ってやりとりしてて笑った
正気か?
402:デフォルトの名無しさん (ワッチョイ 7fbb-zLlH)
23/02/04 02:31:03.22 TaDFHfgY0.net
授業で習ってますてな感じの学生が使ってるんだろ
LINEの時点でプログラマは一人もいなそう
403:デフォルトの名無しさん
23/02/04 07:17:12.90 Av2vQos/0.net
知らんのか
今の若い子はスマホしか知らない世代と言われ開発もスマホでするんだよ
404:デフォルトの名無しさん
23/02/04 18:23:13.70 xi2o8ewX0.net
10インチタブレット+無線キーボードならまぁ…
いやまともなIDEないからやっぱダメだな
405:デフォルトの名無しさん
23/02/04 19:28:59.33 yf/xw4jH0.net
いやあむりっす
406:デフォルトの名無しさん
23/02/04 19:33:52.48 3xAEA7yN0.net
LINEってWindows版もなかったっけ?
407:デフォルトの名無しさん
23/02/04 19:35:24.17 9MyJHPNb0.net
国民的アプリLINE、韓国産!w
408:デフォルトの名無しさん
23/02/11 22:26:36.72 2er8PNSW0.net
たまにはテンプレ案の話もしませんか?
とりあえずdocsはlearnに直して情報源に未確認飛行URLリンク(ufcpp.net)入れてほしい
409:デフォルトの名無しさん
23/02/12 07:58:30.10 1e5Tlcow0.net
.NET6使ってタイマースレッド内で作ったList<ListViewItem> ItemListの中身をスレッドからInvokeで
Invoke(new Action<ListViewItem[]>(MainListView.Items.AddRange), ItemList.ToArray())したのに
何故かParameter count mismatch言われるのがわけわからない……
ListViewItemの配列で引数合っとるやろがい……
410:デフォルトの名無しさん (ワッチョイ 234f-vQqS)
23/02/12 10:12:49.64 LIxWC8qE0.net
(object)ItemList.ToAray()
でどう?
411:デフォルトの名無しさん
23/02/12 10:44:51.68 1e5Tlcow0.net
>>405
できた、サンクス
これ、ToArray()で返って来た配列の要素がそのまま可変長引数にばらけて入ってるってことだったんか……
412:デフォルトの名無しさん
23/02/12 14:35:35.41 O9dtb47zM.net
>>403
入れなくていいよ
そいつは自己紹介せずにC#でググれ(そしたら自分のサイトが出てくる)と言ってるらしいし
413:デフォルトの名無しさん (オイコラミネオ MM8b-D0vN)
23/02/12 15:18:30.44 O9dtb47zM.net
それにC#の新機能でググってるのにそいつのサイトのドラフト案のころの情報につながったりする
そして実際の動作とは違ってる
誰が悪いとは言わないが個人の活動に乗っかってるだけだからな
正確に今ある機能を知りたい場合には向かないけどググったらそこにつながってしまう
414:デフォルトの名無しさん
23/02/12 15:36:45.09 FJkPIAh+r.net
ドラフト案を新機能として紹介してるなら向こうの手落ちだけども、そうでないならただの言いがかり
それに普段見てる範囲ではこの機能はこのバージョンからって各ページにしっかり書いてある方だと思うけどな
実際問題として初心者の情報源として重要なサイトであるのは間違いないでしょ
415:デフォルトの名無しさん
23/02/12 15:44:55.86 O9dtb47zM.net
どこが言いがかりだよ
チャンと日本語を読めよ
416:デフォルトの名無しさん
23/02/12 16:13:36.76 FJkPIAh+r.net
新機能で検索してるのにドラフト案の頃の情報がヒットするのはけしからん!ってことじゃないの?
417:デフォルトの名無しさん
23/02/13 09:33:35.41 lvNaLqRz0.net
張と日本語を読め?
418:デフォルトの名無しさん (ワッチョイ ef54-0W4p)
23/02/14 05:36:16.67 nRH0oIdj0.net
新しい社内向けアプリ作る為のGUIを何で作るか迷っているのですが、今一番いい選択肢は何なのでしょうか?
個人的な感想としては、下記の状態です。
グラフとかチャートを多用するので、関連ライブラリが多様だとありがたいです。
WinForms = 楽 (一応 System.Windows.Forms.DataVisualization.Charting がある)
BlazorWebView = 少なくともWinFormsと同じくらい楽。むしろCSSとJS使える分だいぶ気楽。
MAUI = 使った感触では「まぁ時間をかけて慣れれば使えるかなぁ」という感じ。
WPF = 触ってもないのに何故かネガティブなイメージが強くて、全く検討していない。
419:デフォルトの名無しさん (ワッチョイ 8a02-wQXG)
23/02/14 08:39:42.78 Ot0uggwf0.net
>>412
張さん?
420:デフォルトの名無しさん
23/02/14 10:42:53.95 DdfzuiCAM.net
>>413
もう自分で答えでてるんじゃね
作りやすい物で作ればいい
421:デフォルトの名無しさん
23/02/14 10:47:02.41 DdfzuiCAM.net
社内で使用する前提だと、どの程度のスキルの奴が何人でつくって誰がメンテしていくかってのが基準になるから、自分が選定する立場ならそのへんで選ぶ
422:デフォルトの名無しさん
23/02/14 10:58:11.82 yaEcYKtV0.net
メンバー次第だよなぁ
C#じゃないけど、俺ならelectronにするわ
423:デフォルトの名無しさん
23/02/14 12:29:16.94 Xi4hjfkka.net
>>413
Chartが使えるWinformでいいと思う
424:デフォルトの名無しさん
23/02/14 18:07:04.64 YQfZZ7py0.net
WPFはコーディングだけでUIかけるから好きだけど、他のもそうなの?
425:デフォルトの名無しさん
23/02/14 18:09:57.75 pNVFHGjc0.net
WPFだな
426:デフォルトの名無しさん
23/02/14 20:28:46.03 /lgiAtc40.net
>>419
Windows3.1?
誰も望んでない方向へよく行ったと思う
427:デフォルトの名無しさん
23/02/14 20:39:14.68 4KQ468uNM.net
>>413
正直なところweb技術で作ったほうがいい
チャートがあると言うだけでもc#で作るのはお勧めしない
JSだとライブラリ選び放題
428:デフォルトの名無しさん
23/02/14 21:36:08.31 snyjWmK+0.net
System.Windows.Forms.DataVisualization.Charting使ってC# on powershell on バッチファイルで毎日グラフ吐かせてるけど一番シンプルいいと思う
野良のライブラもコンパイルも何も必要ないのと、やはり1ファイルで済むのがでかいと思ってる
429:デフォルトの名無しさん
23/02/14 21:51:39.49 4KQ468uNM.net
井の中の何とやらだろ
格が違いすぎる
430:デフォルトの名無しさん
23/02/14 22:14:49.56 R/4TdMMUr.net
君は人に噛み付いてばかりだな
431:デフォルトの名無しさん
23/02/14 23:03:10.09 4KQ468uNM.net
c#のチャートは止め絵
jsのチャートはUI有の動画
格が違いすぎる
試してみたほうがいいよ
432:デフォルトの名無しさん (ワッチョイ ff2f-0qku)
23/02/14 23:18:18.45 zG3Q3kn70.net
まずデスクトップアプリかWEBアプリか、どっちが向くかの検討があって
言語はそれから考えるもんだと思うんだがな
433:デフォルトの名無しさん (オッペケ Sra3-c/8M)
23/02/14 23:21:04.30 w4RoV4Lpr.net
>>426
それより>>408>>410の続きはもういいの?
434:デフォルトの名無しさん (ワッチョイ ff68-MJ5G)
23/02/15 05:25:32.89 j7LcSp3e0.net
>>424
C#的に、シャープの中の蛙と言うべきだね。
435:デフォルトの名無しさん
23/02/15 08:49:42.39 STPisL/80.net
>>419
むしろコーディングだけでUIが描けないとかあるの?
VisualStudioのフォームデザイナも実体はただのコードだぞ?
436:デフォルトの名無しさん
23/02/15 09:46:49.53 JWhNqlzMp.net
>>429
いや、シャープマークはイゲタと言うし、井の中の蛙で合ってるだろ
井って文字すらシャープだね
437:デフォルトの名無しさん
23/02/15 11:53:25.33 RJgV2C9S0.net
>>430
実体はどうかと、実際に作成するときにどういう手段を取るかは別の話だと思うよ
438:デフォルトの名無しさん
23/02/15 11:55:29.11 gTZgWSvMp.net
意味不明なスクリプト言語を弄るよりは健全だよな?
439:デフォルトの名無しさん
23/02/15 12:55:04.29 STPisL/80.net
>>432
それはWPFも同じことだ
440:デフォルトの名無しさん
23/02/15 16:59:27.29 X4l7Qxg5d.net
いや、違うでしょ
.Designer.csは手書きする前提ではない
文字列の一括置換とか軽微な修正で直接編集するみたいなことはあるにしても
441:デフォルトの名無しさん
23/02/15 18:10:38.43 jkiq+R9ea.net
質問失礼します
winformsの4.6.2で作られた既存のあるプロジェクトがあるのですが、これのターゲットフレームワークを4.6.1にしてリビルドした時の弊害ってどういうことがあるでしょうか
よろしくお願いいたします
442:デフォルトの名無しさん
23/02/15 19:20:21.36 BHKjsHQHp.net
やってみればわかる事
443:デフォルトの名無しさん
23/02/16 01:33:04.79 NlxEQAoG0.net
>>436
4.6.2のリリースノートを見るのと
書いてない内容もあるから
結局やってみないとわからない
444:デフォルトの名無しさん (アウアウウー Sa4f-lPs3)
23/02/16 15:59:15.67 28flb+EUa.net
>>437
>>438
ありがとうございます
やってみてわかるというのは、ビルドエラーがかかるかどうかという意味でしょうか
もしくはデバッグしてプログラムの動作をみるということでしょうか
リリースノートみた感じだと4.6.1への変更はプログラムの挙動にはあまり影響しそうにない感じでしたが
445:デフォルトの名無しさん
23/02/16 16:50:31.83 8vxDZvLsd.net
>>439
いちいち人に聞かないと何もできない障害者かなにか?
446:デフォルトの名無しさん
23/02/16 17:17:52.63 qjdmH6MjM.net
msdnで聞けよ
447:デフォルトの名無しさん
23/02/16 18:31:38.45 IC0JpJBjd.net
ちょっと試してみるだけのことを実行しないで質問する奴ってなんなんだろう
448:デフォルトの名無しさん
23/02/16 19:12:59.78 31U/HR72p.net
全てを網羅してる人なんて居ないんだから
おま環で何が起こるかなんて、おまえにしか分からないんだぞ?
449:デフォルトの名無しさん
23/02/16 22:44:35.08 NlxEQAoG0.net
>>439
だから書いてないこともあるって
450:デフォルトの名無しさん
23/02/16 23:43:26.11 yZuQjZuta.net
>>443
ありがとう。それは当然わかってるよ
自分で当然試してるし色々調べもしてる。大した手間じゃないしね。例外もとりあえず吐いてない
それを踏まえて、自分が知らない何かがあるんじゃないかと、お前ら先生にも聞いときたかったわけ
451:デフォルトの名無しさん
23/02/16 23:44:54.26 yZuQjZuta.net
>>444
そういう例を聞きたかったんだが?
452:デフォルトの名無しさん
23/02/16 23:45:28.78 evLwjroi0.net
情報の後出しは嫌われるぞ
453:デフォルトの名無しさん
23/02/16 23:48:16.70 yZuQjZuta.net
>>440
>>442
とりあえずなんにせよ質問に答えることすらできないガイジは黙ってろよ
454:デフォルトの名無しさん
23/02/16 23:49:28.56 yZuQjZuta.net
>>447
あと出しって何?自分で調べるくらいして質問するのは当たり前だろ?
455:デフォルトの名無しさん
23/02/17 00:38:46.03 S3eBxXtF0.net
>>448
馬鹿な質問をする奴らはこういう馬鹿ばっか
456:デフォルトの名無しさん
23/02/17 03:44:43.57 SogOmYgg0.net
>>446
めっちゃ細かい内容は書いてない
把握はしてないけどね
457:デフォルトの名無しさん (ワッチョイ ff68-8lmq)
23/02/17 06:49:51.24 rQuIVlVr0.net
MAUIってクロスプラットフォームしなくても良いことがあるんですか?
458:デフォルトの名無しさん
23/02/17 07:14:47.46 YltW73tNa.net
>>449
>>445 の内容を初めから書けよってことだぞ
459:デフォルトの名無しさん
23/02/17 07:58:14.01 N/wP7iE9r.net
質問する際は自分でおこなったことも書くんだぞ
それに問題があったり、新たに問題を生んでたりする
それを隠すのは、解決したいんじゃなくて単に相手を試したいだけ
そりゃ失礼だ
460:デフォルトの名無しさん
23/02/17 08:08:39.74 iGEcMirn0.net
>>452
ないぞ
461:デフォルトの名無しさん
23/02/17 08:37:40.48 vOG5r4bLr.net
>>451
めっちゃ細かい内容って例えばどんなレベルのこと?
462:デフォルトの名無しさん
23/02/17 08:47:10.09 PphMz/0G0.net
そもそもCSのスレでフレームワーク側の事訊くのもどうなんって感じするけど
まぁ.NETそのもののスレ無いか
463:デフォルトの名無しさん
23/02/18 10:10:58.75 4a504/qwa.net
C#について教えてください! URLリンク(smartlabo-hp.com) 上記ページを見てログインボタンを作成しました。 このページ内にあるcsvファイルの内容に加えて同csvファイルの[2]にログイン状態という列を足したいです。 ログインしてない状態では[2]は常に0、ログイン成功したら[2]に1が書かれるようにするにはどうすればいいのでしょうか? ご教授よろしくお願いします。
464:デフォルトの名無しさん
23/02/18 11:04:19.82 NwncLbr90.net
色々すげぇサイトだなぁ
とりあえずそのサイトを参考にするのはオススメしないです
465:デフォルトの名無しさん
23/02/18 11:08:18.91 4a504/qwa.net
>>459
csvを書き換える方法教えてください
466:デフォルトの名無しさん
23/02/18 11:36:39.81 dMNc5e60r.net
>>460
まず自分でググってみた?
467:デフォルトの名無しさん
23/02/18 11:51:35.31 KRa5JcgT0.net
csvファイルを全部読み取って配列化して目的のデータを書き換えて再度csv化する
468:デフォルトの名無しさん
23/02/18 13:13:53.16 cEfNRW0h0.net
ひでーw
469:デフォルトの名無しさん (ブーイモ MMd9-MxMG)
23/02/18 13:44:19.14 2bBix6DxM.net
このレベルの初心者は具体的なコードが無いと手順だけじゃ何もできんだろうから誰か優しい奴
470:デフォルトの名無しさん (ワッチョイ 1501-rc3u)
23/02/18 13:48:09.21 c4QxGie20.net
CSVファイルのでかさにもよるけど>>462は常套手段だと思うよ
でかくて大変だというレベルならSQLiteなりを入れた方が良いかと
471:デフォルトの名無しさん
23/02/18 14:27:14.27 9M6+sMO5M.net
>>458
パンチが利いてるね
このサイトの方法は全然オススメしない
江戸時代の庶民みたいなレベル
見るだけ損だと思う
472:デフォルトの名無しさん (ワッチョイ e5f2-nl9c)
23/02/18 15:28:18.46 fnNhhYD/0.net
>>466
正規の方法教えて頂けませんか?
473:デフォルトの名無しさん
23/02/18 15:50:38.36 XcWpKhdd0.net
>>465
長さが同じ書き換え以外はファイル全体が書き換わることになるし
DB使わず簡易的にやるなら>>462は普通だね
474:デフォルトの名無しさん
23/02/18 15:53:03.57 fnNhhYD/0.net
>>468
お手数ですがコードを教えてください
475:デフォルトの名無しさん
23/02/18 15:57:01.92 R9Vinbrr0.net
>>469
この程度自分でなんとかできないのであればお前にはプログラムは無理だよ
476:デフォルトの名無しさん
23/02/18 15:57:49.83 5dir24/00.net
>>469
まず上級編を読むといいよ
477:デフォルトの名無しさん
23/02/18 16:09:56.65 OMHBdk/g0.net
ここは宿題スレじゃないから「こんなコード書いてください」は違うよな
書いてくれる人はいるかもしれないけど、見た人は大体反感覚える
自分でできるだけやったソース出したら協力してくれる人は増えると思うよ
478:デフォルトの名無しさん
23/02/18 16:19:33.83 fnNhhYD/0.net
分かりました。
479:デフォルトの名無しさん
23/02/18 16:34:11.76 A9MS6Sst0.net
>>471
そのサイトに応用編でIDパスワードの登録ってのがあったが、
こっちのほうが更におかしかった
480:デフォルトの名無しさん
23/02/18 18:14:37.65 qdNpud3sd.net
お題のコードがひどすぎてツッコミが追いつかない
>>458に必要なのはより良い初心者向けチュートリアル
481:デフォルトの名無しさん
23/02/18 18:18:28.34 75y5ggicp.net
CsvHelper使えば?
482:デフォルトの名無しさん
23/02/18 18:21:04.78 WdMwIaAN0.net
質問です
int? a=1;
int b=a; したいときに
(int)a と a??0 のどちらが速いでしょうか?
483:デフォルトの名無しさん
23/02/18 18:29:13.50 75y5ggicp.net
そんな速度気にするより、見やすい分かりやすいコード書く事に集中しろよw
484:デフォルトの名無しさん
23/02/18 18:42:24.23 yJEVDz2HM.net
どこの誰かもわからん奴らが後者が速いとか言ったらこいつは鵜呑みにすんのかな
質問してる時間あるならStopwatchなり使って実際に計測すりゃすぐだろうに
485:デフォルトの名無しさん
23/02/18 19:42:25.39 kZezo40O0.net
>>477
いまどきの実行環境でそれだけ比べて有意な差が出るとは思えんが
そもそもそのコード、同じ内容じゃないし
普通はb = a.Valueじゃないのかね
まあ、b=1が早いと思うよ
486:デフォルトの名無しさん
23/02/18 19:53:20.51 X2EPWVH00.net
速度測ったりアセンブリコード見れば判る事を聞く奴は元々大して興味がないんだと思ってる
こういう馬鹿に真面目に答えても実際に役に立つ事はない
487:デフォルトの名無しさん
23/02/18 20:09:36.48 5MvUkgOt0.net
速度に関しては実際に動かす環境でないと意味がない場合が多くてな
お前の使ってるデバイスの割り込み頻度次第だろ
的な
488:デフォルトの名無しさん
23/02/18 21:04:23.95 UuNuiTTV0.net
開発環境という点では
C#は圧倒的だよね。
VB関数も使い放題で、拡張性が凄い。
.Net環境を使えるし。
無料でSqlServerもつかえる。
Visual Studio Communityも無料。
いうことなしの環境。
なによりネット環境と相性が最善。
489:デフォルトの名無しさん
23/02/18 21:05:56.57 UuNuiTTV0.net
あと検索するとDB接続・更新・照会・新規・削除の
のプログラム例もたくさんある。
要す�
490:驍ノ無料で独学でできる。
491:デフォルトの名無しさん (スップ Sd03-O7MM)
23/02/18 21:20:45.33 PskXhabCd.net
ID:UuNuiTTV0
馬鹿の見える範囲は狭い例
492:デフォルトの名無しさん
23/02/18 22:00:00.23 c4QxGie20.net
まあ圧倒的は言い過ぎだと思うけどトップクラスなのは事実だろ
493:デフォルトの名無しさん
23/02/18 22:04:20.16 +wfi3dFnM.net
勘違い、間違いばかりで思い込んだ頭の弱い人なんだろう 知的障害者とか
494:デフォルトの名無しさん
23/02/18 22:04:41.25 D16KU2+t0.net
どうしてもCSVが必要なケースを除いて、JSON or SQLite が無難
495:デフォルトの名無しさん
23/02/18 22:06:22.32 BZOEQAJC0.net
唐突に2つ前の話題のレスする奴なんなの
496:デフォルトの名無しさん
23/02/18 22:15:18.31 D16KU2+t0.net
初心者はいきなりナニカを1から書くのではなく、既存の(可能であれば普段自分が利用している)FLOSSのリポジトリを持ってきて、自分好みに「改造」するところからはじめた方がいい
アカデミックに学び直すのは、あれこれ一通りできるようになって「オレは雰囲気でC#を書いている」感覚を覚えてからで十分
497:デフォルトの名無しさん
23/02/18 22:19:41.23 5MvUkgOt0.net
>>490
言語博士になんてなったって仕方ないし
そもそも基本になるソフトウェア工学が腐ってるから学ぶのは反対
そのせいか言語博士にはバカが多い
知識はあるけどアプリを作るのはヘタクソみたいなやつ多い
C言語ですべてが完成されている
それ以降はゴミ
498:デフォルトの名無しさん
23/02/18 22:28:13.30 X2EPWVH00.net
今時そんなまともに文字列扱えない言語出されても
499:デフォルトの名無しさん
23/02/18 22:31:22.74 5MvUkgOt0.net
>>492
一番綺麗に扱えるじゃん
表示さえしなければ(笑)
まあ、それは置いておいて
c#のC言語の部分だけ使うと
問題が起きない
500:デフォルトの名無しさん
23/02/18 22:38:46.85 CvraI+tp0.net
C#のC言語部分という謎ワードw
501:デフォルトの名無しさん (アウアウウー Sa49-nl9c)
23/02/18 22:54:57.66 5F4IL/7Ca.net
>>462
教えて
502:デフォルトの名無しさん (ワッチョイ fd7c-l9W9)
23/02/18 22:58:00.41 CvraI+tp0.net
csv言ってるけどファイルフォーマットの定義も無いのに大丈夫?
csvって昔から使われるけど決まった定義無いから亜種が一杯あるんだよな
>>495
NuGetでCSVHelperとかCSVReaderとかCSVParserとかで検索しろよ
503:デフォルトの名無しさん (ワッチョイ 0d02-/+FQ)
23/02/18 22:59:37.10 X2EPWVH00.net
RFCはあるだろ
504:デフォルトの名無しさん (ワッチョイ fd7c-l9W9)
23/02/18 22:59:52.80 CvraI+tp0.net
データに改行が含まれてるとかそういうの有るか考慮しろよ
個人的おすすめはきっちりトークナイザーとかでトークンに区切って処理してる系
505:デフォルトの名無しさん (ブーイモ MMcb-MxMG)
23/02/18 23:01:01.69 sqdUX6SUM.net
カオスになって参りました
506:デフォルトの名無しさん (アウアウウー Sa49-nl9c)
23/02/18 23:02:43.98 5F4IL/7Ca.net
>>496
Excelです
507:デフォルトの名無しさん (ワッチョイ fd7c-l9W9)
23/02/18 23:03:12.26 CvraI+tp0.net
>>497
あるけどカテゴリがInformationalやろ
つまり決まってない事が決まってる
508:デフォルトの名無しさん (ワッチョイ fd7c-l9W9)
23/02/18 23:07:15.46 CvraI+tp0.net
>>500
ExcelからCSVにした1番面倒な奴だな
セル内で改行出来るしその場合の改行コードまで意識しないとな馬鹿ファイル
ぶっちゃけExcelのアプリ無しでExcelファイル操作出来るライブラリ使ってExcelとして読み込んで編集して再度エクスポートが正解かもな
509:デフォルトの名無しさん (ワッチョイ fd7c-l9W9)
23/02/18 23:15:36.99 CvraI+tp0.net
この業界で1番やっちゃ行けない事はExcel使う事
Excelが絡むだけで面倒事が増える
ExcelからCSVにして云々やるぐらいならExcelファイル直接C#から操作した方が安全だし手間が無い
510:デフォルトの名無しさん (ワッチョイ 8535-0fjh)
23/02/18 23:24:25.00 BZOEQAJC0.net
ファイルはユーザーが自由に作成するんじゃなくて設計者が決められるんだからこういうのでじゅうぶんやろ
var user = "unko";
var success = "1";
var lines = File.ReadAllLines("accounts.csv");
var data = lines.Select(line => line.Split(',').ToList());
var target = data.First(recode => recode[0] == user);
if(target.Count == 3)
target[2] = success;
if(target.Count == 2)
target.Add(success);
lines = data.Select(recode => string.Join(',', recode));
File.WriteAllLines("accounts.csv", lines);
511:デフォルトの名無しさん (ワッチョイ fd7c-l9W9)
23/02/18 23:26:10.48 CvraI+tp0.net
>>504
それダメな典型やんw
512:デフォルトの名無しさん
23/02/19 00:37:02.72 0vbW6BC90.net
>>503
己の無知無能のせいなのにExcelを否定する馬鹿
513:デフォルトの名無しさん
23/02/19 06:26:51.52 d92YoZWa0.net
>>506
こういう馬鹿がエクセル方眼紙とかやるんだろうな
514:デフォルトの名無しさん
23/02/19 06:29:04.39 eQwGbFMVa.net
>>csvファイルを全部読み取って配列化して目的のデータを書き換えて再度csv化する
元々読み込んだファイル名と新しく置き換えるファイル名を同じにするにはどうすればいいですか?
515:デフォルトの名無しさん
23/02/19 06:35:36.98 d92YoZWa0.net
ファイル操作ぐらい出来る様にしとけよw
ぶっちゃけレベルが足りて無い
同じファイル名で上書きでも良いけど別名使えよ
元のファイル名を別名にしてから処理しろ
そうすりゃ処理中に例外とか発生しても元ファイル残ってるから色々出来るやろ
516:デフォルトの名無しさん
23/02/19 07:27:54.05 nLv8gTKi0.net
>>508
>>472
517:デフォルトの名無しさん
23/02/19 07:29:53.38 5cMiN9s60.net
>>509みたいな発想が出なくて、>>508の質問しちゃうのって、いくらなんでも向いてないんじゃない
覚えるとか勉強するとかじゃなくて、最低限の素養がないとソフトって作れないと自分は思うけど、そんなことないんかな?
518:デフォルトの名無しさん
23/02/19 07:31:21.43 dYEDC8zq0.net
そんなことはないよ
普通に体系的な勉強するだけで身につく
センスとか言っちゃうやつは勉強しなかったやつ
519:デフォルトの名無しさん
23/02/19 07:40:39.74 eQwGbFMVa.net
すいませんプログラミング自体経験なく、ログインの仕組みを調べていたらあのサイトにたどり着き真似してみた次第です。
基本から学びます
520:デフォルトの名無しさん (ワッチョイ fd7c-l9W9)
23/02/19 07:46:36.24 d92YoZWa0.net
なぜプログラム経験が無いのにいきなり「ログインの仕組み」に手を出したのか
この時点で全てがおかしい
野球をやった事がない奴がメジャーリーグの試合に出るようなもんだ
521:デフォルトの名無しさん (アウアウエー Sa13-nl9c)
23/02/19 07:49:12.80 eQwGbFMVa.net
興味が沸いたからですが
522:デフォルトの名無しさん (ワッチョイ fd7c-l9W9)
23/02/19 08:09:29.30 d92YoZWa0.net
そこは誰も疑って無い
メジャー大谷見て興味持ったらまずは親とキャッチボールとかから始めるやん
草野球チーム入るとか
興味持ったからいきなり未経験でメジャーで点取るにはどうしたら良いか聞くってズレてるやろ
523:デフォルトの名無しさん (ワッチョイ 9b02-eAjs)
23/02/19 08:18:36.06 WB8wf4J60.net
>>515
興味を持つ事自体は悪くないけど、
基礎的な事をすっ飛ばしていきなりそれらを組み合わせた応用(今回の場合はログイン処理とやら)をやろうとするのは
無理があると思うよ。
今時ならネット上でイロハのイから学べるわけだし、
まずは基礎知識を勉強すると良いよ。
524:デフォルトの名無しさん
23/02/19 10:23:48.61 dXvWu+EMa.net
>>507
Excel方眼紙は便利だろ
否定してる奴はエアプ
525:デフォルトの名無しさん
23/02/19 10:25:57.11 dXvWu+EMa.net
>>509
一気に書き込む場合はバックアップは不要
526:デフォルトの名無しさん
23/02/19 10:52:24.46 d92YoZWa0.net
>>519
成功すればな
書いた様に例外が発生する可能性はある訳だけど?
それこそ書き込み中にプログラム落とすとかさ
527:デフォルトの名無しさん
23/02/19 10:54:23.90 d92YoZWa0.net
>>518
どう便利なの?
そもそも表計算ソフトで仕様書っぽいもん書いてるのが間違いやろ
Word使えばええやん
528:デフォルトの名無しさん
23/02/19 11:01:54.68 xCoNozTB0.net
そういえばアラン・ケイも論文で、グラフィックベースのスプレッドシートがあれば
棒グラフを描くとか一つのツールでいろんな用途に使えて便利だろう、なんて書いてたな。
529:デフォルトの名無しさん
23/02/19 11:13:06.28 AzDyUG08a.net
すいません怒らないで教えてほしいのですが、新ファイルに書き出すまでは出来ました。
しかし新ファイルから元 ファイルに戻す際に新ファイルがありませんと出ます。なにが原因ですか?
一番下のelseのコピーのところです
URLリンク(i.imgur.com)
530:デフォルトの名無しさん
23/02/19 11:16:14.57 xSIr/CQB0.net
>>521
方眼Excelは(低能には)便利と言うことだろ
紙に書くのと同じ自由さがあるからな
その手の奴にワード使わせても空白でインデントやセンタリングしたりするからあまり意味ないぞ
531:デフォルトの名無しさん
23/02/19 11:19:21.63 QWxstXftr.net
>>523
そのコードをいじくり回しても今の段階で得られるものはほとんどないよ
そのサイトのことは忘れて>>513で宣言した通り基本から勉強することを強く勧める
532:デフォルトの名無しさん
23/02/19 11:22:51.00 xSIr/CQB0.net
>>523
@"D: アカウントバックアップ.csv"
@"D:アカウントバックアップ.csv"
って2種あるのは回答者を舐めてんのか?
533:デフォルトの名無しさん
23/02/19 11:22:57.59 AzDyUG08a.net
>>525
基本からやります!ですがここだけどうしても解決したいです…
教えてください
534:デフォルトの名無しさん
23/02/19 11:24:14.08 AzDyUG08a.net
ほんまや
535:デフォルトの名無しさん
23/02/19 11:26:01.02 jNkDtxGh0.net
>>527
最後の"D: アカウント.csv"って:の右にスペース入ってるからじゃない?
こういう風に定数を何度も生で書くとケアミス発生するから複数回使う定数はconstなり変数なりで上の方で宣言しといたほうがいいよ
536:デフォルトの名無しさん
23/02/19 11:27:04.45 AzDyUG08a.net
大変申し訳ありません。半角スペースが原因でした。
基本から初めます
スレ汚してすいません
537:デフォルトの名無しさん
23/02/19 11:36:48.34 GOBC6KeQ0.net
失敗なんざ誰でもする
まぁ、ガンバレw