ふらっと C#,C♯,C#(初心者用) Part160
!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 record型について調べに調べたんですが説明が理解できませんでした。 今までtuppleやkeyvaluepairや構造体を使ってたけど その代わりに使えばいいと理解していいですか? const var i=1; const var f=2.0; const var s="three"; const var t=(1, 2,0, "three"); のように型名を省いて暗黙的に推量して頂くとエラーが出てしまいます。しかしconst抜きだとエラーが出ません。 この違いは、どのような設計思想が大本にあるのでしょうか? また、何らかのケースで「const抜きだと推量できるがconstありだと推量できない」事があったりするのでしょうか? constにできるのはプリミティブな数値型と文字列型のみ constで定義できるかどうかと型推論とは関係ない あと推量じゃなくて推論ね >>8 ありがとうございます。 プリミティブな数値型や文字列型で、varによる型推「論」とconstが同時に使えないのは何故なのでしょうか? あ、ごめん、そうだconst varはできなかった 一応理屈としては「定数は推論不要だから」だけど思想的なものは知らないや その「思想的なもの」についてに質問だと思ってたけど、違ったのか。 ちなみに自分は知らない。 C#コンパイラチーム開発者の回答 https://stackoverflow.com/questions/2128432/type-inferring-a-constant-in-c-sharp#answer-2128581 > > why can't the type be inferred when the variable is a constant? > > "constant" and "variable" are opposites. const var gives me the shudders to type. > A constant is a value that never changes and has no storage location; a variable is a storage location whose contents change. > They're completely different, so don't attempt to combine them. > The var syntax was chosen to call out "this is a variable", and we're sticking with it. > > var can stand in for a specific type declaration, but combining it with const severely muddies the picture of what the compiler does with the value. > Therefore const var is disallowed to prevent this confusion and you have to explicitly type your constants. >>10-11 ありがとうございます。 >>12 ありがとうございます。 やはりコンパイラ開発者の強い思想があるわけですね。「varとconstが反対の意味だから」という信念には納得です。 今後は const とタイプするたびに Eric Lippert に対して最上級の殺意がinvokeされそうです。 そんなに殺意あるなら使わなきゃいいよ ストレスは身体に悪い これはFBIに通報案件なのかな? プログラマでこういう馬鹿な書き込みをするなんて… >>6 ご解答ありがとうございます。 これって違いなんですか? record class sampleclass { } record sampleclass { } どっちも違いという違いが無いみたいですが >>17 いや自分で書いてみました record classってrecordのみと何が違うんですかっていう話です どっちもequalの挙動同じだしclass付ける意味あるのかなと recordをrecord classって掛けるようになっただけで同じじゃね recordが導入されたC# 9.0では参照型しかなかったけど 値型でも使いたいって要求が出てC# 10.0でrecord structが作られて 記述あわせるためにrecord classって記法ができるようになった >>21 ありがとうございます。 気にしなくてよさそうですね。 c#はこういう細かな規則が少ないんで助かります。 https://twitter.com/intent/tweet?text=https ://wikiwiki.jp/postmodern/&hashtags=%E7%B5%B1%E4%B8%80%E6%95%99%E4%BC%9A,%E5%89%B5%E4%BE%A1%E5%AD%A6%E4%BC%9A,NHK,%E6%97%A5%E3%83%86%E3%83%AC,%E3%83%86%E3%83%AC%E6%9C%9D,TBS,%E3%83%95%E3%82%B8%E3%83%86%E3%83%AC%E3%83%93,CNN,BBC https://twitter.com/thejimwatkins https://twitter.com/intent/tweet?text=https ://wikiwiki.jp/postmodern/&hashtags=%E7%B5%B1%E4%B8%80%E6%95%99%E4%BC%9A,%E5%89%B5%E4%BE%A1%E5%AD%A6%E4%BC%9A,NHK,%E6%97%A5%E3%83%86%E3%83%AC,%E3%83%86%E3%83%AC%E6%9C%9D,TBS,%E3%83%95%E3%82%B8%E3%83%86%E3%83%AC%E3%83%93,CNN,BBC https://twitter.com/thejimwatkins デザインパターン勉強してるんですが 抽象と実装を分けるとか、生成と機能を分けるとか 「分ける」系の概念多いですね 結局インターフェースとか継承を上手く作ってコード拡張しやすいように するのがデザインパターンって思っていいですか? いくつか似てるのあって厳密に理解したくないですw class Item {public string[] Tags;} string[] findTags = ... var q = DB.Items.AsQueryable(); // "AND"条件での抽出 foreach (var tag in findTags) { q = q.Where(x => x.Tags.Contains(tag)); } Entityframeworkでこんな感じのDBでAND抽出はできるのですが findTagsにあるうちのどれかが当てはまったら抽出という"OR"抽出はどうやったらいいのでしょう? q = q.Where(x => findTags.Any(tag => x.Tags.Contains(tag))); でどうや >>28 入れ子にできるとは。これは天才。ありがとう 試していないが、EFでこれが本当に動くの? linqでは正しいけど、EFではSQLに落としきれずに動かないことがあった これがテスト済みなら大分助かる EFのsqliteで問題なし 特殊なことをしているわけでもないので他のdbでも落とせない問題は出ないかと >>32 ありがとうね これから使わせてもらいます 「厳密に理解していないと」 プログラミング中に急に収集がつかなくなるが それでいいのか? 読み込んでいるファイルがUTF-8で正しく保存できているか確認したら? 変な文字コードが混ざっていないか。 対象の文字列の中身は? そして Substring のパラメータにはなにが入るの? 文字列関係はきちんと理解しておいた方がいいよ。 日本語変数名の時点でまともにコード読む気にならねぇ(個人の感想です) >>38 でもさ英語圏の人達は変数名が英語じゃん それって日本人が変数名を日本語で書いてるのと同じ感覚やん 何が違うの? キー入力の観点で日本語入力のオンオフ切り替える手間が面倒とか 昔みたいに日本語の様なマルチバイト文字がコンパイル時に使えないとか悪い影響与えるっていうなら話は分かるんだけど OSとかの根本部分は英語だしなぁ いくらその上にマルチバイトで覆ってても 英語の方が単純、安全、分かり易い 英語圏と日本語圏でプログラミング力の平均値がかなり乖離があるのもこれ。 10000行とかでもコメント皆無でも英語圏の人なら たった1分眺めるだけで概ね何のプログラムかはプログラムに縁がない素人すら答えられるが、 日本人の英語話せないプログラマだと大半は答えられないねぇ。 >>34 その3072とか4080の数字、全角になってないよな? >>37 この画像見て変数の中身は?って言っちゃうのはさすがにどうかと >>42 Substring( 0, 4-5 ) になってたりしない? ってヒントのつもりだったんだけど。 画像の幅の文字列の長さ見てみたら他のコードはいってて9超えてそう いや一応メッセージみると数字のみ抽出はされてるような感じ ParseしてるところのSubstringとLengthをそれぞれ取り出して確認しればいいのにね さすがふらっと、>>46 とか>>49 のように提示された情報すら精査できない人間がアドバイスしようとしてて草 例外の内容からしたら、全角数字をParseしようとしてるように思えるんよね >>51 もう黙っとけ まずRegexで\d*と[0-9]*の両方使ってみたら? \dは数字系のものが全部かかるので全角が入っててもtrueになる 未知の文字列に対して幅決め打ちで取るのは止めた方がいい 左下に情報でてるっていいたいんだろ? でも結局それをみても投稿者だけでなくここでレスしてる奴も原因が特定できないなら一度細かくみりゃいいだけじゃねっていいたいんだが? 実際の開発でもそういうことしないの? 俺も見た感じ何がおかしくなってるのか不明だし細かくわけりゃ何かわかることもあるだろ あと全角がわかりにくいならいったん左下の情報でもクリップボードにコピーでもしてエディタにはりつけるなすりゃいいんじゃね GetFilePropertyValueの中で何してるか知らんけど もしGetDetailsOfで幅を取得してるなら先頭に見えない制御文字が付いてるな 画像の幅の文字列.Substring(1,画像の幅の文字列.Length-6)で一応いけるけど OS変わってピクセル表記じゃなくなるだけで動かなくなりそうだし正規表現の方がいいな GetFilePropertyValueの中で何してるか知らんけど もしGetDetailsOfで幅を取得してるなら先頭に見えない制御文字が付いてるな 画像の幅の文字列.Substring(1,画像の幅の文字列.Length-6)で一応いけるけど OS変わってピクセル表記じゃなくなるだけで動かなくなりそうだし正規表現の方がいいな >>55 画像に写ってるコードと例外と変数情報見てそんな程度のことしか言えないから馬鹿だってんだよ >ここでレスしてる奴も原因が特定できないなら 何人か数字が全角じゃないかって言ってるだろw 節穴かお前の目は 全角数字をParseしたらFormatException出るんだよ馬鹿 C++の後継目指すプログラミング言語「Carbon Language」、Googleの技術者が実験的公開。C++は技術的負債で改良が困難と https://www.publickey1.jp/blog/22/ccarbon_languagegooglec.html ブラウザなどで文字列をダブルクリックすると単語を選択してくれますが、 この単語はどこが認識しているのでしょう? IME?ブラウザ? WPFなど自前のアプリでつらつら文章表示するものがあって、 その文章をダブルクリックするとブラウザなどとは異なり変な区切りで単語選択されます。 C#から介入可能でしょうか >>51 これが切り分けの最初のステップだよね 原因は>>56 が書いてるように不可視の制御文字だと思うけど 確かに、先頭に制御文字があったらあのコードじゃParse失敗するけど 幅と高さのプロパティの番号って176、178だったっけか >>65 番号はOSバージョンによって変わるらしいよ >>56 GetDetailsOfをためしてみたら確かに先頭に「0x200e」(左横書きの制御文字)がいるみたいですね デバッグの画面だとわかりにくいけどエディタに文字列貼り付けたら数値の前に怪しいスペースができてた [0] 8206 '' char [1] 53 '5' char [2] 57 '9' char [3] 48 '0' char [4] 32 ' ' char [5] 12500 'ピ' char [6] 12463 'ク' char [7] 12475 'セ' char [8] 12523 'ル' char read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる