ふらっと C#,C♯,C#(初心者用) Part157at TECH
ふらっと C#,C♯,C#(初心者用) Part157 - 暇つぶし2ch1:デフォルトの名無しさん (ワッチョイ f201-IwB9)
22/11/25 13:16:08.91 HZEumDr50.net
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part156
スレリンク(tech板)
■関連スレ
C#, C♯, C#相談室 Part96
スレリンク(tech板)
■コードを貼る場合は↓を使いましょう。
URLリンク(ideone.com)
URLリンク(dotnetfiddle.net)
■情報源
URLリンク(docs.microsoft.com)
URLリンク(docs.microsoft.com)
URLリンク(docs.microsoft.com)
URLリンク(referencesource.microsoft.com)
URLリンク(source.dot.net)
・Insider.NET > .NET TIPS - @IT
URLリンク(www.atmarkit.co.jp)
・DOBON.NET .NET Tips
URLリンク(dobon.net) VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

2:デフォルトの名無しさん
22/11/25 15:40:20.76 PV2ZG9bua.net
O2.py

3:.NET MAUI HighSchool
22/11/25 20:25:44.06 SQhAXb/D0.net
おつ

4:デフォルトの名無しさん
22/11/27 23:14:42.04 MIxI7txJ0.net
おつほしゅ

5:.NET MAUI HighSchool
22/11/27 23:50:59.97 YoYicuFz0.net
保守
これ保守しないと落ちるくね?

6:デフォルトの名無しさん
22/11/28 09:34:12.02 uOsmFoFg0.net
このスレッドは過去ログです。
プレミアム会員に登録すると続きを読めます。
──────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
──────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
URLリンク(premium.5ch.net)
──────────
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。

7:デフォルトの名無しさん
22/11/28 11:30:37.08 g+TqWMca0.net
詰問age

8:.NET MAUI HighSchool
22/11/28 12:22:02.27 Z3MyFTji0.net
>>6
はやいよ…

9:デフォルトの名無しさん (アウアウウー Sa5b-zuBb)
22/11/28 15:34:35.19 oZh4s12La.net
わろす

10:デフォルトの名無しさん
22/11/28 15:44:13.20 dp0AKPPW0.net
初心者質問で申し訳ないのですが、vsコードで予測変換が出なくて困っています。
調べてみたのですが原因も分らず…if文などの予測変換は出るのですが、gameobjectなどのユニティで使うようなプログラムの予測が出ません。
解決策などあるでしょうか?

11:デフォルトの名無しさん
22/11/28 20:13:23.65 8x2CDfCZ0.net
なんかぶっ壊れてんじゃん?
とかテキトー言ってみる

12:デフォルトの名無しさん
22/11/28 20:13:52.64 8x2CDfCZ0.net
他のプロジェクトは出るの?

13:.NET MAUI HighSchool
22/11/28 20:17:32.92 5evmxUdI0.net
俺のも(会社PC)そうだわ
オムニシャープ入れたけどダメだった
もうVSでよくね?
どうせIntelliSenseとかVS以下だろ

14:デフォルトの名無しさん
22/11/29 15:56:16.24 AJUNeGt/0.net
試しに俺んところでやってみたら、OmniSharpのバックエンドにMono等が選ばれなきゃいけないのに.NET7が選ばれちゃってこうなるみたいだな
試行錯誤しても全然切り替わらないし、ほんとどうすりゃ良いんだろうねこれ・・・・

15:デフォルトの名無しさん
22/11/29 16:04:11.85 Runm1hnd0.net
メディアファイル(特にmkv)のオーディオチャンネルの属性を取得したいって話ですね。
わかりません。

16:デフォルトの名無しさん
22/12/04 14:34:16.15 Mg8RdVSDM.net
>>10
Unityのコードは特殊な環境だけ動いて普通のC#の環境とは違う
基本的に非対応と言ったほうがいいのかあな

17:.NET MAUI HighSchool
22/12/04 14:58:55.32 W8YCwcdV0.net
>>16
普通にUnityでも.NETの技術使われてるけどな

18:デフォルトの名無しさん
22/12/04 20:08:48.90 lx/vhVnT0.net
練習で始めてWPFを使って簡単な時計アプリ作ってみたんだけど
デバッグなしモードだとちゃんと動くのだけれど
デバッグモードで起動するとタイマーが進まなくてウインドウにカーソルを
行ったりきたりさせるとタイマーが変化するんだけどこれって仕様なのかな?

19:デフォルトの名無しさん (スフッ Sd94-sdih)
22/12/07 13:35:19.01 yt7S0Uwdd.net
デバッグで動いてリリースで動かんのは大抵は初期化漏れだが
逆のパターンはなんだっけ
違うdllをリンクしてるとかか

20:デフォルトの名無しさん
22/12/07 19:05:56.01 UAMEr4aB0.net
デバッグビルドでのみ発生するエラーについて
URLリンク(social.msdn.microsoft.com)

21:デフォルトの名無しさん
22/12/07 20:29:43.28 s8UFiDXT0.net
おお、こんな現象があるのか
でも初めてのWPFアプリということで
URLリンク(zenn.dev)
このサイトの時計を同じように作っただけだからそんな複雑なことしてないはずなんだけどな
もう一度コードじっくり確認してみるよ
とりあえずこういった現象があるということを知れてよかったありがとう

22:デフォルトの名無しさん
22/12/08 15:54:32.25 /7FRet6qd.net
これはひどい
>アサートは、チェック機能の実行に時間がかかるため、
>デバッグ版にだけ仕込まれており、リリース版では機能しません。
>そのため、リリース版では発生しないように見えているだけで
>不具合がなくなるわけではありません。
知らぬが仏とはよく言ったもので

23:デフォルトの名無しさん
22/12/08 21:22:08.76 lmp5fbT90.net
ひどい?
当たり前の内容だと思うけど...

24:デフォルトの名無しさん (ササクッテロラ Sp5f-w5YM)
22/12/09 21:14:42.46 Z/OpbtF/p.net
致命的なエラーでも無けりゃ落ちないからねぇ

25:デフォルトの名無しさん (ワッチョイ 0f79-20rA)
22/12/09 21:19:27.16 vj2/mAaI0.net
WPFは時計すら満足に作れないんだな
これでいいかな

26:デフォルトの名無しさん
22/12/10 16:44:26.45 vevfscj1M.net
>>18
普通に考えるとビルドしないで直接別のプログラムを走らせてないか?
visual studioの三角押して実行してる?
それかビルド失敗して以前のを動かしてないか?
デバッグの方はマウスenterあたりでタイマー動作が働いてると言うことでそこらへんをミスってる可能性が高い
間違ってなんか別のイベントハンドラを作ってうまく消せないでタイマーハンドラのと混ざっているんだろうなと

27:デフォルトの名無しさん
22/12/10 16:53:22.85 vevfscj1M.net
アサートはデバッグ時に想定した状態になっているか確認する手段で
リリース時にはアプリの挙動に関与しないし

28:デフォルトの名無しさん
22/12/10 19:14:30.52 jebXvA6J0.net
>>26
一応メニューの方のビルドやリビルドとか色々試してみたけどダメだった
ビルドは成功してるっぽい
デバッグの方は単にウインドウにマウスオーバーしてもタイマーは動かなくてウインドウ中央上部にある
横棒2本のメニュー開くところにマウスオーバーすると一瞬だけタイマー動く感じですぐ止まる
再度そこからはずしてマウスオーバーするとまた一瞬動く
あとなぜかドラッグでウインドウ動かしまくっててもタイマー動いた
正直初心者の自分にも現状原因まったくわからんからあきらめるわ

29:デフォルトの名無しさん
22/12/10 23:33:30.27 8lTVeHq/0.net
わかりました二度と我々の前に姿を現わさないでください

30:デフォルトの名無しさん
22/12/11 09:12:44.67 x2I2CP760.net
IList.Item[Int32] Property
public object? this[int index] { get; set; }
object? ってなんですか ?

31:デフォルトの名無しさん
22/12/11 09:43:35.75 UU1+HIwa0.net
プログラミング初心者は電卓でも作ってろ
→ 数式を評価できるようにしたいんやが、やり方が分からん
→ Roslynってやつがあるやん
→ なんやC#のREPLみたいになりそう
→ VisualStudioに付属してるREPLでええやん、ってなった

32:デフォルトの名無しさん
22/12/11 10:18:27.91 B9k8N7vL0.net
>>30
null許容参照型でしょ
以前の object 型は null を代入できたけど Null 許容認識コンテキスト だと object には null を代入できないから以前と同じように null を代入したいなら object? にしないといけない
ただしそうすると今度は object を逆参照する時に null でないことを確認するか null でないことが分かっているなら null 免除演算子で警告抑止しないといけない
URLリンク(learn.microsoft.com)

33:デフォルトの名無しさん
22/12/11 10:27:01.23 PQihV1OX0.net
>>29
なんで初心者スレでそんな正確悪いこと言うかね

34:.NET MAUI HighSchool
22/12/11 11:09:33.02 hiewkTHT0.net
ここの住人意味わからんよな
同じC#erなのに優しく接しればいいのに

35:デフォルトの名無しさん
22/12/11 11:33:04.10 RuZtb54i0.net
>>33
ここ腐っても技術板だから現象をぐだぐだ書くより最低限の現象が発生するコードを示すなりしないとみんな冷たいよ
初心者と言うのは免罪符にならんし

36:デフォルトの名無しさん
22/12/11 11:45:10.12 o2yKalvw0.net
初心者スレでなに言ってんだと思わなくもないけど、気持ちは分かる。

37:デフォルトの名無しさん (オイコラミネオ MM7b-KKgq)
22/12/11 15:02:59.02 TMAZCbUcM.net
>>28
面白現象だから保存しておいて別のプロジェクト作ってやり直してみたらいい
そのページ見たら5分でできる内容だからさ


イベントハンドラの記述ミスだろうなあとは思う
プロパティウィンドウのイベントのmouseleftbuttondownとmouseLeaveがすぐ隣なのでそちら関係なんだろうなと

38:デフォルトの名無しさん
22/12/11 15:54:02.66 nH6y0Bb70.net
初心者だから甘えさせてっていう人は昭和の人間としては理解できないわ
まあ俺が理解する必要ないんだけどせっかくの伸びる時期を浪費してもったいなくないか?

39:デフォルトの名無しさん
22/12/11 16:46:43.61 XLEwBdHga.net
自分の知識を披露出来る場を逃してイライラするよな

40:30 (ワッチョイ c702-85+0)
22/12/11 17:04:14.69 x2I2CP760.net
>>32 ありがとうございます

41:デフォルトの名無しさん (ワッチョイ 675f-Ih6g)
22/12/11 17:20:28.29 cLJLEUWf0.net
気に入らないなら優しい奴が優しく答えてやればいい
顔も知らんやつに横から指図したところで時間の無駄

42:デフォルトの名無しさん
22/12/11 17:26:19.02 PQihV1OX0.net
>>37
試しにコードミスの可能性も考えて全部コピペで新しいプロジェクトでやってみたけどデバッグモードどけダメみたい
あと気づいたのがマウスオーバーしなくても10秒くらい待ってたら一瞬だけタイマー動いた
もしかしたら自分の環境だけの現象かもしれない
こんな変な現象に色々付き合ってくれてどうもありがとう

43:デフォルトの名無しさん
22/12/11 17:44:33.83 B9k8N7vL0.net
> 顔も知らんやつに横から指図したところで時間の無駄
これまたでかいブーメランやなw

44:デフォルトの名無しさん
22/12/11 17:51:54.29 93aPaqaC0.net
ソースコードがあるなら貼り付けてみればいいのに
そんなおもしろ現象なら共有の意味も込めて

45:デフォルトの名無しさん
22/12/11 18:09:37.35 2GSk8HV3M.net
タイマー周りのコードが間違ってるに1000ペソ

46:デフォルトの名無しさん
22/12/12 11:23:38.00 q9juspAMM.net
精度とか使ったタイマーの話が何一つ書かれてないから
アドバイスしようがない

47:デフォルトの名無しさん
22/12/12 11:50:58.63 zfnaGRLhM.net
>>46
それは>>21のリンク先に書いてあるぞ
まぁ質問者が間違えてる可能性が一番高いにも関わらずコードを出さないから救いようがない

48:デフォルトの名無しさん
22/12/12 12:39:18.02 wywn97Kl0.net
描画だけコケているのか、あるいは計算処理そのものがコケているのか

49:デフォルトの名無しさん
22/12/12 12:50:49.67 mZ+9xzi60.net
サイトにあるように作った(作れてない)
って話なんだろうなぁ

50:デフォルトの名無しさん
22/12/12 17:51:58.56 k2kKVQYZ0.net
こんな感じ。でも手打ちでダメだったから全部コピペでやってみたんだけどな
using System;
using System.Windows;
using System.Windows.Threading;
namespace clock2
{
public partial class MainWindow : Window
{
private readonly DispatcherTimer _timer = new();
public MainWindow()
{
InitializeComponent();
InitializeTimer();
_timer.Start();
}
private void InitializeTimer()
{
_timer.Interval = TimeSpan.FromMilliseconds(500);
_timer.Tick += (_, _) =>
{
TimeLabel.Text = DateTime.Now.ToString("HH:mm:ss");
};
}
}
}

51:デフォルトの名無しさん
22/12/12 20:53:05.99 KIlmqrcDM.net
>>50
ぱっと見はコードに気になるところないなぁ
タイマーのプライオリティを上げてみて動きに差が出るようならデバッガーがUIスレッドで忙しくしてるのかも

52:デフォルトの名無しさん
22/12/12 21:46:03.90 gQz+ELAV0.net
>>50
URLリンク(learn.microsoft.com)
>タイマーは、時間間隔が発生したときに正確に実行されるとは限りませんが、時間間隔が発生する前に実行されないことが保証されます
UIスレッドが忙しかったらずれるんじゃないの。よくわからんけどw
WindowFormで同じようにUIスレッドの影響受けるSystem.Windows.Forms.Timer使って時計作ったことあるけど気付かなかった

53:デフォルトの名無しさん
22/12/12 22:38:45.24 bhcjN5ma0.net
>>37
リリースモードでは動くのに?

54:デフォルトの名無しさん
22/12/13 05:48:44.25 zf4Mftmc0.net
>>52
これが正解なんじゃね?
UIスレッドが忙しい、というのは最適化がかからないデバッグだと動かない説明にはなる

55:デフォルトの名無しさん (アウグロ MM9f-SFrr)
22/12/13 07:15:53.99 VhzaN62DM.net
時計を動かすのに全力を出し切っているということか

56:デフォルトの名無しさん (ワッチョイ 87c6-vbep)
22/12/13 11:56:18.57 31759n2d0.net
ゲームセンターのゲームとか、コマ落ち・カクカク・プチフリーズする

1秒間に、30~60回も処理できない

57:56 (ワッチョイ 87c6-vbep)
22/12/13 12:00:48.87 31759n2d0.net
漏れはパソコンをエコモードにして、使うCPU を1つだけにすると、
ブラウザゲームが、1秒間に1回しか描画されない

セロリンとか、性能が低いCPUでも、そうなる

58:デフォルトの名無しさん
22/12/13 15:12:01.39 +JVgkCRO0.net
InitializeComponent()より前にnew DispatcherTimer()していいんだろうか

59:デフォルトの名無しさん
22/12/13 17:57:53.18 dQ/Fqfa/0.net
>>51
>>52
>>54
これでした!試しにプライオリティをInputにしてみたら期待通りに動いてくれた!
一人でやっていたらずっと気づくことができなかったと思う
色々アドバイスしてくれた人たち本当にありがとうございました

60:デフォルトの名無しさん
22/12/13 19:49:36.92 uYffxzwa0.net
UIスレッド忙し過ぎてUIの挙動にも影響出てそうなんだが
プライオリティ弄るよりそっちをどうにかした方が良いと思うぞ

61:デフォルトの名無しさん
22/12/13 21:33:39.63 5M8t5XhNM.net
デバッグビルドのexeを直接実行した場合と
VSからデバッグ実行した場合で違いが出るようならデバッガーによる影響

62:.NET MAUI HighSchool
22/12/13 23:11:40.99 sdBWNgeV0.net
ReactiveXが理解できない…
何をやってるのかはわかるんだが具体的にアプリにどう実装すればいいのか検討がつかない…
こういうアプリを作ってみるといいよっみたいな資料とかないだろうか?

63:デフォルトの名無しさん
22/12/14 01:12:50.31 Y+oEH+Z90.net
UIスレッドは軽量になるように非同期を駆使して細心の注意を払ってるわ

64:デフォルトの名無しさん
22/12/14 01:17:31.63 7jUV+yGa0.net
デバッガーが重いんだろ

65:デフォルトの名無しさん
22/12/23 22:15:02.01 6p3YRtBU0.net
ロックに使ってる変数の参照を書き換えてしまった

66:デフォルトの名無しさん
22/12/26 23:46:57.73 /QyjmJjHa.net
書けるかテスト

67:デフォルトの名無しさん
22/12/26 23:53:21.36 /QyjmJjHa.net
久しぶりにC#の世界に戻るかもしれないんだけど、
以前触ってたのはVS2010/Windows 7の時代なんで浦島太郎状態
で、言語の方は自分で調べて差分を埋めようと思うけど、
実行環境というか、以前ならCLRとか.NET Framerowkと呼ばれていたものが
どう変わったのかいまいちよく分からないんですが、その辺サクッと分かる記事とか
どっかにないですかね?

68:デフォルトの名無しさん
22/12/27 04:54:00.45 WD60NfHsM.net
実行環境は現在進行形で変化中

69:デフォルトの名無しさん
22/12/27 16:09:13.51 /tVTIbQ7a.net
>>67
.NET FrameworkはWindows用
マルチプラットホームは.NET Standardという規格で.NET Frameworkや.NET Coreやmonoをつないでいた
今はそれらが全て統合されて.NETになってる
Windowsユーザーから見れば.NET Coreが.NETという名前になって.NET Frameworkを吸収合併したと見てもそれほど大きくは間違ってない
Visual Studioの新規プロジェクトテンプレートでは無印のものが.NETで.NET Frameworkと書かれてるものが旧バージョン
旧バージョンではあるがWindows専用に作られただけあってWindowsアプリを作る時には.NET Frameworkが便利な場面も一部ある
しかしいずれ消えるので新規アプリは.NETで作るべき
これだけ把握しときゃ後は何とかなる

70:デフォルトの名無しさん
22/12/27 16:37:34.00 SBS6S5Xya.net
.NET5以降はサポート期間が最長でも3年で、ジャパニーズドカタディヴィロップメントでの採用はかなり厳しいことに注意
そして、断言するが、.NET Frameworkは最終的には5以降のCore系の.NETよりも確実に長く生き残る

71:デフォルトの名無しさん
22/12/27 16:55:12.12 /tVTIbQ7a.net
.NET FrameworkはWindows UpdateでOSをアップグレードしたらサポート(インストールすら)されなくなることがあるからサポートが重要ならなおさら新しいバージョンを使うべき

72:デフォルトの名無しさん
22/12/27 16:59:13.21 SBS6S5Xya.net
>>71
使えてた.NET Framework がアップデートで使えなくなったってこと?
いつそんなことがあった?

73:デフォルトの名無しさん
22/12/27 17:01:47.74 /tVTIbQ7a.net
>>72
過去からの類推じゃなくMSのサイトにそう書いてあるぞ

74:デフォルトの名無しさん
22/12/27 17:11:35.01 usWDFVvc0.net
そもそも.NET Frameworkの最終バージョン4.8のサポートが多少長いのは破壊的変更が多いから今のうちに移行しろっていう猶予期間だって察しろよ
今から.NET Frameworkで新規開発始めるのは正気の沙汰じゃないわ

75:デフォルトの名無しさん
22/12/27 17:13:58.50 SBS6S5Xya.net
>>73
どこに?

76:デフォルトの名無しさん
22/12/27 17:16:43.50 /tVTIbQ7a.net
俺が探すんかいw
ググれよ
サポートはOSのポリシー次第って書いてるのが簡単にみつかるから

77:デフォルトの名無しさん
22/12/27 19:42:29.97 zfINmmJX0.net
4.8.1とかになってまだまだ毎月パッチ当たってるし
あと10年はOSにデフォルトで搭載されるっしょ
net core系は今後もデフォルトでは絶対に入らないから
余計にそうなる。
.net4.8と比べ、.net7の方がファイル数もファイルサイズも速度も速くなりますなんてものほぼないし。
だってフレームワークがクロスであることには意味があっても
各人が作る最終制作物をクロスで動かすなんてことはほぼない
わけなんだから

78:デフォルトの名無しさん (スッップ Sdaf-T2CE)
22/12/27 21:31:21.16 24MwsJWsd.net
>>76
URLリンク(learn.microsoft.com)
> There is no change to the lifecycle policy for .NET Framework 4.x and its updates which continue to be defined as a component of the OS and assume the same lifecycle policy as the Windows version on which it is installed.

もしかしてこれのことか?
これはつまりWindowsの一部としてサポートしますよという意味で、MSとしてはむしろ最強クラスのコミットメントだよ

79:デフォルトの名無しさん (ワッチョイ 4d07-aXTt)
22/12/27 21:32:52.86 usWDFVvc0.net
Windowsがバージョンアップするの知らないやつおるな

80:デフォルトの名無しさん (ワッチョイ 4d07-aXTt)
22/12/27 21:34:22.17 usWDFVvc0.net
てか4.8が最終バージョンてとこでどんなボンクラでも後がないんだなーって気づくだろ
マジで気づかないの?

81:デフォルトの名無しさん
22/12/27 21:55:57.93 oPwbbFHg0.net
でもMSってなかなかレガシーを切れないから、
Windows15くらいまでFramework 4.xも平行して続けてもおかしくない

82:デフォルトの名無しさん
22/12/27 21:59:42.62 iT9wnpuva.net
>>69
質問者じゃ無いけど為になるわ、有難う

83:デフォルトの名無しさん
22/12/27 23:07:28.89 XEOmC2Uoa.net
>>69
なるほど。簡潔で分かりやすくて助かります。ありがとう。

84:デフォルトの名無しさん
22/12/28 00:25:13.64 BhD4UP040.net
.net standardは規格なの?
いつの間にかこの概念を耳にすることがなくなったのでまだよくわからん
.net core以降で開発する時にこいつをどう意識すべきなのかな?

85:デフォルトの名無しさん
22/12/28 00:32:31.57 De8+sS85d.net
>>84
.NET Standardはバージョン2.1で.NET Frameworkを切り捨てたため、事実上の存在意義をほとんど失った
不特定多数向けにNuGetパッケージを開発しているのでない限り、全く気にする必要はない

86:デフォルトの名無しさん
22/12/28 00:56:41.13 Sx0QargEM.net
.NETはいつまでたっても未完成品
今後のことも考えて仕方なく使ってる

87:デフォルトの名無しさん
22/12/28 01:13:53.13 wPwgxApG0.net
.NETはゲートウェイを指定してHTTPリクエスト送るのがメチャクチャ回りくどくなった
これに限らずリファクタリング版は大抵劣化してるだけのゴミ

88:デフォルトの名無しさん (テテンテンテン MM97-Lt9E)
22/12/28 02:23:47.28 Irs2dr9FM.net
>>69
最近C#始めたのでこういう情報はありがたい。

89:デフォルトの名無しさん
22/12/28 07:34:10.36 dX6G49pN0.net
だからといってC#の代わりになる言語なんてあるはずもなく…

90:デフォルトの名無しさん
22/12/28 08:32:36.89 H7K9gIx/0.net
>>85
2.1は意味わからんよなぁ。うちはしばらく2.0でいく。

91:デフォルトの名無しさん
22/12/28 08:35:34.24 NjDNkmkXM.net
.NETはサポート期間が短いのが難点
業務アプリならやっぱり.NET Framework

92:デフォルトの名無しさん
22/12/28 08:39:03.13 adfqLiPC0.net
何をサポートしてほしいのか知らんけどバージョンアップすればいいじゃん

93:デフォルトの名無しさん
22/12/28 10:03:45.99 w/3S+pjQa.net
>>92
まあ.NET Frameworkは少なくとも今後10年のうちにサポートを切られることはないだろうから、仮にリミットを2032年としよう
現在最新のLTSである.NET6で開発したとして、サポート期限は2024年だ
そしてLTSは2年毎にリリースされ、リリースから3年間サポートされる
つまり3年を超えて使い続ける想定であれば2年毎のアップグレードが必要であり、
まず2024年にLTSの.NET8にアップグレードして以後は2026年、2028年、2030年と計4回のアップグレードが必要になる
一方.NET Frameworkを採用していればその間何もしなくてもいいわけだ
技術者として新しいものを使いたい感情は理解するが、これを客に正直に説明すれば客が望むのはどちらか、答えは明白だろう

94:デフォルトの名無しさん
22/12/28 10:11:55.61 DxmYqBGj0.net
特に不便が無ければ、枯れた.NET Frameworkの方が安定して動作するからな
.NETにしか無い新しい機能が必須!とかならともかく

95:デフォルトの名無しさん
22/12/28 10:14:16.94 pub52T/ya.net
作りっぱなしで何年放置する気なんだよw

96:デフォルトの名無しさん
22/12/28 10:16:06.74 Sx0QargEM.net
自分用のアプリは全部.net framework
新しい機能を試したい場合はcore使う
未完成品のデザイナがまともになれば.NETに全面移行するんだけど
それにAPIに互換性のないものがあるのが困る

97:デフォルトの名無しさん
22/12/28 10:29:31.98 kH4/nphD0.net
>>95
放置してようがアクティブに開発してようが、アップグレードの際のコストに大差はない
自社サービスや内製システムのキラキラした話によって、アクティブに継続的な開発が行われているシステムではアップグレードしやすいというようなイメージを持っているかもしれないが、実態は別にそんなことはない
そういった恵まれた環境では、受託と違って自己責任なので場合によってある程度品質を犠牲にする選択がしやすいのと、比較的エンジニアスキルが高く彼らの技術者的感情もが尊重されるから、
結果的にアップグレードに積極的な傾向があるだけだ

98:デフォルトの名無しさん
22/12/28 10:29:50.24 NjDNkmkXM.net
>>95
最低10年は使います

99:デフォルトの名無しさん
22/12/28 10:44:14.55 a2brMVFI0.net
マイクロソフトはしくじり先生だからな

100:デフォルトの名無しさん
22/12/28 11:11:15.73 DxmYqBGj0.net
>>95
不具合や不都合が出るまで
出ないのが一番良いシステムだからな

101:デフォルトの名無しさん
22/12/28 11:13:26.28 adfqLiPC0.net
さすがに三年バージョンアップ無しのソフトはオワコン扱いだわ

102:デフォルトの名無しさん
22/12/28 11:24:48.04 Sx0QargEM.net
>>101
そもそもコンテンツじゃないからな
産業界などでは何十年前のソフトがずっと動いてるなんてざらだろ
一度作ったソフトが何も問題ないならわざわざフレームワークのアップデートでバージョンアップ版作り直す必要はないわ
MSが頻繁に電卓をアップデートしてるのがおかしい
誰も電卓に期待してない機能をどんどん継ぎ足してる
ほっとくと電卓がexcelになる

103:デフォルトの名無しさん
22/12/28 11:31:58.72 DxmYqBGj0.net
>>101
ペイントやメモ帳はいつオワコンになるの?

104:デフォルトの名無しさん
22/12/28 11:36:51.92 adfqLiPC0.net
>>103
開発が止まったらかな

105:デフォルトの名無しさん
22/12/28 11:48:38.96 Sx0QargEM.net
ペイントもメモ帳も開発が続いてる
いらない機能を追加し続けてる
MSはアホなのかと
単体で毎回100MB以上ダウンロードさせてる
世界で数億台あるwindowsマシンのリソースや
世界の電気の無駄づかい
MSは自然由来の電力を使っていますと言ってるけど各家庭や職場はそうじゃない

106:デフォルトの名無しさん
22/12/28 12:13:16.73 1ZDH9Auj0.net
>>105
Googleにも言ってやれ

107:デフォルトの名無しさん
22/12/28 12:15:23.61 1ZDH9Auj0.net
>>102
グラフ描画機能おもろいよな
コンバーターもかなり便利だと思う

108:デフォルトの名無しさん
22/12/28 12:20:18.60 Sx0QargEM.net
>>107
そんなもんいらないだろ
常識的に考えて使ってるのは0.001%もいない

109:デフォルトの名無しさん
22/12/28 12:24:19.22 1ZDH9Auj0.net
>>108
いるけど?

110:デフォルトの名無しさん
22/12/28 13:28:37.15 vcAICwg7M.net
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)

111:デフォルトの名無しさん
22/12/28 13:50:31.59 wPwgxApG0.net
関数グラフは普通に便利

112:デフォルトの名無しさん
22/12/28 13:54:36.91 Sx0QargEM.net
世界に数人の電卓に関数グラフいるマンがいるから環境が破壊されるw

113:デフォルトの名無しさん
22/12/28 13:55:18.27 Il6zR38K0.net
100均の電卓使ってろよw

114:デフォルトの名無しさん
22/12/28 13:57:41.39 wPwgxApG0.net
まあ実務で使う業種は少ないかもしれんな
大学とかの勉強とか研究とかではグラフを描きたい


115:ときはよくある



116:デフォルトの名無しさん
22/12/28 13:58:04.76 adfqLiPC0.net
0.001%が数人のわけないじゃん

117:デフォルトの名無しさん
22/12/28 14:03:29.19 Sx0QargEM.net
>>115
> 常識的に考えて使ってるのは0.001%もいない
国語力ないなお前は

118:デフォルトの名無しさん
22/12/28 14:22:55.52 adfqLiPC0.net
国語力ってのはある程度目安になる数字を出してから行ってくんないかなあ
少し数字を変えて80億人もいないとか言っても意味ないのはわかる?

119:デフォルトの名無しさん
22/12/28 15:09:50.05 DxmYqBGj0.net
そういえば電卓アプリって整数だけで、浮動小数点には対応して無いんだな
アップデートはよ!

120:デフォルトの名無しさん
22/12/28 15:33:29.47 vcAICwg7M.net
目ん玉と頭の中のアップデートが必要か?
普通に小数は扱えるし指数表現もおk
というか関数電卓の機能すらあるのになぜ整数だけだと思った?

121:デフォルトの名無しさん
22/12/28 16:40:36.91 wPwgxApG0.net
プログラマー計算機モードのこと?

122:デフォルトの名無しさん
22/12/28 16:52:53.39 vcAICwg7M.net
違う
三角関数や指数・対数計算などの時の計算モードのこと

123:デフォルトの名無しさん
22/12/28 17:16:59.28 fcgTO/L50.net
電卓はデカすぎ拡大機能はいらないから縮小させろ
クソデカボタンをマウスで押すとでも思ってんのかMSさんは

124:デフォルトの名無しさん
22/12/28 18:01:07.80 Sx0QargEM.net
>>122
サイズ変えられると思ったけど一定サイズ以下にはならんのね
確かに大きすぎると言われれば…
スレチがいつもまでも続いてごめんね…

125:デフォルトの名無しさん
22/12/29 01:37:50.91 CkMUjB1Z0.net
webformアプリ抱えてる会社とかこれからどうするのかな
リプレイスするにしてもほぼ再設計になるだろうし

126:デフォルトの名無しさん
22/12/29 01:52:43.43 hXn490H8d.net
どうするもクソも.NET Frameworkを使い続けるだけだよ
.NET Framework のサポートが終了するのが10年先か20年先かはともかく、その頃には既にCore系の.NETもレガシー扱いとなり新しい代替技術が出てきているはず
中途半端なステップを踏む必要はない

127:デフォルトの名無しさん
22/12/29 08:23:14.39 lMHmGud10.net
.netは .NET6すなわち2021年秋ではじめて
広範な人々が.NET Frameworkに変わるものとして提供する
ある程度安定したプラットフォームです、
ってなったばかり。
Core3系ではリプレイスにはなり得なかったし.NET5は
実験もしくはアーリー用といった扱いだったし。
新体制はまだ1年、マイクロソフトの特性から考えて
.net4がOSのプリインストールでなくなるのが最速で2031年あたり
3.5と同じようにnet4依存の実行ファイルの初回実行時に
自動インストールを問うような仕組みが外されるのは
2041年頃だろう。

128:デフォルトの名無しさん
22/12/29 08:45:18.11 PenkwzkkM.net
.NET6が安定と言われるのは.NET統合後最初の長期サポート版だからだよ
.NETは基本的に奇数バージョンがCurrentで登場後に偶数バージョンがLTSCでリリースされることになってる
新機能を早く使って試したいユーザーは毎回更新してもいいけど安定サポートを望むなら偶数バージョンを乗り継いでいく運用が推奨されてる

129:デフォルトの名無しさん
22/12/29 08:52:51.63 WhR/7OthM.net
Microsoftが「.NET 6」正式リリース .NETとして最初の長期サポート版
URLリンク(www.itmedia.co.jp)

130:デフォルトの名無しさん
22/12/29 09:29:46.53 tI3f/ZOaM.net
予定は予定

131:デフォルトの名無しさん
22/12/29 09:52:34.13 vsTrl5VYa.net
「アップデートに追従できないなら.NETランタイムのバージョンを固定して塩漬けにしろ。そのために完全なサイドバイサイドとSCDを実現した。」
が.NET5系の互換性に対する基本ポリシーなんで、バージョンが上がる際に.NET Framework よりも気軽に破壊的変更を入れてくるのは確実
Windowsのアップデートに影響されないから本来的には楽になるはずなんだけど、常にセキュリティパッチを当てているかをちゃんと監査してるようなとこではかなり厳しいだろうね

132:デフォルトの名無しさん
22/12/29 10:13:30.04 TqrfwAhK0.net
.NET6 のサポート期間は3年。
その期間の開始は去年で、�


133:Iわるのが24年。正式リリースはやっと今。 このサポート期間の短さゆえに .Net Framework4.8 (31年まで)を採用とか、実際にあった話なんけど、なんとかなんないかな。



134:デフォルトの名無しさん
22/12/29 10:19:25.53 FsWoaG/y0.net
そこまでバージョンアップを厭うシステムが間違ってるから見直せばいいと思うぞ
君らが必要としてる.NET Frameworkのサポートもバージョンアップという形でサポートするだけだから何も変わらん

135:デフォルトの名無しさん
22/12/29 10:37:53.61 KOe6T0Hj0.net
いや、できることが増えるならまだしも劣化版になんで苦労して移植せなアカンのかってね
結局win32apiで組んでおけばよかったねってのが
結論になっちゃってるダッサ
困る困らないじゃなくてダッサ
そういう裏切りを何度も受けてるこその現状
今の年寄りは平気でじゃあwin32apiでっていうぞ
ちょうどそういう世代だし
バージョンアップしなくていいLinuxで組むってのもやってる
会社で
会議を開いてメリットデメリットを比較のために並べるとどうしてもそういう方法が選択されてしまう
ビジネスだからメリットデメリットを並べてでた結論には逆らえない
なのでc++に戻ってるまである(Linuxでも使えるから)
上の人間はプログラマの都合なんて決定に混ぜない

136:デフォルトの名無しさん
22/12/29 10:39:20.87 lptjzTiX0.net
>>132
それはシステムではなく組織構造や契約の問題だからなんとも
ベンダーにとってはスタックの更新は貴重な売上機会だし、不具合出したら責任負わされるから、やるからには大袈裟にしたい
一方で、客からすればそんなことは何の価値もない作業に見えるから、当然なるべく避けたいわけ

137:デフォルトの名無しさん
22/12/29 11:06:51.22 FsWoaG/y0.net
それをシステムと言うんだ
一つ勉強になったな

138:デフォルトの名無しさん (ワッチョイ c3da-hVcc)
22/12/29 11:21:32.29 vRFAISe50.net
現在の最新版(Current)は 7.0.1
長期サポート版(LTS)は 6.0.12
URLリンク(i.imgur.com)

139:デフォルトの名無しさん (ワッチョイ bf65-T2CE)
22/12/29 11:26:43.85 lptjzTiX0.net
>>135
周辺の人間活動までシステムに含めるのならその通りだが、だとすると君は「間違っているのは俺ではなく世界の方だ」と言っているようなものだ
もはや主張としてなんら意味を持たない単なる厨二病的発言ではないか

140:デフォルトの名無しさん (ラクッペペ MM97-k0TO)
22/12/29 11:54:44.25 xuhhAGayM.net
URLリンク(dotnet.microsoft.com)

141:デフォルトの名無しさん
22/12/29 12:03:29.41 xOWUnGzja.net
>>137
単純に君の世界が他の人の世界より狭いとは思わんのかね?

142:デフォルトの名無しさん
22/12/29 16:21:08.98 HWC94+Gl0.net
ぶっちゃけ今の.NET戦略は失敗してる
出た当時からほぼ完成されていたCOMを進化する方向になぜ行けなかったのか
政治的な問題なのか

143:デフォルトの名無しさん
22/12/29 16:39:34.35 qCyL+8y1M.net
Googleの存在がなければCOMとActiveXが進化する方向性も僅かにあったかも知らんけど今更な話だな

144:デフォルトの名無しさん
22/12/29 18:33:53.34 rmjwbbUN0.net
COMを使ったことあれば
> 出た当時からほぼ完成されていたCOM
なんて戯言を言わなくなると思う...

145:デフォルトの名無しさん
22/12/30 10:20:04.38 Gfrgu+Wn0.net
>>136
今更Currentかよ

146:デフォルトの名無しさん
22/12/31 23:37:47.65 A8GWHO1q0.net
MVVMというものについてなのですが、ビューからではなくモデルでプロパティを書き換えた場合にもビューに伝達するようにしたい場合はビューのプロパティもPropertyChangedを実装しないといけないという


147:認識であっていますでしょうか。



148:デフォルトの名無しさん
23/01/01 00:39:25.58 5MDrbxjOM.net
いいえ
モデルがプロパティ書き換えたよと言う情報を登録先に投げるので何も変わりません

149:デフォルトの名無しさん
23/01/01 00:51:29.52 e/1iR5vb0.net
モデルがプロパティを書き換えたよという状況がビュー側に投げられるようにするにはPropertyChangedを呼ばないといけない認識なのすが違いますか?

150:デフォルトの名無しさん
23/01/01 00:53:10.85 e/1iR5vb0.net
すみません、、「ビューのプロパティもProertyChangedを~」と書いていましたがモデルのプロパティの間違いです。。

151:デフォルトの名無しさん
23/01/01 00:54:54.59 e/1iR5vb0.net
ネット上のサンプルはモデルのプロパティがただのプロパティになっているものばかりで謎だったのですがやっぱりモデルもMVVM仕様に設計しないといけないんですよね。。

152:デフォルトの名無しさん
23/01/01 01:28:03.06 5MDrbxjOM.net
それが最大のネック

153:デフォルトの名無しさん
23/01/01 01:36:45.23 5MDrbxjOM.net
jsのMVVMフレームワークなどでは対象の変数をフレームワークが書き換えて
自動で通知するようになってる

154:デフォルトの名無しさん
23/01/01 01:51:36.44 msOaXkh40.net
黒魔術やな

155:デフォルトの名無しさん
23/01/01 01:54:15.78 5MDrbxjOM.net
言語レベルでプロパティに通知機構を入れてもいいはずだけどc#はそうしてない
今プロパティにinitアクセサ入れたけどbindアクセサを入れてもいいはず

156:デフォルトの名無しさん
23/01/01 10:26:27.48 e/1iR5vb0.net
良いサイトを発見した
URLリンク(ufcpp.net)

157:デフォルトの名無しさん
23/01/01 10:55:37.88 3lvoVtEt0.net
誰でも知ってるサイトを今更紹介されても

158:デフォルトの名無しさん
23/01/01 11:28:07.18 9sUFDNQ3a.net
初心者用スレでドヤる老害w

159:デフォルトの名無しさん
23/01/01 11:57:09.95 e/1iR5vb0.net
>>154
このサイトというよりこのページの間違い
PropertyChangedを言語レベルで補助するつもりはなくてコード生成でやってもらう方針と書いてあったから参考になると思って。

160:デフォルトの名無しさん
23/01/01 11:58:47.34 3lvoVtEt0.net
>>156
そこはみんなが参考にしてるサイトだからそこだけじゃなく隅々まで全部読むといいぞ

161:デフォルトの名無しさん
23/01/01 12:00:43.26 e/1iR5vb0.net
みんな隅々まで読んでいてこのページも知ってたってことか
すまねえ…

162:デフォルトの名無しさん
23/01/01 12:15:07.10 j5f8HZB4a.net
>用途が狭く、言語機能としては採用しにくい
プロパティの変更通知は言うほど用途が狭いかね?
MVVMを推すくらいならそれくらい標準で実装してほしいものだが。

163:デフォルトの名無しさん
23/01/01 12:57:35.27 5MDrbxjOM.net
言語レベルでMVVMヘルパー実装しろと前から言われてるけど
実際は微妙な補助機能を数回追加し続けて便利になった便利になったと言い続けてる

164:デフォルトの名無しさん
23/01/01 13:13:30.89 ps54Dm7d0.net
>>159
C# は GUI 使わないコンソールアプリを作ったりもするからそんな変な言語仕様を入れられても困る
それでなくても最近ちょっとやりすぎなぐらい言語仕様膨らんでるし

165:デフォルトの名無しさん (オイコラミネオ MMe3-/EFQ)
23/01/01 13:25:47.58 5MDrbxjOM.net
言語仕様がふくらみすぎてるのは舵取りする人間がそういう人に変わったからで
C#はかなり学習しにくいゴミ言語になりつつある

一方で本当に需要のあるmvvmヘルパー機能はライブラリなどに投げられて15年

166:デフォルトの名無しさん
23/01/01 14:50:57.14 aOdp45l9a.net
そこは別にライブラリでいいだろ
そしたらVBもF#も使えるし

167:デフォルトの名無しさん
23/01/01 14:56:40.04 Db/riRaQd.net
今のC#のメインストリームは完全にWebに移ってるからね
Webではほとんどイベント使わないし、基本的にデータの流れが一方通行なのでプロパティの変更をモニタする必要がない

168:デフォルトの名無しさん
23/01/01 15:51:38.76 hQ/gnoFSa.net
ライブラリも別に便利じゃないというね

169:デフォルトの名無しさん
23/01/01 15:53:22.87 upITL37Ha.net
>今のC#のメインストリームは完全にWeb
MAUIはお遊びですか。

170:デフォルトの名無しさん
23/01/01 16:28:44.76 v8lxumL50.net
>今のC#のメインストリームは完全にWebに移ってるからね
何年も前からそういうことを言う人を見かけるけど、それを裏付けるまともな統計を見たことがない。

171:デフォルトの名無しさん
23/01/01 17:04:38.71 RDiXYdnpa.net
>>167
URLリンク(www.jetbrains.com)
現実見ようよ

172:デフォルトの名無しさん
23/01/01 17:32:06.42 v8lxumL50.net
JetBrainsのサーベイか。なるほどありがとう。

173:.NET MAUI HighSchool
23/01/03 04:26:10.48 KGK7R/p50.net
>>166
なわけなくね?
Blazor MAUIとか知らんのか?
あれWebアプリそっくりそのままモバイルアプリにできるすぐれものだぞ

174:.NET MAUI HighSchool
23/01/03 04:28:36.61 KGK7R/p50.net
まぁ最近の世界的な流行りがWeb化してるから仕方ないでしょ
俺は何でもかんでもWebアプリ化するのは嫌いだけどな
Figmaとかもちゃんとしたデスクトップアプリで使いたいわ

175:デフォルトの名無しさん
23/01/03 05:36:35.63 6MPz74YQ0.net
専ブラ作ってるのってマウイ君?

176:デフォルトの名無しさん
23/01/03 07:55:08.78 WKAtXrzF0.net
言うほどWeb化してるか?
スマホ時代からはむしろWebアプリで良くね?ってレベルのものまで何でもかんでもネイティブアプリ化してるのがめちゃくちゃうざく感じるが

177:デフォルトの名無しさん
23/01/03 09:54:09.47 DiXPGtkDd.net
Webアプリで良くね?ってレベルのものは実際開発者もそう考えていてWebブラウザを全面に貼り付けてあるだけのものが多く、技術的には完全にWebの一種
MAUI Blazorもまさにそうだね

178:デフォルトの名無しさん
23/01/03 13:48:08.97 KGK7R/p50.net
>>172
がんばってる
WinUI3って<ContentPage.BindingContext>ってないんだな
どうやってMVVMすればいいんだ?

179:.NET MAUI HighSchool
23/01/03 13:49:50.55 KGK7R/p50.net
>>173
スマホはそうかもだけどFigmaのようなそこそこスペックがいりそうなものまでWeb化してる気が、、、

180:.NET MAUI HighSchool
23/01/03 13:51:48.97 KGK7R/p50.net
>>174
MAUI BlazorはただのWebとはちょっと違うかな
Blazorを介して直接スマホのネイティブAPI呼び出せるっていうスゲー利点がある
ただこの機能を使わないなら別に普通のWebViewでも良いかなってのは思う。

181:デフォルトの名無しさん
23/01/03 14:07:52.60 6MPz74YQ0.net
>>175
WinUI3はコンパイル時バインディングっていうのだけ用意されてるらしいよ

182:デフォルトの名無しさん
23/01/03 18:41:34.03 yYGSV1g60.net
ニュースアプリとかウェブで良いよな。

183:.NET MAUI HighSchool
23/01/03 20:49:00.39 KGK7R/p50.net
>>178
よくわからんけどWindowの中にPageを追加したらPage.DataContextでVVMのBindingできました

184:.NET MAUI HighSchool
23/01/03 20:54:25.22 KGK7R/p50.net
とりあえずスマホ用の5ch.netからスクレイピングした板一覧をツリー表示させることに成功した
URLリンク(github.com)
ただ板取得はJsonのほうがいいみたいだからJsonから板を取得する方法を模索中

185:デフォルトの名無しさん
23/01/03 21:11:49.20 WKAtXrzF0.net
板一覧ってjsonで取れんの?
datのみだった記憶あるが

186:デフォルトの名無しさん
23/01/03 21:15:53.36 WKAtXrzF0.net
ぱっと見たけどHttpClientはstatic readonlyで一本永続化したほうが良いよ
稀にしか使わないならまだしも5chブラウザってことならむしろメインオブジェクトだし

187:.NET MAUI HighSchool
23/01/03 22:12:10.39 KGK7R/p50.net
>>183
クラスってどう分ければいいんだろうか?
板一覧取得サービス、スレッド一覧取得サービス、スレッド取得サービスで分けようとしてたけど
どうがいいんだろ?

188:デフォルトの名無しさん
23/01/04 00:43:08.29 r5YTutFsa.net
Ruby on Rails では、データベースの各表の設計・関連ばかりやる
1対1、1対多、多対多など

189:デフォルトの名無しさん
23/01/04 02:21:56.42 +C+yH2XZ0.net
HttpClientを含むネットワーク接続用のクラスを作成してマウイ君の言うところの各サービスクラスのコンストラクタに渡しておくとか?

190:デフォルトの名無しさん
23/01/04 11:27:50.76 Ry3dqHi90.net
>>173
各社脱獄を目論んでいる
なんでかっていうとgoogleやAppleの気分次第でアプリを修正しなくちゃいけなくて凄く面倒くさいから
amazonはアプリ作るのやめたっぽい
amazonでこうだから他はもっと面倒くさいと思われ
うちも中小だけどあるとき
ふっと動かなくなってるなんてことあって非常に面倒くさい
もう現状でWEBコントロールにWEBページ貼り付けて強引にアプリっぽい挙動してるけど
なんかもうWEBアプリにしちゃおうか?
って話出てる

191:デフォルトの名無しさん
23/01/04 15:19:20.75 4AqXXBLo0.net
>>187
MAUI Blazorでいいんじゃね?それ?

192:デフォルトの名無しさん
23/01/04 23:29:03.48 7N9i2DDEM.net
専ブラか…
15年ぐらい前にWPFで作ってたな
そのせいでWPFにいい思いを持てない
MS死ねって思えた

193:デフォルトの名無しさん
23/01/05 00:08:37.28 vn9u9eY2a.net
機能をてんこ盛りにしてもガワがダサいと台無しになるんだよな
優秀なデザイナーおらんかね

194:デフォルトの名無しさん
23/01/05 02:16:02.09 /ldjRQly0.net
>>190
フラットデザインならツッコまれない上に最古のieでも動くはず

195:デフォルトの名無しさん
23/01/05 17:24:19.12 p6lP0uhc0.net
short i;
i = 0; // ok
i = true ? 1 : 0; // コンパイルエラー(キャストが必要)
三項演算子で数値を返す場合って、int固定になってしまうのは言語仕様ということでしょうか?

196:デフォルトの名無しさん
23/01/05 17:32:00.71 p6lP0uhc0.net
ぁぁ
上記の場合はコンパイルエラーにならないですね。
以下のようにするとエラーになります
short i;
bool hoge = true;
i = 0; // ok
i = true ? 1 : 0; // ok
i = hoge ? 1 : 0; // コンパイルエラー(キャストが必要)

197:デフォルトの名無しさん
23/01/05 17:35:27.31 /ldjRQly0.net
演算子の評価順番が違うだけとかそんなことない?

198:デフォルトの名無しさん
23/01/05 17:47:32.82 Eo475Zw70.net
特に明示しない場合、整数リテラルはintになるからってだけなのでは?

199:デフォルトの名無しさん
23/01/05 18:35:00.85 KPj6QU/BM.net
まず右辺の数字は整数リテラルと言うもの
変数に代入時は整数リテラルは型より大きすぎるなどしてない限り変数と同じ型とみなされる
そうしないと不便だから
次に i = hoge ? 1 : 0;
の右辺は式である
整数リテラルは代入じゃないときは暗黙的にint扱いになるので右辺の式の値の型はintになる
これでキャストが必要
i = true ? 1 : 0;
この右辺はコンパイル時に決定されてるので代入可能
short s = 7000000-6999999;
これも代入可能なのと同じ感覚

200:デフォルトの名無しさん
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と勘違いしてるのかね


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch