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

■ このスレッドは過去ログ倉庫に格納されています
2024/02/11(日) 09:17:20.44ID:8k78Qd14M
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part159
http://mevius.5ch.net/test/read.cgi/tech/1691454079/
■関連スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
初心者はまずVisual Studioを使いましょう。なおVisual Studioの使い方などに関しては各バージョンで違うので専用スレでお願いします
http://www.visualstudio.com/downloads/
■情報源
https://learn.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://learn.microsoft.com/en-us/dotnet/standard/class-libraries
https://referencesource.microsoft.com/
https://source.dot.net/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
++C++; // 未確認飛行 C
https://ufcpp.net/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2024/10/09(水) 23:27:11.58ID:LpRCWPua0
WPFってそんな糞なのかよ
ゲーミングComboBoxを作りたくなったらどうすんだよ
2024/10/10(木) 01:11:16.37ID:rjsrk2m20
っぱwinformsよ
Datagridviewはなんだかんだ便利
2024/10/10(木) 02:27:50.91ID:6K8bVc+j0
>>621
unsafeでstringのポインタ取れるよ
2024/10/10(木) 08:43:23.64ID:sH/Vhxrv0
unsafeしたくなければ1文字ずつループしながら自前で変換
2024/10/10(木) 12:01:53.19ID:cHKduOPcM
MemoryMarshal.Cast<char,byte>()がunsafe不要かつ効率良い
返値はReadOnlySpanだけど問題ないかと
どうしてもbyte[]が必要ならToArray()
627デフォルトの名無しさん (ワッチョイ 9e60-oLgd)
垢版 |
2024/10/10(木) 13:36:13.58ID:kwV8rurb0
stringを.AsSpan()してReadOnlySpan<char>で受けて
1要素ずつcharの値を確認しました
ありがとうございました
628デフォルトの名無しさん (ワッチョイ 9e60-oLgd)
垢版 |
2024/10/10(木) 13:38:50.81ID:kwV8rurb0
Encodingに「エンコード無し」があってもよさようなもんですけどね
629デフォルトの名無しさん (アウアウエー Sac2-tp1D)
垢版 |
2024/10/10(木) 14:42:09.62ID:bwO1aVtUa
Encoding=Binary
2024/10/10(木) 15:13:38.10ID:sH/Vhxrv0
>>628
Encoding.Default
2024/10/10(木) 15:16:01.18ID:sH/Vhxrv0
あ、でもCoreだとUTF8かあれ
2024/10/11(金) 06:54:42.62ID:HRGXiKw+0
FrameworkではいわゆるANSIだから結局望まれてるものではないと思うな
Encoding.BigEndianUnicodeが一番近いと思うけどこれも無効なサロゲートペアとかあるとU+FFFDに置き換えちゃう

というか今回の用途ならString.Join("-", text.Select(c => ((int)c).ToString("X4")))程度で十分じゃないかな
2024/10/11(金) 19:44:10.29ID:92peWMZ/d
スレチなのかもしれないですけど、お借りします
データベースに接続する際に接続クラスを作るかと思うのですが、問い合わせをする場合、その接続クラスの中でクエリ生成して結果を返すほうがいいのか、接続クラス外でクエリ生成して接続クラスに投げる方がいいのか、どちらが一般的な考えでしょうか?
前者だと、クエリごとにメソッドが増えていって膨大になりそうな感じがし、後者の方が汎用に使えそうな気もしてます
どっちのほうがいいでしょうか?
2024/10/11(金) 21:08:01.94ID:u8Zdo+C50
一般的を聞きたいのか
どちらがいいかを聞きたいののか?

そもそもいいかとは?
2024/10/11(金) 21:29:38.58ID:SASJhP2up
汎用は不正アクセスの入り口になりやすいよな
2024/10/11(金) 22:01:16.41ID:wP/A6+fRM
よくある話だね

リポジトリパターンで実装するときに迷うけど
汎用的で単純なのはリポジトリにメソッドを用意しておく

条件などの複雑なクエリはクエリ実行用のメソッドを作っておくのがバランスが良いと思う
複雑なクエリは値を読むだけで更新は別にしておいた方がいい
2024/10/11(金) 22:04:47.86ID:tH3T8XD80
基本的なクエリは専用メソッドで用意しといて
個別の状況で特殊なクエリはstring引数で渡せるように作るかなぁ
638デフォルトの名無しさん (ワッチョイ dfb1-suLy)
垢版 |
2024/10/11(金) 22:28:42.50ID:f4j5E5960
下記のソースで、2秒経過した時点で、"2秒経過"が表示されて、その後、"終了"が出力されるはずなのですが、
開始した直後に "終了"が出力されて終了します。
どこが悪いのでしょうか?

static async Task Main(string[] args)
{
CancellationTokenSource cts = new CancellationTokenSource();

Task task1 = new Task(async () =>
{
await Task.Delay(5000);
Console.WriteLine("5秒経過");
}, cts.Token);


Task task2 = new Task(async () =>
{
await Task.Delay(2000);
Console.WriteLine("2秒経過");
}, cts.Token);

task1.Start();
task2.Start();

if (await Task.WhenAny(task1, task2) == task2)
{
cts.Cancel();
Console.WriteLine("終了");
}
}
2024/10/11(金) 22:35:31.91ID:l/H5tx0t0
定型的なクエリならメソッド用意して
非定型な任意のクエリをユーザーが構築できるようにするなら
それ用のメソッドを用意しておくしかなくね?
迷うポイントがよくわからん


ところで接続クラスって何なの?
2024/10/11(金) 23:22:23.66ID:wP/A6+fRM
個別に2日以内にログインしたユーザーがどのジャンルにいくら使って…略()みたいなメソッドを作るかどうかって話じゃないのかな?
2024/10/11(金) 23:36:22.38ID:VC+xQYvJ0
>>638
コンストラクタではasync使えない
Task.Runつかえ
そのときはStartはいらない
2024/10/11(金) 23:47:44.62ID:l/H5tx0t0
>>638
async lambda自体がTaskを返すもの
それをnew Taskに渡してwrapしてるので2重になってる
task1やtask2は中身のasync lambdaがTaskを返せば完了
内側のTaskが完了してなくても外側のTaskは完了
2024/10/12(土) 00:51:54.35ID:Om8PnXVB0
>>638
このままAIに聞けばよい
詳しい解説と修正コードも提示してきたぞ!
凄い時代になったもんだ
2024/10/12(土) 01:26:33.92ID:5ioDaTPm0
>>642
ありがとうございます。納得いきました。

>>643
ChatGPTに聞いたら完璧な回答が出ました。
しゅごい・・・
2024/10/12(土) 06:09:41.24ID:PXik+ZL50
>>638がどうダメなのかもわからなかった人間が
どうしてChatGPTが出した回答が完璧だと判断できると言うのか……
2024/10/12(土) 07:08:53.41ID:0WcQlR1j0
>>633
関連キーワード:
・DAO、DTO、Entity
・Prepared Statement
・SQLインジェクション
・O/R Mapper
・モダンなプログラミング言語のライブラリによるDBエンジン毎のSQL文を組み立てる機能
2024/10/12(土) 08:08:10.50ID:0zBJFbu/0
>>645
動かしたんじゃね
2024/10/12(土) 15:03:51.38ID:iNamx5U/0
接続クラスでググったらこういうのが出てきた
https://creatiovitae.hatenadiary.com/entry/2014/09/29/230746
https://www.studio-chips.com/csharp-dbconnection-class-sqlserver/

これ一般的なの?
わざわざ作る意味がよくわからないんだが
2024/10/12(土) 15:11:27.03ID:iNamx5U/0
>>640
ユーザーが自由にクエリを組み立てられるようにするなら
そういうクエリビルダー的なUIと内部の仕組みを自作するか
Power BIみたいなツールを使うかしかないよね

そういう非定型クエリ用の仕組みと定型のクエリ用の仕組みの
コード内の棲み分けで迷うことってあまりないと思うので
クエリを接続クラス内に置くか外から渡すかという質問は
少し違う観点なんじゃないかと想像する
2024/10/12(土) 16:09:44.58ID:jrg98i5j0
一番意味が分からないのは>>648の下のURLの方で
user、password、datasourceは自動実装にしてるくせに
connectionとtransactionは態々別々に書いてでもget&setなとこが意味わからん
クラス内でprivate変数の方にアクセスしてるでもないし
2024/10/12(土) 16:46:37.55ID:4VpnKVlz0
AIに聞け
2024/10/12(土) 18:01:22.51ID:Om8PnXVB0
>>645
求めなくてもダメ出しと理解に必要な技術を解説してくれる

此処で聞く必要はもう全く無くないね
2024/10/12(土) 18:06:57.55ID:hwVWGPYm0
>>644
>>638の内容をそのままChatGPTに投げたら
Task.Runに修正されたコードが返ってきたんだけど
キャンセルの動作はこれで意図通りなの?

Task task1 = Task.Run(async () =>
{
await Task.Delay(5000);
Console.WriteLine("5秒経過");
}, cts.Token);
2024/10/12(土) 18:20:12.74ID:19zRN9Is0
>>648
わざわざ作らないということは、DataGridViewにテーブルデータ表示する時はフォームクラスに全部書いてるの?
2024/10/15(火) 00:50:45.89ID:4VkHlfmU0
Task.Delay()の引数にCancellationTokenを渡さないのは変だな
2024/10/15(火) 09:27:33.35ID:t2D8p6tS0
Cancelに関わらず5秒待機したんじゃろ(鼻ほじ
2024/10/15(火) 09:52:22.92ID:9+lg4UV+p
chatGPTは中身を把握して無いからなぁ
単にネットでよくあるセンテンスを抽出してるだけの無能だしなぁ
658デフォルトの名無しさん (ワッチョイ 4bd8-zljf)
垢版 |
2024/10/15(火) 10:30:05.15ID:d3kL5vb80
ググる前に使うのは有用だよ。
2024/10/15(火) 10:43:30.18ID:2xY7lYacp
>>658
ググった後に使うと、さっき見たサイトの中身を丸まんま言って来るよなw
2024/10/27(日) 19:50:54.89ID:Vdu9Rrcz0
はじめましてC#を初めて2日かもしれないし3日かもしれません
ヴィジュアル系スタジオは持っていませんので
cmdでやってます
がんばります

何か作ってみましたが、もっといいものを作るとすると疲れます
copilotを利用しましたがエラーはきまくります
いいc#の開設サイトあります
なければいいですあればいいです

はじめましてC#をはみでて2日かもしれませんしs・・・
2024/10/27(日) 19:58:48.73ID:oesEgTVZ0
生成AIにはかせた文章か?
2024/10/27(日) 20:38:09.74ID:opEY4juO0
日記?
2024/10/27(日) 22:08:04.35ID:Vdu9Rrcz0
>>661
生成AIだともっと忖度した文章を書くとおもうし、
意図的にC#をはみでてなんて洒落もかまさなければ
ヴィジュアル系スタジオなんて洒落も書かない
だがcopilotの利用でエラーはきまくるのは事実だし、
よさそうなC#の開設サイトは探してる
C#については数年も前、5年は前に遊んだがそれ以降さっぱいだ
ちょっとしたソフトを2,3日で作ってみたが、
ヴィジュアル系バンドは持っていないので直接cmdでコンパイルしてりゅ
挨拶ということできました。
初心者なのでやさしくしてください。
なおetypingでは上位にはいってます、寿司打は全項目1位です、ピクタイピングでも1ですが最近みたら3位くらいになってました。
2024/10/28(月) 00:00:23.02ID:o0p2fyNV0
お薬飲みましょうね
2024/10/28(月) 00:38:24.05ID:x9Pmaxd20
今年一番きしょい
666デフォルトの名無しさん (ワッチョイ a95f-+Yhf)
垢版 |
2024/10/28(月) 03:39:38.17ID:xaz6ouOz0
>>664
お薬は飲んでます発狂したときに強制的に止めるお薬と眠れないとき呑むお薬と普段のみのお薬です。
精神科に通院しているので障害者基礎年金二級精神と精神保健保護福祉手帳二級精神の取得です。
中学2年生から中学3年生のころですからもう数十年以上も前になりますが、
今でいう基本情報処理技術者試験(旧二種試験)と応用情報処理技術者試験(旧一種試験)は取得しましたが、
実務で何が出来るかというとなかなかうまくは出来ませんね。
>>665
つまり気色悪いってことですね、略語として気色悪いからきしょいってことなのでしょうけれど。
今年一番とはいってもまだまだ今年はあと2カ月もあるので油断はできないですよと思うわけです。
あっ、結構長文になっちゃいましたががこれなんて序の口どころか普通な感じといいますか、
長文ネイティブとしてもそんなに長いものではないかと思います。
ところでちょっとピクタイピングの順位上げておきたいのでつきあってもらいませんか
1位でいるには毎日続けてポイントをあげていかないとだめんです。というか今確認したらアカウント消えてましたw
繰り返しますがetyping上位、寿司打全項目1位です。
できればリアルフォースチャンピオンシップに出たいところですが僕リアルフォース派じゃないんですよね。
2024/10/28(月) 12:31:29.80ID:+Kvll6g30
過疎ってる5chのさらに過疎な板にちょこちょこ新規がくるもんだな
668デフォルトの名無しさん (ワッチョイ a95f-+Yhf)
垢版 |
2024/10/28(月) 12:53:23.40ID:xaz6ouOz0
新規もなにもromだけどな
2024/10/28(月) 13:03:32.81ID:+DDKs6W00
書き込んだらROMじゃねぇよ
2024/10/28(月) 13:32:26.77ID:xaz6ouOz0
雑談どころかとくにこれといった洒落のきいた話もできないやつらしかいなさそうだし、
むしろありがたく思ってもらいたいね
2024/10/28(月) 14:16:07.09ID:QyBhwNlo0
洒落の効いた話って?

誰も求めてないぞ
2024/10/28(月) 15:58:30.04ID:x9Pmaxd20
求められるのは簡潔な文章に分かる人だけ気がつく洒落た言い回し
お前がやってるのは糞じじいのダジャレ
673デフォルトの名無しさん (ワッチョイ a95f-+Yhf)
垢版 |
2024/10/28(月) 16:25:32.62ID:xaz6ouOz0
>>671
うわーつまらん、それがつまらん
誰も求めてないぞ 
いや、誰もって 具体的に誰だよw 匿名多数の全ての名前を列挙せよ
お前がただ求めてないだけなら素直にそう書けよ、多数派がそう思ってるような工作をしなくていいのだよ

>>672
さもお前本人が簡潔な文章で分かる人だけが気が付く洒落た言い回し風貌語ってるけれど、
ならばお前が>>665で書いていたりその>>673の2行目の糞じじいなんてのは
ただの誹謗中傷でしかないんだよなあ
あぁ、そう、誹謗中傷が簡潔な文章で分かるだけが気付く洒落た言い回しってか
まったく発達障害は恐れ入るわぁ


プログラムのスレというから相当なキレものがいるかと思いきや
結局自分でなにかアクションが起こせないゴミしかいないよな
俺という存在があってはじめてお前のレスが光るみたいな動きをするなよ
泥団子ですら磨けば光るってのに、おまえらときたらうーんこのゴミ
2024/10/28(月) 17:45:04.89ID:vtHy0CNU0
すごい変わり方

2024/10/27(日) 22:08:04.35
初心者なのでやさしくしてください。

2024/10/28(月) 16:25:32.62
おまえらときたらうーんこのゴミ
675デフォルトの名無しさん (ワッチョイ 81ca-ZkK3)
垢版 |
2024/10/28(月) 18:30:17.26ID:YFWINVwg0
駄目な奴
676デフォルトの名無しさん (スップ Sd73-8acW)
垢版 |
2024/10/28(月) 18:32:37.63ID:Hpfabplfd
>>673
お薬は何を処方されているの?
リスペリドンは処方されている?
2024/10/28(月) 18:37:04.92ID:Vnf984sNH
この気持ち悪い書き込みの人、どんだけガキなんだよと思って過去レスみたら、これでいい年こいたおっさんなのね。。。
中年にして既に人生詰んじゃうとこういう言動しか取れなくなって、キモい長文を書き込んで1日が終わるようになるのかな
怖い怖い
2024/10/28(月) 18:40:44.07ID:imGCIPONM
一般人の偏見なんだけど彼は他人との距離感がうまくつかめない病気なんだから
生暖かく見つめてあげようよ

一番可哀想なのは彼なんだから
2024/10/28(月) 18:48:09.39ID:GIjdzcCj0
怖い人が来ていた…
2024/10/28(月) 19:03:33.50ID:3+StSzlO0
とりあえずワッチョイであぼーんしとけw
2024/10/28(月) 19:36:05.73ID:imGCIPONM
こんなの怖くもなんともないだろ

病気の他人に怖いって言えるほうがよほど困った人間だと思う
2024/10/29(火) 00:00:34.05ID:8p4nu6q00
せめてRubyスレでやってくれ
2024/10/30(水) 10:36:07.03ID:x/mNM3SS0
目立つとはこういうことやぞ

>>676
秘密や

>>677
お前は過去レスもないなにもないやつ

>>680
でもそろそろワッチョイは変更される
684デフォルトの名無しさん (ワントンキン MMd3-hk5E)
垢版 |
2024/10/30(水) 11:42:26.19ID:vWUxWnzfM
>>683
すまんけどお薬の内容を教えてもらえると助かる。頼む、教えてください。
685デフォルトの名無しさん (ワッチョイ a95f-+Yhf)
垢版 |
2024/10/30(水) 11:44:53.25ID:x/mNM3SS0
>>684
今俺がどのような医療機関に通院しているかをソーシャルハッキングされて俺の生活を妨害される可能性があるので今俺が精神科もしくは心療内科もしくは他の科目に関わる処方情報を教えることはできないからお前の好きな薬を俺が飲んでることに勝手にしなさい
2024/10/30(水) 13:55:05.51ID:hLhwnn6U0
今週のあぼーんワッチョイ a95f-+Yhf
687デフォルトの名無しさん (スップ Sd73-8acW)
垢版 |
2024/10/30(水) 21:43:52.14ID:+oF8rs9rd
>>685
リスペリドンもしくはリスパダールを処方されているかどうかくらいは答えられるだろ
それとも逃げるのか?
2024/10/30(水) 21:44:23.74ID:6hTfArrc0
あぼーんしとけ
2024/10/31(木) 00:09:38.16ID:8YsyKYI60
>>687
よくわからないがお前が処方されてるからって他の人も同じだと思っているのか類友を求めているのか
690デフォルトの名無しさん (ワントンキン MM4b-hk5E)
垢版 |
2024/10/31(木) 01:30:59.58ID:wPOs2skiM
>>689
まずは答えてくれ
2024/10/31(木) 02:05:01.90ID:VoG7ZiU8d
こういうマジのキチガイが書いたコードを見てみたい
692デフォルトの名無しさん (ワッチョイ 0bbc-TzxD)
垢版 |
2024/11/01(金) 00:39:49.91ID:LGoDUDS70
動くわけないだろ
693デフォルトの名無しさん (スップ Sd73-8acW)
垢版 |
2024/11/01(金) 01:39:40.96ID:xmUkk5rld
逃げたか
2024/11/01(金) 09:10:48.47ID:xFfDlU+j0
>>692
Xenoスレへどうぞ
695デフォルトの名無しさん (ワッチョイ 75ca-gPyh)
垢版 |
2024/11/04(月) 21:33:20.72ID:YsWUoi9D0
他の言語から来たんだけど「全てがクラスに属する」ことに違和感を感じる
PythonやC++だとフリー関数 (どのクラスにも属さない関数) を作れるけど、C#だと必ずクラスに属するよね
これは言語の思想的に何かしらの意図があるの?

例えば「型Aのインスタンスと型Bのインスタンスを受け取って型Cを返す」処理を書く場合に、C++だといずれのクラスとも無関係な関数という形をとれるけど、C#だと「これはクラスAの責務」のように決める必要がある感じがして、これが慣れない

単に慣れの問題なのか、それともOOPの考え方を理解してしきれてないのか
もし過去に同じような疑問を持って、かつ「現在は腑に落ちた」といった人がいれば、考え方のアドバイスが欲しい
696695 (ワッチョイ 75ca-gPyh)
垢版 |
2024/11/04(月) 21:42:28.51ID:YsWUoi9D0

念の為に補足すると、インターフェースやポリモーフィズム、カプセル化といったものは理解してるし、「OOPの有用性が分からない」といった話ではないです
ただ「メソッドは全てクラスに属する」という言語仕様については、必ずしも適切でない場面が生じるように感じているのだけど、これはこういう意図だよという説明があれば知りたいという話
2024/11/04(月) 22:07:49.25ID:xYSR/1Hc0
最初からそういうものだと思ってたから、特に違和感を覚えないなぁ
なんの解決にもなってなくてすまんな
698デフォルトの名無しさん (ワッチョイ 5e8e-XYkR)
垢版 |
2024/11/04(月) 22:44:03.84ID:AWd+I5uW0
適切でない例を挙げてみろ
己の適応能力のなさを棚に上げるな
どうしても嫌なら自分で言語を作って広めろ
2024/11/04(月) 23:57:23.42ID:Pz2EFwz+0
>>695
using static じゃあかんの?
2024/11/05(火) 00:18:49.53ID:jvZmHUTK0
どーせこういうのは何も考えずにJavaの真似をしたってだけで意味なんて無い
2024/11/05(火) 00:45:13.75ID:9reRkGVq0
objectが基底
2024/11/05(火) 01:02:04.27ID:u+uMowqLM
>>695
単純な話で
classに属していないと関数名がクラスのメソッドと重複したときに困る
メンバーのthisが必須ならそれも避けられたと思うけど

ライブラリなんかで関数追加されてバッティングしたらアウト
2024/11/05(火) 01:09:12.82ID:Gmtkt7Kl0
名前空間でOK
2024/11/05(火) 01:16:52.40ID:lWTcKg3j0
メソッドはすべてオブジェクトに属する なら正しいけど、
「メソッドは全てクラスに属する」は間違ってるだろうという突っ込みはおいといて

そもそもオブジェクトのふるまいを規定するのがメソッドなんだから
オブジェクトに属さないメソッドがあるほうがおかしいと思うが
2024/11/05(火) 02:02:23.26ID:prltW92g0
じゃあrubyと同じですね(火種を呼び込む)
2024/11/05(火) 02:18:04.82ID:JsYkJfXZ0
c#スクリプト使えば関数使えるけど
2024/11/05(火) 08:38:47.56ID:gfiZSQIn0
いろんな言語触ってきたから、別に違和感は無かったな
つーかC++だと独立した関数作れるじゃんって、それCベースのなんちゃってオブジェクト指向だからそうなってるだけじゃねっていう
2024/11/05(火) 09:54:24.49ID:brsYk7xk0
言語の成り立ちや思想の違いだよね
C++やPythonは手続き型にオブジェクト指向が足されたものだから最初からオブジェクト指向で考えられてたC#やJavaとは違う

変数や関数が必ず1つの型に属してるという制約は言語を使う側(特にオブジェクト指向で)にとってもだけど言語を作る側にとってもメリットが大きい

名前空間に直接関数を定義するような機能を追加することは不可能じゃないだろうけど得られるメリットはstatic methodsをまとめるstatic classを定義する手間が省けるというだけなので作る側としては割に合わない
2024/11/05(火) 10:03:15.44ID:brsYk7xk0
もっと最近の言語は純粋なオブジェクト指向的な考えから脱却して型に属さずモジュールやパッケージに直接属する関数をサポートするようになってるけどC#をそこまで変える価値はあまりないように思う
2024/11/05(火) 21:28:01.59ID:/8BJouGs0
C、C++、C#と触ってきたけどC#が一番好き
2024/11/05(火) 21:45:32.75ID:JaQWNq5Na
C#にトレイトはありますか?
712デフォルトの名無しさん (ワッチョイ 750d-gPyh)
垢版 |
2024/11/05(火) 23:11:34.45ID:Jp4t1BFV0
例えばMath.Sinは「Mathクラスのstaticメソッド」でなく「Math名前空間の関数」でも良くない?という疑問
JavaやC#はstaticメソッドを使うけど、後発の言語 (GoやTypescriptやRust) では関数を使えるから、JavaやC#がこの形にした理由や考え方を知りたかった
言語ができた当時の流行りみたいなものなんですかね?

とりあえず「C#ではそういうもの」と思うことにします
713デフォルトの名無しさん (ワッチョイ 750d-gPyh)
垢版 |
2024/11/05(火) 23:23:15.36ID:Jp4t1BFV0
>>704
>そもそもオブジェクトのふるまいを規定するのがメソッドなんだから
>オブジェクトに属さないメソッドがあるほうがおかしいと思うが
インスタンスに紐付くものはこれで納得がいくんだけど、Sin関数やMin関数みたいなものも「オブジェクトの振る舞い」と考えるのがいまいち腑に落ちない

自分の中では、例えばファクトリーのようなものは「クラスに関連する処理だからクラスのstaticメソッドにする」と理解してるけど、これもオブジェクトの振る舞いと考えた方が良かったりする?
714デフォルトの名無しさん (スップ Sd12-XYkR)
垢版 |
2024/11/05(火) 23:39:06.42ID:9TaJXZqzd
発達障害かな
715デフォルトの名無しさん (スップ Sd12-XYkR)
垢版 |
2024/11/06(水) 01:35:20.53ID:BNeL9QsTd
あー、そうか、こいつ倉庫番のあいつか
2024/11/06(水) 06:25:17.77ID:zL0JeVCX0
> JavaやC#がこの形にした理由や考え方を知りたかった
こんなとこで訊いても解るわけないだろw
開発者に訊けよ
2024/11/06(水) 14:23:45.18ID:UH7z1EeFa
>>712
Rustだとf32::sinとかf64::sinとか残念仕様
2024/11/06(水) 14:47:55.11ID:blMDB7hqH
当初のマーケティング戦略でしょ
Cと何が違うのかと言われるのが嫌だったんだろう
初期のC#はそういうの割と気を遣って設計されたらしく、varなんかも当初は似た理由で外されたらしい
2024/11/06(水) 22:08:16.11ID:UgjHScPC0
>>717
どの辺が残念仕様なの?
720デフォルトの名無しさん (ワッチョイ b195-uWtd)
垢版 |
2024/11/09(土) 18:18:30.88ID:ABsPyXMa0
Goのstruct使うとよくわかるが、クラスはオブジェクトが渡ってるだけのシンタックスシュガーでしかない

変数.関数が関数(変数)に変換されてるだけ

オブジェクト指向とか言ってるがそんな大層なものではない

だからC言語でも構造体のポインタを第一引数に渡せばオブジェクト指向のようなコードが書ける

C#のstaticメソッドと他言語のXXXパッケージ、ネームスペースに属する関数で特に実質的な違いはないので、その言語特有の書き方ってだけ
2024/11/09(土) 18:47:30.10ID:eglbI9Vf0
オブジェクト指向言いたいだけやろなぁ

そもそもオブジェクト指向(が何か)言える人おるんかな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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