◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:ふらっと C#,C♯,C#(初心者用) Part153 ->画像>3枚  
動画、画像抽出    || 
この掲示板へ   
類似スレ   
掲示板一覧  人気スレ  動画人気順 
 このスレへの固定リンク: http://5chb.net/r/tech/1639403601/ ヒント: http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
 !extend:checked:vvvvv:1000:512 
 次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)   
 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 
 他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、 
 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 
 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 
 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 
 C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください  
>>980 を踏んだ人は新スレを建てて下さい。
>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。   
 ■前スレ 
 ふらっと C#,C♯,C#(初心者用) Part152  
http://2chb.net/r/tech/1629888256/   ■関連スレ 
 C#, C♯, C#相談室 Part94  
http://2chb.net/r/tech/1553075856/   ■コードを貼る場合は↓を使いましょう。  
https://ideone.com/   https://dotnetfiddle.net/   ■情報源  
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries/   https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/   https://docs.microsoft.com/en-us/dotnet/standard/class-libraries/   https://referencesource.microsoft.com/   https://source.dot.net/   ・Insider.NET > .NET TIPS - @IT  
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html   ・DOBON.NET .NET Tips  
https://dobon.net/vb/dotnet/index.html  VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured 
 stringデータの容量を小さくしてソフトのAPIに送りたいのですが 
 何らかの方法で圧縮できたとして 
 >>3   圧縮して送りたいのはただのセーブデータなのですが、 
 サーバー側の保存形式がstringを使ったkeyValueで作られているので文字列形式でしか保存できないみたいで。 
 保存しておいた文字列をこちらで読み込んでからデコードすればいいのでstringのまま圧縮できればよくて、 
 どうせ日本語までしか扱わないデータなのでSHIFT-JISをutf-8で圧縮……みたいなことができれば理想なのですが 
 そんなピンポイントなのあったりしませんよね、と……。    
>>4   解釈があってるかはわからないのですが、 
 一応圧縮したバイナリデータをBase64でConvertみたいなことは試してみたものの 
 容量を減らすという目的ではむしろ文字数が増えてしまって。 
 何か手段がないかなあと思っている次第です。 
  使用できる文字に番号振って 
 >>5 の文章はユニコード(utf16)で720バイト、ユニコード(utf8)で921バイト  
>>5 の文章をzip圧縮したらバイナリで678バイト。その圧縮バイナリを2文字ずつ(utf8)にしたら2倍の1356バイト(圧縮したらバイト数が増えた) 
 でも前スレ(utf16で348,236バイト)を圧縮したらバイナリ104,639バイト、圧縮utf8で209,278バイト。圧縮したバイナリをテキストにしたほうが小さい   
 送りたいデータ次第じゃ一度圧縮してから無理やりテキストにした方が容量小さくなるから 
 どっちが有利か生と圧縮を自動選択しながら送る手もある 
  通常のデータ圧縮は8ビットフルに使うので、 
 UTF-8でバイナリ化してdeflate圧縮してBase64化した後2文字ずつを1つのcharに詰める 
 7zかなにか圧縮率の高い奴で圧縮しておいてbasE91だな。 
 http://base91.sourceforge.net/   圧縮することによっぽどのメリットがないと無駄にややこしくなるだけだぞ 
 皆さんありがとうございます! Base64化したものを自分でさらに詰めるというのは思いつきませんでした……なるほど……。 
 BasE91もまさに机上論こねくり回してるときに欲しかったものの気配がするので中身覗いて調べてみます!    
>>11   こちらは利用する側なのでサーバーの仕様を変える事はできず、 
 用意されたフォーマット(これが文字列形式での送信)従うしかないやつですね。 
 ユーザー毎に使用可能なデータの容量が決められていて(しかもそれがやたら少ない)、 
 少しでも軽減するためにこちら側でデータを小さくできないかと画策しています。 
 ビットマップ間で部分的に画像コピーするのはDrawImageでできますが 
 g.ScaleTransform(-1, 1) 
 DrawImageに渡すWidthやHeightを負の数にするだけで反対向きに描画するよ 
 LinuxでC#でソフト作りたいのですが 
 ありがとうございます 
  private void Form1_KeyDown(object sender, KeyEventArgs e)  
 このプログラムbutton1押しで開始して、キーが押されるとループ中のブレークポイントで止まるものなんですが 
 直接呼びで停まる? 
 いえ止まるというのはブレークポイントで止まるので正常に機能しているということです 
 デバッグ開始する 
 そうですね、デバッグ実行は毎回やりなおしてますが 
 inr fs;  
 もっとボタンのとこ具体的にかくと上のようにして一度しかtest()呼ばれないようにしてます 
 なら 
 おおEnterキーでもブレークポイントで止まるようになりました 
 Formに配置したbuttonがEnterキーの制御を奪うから 
 docs.microsoft.com/ja-jp/dotnet/api 
 自分のPCではなくユーザーの環境を考えて選ぼう 
 Environment.Versionだと6.0.0 
 System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription 
 clrver.exeだと、こう 
 Xamarinって流行ったか?つまりそういうことだ 
 mauiも期待はしてるけどいつも通りなんだろうなあ。。 
 マルチプラットフォームっていう目的での利用は流行らないだろうな 
 >>44   おっ、.NET Core + Linux いいね 
  これからMSワールドの外へ出てみたら実感すると思うけど、MSスタックは全部MSで揃えて他には見向きもしなくていい状態にこそ意義があるんだよ 
 >>47   linuxはコミュニティによってサポートされます 
  C:\Users\a>dotnet --info 
 .NET SDK (global.json を反映): 
  Version:   6.0.100 
  Commit:    9e8b04bbff   
 ランタイム環境: 
  OS Name:     Windows 
  OS Version:  10.0.19042 
  OS Platform: Windows 
  RID:         win10-x64 
  Base Path:   C:\Program Files\dotnet\sdk\6.0.100\   
 Host (useful for support): 
   Version: 6.0.0 
   Commit:  4822e3c3aa   
 .NET SDKs installed: 
   6.0.100 [C:\Program Files\dotnet\sdk]   
 .NET runtimes installed: 
   Microsoft.AspNetCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] 
   Microsoft.NETCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] 
   Microsoft.WindowsDesktop.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]   
 To install additional .NET runtimes or SDKs:    
https://aka.ms/dotnet-download   c#を勉強しはじめたのですが、メモリ関連でヒープとスタックというのがあるのを知りました。 
 スタックって日常でも使うことあるけど、積み重ねるって意味だからな 
 メモリの確保と開放って元々C言語の概念だったよね 
 メモリを確保するのはアセンブラでもそうだよ。開放するのは動的に使うってことだよ。 
 そんなの意識するわけないだろ。どう意識するんだよw 
 Marshal.AllocHGlobal使うときとかヒープ意識するな 
 大昔独自のC言語使った組み込み開発で、StaticはROMにマッピングされるやつが有った 
 ただしstack overflowはバイブルな。 
 >>51   ちょっと検索した感じだとstaticな「変数」(あくまで変数ね)は 
 ヒープに置かれるって意見とヒープでもスタックでもないって意見があって 
 はっきり分からんねw   
 個人的にはstaticな「変数」は一度staticコンストラクタが呼ばれて 
 作られてしまった後は管理が不要なので後者の方が正しいように感じるがどうだろう 
  MSスタックどころかWindowsフォームしかできないのがMSワールドの外に出ることなんて不可能だろうな 
 C#は適当にGC呼び出せば適切なところでメモリ解放がんばってくれるじゃん 
 >>51   メモリ領域にはヒープとスタックとコードがある 
 staticはコード領域に確保される 
 コードていうのはそのまんまの意味で命令が書かれてる場所 
 ちなみにC#のヒープはGCが管理してる特殊な領域 
  これ?? 
 >>62   >staticはコード領域に確保される   
 これはあってんの? 
  xpSP2以降、自己書き換え禁止されたはずだから嘘だと思うけど 
 >>64   ざっくりだけどあってる   
 AppDomainのLoaderHeapのHigh Frequency Heapと呼ばれる場所に 
 MethodTable Strucureの一部として確保される 
 Heapと名前がつくがGC HeapやLarge Object Heapとは別で 
 GCはされずAppDomainがアンロードされるまで生きてる   
 AppDomainをざっくり言えばコード領域 
  ざっくり曲げすぎ。そもそもいわゆるコード領域はリードオンリーだよ 
 とにかくGC連打 
 結局、Dispose()だらけで汚いコードだらけみたいな。 
 某現場で提供されてたDB接続クラスがIDisposable持ってるからusingで書いたら全然動かん 
 >>73   周りに聞いたらみんなusing使わないようにしてた 
 ライブラリは別部署からの提供品で、修正してもらう手続きがめんどくさいから・・・ 
  usingはMSの提供品ならアリ 
 >>75   別にDisposeの実装だけが特別バグりやすい理由はどこにもないので、 
 それは羹に懲りて何とかそのものだねw 
  別にStreamWriterのusingも疑えって言ってるわけじゃない 
 そもそもなまじガベコレなんてあるから 
 >>78   人の話聞かない人? 
 だから、同じことはDispose以外の全てのメソッドについても当てはまるでしょ。   
 他人の作ったものは全て信じられないから使わない。 
 これなら偏執狂的ではあっても論理的に一貫している。 
 しかしDisposeだけ疑うのは羹に( 
  >>68   厳密にいうと微妙に違う属性みたい   
 SECTION HEADER #1 
    .text name 
    1830C virtual size 
     1000 virtual address (0000000140001000 to 000000014001930B) 
    18400 size of raw data 
      400 file pointer to raw data (00000400 to 000187FF) 
        0 file pointer to relocation table 
        0 file pointer to line numbers 
        0 number of relocations 
        0 number of line numbers 
 60000020 flags 
          Code 
          Execute Read 
  >>72   トランザクション処理を行っていたらロールバックする仕様は普通じゃね? 
  >>82   失敗してないのにやるんじゃない? 
 usingを正常に抜けるための何らかの条件があってそれがされてないと 
 disposeで失敗とみなしてロールバックするんじゃね? 
 その条件はソースを見るか組んだやつしかわからんが 
  >>55   以下ソースで30000ちょっとでスタックオーバーフロするから、 
 それなりに意識する必要のある人もいるように思われ 
 企業が作るデカイアプリとか   
 public class Hello 
 { 
     public static void a(int n) 
     { 
         System.Console.WriteLine(n); 
         a(n + 1); 
     }   
     public static void Main() 
     { 
         a(0); 
         System.Console.WriteLine("hello world!"); 
     } 
 } 
  https://dotnetfiddle.net/tXv7Oq   ランダムで0〜100までの数値を出して0〜50と50〜80、80~100の場合に分けてそれぞれを表示するプログラムです 
 場合分けを増やすとどうしてもforが複数回繰り返してしまいます、2回目以降の 
 for (int i = 0; i < 5; i++) 
 を1回に抑えたいのですが何かいい方法はありませんか? 
  なんかのデータ構造を3つ用意して一回のループで分けるとか 
 linqなんかを使うって方法もあるけど実質同じだからなしだよな 
 普通にcommitしてからdispose()すればrollbackしないんじゃねーの? 
 速度重視なのかメモリ効率重視なのかによるよな。 
 >>86   その例なら単純にdata[]を昇順にソートしてから   
 var i = 0; 
             Console.Write("0以上50未満:"); 
             for (; data[i] < 50 && data[i] >= 0; i++) { ... }   
 Console.Write("50以上80未満:"); 
 for (; data[i] < 80 && data[i] >= 50; i++) { ... }   
 とかでいいんじゃないの? 
  >>90   disposeでrollbackするのはConnectionじゃなくてTransactionだと思う 
 いずれにしても動かなくなるのは使う側の問題だね 
  >>90   正確には、コミットしたあと、何もない処理をロールバックするんじゃないかな 
 実質何もしないのと同じ 
 未コミットあるかないか確認するのが丁寧ではあるだろうけど   
 なんにせよIDisposableなDB接続クラスを未コミットでDisposeするのは使い方が悪いわ 
  ここってスキル高そうな人いるみたいだけど、以下でランキング入りできますか? 
 色々ありがとうございます、自分に合ったものを探してみたいと思います 
 1.jpg 
 ライブラリはないと思うよ 
 nugetとかgoogleで「natural sort」 
 全角ぐらいならnatural sortにCompareOptions.IgnoreWidth渡せばできる 
 漢数字やローマ数字対応してもICompareを実装するのにおそらく10分。 
 こういう手合いは追加要件が出てくるのが基本だから最後には自分で実装しろって回答になってるはず 
 なんか頭おかしい奴が大量に湧いてるけど、少なくとも2000年代の前半には 
 "2.jpg" "123.jpg" "500.jpg" "百日紅(さるすべりの花).jpg" "百.jpg" 
 ソート順って問題になることが多いからな 
 タブコントロールの色ってフォームのデザイナーから変えられないの? 
 職場でcsc.exe使ってフォームアプリつくろうと思ったけど 
 csc.exeのショートカット作って、 
 自然順ソートっ標準で搭載されている言語って結構少なかったんですね 
 chartコントロールについてですが、折線グラフを使用したときにデータポイント間の線上の任意のX位置を取得してその箇所のY値を取得することは可能でしょうか 
 線の中にPoints[]があってそこにXValueとYValueがあるからそれ読めばいい 
 >>117   ありがとうございます 
 ちょっと試してみます 
  116の人が聞いてるのはいわゆる「内挿」ってやつのことだと思うけど、 
 ああ、そういう意味か。それはないな 
 >>116 です 
 そうですか。。できませんか 
 では取得した位置の近いほうのデータを使うことにします 
 ありがとうございました 
  >>121   でも求め方は中一レベルの数学だから難しくないでしょ 
  >>123   あっ。そうですね。2点のXYデータがわかるわけだから折線だったら計算でだせますね。ありがとうございます   
 すみませんがもう1点だけ質問いいでしょうか 
 グラフの拡大縮小をしたときにX軸にスクロールバーがでると思いますが、それを元の表示に戻したいときにスクロールバーの横の小さいボタンを押すと戻りますが、これを自前のボタンイベントで実装するにはどうしたらいいでしょうか 
  >>124   AxisScaleView.ZoomReset ? 
 使ったことないのであってるかどうか知らない。 
  >>125   ありがとうございます! 
 期待通りの動きが確認できました 
  海外の12歳の少女が、NFTで1億8000万円を稼ぐ 
 c# winForms webView2 
 ありがと! 
 form上のボタン押したら、web上のボタンを押すためのjavascriptをwebview2に突っ込む 
 JavaのSpringフレームワークみたいにウェブサービス関係を学ぶにはASP.netでいいのですか? 
 .NET 6 のASP.NET Core Web Apiでの質問です。 
 >>138   Requestヘッダにアクセスするユーティリティクラスを作ってそれをDIする。 
 ちょっとstackoverflow検索すれば出てくると思うが。  
https://stackoverflow.com/questions/24024291/web-api-read-header-value-in-controller-constructor     まぁAPIキーを調べたいなら、いちいちControllerでやるより 
 StartUpの段階で検証処理を割り込ませておくのが定石だと思うが。 
  char[] str = { 'A', 'A', 'A', '\0' }; 
 List〈staring〉の中に複数四角の座標点が入っていて、四角と四角重なってるものを再計算して重なりがなくなるまで繰り返したいんですが、これは無限ループですよね? 
 >>141   よくわからないけど 
 List<Rect>みたいな感じ? 
  >>141   重なりは無くならないのですか? 
 無くなるのなら無限ではありませんね 
  2つの四角が重なってたら最大5つの四角に分割するってことなのかな 
 携帯なので伝わるかあれですが、まず元リスト(oLst)を  
 重なってたらどうするん? 
 >>139   返信ありがとうございます。 
 やっぱりどこかで取ってからDIしたほうがいいですよね   
 .NET 5 まではStartupでいろいろやってたんですが、 
 .NET 6 のASP.NET Core WebだとStartup.cs自体やConfigure周りがないんですよね・・・ 
 (少なくともプロジェクト作成時点で) 
 なので起動後、URLアクセス時点でコントローラに直に行ってるように見えます・・   
 .NET 6のググラビリティもそんな良くないですが、 
 DI自体はbuilder.Services.AddTransientあたりでできているので、そっちで出来ないか、 
 最悪はStartupを自作出来ないかまた調べてみます! 
  >>140   君はspanの実態がchar[] strと知ってるかもしれないけど言語側からはそんなこと分からないからそれは無理だね 
 char[]含めマネージ型はアンセーフな方法で作る事は不可能なので、もしそのspanの実態がstackallocとかだとしたら大変な事になるし 
 どうしてもやりたいならMemory<T>を使えばできる 
  >>151    services取得する文が抜けてた失礼  
 >>153   ありがとうございました。 
 コードまで書いてもらってすみません。   
 Jwtでのやりかたは  
https://www.c-sharpcorner.com/article/jwt-token-authentication-and-authorizations-in-net-core-6-0-web-api/   のやりかたで出来ました(サービスのDIみたいな。staticですが)   
 ですが今回は、JWTでなく独自のランダム文字列で、DBで検証したいと思っています。   
 AddAuthenticationは参考になりました! 
 .NET 5 ではAuthenticationHandlerを継承しHandleAuthenticateAsyncをオーバーライドしてrequestを処理してました。。 
 いまだにHttpContextをコンストラクタ前に参照するやり方がわかりませんが、悩んでみます。   
 しかし、requestHeaderを全URLでDBで解析したいってだけなので、本来複雑になるのもおかしいんですよね・・・ 
 FilterもちょっとアレですしJwtにしても複雑になっててちょっとな・・・ 
  >>152   なるほどです、ご解説ありがとうございます 
 Memory<T>の方も調べてみます 
  オブジェクトをバイナリで直列化するにゃ結局どうすりゃええんじゃ。 
 バイナリであることに意味があるとは思えないので(だって全てはバイナリだから) 
 MSは廃止されたWCFの代替としてgrpcを推奨してるから、バイナリ形式のシリアライザはprotobufでいいんじゃね 
 >>158   せや。今ワイは差分データを管理してオブジェクトグラフの去就を眺められるようなアプリを作っとるんやが、 
 バイナリにすりゃ20バイトのデータがJsonを経由すると5倍とかに膨れてまうんや。 
 そんだけ差があると1000オブジェクトの各1000差分で100MBとか差が出ちまうわけで。 
 ここをもっと高圧縮+高速展開できるフォーマットにしたいんや。 
  あのclassもこのclassもなんでもかんでもシリアライズしたいんだ、じゃなくて特定のデータか 
 binaryWriterでやりくりするにもインスタンスが持ってる別のオブジェクトの参照をどうするか問題が面倒すぎるやろ。 
 フォームにいろいろ書き込んだ内容を印刷したんですけど、フォーム直印刷だとリストビューとかあるので見きらないんで、なんかいい方法ないですか? 
 >>160   速度、データサイズ共に最高な汎用シリアライズフォーマットはGoogleが開発したProtocol Buffers 
  >>165   GDI+の印刷は多少面倒くさいけど別に難しくはない。 
 好きなように自分で実装するのが一番じゃないの? 
  WinFormsのデスクトップアプリ開発でデスクトップアプリ内に組み込むデータベースはSQLiteしかないですか? 
 >>169   accessのファイル形式のmdbとかaccdbとか 
  >>169   LiteDBもSQLiteと同じシングルファイルだから運用楽でオススメ 
  >>170   >>171   ありがとうございます! 
 その後調べてSQLiteが定番っぽいですね 
 信頼性と速度も速いですし 
  >>172   馬鹿って人の言うことに耳を傾けないから馬鹿なんだよな 
  理系ってバカ文系にいくら説明しても無駄だと散々経験してるから無視するよね。 
 litedbとかaccessよりsqliteの方がよほどいいからな。注意しないと激遅だけど 
 >>173   なんか変なこと言いました? 
 教えてくれた4つを調べて比較したんですが 
  正直、褒めてるのかディスってるのか分からないレスだよな。 
 信頼性いうならSQL Server LocalDBじゃないの 
 >>180   それ組み込みDBじゃないから 
 SQL-Server Compact Edtion はまだ提供されてるけど開発止まっちゃてるしねぇ 
  そういえばATOKのジャストシステムって、内部DBは昔から自社で抱え込んでるだけだっけ? 
 ちなみにSQLiteはWindowsならwinsqlite3.dllとして組み込まれてるから別途dllをダウソする必要なくDllImport("kernel32.dll")と同じ感覚で使える 
 個人的にはFirebirdがEmbeddedでもC/Sでも使い方変わらなくてとても扱いやすいけど 
 >>186   nugetでラッパークラス持ってこればいいだけでしょ 
  チキンマックナゲット? 
 >>189   C#er でnuget知らないのはモグリだね 
  マックはやっぱり朝マック 
 ここ1年ぐらいで急に最近もの忘れが増えた 
 >>194   シチューじゃないんだけど 
 シチューでも美味しいだろ?w 
  キャラメルみたいな奴:それはヌガーや 
 Xファイルの...:それはドゲットや    
>>194   フルスクラッチで作らんでもレトルトで十分おいしいねw 
 ベーコンとブラックペッパーを足せば 
 .Net 6 を利用してlinuxで開発することは不可能ですか? 
 .Net 6 を利用してGUIソフトをlinuxで開発することは不可能ですか? 
 .net6はlinux対応してるし、linux対応のvscodeなんかもあるから十分linux完結でできるだろ 
 コンソールとかならできると思うけど、GUIはどうなんだろう? 
 unoというUWPアプリを作ると、スマホやリナックス、webに翻訳してくれるソリューションがあるな 
 AvaroniaUIってどうなったんだ 
 XamlもBlazorも微妙なんでXMLリテラル導入してJSXパクってCSXとかやれば良いのに 
 >>202   最近 git credential manager で採用されたから君も実は使ってるんじゃない? 
  guiはラズパイでwinformが起動はしたけどちょっと動かしただけでアレがねーコレがねーでコケまくったので諦めた 
 なんでGUIって一向に解決しないんだろ 
 >>207   MS的には既にツール系はElectron、業務系はWebで解決してるからだよ 
 本気でWinUIが成功するとか社内でも誰も信じてなさそう 
  エレクトロンは遅いからなー 
 一時期はGUIアプリのuiをwebにするの流行ったけどそれも消えたな 
 15年以上迷走してる最大の原因はたぶん大企業病だね 
 >>208   TeamsはElectronを捨ててWebview2に移行したし、MSはそういう流れだよ 
  GUIはWebでいいから裏はc#ってのはないの? 
 >>214   ガワはWinforms、フロントGUIはWebView2でReact、裏側はc#って可能? 
  >>216   ありがとう! 
 素晴らしすぎる! 
 これで長年求めていたものがすべて作れそうだ 
  MSはwinformsをブラッシュアップするだけでいいのに 
 >>218   よく読んだらちょっと違うかも 
 実行環境にわざわざNode.jsをインストールしないといけない時点でElectronより面倒 
 あとバックエンドがc#ならNodeはなんのために入れるんだ? 
  >>220   そんなもの要らんだろ。 
 create-react-appで作ったアプリをそのまま実行する気なの? 
 いわゆるガワネイティブにするならaspnetcoreを使う必要も無い。 
  >>210   消えてない消えてない 
 BADUSBがあるからUSB経由でデータが持って来れないから 
 WEB画面でデータ登録させるのは現役よ 
 ルータ設定みたいな画面出る 
  >>221   バックエンドはC#で書きたいという要件なんだからそんなこと言っても意味ない 
  >>223   別にasp.net coreで受けんでもC#のメソッドとWebView2内のJavaScriptのinteropはできる。 
  >>224   そういうことじゃなくてサーバーサイドのDB処理などのビジネスロジックをC#で書きたいとか普通にある要望だろ 
  あーすまんやっぱできそうだね 
 https://qiita.com/NagaJun/items/baf00494e0841a5e767e     >>225   そうそう 
 バックエンドはc#でフロントはjs + React + bootstrapなどのcssフレームワークがいい   
 別にNode.jsでもいいんだがそれだともはやElectronになってしまうしこのスレ的に意味がない   
 とにかくWinFormsだとGUIが限界だしかといって今更wpfやuwpは使いたくない 
 ツールバーはアイコン集めと選択が面倒で好きじゃない 
 しかしWebView2、割と良いな。 
 WebView2ってhtmlやcss、javascriptの知識が必須でしょ? 
 htmlやcssやったことがないならムリだろうね 
 >>232   XAMLで日本地図書いてホクホクしてた連中にとっては割と朝飯前だと思うぞ。 
  どっちにしても今時htmlとjsは避けて通れないやろ 
 表 html css javascript 
 フロント開発はReactが多分ベストなんで仕方なくJSかAltJSを使います 
 >>238   まあ開発効率はともかく、今更XAML系のゴミを覚えるよりはスキルの価値を加味すればマシなんじゃないかな 
 JSに慣れたらそのうち裏もTypeScriptで書きたくなるだろうけど 
  時代遅れのWindowsフォームからそろそろ逃げ出す先がほしいってことだよね 
 c#スレですよ 
 何年か前からだけどC#は目的がはっきりしてる人が使う言語になった感じがする 
 >>238   いずれWebでやる前提ならいいけど、スタンドアロンで動かすだけなのに 
 わざわざそんな構成にするのは手間が増えるだけだな。 
  角が丸い四角や吹き出しや、そういうのGUIを純粋なC#で作るの面倒なんだよ 
 >>246   手間が増えるだけか? 
 俺は楽だけどな、この方法。 
  >>249   それはちょっと変な話で、自分の手でゼロベースで作るなら 
 C#の方がはるかに簡単で可読性も高いと思うw 
  >>252   こういう話は「コードは書く物だ(つまり書いたら終わり)」 
 と思ってる人と「コードは読む物だ(つまり他人に理解しやすくなければ無意味)」 
 と思ってる人で意見が割れるw 
  コードで角を丸くするのってそんな大変だったっけ・・・ 
 角丸めるだけなら簡単だなw 
 こういうビジュアルデザインの実装に対する方法論って、ガチのWeb開発をやったことがある奴とない奴とでは話が通じにくいんだよね 
 そもそも、一貫したUIガイドラインに沿うべきGUIと、それぞれのサイトで独自色を出したいWebの方法論って 
 今年は厚生労働省が「マスクの供給は十分です」と発表したのでマスク買い溜めて、厚生労働省が「トイレットペーパーは無くなりません」と発表したので即座にトイレットペーパー買いだめしたので、一年中ウンコできたわ。 
 >>262   できるかできないかで言えばそりゃできるだろうね 
 今日の折込チラシのうちで一番凝ったデザインのものを完全再現した画面を作るのを想像してみ 
 で作って見せたらここの角はやっぱり丸くしないとか影付けて強調したいとか変更が入るんだよ 
 WinFormsだと技術的に対応しにくい例をあげるとすれば、例えばテキストボックスを角丸にしたとして、 
 統一感を持たせるためにその隣りにあるボタンも同様のデザインにしたくなったとする 
 こういうのはCSSなら一瞬だけど、WinFormsなら一大事だよね 
  >>255   これはわかる。 
 俺はロジックではない部分は積極的に外に出してしまいたいし、誰でもできるようにしておきたいなと思う。 
 そういう部分で、HTML+CSSでテンプレート作るのは滅茶苦茶ラクだよなぁって思ってる。 
 角丸ぐらいだったら良いんだけど、みんな無茶言ってくるからな。 
  >>252   まずC#とJSの2つの言語を使うってだけでもディスアドバンテージでかいと思うがな。 
 デバッグやテストも手間が増えそうに思うけど、UIフレームワークは何を使って? 
  まだ時代遅れのWinForms使ってる人いたのか 
 >>268   実のところここは凄く楽になる。 
 C#側は正しくデータを入出力できる事を確認すれば良い。 
 JS側(というかHTML側)は与えられたJSONなりを検証して画面を正しく構築して、C#側から何かjsをevalする可能性があるならそれを全てこなせることを確認するだけ。 
 パキッと分けられるしどちらも自動化できる。   
 UIのフレームワークは業務ではReact使うことが多いけど、メンツ的な問題で個人的にはガワネイティブにはVueの方が楽だと思ってる。 
 流行に乗るならSvelteでも良いのでは? 
  >>271   それってただのWebでは? 
 俺はC#のGUI(Forms or WPFもWeb(React+express)もやってるけど、デバッグやテストはやっぱり 
 スタンドアロンのC#の方が楽だと感じている。 
 それが
>>238 みたいにGUI側をhtmlにしてもっと楽になるんであればと思って訊いてみたけどどうも違うようだな。 
  >>273   UIがWebかどうかなんかあんまり関係ないのでは? 
 ローカルのリソース使うんだし実際あんま関係ないと思うが。 
 CordovaやelectronをWebと言うかどうか、みたいな問題に聞こえる。   
 正直WPF以降であれば、慣れの問題では?と思うけどなぁ。 
  定義はどうでもよくて、気になったのはのは実際にFormsやWPFより楽になるのかなんだが。 
 >>258   むしろそこまでキッチリ指定されてるなら面倒ではあるけど難しくはないだろ 
  >>275   スタンドアロンアプリの話してるよ。 
 ガワネイティブ理解してないだけでは…? 
  C#で作られたDLLでSafeFileHandleを返す関数があるんだけど 
 Svelte使うスタンドアロンアプリってのは興味深い。 
 >>278   C++/CLIだったら変に集中管理とかしないで普通にRAIIなラッパークラス作ればよくね 
  それでどこまで楽になるのか興味深かったんだが 
 楽なのはVB6、winformあたりが限界で 
 >>282   お前は本当に何も理解してないんだな。 
 WPFでつくる方がよっぽど面倒なんだよ、そもそも。 
 BlendとモックのDLL使ってコントロール作って貰ってたのが、Web技術で作って貰えるだけでも相当工数下がるの。 
 デザイナー×制作にでも作れるんだから。 
  >>283   MSがあれだけBlendを振り回して叫んでた「デザイナーと技術者で役割分担」という絵空事を解決したのは結局これというね。 
  昔はASP案件が多かったから経験ある人はWEBまわりの学習コストが下がるがWPFはね。 
 このスレは能力低い人が多いからWinForms以外をすすめても意味がない 
 WinFormsで事足りる案件をそれ以上でやる意味なんてないからな 
 なんかwinformに一族を滅ぼされた人がいるっぽいな 
 >WPFでつくる方がよっぽど面倒なんだよ、そもそも。 
 >>290   ほとんど全ての場合だよ。 
 カスタムコントロール作らない事の方が珍しいだろ。ペタペタと直接、素のコントロール置いて作ってるとか狂気の沙汰じゃん。 
 後付け条件も何も俺は最初からその想定で言ってる。 
 お前がどんどん原始的な例ばっかり挙げて後付け条件出してるんでは? 
  コモンコントロール以上の何かがほしいってそれはもうRICHなGUIですよ。 
 >>289   それはお気の毒に。 
 仇討ちするなら助太刀いたしますぞ。 
  WPFは結局見た目重視の癖に他のデザインツールとの連携がゴミカスだったからな 
 flutterみたいにGUIが整備されていればいいだけなのにマイクロソフトには作れないのか 
 https://codezine.jp/article/detail/15063   つか、データ内容から言ってイラレとの連携が必須なのにそこの対応がおざなりなのがいけない 
 なんでイラレなの?XDとかFigmaとかでは? 
 >>297   いや、俺が最近のツール知らんだけ   
 まあ、アドビ製品で作れないと辛いと思うなってことで 
  >>297   いや、俺が最近のツール知らんだけ   
 まあ、アドビ製品で作れないと辛いと思うなってことで 
  >>298   最近はAdobe製品あんまり人気ないよなって感じしてる。 
 デザイナーの人、だいたいFigmaかなぁ。人によっては直でCSS書いてくるよ。 
  >>292   メーターはCommunity Toolkitにあるな 
  このあたりが出来るのが楽。 
 https://observablehq.com/@d3/zoomable-sunburst     JSのエコシステムは割と手厚くて、結構色々できる。 
 変わり種だと最近はこれも使った。今までだったら相当大がかりな仕組みになってた。  
https://modelviewer.dev/     IEベースのWebViewだったら出来なかったんよね、これ。 
 何の話で盛り上がってるんだっけ? 
 MSは何も示せなくてユーザーたちが独自になんとかしようともだえてる 
 >>304   やっぱりあいかわらずそうなんだね。 
 今後はこういう展開をしていきます、みたいなの(横文字で何って言ったっけ?) 
 も一切ないんだっけ。 
  UWPってアレ結局なんなん? 
 >>302   IEコンポーネントは初期設定がIE6になってるだけで、その制限解除するだけで使えるんじゃないのかな? 
 設定しないと使えないのは多かったけど、設定して使えないものがあった覚えはないな 
  >>307   IEコンポーネントはパフォーマンス悪すぎて大変だったんよ。本当に悪かった。 
 WebGL 2.0は全くダメだし。 
 そしてごく最近の記法が使えないので、古い書き方で苦労するかトランスパイラで相当トランスパイルしないといかんのだけど、これもこれで大変。 
  そういえば、IEのコンポーネントって他プロセスから普通にDOM掴めたけど今のはそんなこと無いよな、さすがに。 
 >>309   今のIE11でも変わらない。Chromium Edgeは無理。 
  C#でNewtonsoft.Jsonを使用して 
 名前なしのカンマ区切りだったらそれはcsvとして処理した方がはやいんじゃないのか 
 >>319   CSV一行分をjsonのValueとして持てばいいんだよ 
  var objs = new { 
 >>321   おお、出来るんですね。 
 ありがとうございます、試してみます 
  var json = 
 >>323   Visual Studioだとvarの上にカーソル持っていったら型が表示されるだろ 
  型が分からなくてもソースが読み書きできる人が羨ましいわ。 
 インテリセンスとAPIデザインが優秀って前提はあるだろうね 
 >>326   いや、型がメソッド名や右辺式から推測しづらいと思ったら 
 var使うなという方針は基本的には間違ってないと思うよw 
  >>326   なんでvarの上にカーソル持って行かないの? 
  >>330   俺はvar推奨派だが、コードレビューでGitHub上で読むとかあるだろ? 
 コード工の数が多いといちいち全部pullしてVSで開くとかやってられない 
  >>326   わからないままに何かしてない。 
 よめばわかるだろ。 
  326はC#の話じゃなくてジャバスクとかの話してるんだろ 
 >>333   そういうことか 
 型推論は型が確定してるのに意味不明なこと書いてるなと思ってた 
  型が分からないとほんとイライラくるよな。 
 >型が分からないとほんとイライラくるよな。 
 ジャバスクの話だ!!! varは型が確定している!!! ほんと馬鹿かこいつら… 
 >>338   コーディングした時点で確定してるよ 
 varの上にカーソル持って行ったら確認できるだろ 
  >>321 から
>>323 ときてジャバスクとか後付感半端ないわ 
 こういうのとは仕事したくねーわw 
  >>323 見たときに 
 var json = 
 こうあったとき、デコード後のclassが入ってることあったり、json stringが入ってたり、varやjsonなんて型や変数名だとわけわかんねーよ! 
 って話かと思ったら全然違った。なんだこの流れ・・・ 
  これこれ。
>>341  おれは一言もジャバスクなんて言ってないのにジャバスクの話にされて、 
 さらにはおれがジャバスクを後付したと妄信し、いきなり仕事したくないとかキチガイ妄想炸裂。 
 仕事先でこんなキチガイいたらガチで名誉毀損で訴えるわ。   
 これが型をスルーできる奴の脳の構造。リアルでアホだろ、こいつら… 
 ※現在は削除されています 
  TypeScriptは型ヒント付きスクリプト言語にはよくあることだけど型が嘘をつけるので積極的に使わない方がいい 
 >>346   それ言い出すとC++もreinterpret_cast多用で型の嘘つけるからなあ 
  >>347   まさにそれだね 
 cppは名前付きのキャストを使い分ける習慣が広まってるから状況は多少、マシ 
 TSにはanyとかいう負の遺産がある 
 それにJSはそれ自身ではできることが少ない言語なのでインフラapiコールに頼りがちだ 
 そこでanyを使いたくなくても多用するのでとにかく間違えやすい 
 自分がうっかり間違える可能性 
 チームメンバーが間違える可能性 
 ライブラリ作者が間違える可能性 
 とにかく間違いが起こりやすい 
 なのでTypeScriptは使わないほいがいい 
  ・間違ったコールバックの型付け 
 >>349   間違える余地が在ることが問題 
 特定の個人が使いこなせるこなせないという低次元な議論じゃない 
 型Aと書いたものが実際にはAでないという可能性が生じた時点であらゆるコードが信頼性を失い 
 その検証のために心労とコストが増えて 
 そして実際にバグが増える   
 C#では例えば「DateTimeと書いた変数に実際にはstringが入っているかもしれない」などと考えてコーディングする人は誰もいない 
 C#ではよほどのことがなければ基本的に型が嘘をつかないからそれで上手くいく 
 DateTimeと書かれたらそれはDateTimeであってstringであることを考慮する必要はない   
 しかしTypeScriptは違う 
 型は平気で嘘をつく 
 Date型と書いた変数が実際は文字列だろうが数値だろうがお構いなしだ   
 TypeScriptでは型が嘘をついていないことを確かめるには 
 その型が嘘をついている可能性があるという前提でバリデーションを追加するか 
 依存してるライブラリの内部の隅々までソースを追いかけるか 
 そういった対策をしなければならない 
 それはあまりにも非生産的だ 
  function ExternalLibFunc(): string 
 Form1csにイベントがたくさんあるので行数が多くなってしまうのですが 
 >>352   メニューやツールバーみたいのがあったら 
 イベントハンドラの数が増えること自体は仕方ない。   
 行数が増えて困ることは目的の場所を探しにくくなることだから、 
 対策は#regionディレクティブをうまく使って分類することぐらい 
  >>352   void HogeEvent(object s, EventArgs e) { 
 //長いコード 
 }   
 ↑これを 
 ↓こうする   
 void HogeEvent(object s, EventArgs e) { 
 _hoge.DoSomething(); 
 }   
 class Hoge { 
 public DoSomething() { 
 // 長いコード 
 } 
 } 
  >>350   そうは言ってもc#だってobjectや継承あるからな・・・ 
  >>350   ネイティブ呼び始めたら嫌でもチェックせんか? 
 タグ付きユニオンとか使い始めたらどうせそうなるし。 
  >>357   本来バリデーションが必要がないところでバリデーションが必要になることが大問題 
  それはバリデーションじゃなくてバグのチェックだねw 
 そだね 
 >間違える余地が在ることが問題 
 >>363   完全無欠な言語しか使わないとまでは言わない 
 ただ大きな欠陥のある言語は使いたくない 
 感覚としてはその程度だね   
 どういう場合に起こるか? 
 それはあらゆる場面で起こりうる 
 ライブラリすら信用できない 
  >>360   本来バリデーションは必要なのに必要じゃないと思い込んでるだけだろ。 
 カナリア置いたりした経験無さそう。 
  >>364   あるゆるは言い過ぎでは? 
 ほとんどの場合信頼境界を越えるからかと。 
  formsのchartを使ってるんだけど、20系列くらいを100ms以下でリアルタイム更新って厳しいのかな 
 >>365   c♯においてdatetime型の変数の中身がdatetime型以外である可能性があるの? 
 本来必要なバリデーションって何よ? 
  >>364   Cのポインタだって使い方を間違えたら正しい型を示さないことになるし、C自身も安全でない言語と見做される 
 こともあるが、それを分かったうえで正しく使う人はいるし実際広く使われている。そういうこと。 
  >>368   外部のAPIで1899年以前を扱いうる場合。 
  >>367   サードパーティ製のチャートを探すことをお勧め 
 詳しくないから具体的な名前は特に挙げられないけど 
 とりあえずScottPlotって名前を最近見かけたので試してみては 
 しかし20系列もあると読みづらそうだな 
  >>367   ただの折れ線グラフとかでビジュアル的に凝る必要がなければ 
 UserConrolから自分で作った方が早いかもね。   
 昔散々そういうのやってたけど、やってみると案外簡単だ。 
 WPFを選択するとパフォーマンス問題にぶち当たるから注意。 
  おすすめ本あります? 
 >>365   違う 
 本来バリデーションは必要ないのにTSでは(というか型がゆるゆるのスクリプト言語全般だが)余計なバリデーションが必要ということ   
 string x = func(); 
 と書いた時にC#ではxが本当に文字列であることを検証する必要はない 
 nullになっていないか、文字列が特定の書式を満たしているか、といった心配はあるだろう 
 しかし、xにintが入ってる可能性は考慮する必要はない   
 TSではxにnumberが入っているかも、という可能性を考慮しなければならない 
 これが本来やらなくていいはずのバリデーションだ 
 これは型が嘘をつくから起こりうること 
 TSの代表的な欠陥の1つだ 
  var x = func(); 
 >型が嘘をつく 
 相変わらずコードが読めてもテンプレ読めない人が多いな 
 >>377   TSが勝手に嘘をつくことはないがC#と比べて嘘をつかせるように導くのに長けている 
 プログラマは世界中に沢山いてTSを使うと漏れなくその脅威に晒される 
 また彼らが作成したライブラリにも嘘が潜んでいるかもしれない 
  >>374   違わないよ。 
 全てTSの中であればNumberであることが担保されているのは、全てC#の中である場合と同程度に正しい。 
 C#の場合でも信頼境界を越えるのであればその可能性は考慮しないといけないし、TSの場合でも信頼境界を越えないのであれば気にする必要は無い。 
 ましてやTSというかJSはシングルスレッドなので別スレッドに壊される事も無い。 
  >>381   お前信頼境界って言葉一切ググらずに喋ってるだろ。 
 言われたことぐらい理解して反論してこいよ。 
  >>382   全てTSでも型が保証されない 
 最も簡単な事例は 
 const x: string = 100 as any 
 もちろんこんなコードを書く人はいないが 
 複雑で膨大なアプリケーションコードを扱うプロジェクトのなかで誰一人としてミスをしないかというと 
 そんな保証は全くなく型に嘘をつかれることになるだろう 
  C#ではI/Oが生じる場合にも型が嘘をつくことはない 
 >>384   大規模アプリ開発では、何層もの見えない層があった結果これが起こる。 
 オブジェクトの型を破壊的に変換 - C#と諸々」でググってみ。 
  >>387   じゃあTSはどうしてxにStringやなにがしかが入るの?どこで入れてんのよ?w 
  >>386   全く異なる 
 C#ではdynamic、リフレクション、コード生成を使えばコンパイラの検証を回避して、間違った型の変数に値を設定できる 
 しかし、C#でこれをやると実行時にエラーになるのだ 
 TSで何事もなく処理が進むのとは、全く趣が異なる 
 そう、TSではstringと指定した筈の変数にnumberやDateの変数が入ったまま、何事もなく進んでしまうのだ 
 これは本当に恐ろしい挙動だ 
 つまり、バグを仕込んだところから、しばらく処理が進んだところで被害が顕現する、ということだ 
 これはまるで、潜伏期間の長いコロナウイルスのように厄介な特性だ 
 この挙動はC言語などではよくあるものだったが、原因と結果が離れているのでデバッグがしにくい、とのことで先人達は大いに苦しめられたものだ 
 まがりなりにも後発の言語であるTSが、大昔の言語設計と同じ失敗を繰り返しているのは残念でならない 
  >>388   低レベルなメモリアクセスでランタイムを破壊できるのはどの言語でも当たり前のことだろう 
 TSのように低レベルメモリアクセスでもなんでもない、ただの代入で型安全を破壊できるようなものと同列に扱うべきではない 
  >>389   困ったことにTSではどこででも起こりうる 
 だから欠陥言語なんだよ 
 C#のように低レベルメモリアクセスで無理やり破壊すればできるよ、といった次元とはわけがちがう 
  >>379   varの上にマウスカーソル合わせてツールチップに表示される型を見るだけ 
  >>384   既に
>>349 で挙げているがそこに注意してプログラミングすればいいだけ。 
 お前は馬鹿だからそれができないんだろうが世の中の人間がみなお前と同じように馬鹿なわけではない。 
  JSなんて使いたくて使ってるやつはいないって事だよ 
 WinFormのlistViewをタブレットで使いたいのですがlist部分を指で上下してlistをスクロールする事は出来るでしょうか 
 >>394   挙げられたリストでは全く足りない 
 こういう認識の甘さがバグを仕込むキッカケになるのだろう 
 そもそも人間は間違える余地があれば、いつか必ず間違える 
 注意してれば大丈夫、などという考え方では到底ダメだ 
  >>396   しつこく返してくる奴がいるから仕方なく付き合ってやってる 
 そいつがTSの型は安全でないという当たり前の事実を素直に受け入れれば俺もこんなレスバしなくても済むんだが 
  TypeScriptなしではJS開発やってられなくなってしまったな 
 >>398   一応標準でサポートされてるはずだけど 
 なんかスクロール遅いし慣性の扱いが下手糞だけど… 
  >>400   おまえは相手がうんと言うまでスレチ議論続けるつもりか 
  例えばリストビューを作るときにアイテムのTagに日時を代入しとく 
 >>404   君は議論の焦点を全く理解してないようだね 
  すまんが、昔、Linux + LLDBでのC#のデバッグ方法が公式サイトに書かれていたようが気がするんだけどさ 
 昔OSも乗ってない小規模組み込みをアセンブリでずっと書いてたけど、 
 バグには様々な要因があるから、不正な型が代入された場合だけを過度に心配してもね 
 >>384   自分が守らなければそりゃ保証もされないだろ。 
 C#ならある型にはある値しか入らないと思ってそう。   
 例えば構造体につっこんでFieldOffsetで上書きすればあっさり壊れるぞ。   
 [StructLayout(LayoutKind.Explicit)] 
 struct XXX { 
  [FieldOffset(0)] public DateTime Value; 
  [FieldOffset(0)] public ushort Tag; 
 }   
 でXXX.Tagに適当なもの入れたらValueは無茶苦茶になる。 
  参照型の変数にnullが入ってるかもしれないし、C#の場合は例外の型もドキュメントの記載を信じるしかないよね 
 っていうかこれたしか元はvarの話だよね。 
 varの型が分からん分からんってこいつメモ帳で開発してんのか? 
 IDEだけでしかソース見ない奴は問題ないんだよ 
 どんだけ小さなプロジェクトしか関わったことないのか知らないが 
 var使ってるぐらいで崩壊するようなとこは大きいの作れないから気にする必要ないよw 
 varなんて大抵は右辺見たら型わかるやろ? 
 実験結果は分かった気になって実は全然分かってないでした。 
 つか、変数名見ればクラス名も分かる程度にしておくのが普通だから 
 自演じゃないよ、彼はそう信じてるんだ。笑わないでほしい。 
 >>421   このスレの住人はお前のことを笑っているぞ 
  そして彼は笑いながら未テスト納品を繰り返す。そしてまたスパコンのデータを吹き飛ばす。 
 コードレビュー時にローカル変数の型をいちいち調べる意味がよくわからん 
 TS、JSの型がゴミなのはわかる 
 >>425   人のソース読むのにvarで省略されてるよりも、型が使われてる方が理解しやすい 
 もちろん
>>420 のようにしてくれればvarでも変わりゃしないけど、世の中そういうソースばかりじゃないし酷いのになると名前で型を騙されることあるからな 
 整数型にn、floatにfついてるからdがついてたらdoubleかと思ったらそれも整数だったり。そりゃないだろ・・・ 
  限度の問題では? 
 varなんて右クリックメニューで元に戻せるから書くだけ書いたら明示的な記述に直しちゃった方がいいよ 
 >>429   推論はするよりしない方が脳への負担が低いはずなので、 
 君の説を採るとvarは全面禁止すべきという結論になってしまうよw   
 少なくともコードの読み手(書き手ではなく)にとってのvarのメリットは 
 右辺の型が分かりきっている時に左辺の方でもくどくどそれを繰り返される冗長さが回避されることだ。 
  書くやつは楽 
 >>432   そもそもこれがゴミなのか有効なのか? 
 って議論がなされないまま突然導入されてほら使えだからな 
 VSの右クリックメニューにもvarを元に戻す機能が付いたってことはあんまり評判よくないだろコレ 
  >>435   お前の会社は社長が1番技術力高いのか? 
  varで推論しないほうが脳への負担が低いというのはどういうことですか? 
 >>437   型が分からなくてもイライラしない人はそもそも負担がありません。 
  アホが作った無意味なマトリョーシカクラス追わなくて済むからな 
 15年近く前から導入されてるものに対して 
 >>440   正直、クラスから嫌いです 
 構造体以上のメリットを全く感じたことない 
  >>441   そこは「しっくりこないんです」、と書いて欲しかったw 
  わかってる奴がvar使うのはOK 
 >>431   推論させる方が脳への負担は低いよね?   
 型がわからなくてイライラすると言うけど、解る必要ある部分ではないのでは? 
 極端な話メソッドの入口と出口は型が決まってんだから。 
  そのメソッド追っ掛けるのが面倒だって話ではないのか 
 >>446   推論の主語が変わってるよw 
 あなたの言ってる推論の主はコンパイラ(開発環境)だよね?w   
 ついでに言うと、あなたがたぶん言いたいことは「書く時の負担が減らせる」ということ。 
 だからそうじゃなくてコードの読み手にとってのメリットが重要なのよw 
 そう書いてるよね?
>>431     だってそうでしょ。 
 コードを書いてる時の書き手にとってはどの変数がどの型かなんて 
 当然自明なんだからvarにはメリットしかないよ。そんなの当たり前でしょw   
 結局varについても意見が割れるのは前にも書いた(>255)こういう意識の差があるからだろうね。 
 世の中KISSなんてただのお題目だと思っててなぜ重要か体感レベルで実感できない人が結構いる。 
  >>448   >コードを書いてる時の書き手にとってはどの変数がどの型かなんて当然自明なんだから   
 馬鹿はvarを使えばエラーが出ないという理由でvarを使っているだけで型なんか理解もしとらんのだよ 
  >>449   その発想はなかったわ 
 バカの考えは馬鹿にしかわからないのだな 
  >>448   違うよ。 
 コードの書き手も読み手も楽が出来る。 
 varで宣言されている変数に関しては、推論を行わせて、自動的に型が決まっていても良い、というシンプルな話。   
 Task<IQueryable<Bar>> foo() 
 { 
  var masters=getMasters(); 
  //なんかmastersを使った処理 
  // : 
  var predictate= e=> ... ;//変換したmastersを使った関数 
     IQueryable<Bar> result = xxxx.Where(predicate).Take(10); 
  //resultの確認 
  return result; 
 } 
 こんながあったとき、predictateとmastersはvarで充分では? 
  全く論点が不明 
 この手の「一人のstaticおじさんに大勢が説教する図」はさまざまなスレで見かけるけどまったく生産性ゼロで不毛だよな 
 >>440   また低能馬鹿論理でましたね。WPFでも同じ馬鹿なこと言ってる人がいました。 
  >>451   C#だとresultの型は推論できないんだっけ? 
  >>ID:BMV6DlOj0  
 初心者スレで無知晒しても別に構わんだろ 
 >>455   resultというか、メソッドの宣言的には省略不可。 
 なので、returnしているということはvarでも良いかもしれんな。 
  >>ID:BMV6DlOj0 
 数千のvarをマウスオーバーして型を調べるってんだからそんなもん猿以外の何者でもないだろw 
 ID:BMV6DlOj0 ←無職のクソ野郎が仕事を語る 
 >>463   馬鹿の壁の社会実験。参加してくれた馬鹿に感謝する。 
  >>458   メソッドの宣言? 
 ここの話だろ 
 >     IQueryable<Bar> result = xxxx.Where(predicate).Take(10); 
 xxxx の定義によるけど普通は var で良くね? 
  IQueryable<Bar> result = xxxx.Where(predicate).Take(10); 
 試してみたけどpredicateの型を明示的にExpression<Func<T>>にしてないと 
 >>465   すまん、そこ間違えた。varで良い。 
 言語によってはTask<IQuerable<Bar>>が要らない言語があるんよ。   
 確かにBar取ってるとわかるが、Barを取っているとわかる必要はある?    
>>467   スマホで書いたらダメだな、すまん。 
  Barだと分かる必要はないけど分かったほうがありがたい 
 わかる必要はないのわかったほうがありがたい? 
 その行の前後見ればvarとあってもそれがBarだとわかる 
 class HogeBase  
 それはHogeBaseとして扱いたいからHogeBaseに入れてるんでしょ 
 virtualメソッドがHogeとHogeBaseで違う動きするよ? 
 virtualがHogeBaseの動きする前提でレビューしていいのかい?  
>>473   >>474   HogeBaseがさらにIBaseってインターフェース派生だったらどうするよ  
 >>476   へー、呼ばれるメソッドを間違えて認識しててもレビューできるんだ 
 すげーな 
  >>477   うん、だからレビューするなら真面目に右辺のメソッドの中身まで確認しろってこと 
  使ってるからこの話題持ち出したんだけど 
 >>480   hoge.fuga(); 
 >>451   人の話聞かない人?何が言いたいのかさっぱり分からん。   
 恐らく誰も、少なくとも俺は 
 「varを使うと自動的に左辺の変数が不明瞭になるからvarは一切使うな」 
 などとは言ってないの。 
 例えば
>>431     むしろ現実的にはほとんどの場合varでいいんだよ。 
 それはコードの書き手にも読み手にもメリットがある。   
 論点は
>>412 に書いた通り、「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」だ。 
  var嫌がってるのってもしかしてテストコードを書かない種族の人? 
 ワイはvarのほうが効率あがる 
 俺はvarが嫌なんじゃなくて読みにくいコードが嫌 
 私C#良く分からないのですが、 
 コード書くときはvarで書いて、 
 >>487   書籍に例えるとどちらも目次に該当する 
 ポインターがページ数だとすると参照型ってのはタイトル 
  >>487   参照型はデータそのものじゃなくデータへの参照を持ってる型   
 C言語しか知らない人にC#を説明するんじゃなければわざわざポインタとの対比で説明する必要ないよ 
  Varでも何でもいいけど読みながらその都度型を類推するよりは読む前に何をしてるか理解してから読む 
 >>483   > 論点は
>>412 に書いた通り、「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」だ。 
 具体的にどういうケースを言ってるの? 
  >>492   型が分からなくてスルーできる脳みそが羨ましいわ〜 
  そもそもvarがいいのって書くときだけじゃん 
 結局宣言行まで戻って型見る面倒 
 >>493   そういうレスしかできない時点でなにも困ってないのがバレバレやん 
  >>496   トラが檻に戻ってないのに確認しないで施錠できる脳みそみたいな 
  >>489  >>490  返答ありがとうございます。   
 「参照型とは何か」を問うているのではなくて、 
 クラスが参照型なのは、どういう理由でこうなっているのか、 
 どういう意図でこうなっているのかを問うています。 
 クラスを参照型にしている思想は何かということです。 
  >>499   推測しづらいケースが一つも思い浮かばない→推測をしたことがない→馬鹿の壁 
  >>498   逆に参照型じゃないならどうする? 
 多くのデータを抱えたクラスを毎度毎度コピーして渡すコピー型にでもする? 
  >>498   C# クラス 参照型 
 でググれば一番上にお前が望んでいる答えがあるぞ 
  var addFunc(var a, var b){ return (a + b); } 
 >>503   その宣言内容だけでどうやって型推論するのか 
 いくら何でもコンパイラに与える情報が足りなさすぎる 
  >>471   これ、古より嫌われているシステムハンガリアンだから結構嫌がる人多いと思うよ 
  winapiのクソキャストにはハンガリアンぐらいが丁度いい 
 >>487   問題設定自体を変えた方がいいかもね。 
 なぜ値型ではだめなのか?と。   
 値型だと少なくとも「フールドを増やしたサブクラスの値を 
 ベースクラスの型の変数に入れる」なんて芸当は難しくなるね。   
 というか、こういう禅問答みたいな話は(たぶん重要なんだろうとは思うけど) 
 初心者は後回しにした方が絶対にいいと思う。 
  >>498   参照型を理解してないんだからそれを理解するのが先   
 クラスが参照型なのはポインタ型や値型だと困るから 
 文字列が値型だとどうなるか考えてみれば? 
 ポインタを理解してるならすぐわかる 
  C#のスレでメソッド名の先頭が小文字から始まってる時点で、 
 >>512   今時C++でさえ型推論付いてるというのに 
  どうしてもc++でやっつけコード書きたいから追加した仕様だろ 
 やっつけコードしか書かないプログラマだらけの時代に何言ってんだ 
 型推論はやっつけなのか。 
 型推論付きの言語はやっつけ専用か 
 最近は「int key = 0」でなく「Key key = new(0)」みたいに書いてるからvarは使わんな 
 >>520   ・老害のCOBOLer 
 ・自称スーパープログラマーな組込C使い 
 ・Javascriptのvarと混同してるボンクラPG 
  var一切使わない人ってラムダの引数型もクソ真面目に書いてそう 
 知らないうちにLINQスレもなくなってる。過疎なム板で落ちるとかよほど人気ないのか。 
 >>523  そうやってガキみたいに初心者相手にマウンティグして全部追い出したんじゃないのか。 
 >>524   初心者のくせにラムダなんて生意気だ! 
 ってマウントですね 
  >>509   >>  値型だと少なくとも「フールドを増やしたサブクラスの値を 
 >>  ベースクラスの型の変数に入れる」なんて芸当は難しくなるね。   
 すみません。良く分かりません。クラスが値型のC++で 
 「フールドを増やしたサブクラスの値をベースクラスの型の変数に入れる」 
 なんて芸当、なんの問題もなくできると思うのですが   
 >>510 
 >>文字列が値型だとどうなるか考えてみれば?   
 文字列は内部実装は参照ですが、ユーザ見えは値型と同じだと思うんですが・・・ 
 内部でどう実装されているのかは、そんなに説明するつもりもないし・・・ 
  >>528   ベースクラスの変数に入れることはなんの問題もないけど逆の操作派生クラスに戻せなくなる 
 C++でもそうだけどnewされた時の型をベースクラスが覚えておかないとvirtualとかasが使えない 
  返答ありがとうございます。 
   >>501   >>逆に参照型じゃないならどうする?   
 c++ではクラスは参照型ではないですよね? 
 c#では構造体は参照型ではないですよね?    
>>502   >> C# クラス 参照型 
 >> でググれば一番上にお前が望んでいる答えがあるぞ   
 配列が参照型なのを考慮すると、高速化・・・・ 
 いや、そのサイト見てると高速化よりも 
 ポインタを無理やり追い出した弊害に思えてきました・・ 
 >>528   型ってのはコンパイル時に大きさ(byte数と配置)が決まってないといけないという縛りがCのときからある 
 長さがいくつになるか分からんstringは参照型にするしかない 
  クラスや構造体の中にポインタもって動的にメモリを確保するだけである。型のサイズは変わらない。 
 >>529   >>C++でもそうだけど   
 まことに申し訳ないけど、何を言いたいのか全く理解できません。 
 クラスが値型のC++でも通用する話を出してきても???と思うんですが 
  >>530   生のポインタだとオブジェクトを移動して断片化したメモリの整理が出来ない 
  >>532   それだとクラスは値型でOKという話になっちゃいます。 
  >>535   ひょっとして私根本的な所を理解していないのかな? 
 class  clsA { class clsB { class clsC { xxx }}} 
 みたいなクラスの内部にクラスを含んだクラスであっても 
 GCでガンガン割り当てられているメモリアドレスを 
 動かされると言いたいのでしょうか?? 
  で参照の何を議論してるんだ? 
 >>538   >> c#のクラスが参照型なのが許せない!!って言いたいのか?   
 質問を読んでそういう理解なのでしょうか? 
 質問を読まずにそういう理解なのでしょうか? 
  >>540   誰が質問をしたかすら知らないが、質問を質問で返す。つまりそれは構ってちゃんだ。 
  流れを読まず、適当なところに突っかかる 
 話題が分散しすぎて流れが分からないから聞いただけなのに酷い言い掛かりだ。 
 >>543   その仕様をなぜ決めたかを聞いているんでしょ   
 こんなところで 
  >>537   そう頻繁では無いにしろ移動されない保証は無いね 
  >>544   え? コピーのコストが違うから分けたという単純な話だが。 
 Cだって配列のコピーは重いから引数で参照渡しされるだろう? 
  だからみんな単純な回答してるじゃん 
 >>546   >> コピーのコストが違うから分けたという単純な話   
 確かにそんな感じですね。 
 クラスが値型のc++が遅くて 
 クラスが参照型のc#が早いなんて 
 全く聞いたことないのですが、 
 MSがトチ狂って高速化を優先(それ以外を犠牲)したようですね。 
  >>548   C++ は値型のクラスを作れるけどそれをそのま他の関数に渡すなんてことはほぼやらんぞ 
 そもそもCでも構造体をそのまま渡したらコピーされるからコピーコストを言うなら参照型にしてるだろ 
 要はC/C++はそういう制御もプログラマに開放してるがC#は開放してない(コピーはそれなりのメソッドを呼び出す)ってだけの話 
  >C++ は値型のクラスを作れるけど 
 割りきればいいものを、どうでもよく無駄にこだわるやついるよな 
 >>546   >>Cだって配列のコピーは重いから引数で参照渡しされるだろう?   
 つ【std::vectorは参照ではない】 
  Unityの座標系って左下起点がデフォなの? 
 >>554   >> 正直C++よく知らんので調べてみたけど、だから↓にあるような「問題」があるわけだよね   
 菱形継承はいろいろと問題あるからね。菱形継承問題でググってみな 
 それにc#は多重継承できないからね・・・ 
  >>555   push_backでコピーorムーブが発生するってことを言いたいん? 
 そのコピーコストを無視できないくらい大きなもの扱ってるときは正にC#の参照型Listのようにポインタ型のvectorを作るか、resize+インデクサアクセスで直埋め込みするじゃん 
  >>554   >> ベースクラスの変数のメモリ上のサイズは   
 いや、ベースクラスの変数のメモリ上のサイズは 
 ベースクラスが持っている変数のメモリ上のサイズの合計 
 (パディング考慮)でしょうが・・・ 
  >>556   Unity知らんけど、印刷考えなきゃ最初から普通のデカルト座標採用してくれた方が 
 自然ではあるね。   
 むしろCRTなんていう前世紀の遺物の仕様をいまだに引きずってる方が「なぜ」のような気が 
  >>559   だから、そうだとしてそれにフィールドを追加した派生クラスの値を入れられるんですかと 
  >>558   引数で参照渡しされるだろう?   
 と言ってるので『std::vectorを引数にする時は参照渡しではない』という意味で言ってるが 
  >>562   C/C++には参照型も糞なく全部値型だからvectorそのままだと当然値渡しになるから言葉そのまま受け取ればそういうことになるけど 
 std::vectorって配列へのポインタを持ってるだけだから疑似参照型みたいなもんってことを言いたいんだろ 
 sizeof(std::vector<T>)のTが何であろうと固定で16byteくらいだし 
  >>561   つまり『ポインタを無理やり追い出した弊害に』だよなぁ 
  >>560   WindowsGUIの方がレアだったのか 
 C#でもSIMD命令呼べるようになったから_mm_add_psとかで一気にやりたいのにxとyで加算減算分けないといけないから出来ないのが残念すぎる 
  >>555   それC++やないか。しかもそれはC++でも配列やない、classや。 
 しかもC++はclassの参照渡しできるねん。 
  >>564   いや何でそうなるw 
 意味が分からん。   
 問題設定は「なぜクラスの変数はポインタなのか?」 
 だからポインタを使わないとどうなるかを示しているわけで、 
 実際はC#はポインタを追放なんかしてないよ 
  他人の話を聞かないタイプだから相手するだけ無駄よ 
 だから.netの仕様だと。 
 手動でメモリ確保して解放すんのめんどくせぇなぁって流れから、 
 大昔にVBで作られた社内業務アプリをC#で作り直す事になったけど、 
 >>573   一番メジャーなのはWinFormsだけど 
 社内でよく使われているモニターが高解像度で 
 スケーリング表示をきれいにしたいなら 
 WPFかWinUIの方がいいよ 
  WinFormsって2番目だぞ 
 >>573   何がベストかは結局何を重視するのかの関数だよね。 
 だからたぶん各選択肢のいわゆるpros and consを挙げてもらった方がよい気がする   
 コスト重視ならVBにもっとも近いFormがベストだ。 
 視覚効果や高DPI対応が重要ならWPFがベストだけど、学習コストが高いし、 
 はっきり言ってパフォーマンス的にまったく使えない分野もある。   
 WinUIは知らんw 
  一番楽チンなのはVS2008のコンバーター使ってVB6→VB.netにコンバートし、コンパイルエラーが発生する部分をちょいと修正する事 
 関係ないけど、こういう案件て段々広がって収拾つかなくなるか、 
 Webで作るという選択肢はないのかな? 
 社内業務アプリの内容によるけど今どきならWebだろうね 
 クラサバとかの業務システムをWeb化するのはよくある話だが、スタンドアロンで済む 
 データをサーバー管理するようなのならまだしも、普通のアプリなら普通に作ったほうが圧倒的に楽 
 今どき社内業務システムでローカルに閉じてるやつなんてある? 
 ローカルアプリから直接DB見に行くとかならあるんじゃね 
 >>573 の業務アプリというのがどういうものかは
>>573 に聞いてみなけりゃわからんが、 
 業務で使う内製アプリがスタンドアロンだって例はいくらでもあると思うが。 
 逆に、なんで無いと思ったの? 
  社内業務アプリって言ってもいわゆる業務管理システムだけじゃないからな 
 Web化すべき案件なら最初からそっちで検討してるんだから余計なお世話やで 
 ツール類って具体的には? 
 VisualStudioでデバッグ中に変数やらクラスの中身を追っていくとき 
 >>590   テキストファイルの文字数や段落数カウントするだけ 
 指定したウインドウのスクリーンショットを取るだけ 
 画像をpngにするだけ 
 ファイルをリネームするだけ 
 動画からフレームや動画を切り出すだけ   
 こういうの実際に作ったツールだな。フリーソフトでもできるけどそういうのも開発することあるんだよ 
  デスクトップアプリじゃなきゃダメな強い理由がなければ 
 >>593   そう言うのを社内業務アプリって言うの? 
  >>596   仕事に使うなら全部業務アプリだろ 
 区別する意味はないと思うが 
  業務といっても何を指すかで見当違いなことを言い合ってたりするからな 
 プロパティの値についてなんですが 
 変更したってことを把握しにくいからできるだけForm1.csだな 
 >>595   変数にカーソル合わせてポップアップででてくるクラスや変数の中身がでますよね 
 デバッグ中にそれで実際に入っている値を追っていくことがよくあるんですが 
 大量にあるとアルファベット順に並んでいるせいで 
 たとえば コンボボックスでいうと Selected〜まで見に行くのに 
 Sまで下りてこなければならないですよね 
 ポップアップにはスクロールバーもでないから毎回スクロールしないとならなくて 
 それが面倒で・・・ 
  デバッグで実行止めてるときに、デバッグ->ウインドウ->ウォッチでウォッチ1開いて、そこに見たい変数をドラッグ&ドロップ 
 ArrayクラスのResizeメソッドの引数が参照渡しなのは何故ですか? 
 ReverseやSortは要素を置き換えるだけで済むけど 
 >>604   レスありがとうございます 
 ウォッチ、使ったことがなくて知らなかったです 
 クイックウォッチでも簡単に見渡せるんですごく楽になりました 
 感謝です 
  .net6だとプロジェクト作成時にいつものusing systemとかが無かったんですけど暗黙的に使えるようになったか、あるいはどっかに記述を引っ越したんですかね? 
 global usingとかいう迷走の果てみたいなものがあったような覚えがある 
 >>611   Implicitusingsってやつですか 
 このglobal  usingってのはユーザが任意に追加できるんですかね?.net標準分だけ?標準だけだと有り難みがイマイチ・・・ 
  implicitなのはSDKで固定のはず 
 global using自体は.csprojに自由に書けるよ  
https://ufcpp.net/blog/2021/11/implicitusings/   >>614   書けるけど1つに書くと全ファイルに影響するのは怖くね? 
 なんかやりすぎ感ハンパない 
  >>615   悪ふざけじゃなくて、書いたらちゃんと認識されるよって意味ね。 
  え、readme.txtとかに書いてても影響しちゃうの? 
 何度も同じことを書かせる仕組みはプログラムの基本的な考えと違うと考えればglobal usingは妥当 
 global usingもあれば楽だけど書ける場所は限定された方が良かったような 
 >>619   それなら.csprojとかでいいでしょ 
 どこかに書いたら全体に影響するのはなんか違う 
  もうあっちゃう時点でキモいから書けるなら制限なしでいいでしょ 
 VS2022からC#やる人は結構わかりにくいやろなぁ。 
 えーーーんTT 
 従来のようなプロジェクトテンプレートでもプロジェクトを作れるようなオプションなりテンプレートなりあればいいのにね 
 C#作ってる人たちはC#をスクリプトにしたいの?? 
 なんでもできることを目指してるんだよ 
 >>627   IDEによるコード生成を完全に排除しようとしている、と考えると理解しやすい 
 最近の内製系の開発では、コードの自動生成は避けてソースを極力コンパクトに保とう、という考え方が主流になっているんだよ 
  何で自動生成やめたらコードがコンパクトになるの? 
 コードの自動生成と言うか簡便さを求めてるのだろう 
 ファイル内のnamespaceは一個なのにそのためにインデントが一つ増えてエディタでのコードが見通しが悪くなる 
 てかusingみたいに冒頭宣言みたくできればよかったのにな 
 >>629   コードの自動生成はむしろ最近より進んでるやろ 
 gRPC周りやソースジェネレーターなんてその最たるもの 
  >>631   それってVBの思想だよねw 
 ただしい選択とは思えんな 
  スクリプトとしては異常に使いにくいよ、 
 コンパクトに書けるようになっていくのはいいと思う 
 C#はいいんだけど、ASP他諸々がなあ 
 >>636   作り方しだいだけどアプリ終了しなくても 
 スクリプト実行&終了→スクリプトファイル書き換え→スクリプト実行で書き換えた編集が反映されるよ 
 開放されないってのと反映されないってのは別問題でしょ 
  おれはC#とASP.NET Core WebAPIが最もやりやすい 
 >>636   まさにクラスを書き換えて実行するのをやってるけど 
 そんな現象に出くわしたことがないぞ? 
  >>642   糞アプリの名前も書けない無能の相手すんなよ 
  質問です。 
 ピクチャーボックスに描画された物をボタン投下で色を印刷用に変更したいです。 
 元は背景色黒。線は水色。文字は黄色。四角は緑色塗りされてる物を 
 背景色白、四角は外枠黒線白塗り、他黒に変更したいです。   
 これを参考に弄って、背景色は直変更し、線は無事変更、文字は滲んだ感じになり、ほかはそのままでした。  
https://dobon.net/vb/dotnet/graphics/setremaptable.html     こんなのやるなら色を再設定して再描画した方が早いですかね? 
 イメージ的にはCADで書いてる物を印刷時に白黒反転するみたいな感じなんですが。 
 >>644   印刷の品質の観点から言っても「ビットマップを流用する」 
 という発想自体が不適切で、「描画処理を流用する」べきでしょうね。 
  .net 6の Windows Forms の TreeView のサブクラスを作ったのですが、 
 そもそもTreeViewのMouseClickはノードのある行の部分しか発生しないけど 
 こういう実装の隠蔽ってありだと思う? 
 https://ideone.com/XNNgQM     リポジトリクラスでしか使わないキークラスを外部から勝手に生成されたくないっていう着想なんだが、 
 特定のクラスからのみメソッド叩かせたいときとかにも使えそうな気はする 
 雁字搦め感は出てるし、将来の健忘症になった俺が手を付けてしまう恐れも減るしでメリットはある 
 ただぶっちゃけちまうとinternalで十分では?と他でもない俺自身が思ってしまった 
 質問させてください 
 CreateProxyをpublicにしないとエラーになるんじゃないかな 
 yieldを使ってるメソッドの末尾には 
 >>650   そんなページ開いたらダイレクトに書いてあることを指摘されたいわけじゃないんだ 
 ニュアンス通じれば良いかなって思いながらも一応直したんだけど張るURLを間違えたんだよ 
  >>649   メソッドのシグネチャのみたまんま 
 FromToはIEnumerableを返すのであって1とか3.14を返すんじゃない。   
 何言ってるのか理解できなかったら川俣さんの記事のイテレーターの 
 説明でも読んでもらった方が早いよ。 
  >>648   キークラスから派生してリポジトリクラスって構造が変 
 駄目な継承の使い方だと思う 
  >>655   キー生成クラスだぞ?   
 本来リポジトリ内部で生成するものなのに基底に置いては駄目とは何ぞ 
  >>656   この場合は継承(is-a)ではなく包含(has-a)にすべき 
  >>648   VBは確か型Bが型Aの内側で定義されている時、 
 BのインスタンスをAが握っているとBのprivateメンバーに 
 アクセスできる裏技があった気がしたんでVBならそれを使う手はあったかも。   
 試してみたらやはりC#ではできないw 
  まあセキリティー的な目的じゃなく単なる精神衛生の問題なら 
 「早い者勝ち」にしちゃうのもありかなとか思った。いやねーかw  
 >>649   関数内にyield returnがあったらイテレータブロック扱いになって普通の関数じゃなくなる   
 IEnumerable<T>の約束通り、Tの要素を返してって終端がきたらおわり 
  >>649   FromTo()が返すのはIEnumerable   
 foreachは大雑把に言えば↓に展開される 
 var iterator = FromTo().GetEnumerator(); 
 while (iterator.MoveNext()){ 
 var I = iterator.Current; 
 Console.WriteLine(I); 
 }   
 イテレータとかイテラブルでググるといい 
 .NETの型名だとIEnumrator<T>とIEnumerable<T> 
  >>651  有能  
>>654 ,662 無能、聞きたいのはお前のチンケな知識じゃねーよ 
  >>663   馬鹿だねこいつw 
 質問した人と別人みたいだけど 
  今週のNDワッチョイ 
 WindowFormでTimerクラスを使ってlabelのTextを定期的に変更したのですが 
 >>667   Timerには何種類かあって 
 WinFormsならSystem.Windows.Forms.Timerクラスを使うのが簡単 
  スレッド間の〜は 
 Windows.Forms.Timerクラスでやりたいことができました! 
 OpenCVSharp入れたらexeのフォルダがdllだらけになったんですが、 
 教えていただきたいのですがWindowsでc#のプログラムが落ちた時にメモリダンプを吐くようにするにはどうすればいいのでしょうか? 
 >>677   メモリダンプをvisual studioに食わせるといろいろ分かります!! 
  メモリダンプを解析できない人たちのスレですよ、ここは。 
 C#でゲロ吐く方法はしらん 
 先輩社員から「まずはメモリダンプとって調べてみろよ」と無理難題言われたとか 
 メモリダンプを見ると 
 >>677   ダンプ解析入門 - Visual Studioでの可視化によるC#トラブルシューティング - Grani Engineering Blog 
 の説明読むとどういうことがわかるかわかります 
  >ダンプ解析入門 - Visual Studioでの可視化によるC#トラブルシューティング 
 >>683   出世して Watson Server として MS で働いてます 
  C#でメモリダンプが必要って、C#の利点捨てまくったクセの強い作りしてるんちゃうか 
 >>686   書くやつも書くやつなら読むやつも読むやつってことだな 
  まあ、そんなもん調べても結局使ってるライブラリがタコでしたなんて可能性もあるし 
 長時間連続運転するプログラムなんだけど、ちょっとずつメモリ使用料が増えていくななんて 
 例外機構が当たり前になった今ではアプリ内でcatchするだけですからね。 
 C#はガベコレあるからメモリリーク気にしないでいいって後輩が言ってました!!! 
 少しずつメモリ使用料が増えていくとか、 
 >>692   正直ないね 
 無駄だから 
 c#でリークの対応なんて無駄 
 精々頑張った挙げ句にウチの会社が組んだところじゃない箇所でリークしてて対応できません 
 みたいな事実がわかるだけ   
 まず、c#みたいな 
 厳密なメモリ管理ができない言語での 
 組み方を学ぶべき 
 3日に一度再起動するとか 
 機能毎にモジュール化して動かすたびに破棄するとかな 
 廃棄したらガベコレ適当に実行してりゃOSが片付けてくれるだろ 
  何のお役にも立てんけど、「メモリ使用料」って結構じわるねwww 
 >>692   メモリ使用量が増えるならまずはプロファイラーじゃないか? 
  C#でも断続的に性能が極端に悪化する問題みたいなのが発生したときに 
 >>699   それもうガチでわかんねーときの最後の手段で 
 まずはデバッガで見てみるべきじゃね? 
 最近は結構いい機能が付いてる 
 VC6の時代とは違う 
  C#でのリークは大抵長寿命のeventに+=してるだけでしょ 
 リリースの特殊な(?)解放方法なんて半ば作ったやつの趣味だからな 
 もう半年以上起動しぱなっしの.NET5で作ったスクレイピンクツールあるけど25mbで安定してるな 
 マネージドな世界で閉じている限り、Disposeの実装ミスや呼び出しの忘れは 
 >>708   Disposeが呼ばれたらstaticなイベントからハンドラを削除するような実装は低品質なライブラリなんかだとたまに見かける 
  >>708   > GDIなどのシステムリソースの解放忘れとか 
 の話の流れで 
 > マネージドな世界で閉じている限り 
 とか頭おかしいのか? 
  >>710   頭がおかしいのは君の方   
 普通のプログラマはマネージドなライブラリを挟んで 
 間接的にGDIのリソースを利用するんであって直接使ったりしないの   
 だからライブラリのコードにバグがない限りGDIを間接的に 
 利用しているからといってリークの原因にはならないんだよ 
  ついでに言えば、俺は別に
>>702 に反論したわけじゃないw 
 すごい被害妄想だよねw 
 ネトウヨさんじゃねえのw 
 普通のプログラマw 
 理想のマネージドだったらdisposeなんて関係ないし、メモリリークなんて起きない 
 低レベルな質問で恐縮です。VisualStudioを使っています。 
 >>718   DataGridViewのSort順を復元するだけでは? 
  ・DataGridViewにどうデータをセットしているか、どう更新しているか 
 反応ありがとうございます。 
 >>719   更新前にソートされている列を取得して、更新後に強制ソートする 
 という感じですね。試してみます。    
>>720   >DataGridViewにどうデータをセットしているか 
  今の状態は、あるサイトにのっていたコードをコピペして試しています。 
 //フォームデザイン 
 //csvデータ:person_read.csv 
 //button4のソース 
  ソースコードはこちら 
https://dotnetfiddle.net/i89pR3   /////////////////////////////////// 
 >・どう更新しているか  
 リンクが404になっていたので貼り直しします。 
 これで大丈夫か心配ですが。  
https://dotnetfiddle.net/ulZ3M9   DataTableの場合ソート順は 
 C#で正規表現のperlでの「tr」と同じ事をしたいのですが、 
 trは置換なのか?だったらc# regex 置換とかでぐぐりゃ方法出るだろ 
 置換ではあるのですが、 
 正規表現でマッチした位置とマッチした文字列を取り出すのはできる 
 Regex.Replace(mojiretsu, "[a-zA-Z]", p => ((char)(p.Value[0] - 'a' + 'a')).ToString()); 
 なるほど、やはりないですか 
 全角半角ならVB.NetのStrConv使えばいいじゃね 
 c#って全角半角変換でまともなメソッド用意してないよな 
 >>718 です。 
 .SortedColumn で現在のソート選択列を取得 
 ListSortDirection で昇順・降順の状態を取得 
 データ更新後、.Sort で更新前のソート状態を復元することができました。    
>>719 さん
>>724 さんヒントをありがとうございます。  
>>720 さん、気にかけていただいてありがとうございます。 
 また何かあればよろしくお願いします。 
  >>732   C#の言語仕様にそんなのあるわけないだろうが 
 頭がおかしいのかな? 
  全角無視した比較はあるんだから変換もあればいいのにな 
 nuget辺りに.net言語で使える漢字処理モジュールみたいのないの 
 あの、Asp.netMVCでサイトを作ったんですが、 
 WebProgという板があるからそっち言ってみれば? 
 >>738   デプロイしてみればわかる話を、何故聞いてしまうのか? 
  めんどいじゃん 
 >>741   うそを教えられるという可能性は考えないのか? 
  すでにサイト作ってる段階なら、掲示板で聞くより自分で試すほうが早いと思うんだがなぁ 
 共変と反変という言葉がよく分かりません 
 class B{} 
 ハロウィンの子供にチョコレートを渡せることが反変で 
 よく理解できるね 
 c#自体にそういう機能があるので楽だねって感じ 
 >>746-747   めちゃくちゃ分かりやすいです 
 ありがとうございました 
  なにこれ 
 nullチェックをコンパイラが管理するやつだから慣れれば神機能 
 参照前に必ずnullチェックというコーディング規約から解放される? 
 on/offを行単位で切り替えられるから混乱すると思う 
 まあ利点がわからないなら君は今のままでいいんじゃね? 
 5年ぶりに.Netで作ることになったんだけど、.Net Frameworkってオワコンなの? 
 .NET FrameworkはオワコンだけどWindowsに標準で入ってるのでWindowsユーザー視点だと一番有難い 
 .netもオワコンだが 
 オワコンっても単なる流行の話だからな中身はオワコンでもない 
 >なので何もオススメできない状態 
 >.NET Framework 4.8 
 4.6だと今年でサポート終了かな 
 基本的には.NET6を選べばいい 
 最近は4Kとか高解像度ディスプレイ対応(スケーリング対応)が必要になって来たせいか 
 >>766   スケーリング対応は4.8の方が改良されてる 
 もっと言えば.NET6の方が進んでるけど 
  WPFでもMVVMを考えなくてもWinFormsと同じように使えるし、スケーリング対応が楽なのはいいよね 
 サポート期間を気にするなら.NET6は問題外だよ 
 十分だよ 
 >>771   WinFormsの*.Designer.csと*.resxから解放されるのも大きいね 
 差分を見たりマージするのに問題あり過ぎた   
 Windows10はMay 2019 Update(1903)から標準で4.8が入ってる 
 現在サポート中のバージョンは全部4.8が入ってるね 
  .NET Frameworkは最終版の4.8でもC#7.3までの対応 
 WPFの方が高DPI(高「解像度」では必ずしもないよね)対応が優れているっていうのは 
 WPFってWebみたいに解像度に合わせて画像切り替えるとか標準じゃできないだろ? 
 俺社環だと2012R2なんで4.5.1なんだよな 
 >>779   そんなもん解像度は取得できるしなんとでもやりようあるやろ   
 つうデスクトップGUIアプリに求めることかそれ? 
 どんなシチュエーションで必要なのかわからん 
  >>780   誰もやりたがらないけど、OS のサポート切れが迫ってきて対応中。w 
 いまさらその上で動いてるオレ様ソフトのインストールの手順とか覚えてないんだけどなあ。 
  昔自分用に作った(家で自分の時間を使って)アプリがあって退職時に無理やり引き継ぎさせられて勝手に使われてる 
 毎日使うものなので劇的に工数が減った 
 Main内  
 return Num + p; 
 あ、、、確かに。納得しました。 
 すみません、初心者で何からしたら良いのか、何をすべきなのか分からなくて助けてください。 
 ボタン押したらボタンに対応した値を表示する(固定値で割らなくておk) 
 それを決めたら他の人がコードを書いてくれるのか? 
 >>793   ありがとうございます!   
 直ぐにやってみます。 
 やるべきことを分かりやすく教えて頂き、本当にありがとうございます。 
  >>794   いえ、コードも私が書かなければなりません。 
 丸投げする相手が居ないです… 
  やっと、数字の表示ができました…… 
 投稿が重複してしまいました、誠に申し訳ありません。 
 メンバー'hoge' はインスタンスデータにアクセスしないため、static にマークできます 
 四角をグラフィックに描画する場合の座標について 
 g.DrawRectangle(pen, 16, 16, 1, 1); 
 GDIは終点は描画領域に「含まない」 
 >>801   まあこうは言える。   
 まずユークリッド幾何学的な数学的に抽象化された世界で考えるべき。 
 その世界では、1対の平行線の距離がペンの幅より大きければ必ず平行線の間に「隙間」が出来る。   
 GDI+の描画はこういう抽象化された世界をピクセルの世界に写像してるだけ 
  まあたぶんこんな感じだね 
 小数のない世界なら厚みゼロで隙間がないんだろうけど、塗りつぶすならFillRectngleで明示しろってことかな。 
 独習C#やってるんだけど、これを一通りやれば基本は身に付くと思っていい? 
 >>807   その本なら自信持って良いよ。 
 record, using var, initなどのC#8以降の機能は別途学習が必要。 
 LINQや正規表現などは実践でないとなかなか身につかないので、だいたい理解したらどんどん読み進めるのがおすすめ。 
 ちなみにプログラミング未経験で、全部読むのに3ヶ月かかりました。 
  自分だったら3か月かかるならモチベーションが保てそうにないなw 
 仕様もライブラリも今よりペラペラだったから入門しやすかった 
 >>809   ありがとう 
 プログラミング経験はエクセルVBAのみ 
 C#は簡単な方だと聞いてたけど難しいね、頑張ります 
  やっつけ仕事するだけなら今も昔も変わらんと思う 
 DTOだらけの低品質なコードが量産されてTypeScriptみたいになりそうな気はしてる 
 おれも独習で勉強した 
 >>817   その独習、旧版(ハーバード・シルト)? 
  シルトは過去の人 
 >>819   では最近の教科書で優れたものは、どなたの著作ですか? 
  俺はオライリーの薄いやつで大体把握して、デザパタをjavaの結城さんのやつで学んだな 
 C++の本で勉強した知識だけでC#の本は買わず、dobonを見ながら書いてる 
 dobonよく参考にしてるけどもしかして見てるとバカにされる風潮とかあるの? 
 昔はよくお世話になったけど、今となっては古い記事が多いので最近はあまり見ないな 
 全ページのヘッダに古い言語仕様の内容であることの明示くらいはしてほしい 
 recordはvalueobject作るのに便利 
 お世話になります。 
 ComboBox.IsReadOnly を使おうとしてエラー(usingまたはアセンブリが不足)が出ました。  
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.controls.combobox?view=windowsdesktop-6.0   で調べ、 
 名前空間:System.Windows.Controls 
 アセンブリ:PresentationFramework.dll 
 を追加しました。 
 しかし、現時点でエラーに変化がなく困っています。他に考えられる原因があればお教えてください。 
 >>828   追加したのはWPF用のアセンブリだけどお前が作ってんのはWPFじゃなくてWinFormsだとか 
  ComboBoxのインスタンス作らずにプロパティ見ようとしてるとか? 
 >>829 >>830 
 反応ありがとうございます。 
 はい。WinForms(VisualStudio使用)です。 
 ソリューションエクスプローラーの参照からアセンブリを探して追加しました。 
 WPF用ではなかったか確認します。 
 using System.Windows.Controls と書いて追加した気になっていましたが、 
 ソリューションエクスプローラーに同名がないのを確認しました。これが原因かもしれないので調べてみます。    
>>831   盲点でした。確かにインスタンス化していません。やってみます。   
 みなさんのアドバイスのおかげで糸口が見えました。あとは自力で頑張ってみます。 
 また困ったことがあればよろしくお願いします。 
  >>832   横からレスだけど、次からは情報を端折らずに書いてね 
 場合によるから 
  >>832   833の追記 
 WinFormsのComboBoxはSystem.Windows.Formsの方だったはず 
  >>832   反応ありがとうございます(横レスでも大歓迎です) 
 情報を端折ってしまったようで今後気を付けます。 
 必要になる正しい情報とはこちらでよろしいですか?   
 エラー CS1061 'ComboBox' に 'IsReadOnly' の定義が含まれておらず、型 'ComboBox' の最初の引数を受け付けるアクセス可能な拡張メソッド 'IsReadOnly' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください   
 それとも部分的であってもソースでしょうか?今回の問題では必要ないと判断してしまいましたが、次回以降気を付けます。 
 次回もぜひお願いします。ありがとうございました。 
  >>835     エラーメッセージもそうだけど、こっちが言ってたのは「WinFormsかWPFか」の方だね 
 WinFormsの方のComboBoxにはDropDownStyleプロパティがあるからこれにComboBoxStyle.DropDownListを渡せば選択可能で文字列入力を受け付けないタイプになるよ 
 (まあ、他の人がすでに提示しているようだけど) 
  みなさん親切で涙が出てきます。 
 >>836 ・837・838 反応ありがとうございます。   
 ・C#にはWinFormsの他にWPFがあったのですね。WPFという言語なのかと思っていました。 
 今後はエラーメッセージと共にWinFormsであることを最初に宣言します(初心者すぎてすみません)   
 IsReadOnlyプロパティが存在しない 
 ・はい。通常のプロパティでは見つけられませんでした。 
 こちらのサイトを参考にさせてもらい挑戦していました。  
https://blog.t5o.me/post/20140316/c-sharp-xaml-combobox-read-only.html     ・ComboBoxStyle.DropDownListとEnabledも試しに設定しました。 
 やりたいことは、 
 コンボボックス横にチェックボックスを設置 
 チェックボックスが真の時、コンボボックスを規定値にし操作不可能にすることですが、 
 上記設定でもドロップダウンボタンが反応するので別の方法を探し、上記サイトにたどり着きました。   
 ・第2案として、チェックボックスが真の時、コンボリストを規定値以外を削除し対応しようかと考えています。 
 (ドロップダウンリストが空白で1行出てきてしまうのがかっこ悪いかなと考えて最善を探していました)   
 なんとか頑張ってみます。みなさんありがとうございました。 
 >>839   System.Windows.Forms.ComboBoxを継承してカスタムコントロールを作るってのが調べると出てくると思うよ 
 例えばこんなのとか  
http://jeanne.wankuma.com/library/readonlycombobox/    >>839   839のリンク先もそうだけど、記事にXAMLって単語があったらWinFormsと無関係だと思って良いよ 
 WinFormsのコンボボックスの操作不能にするのは、comboBox.Enabled = false; 
  c# + visual studioでデータブレークポイント使えますか? 
 コピーはコピー先をnewして作って、メンバー変数の値をそこに一個ずつコピーしてく 
 独習C#で学習されている方が多そうですがマルチスレッド難しすぎないですか(泣) 
 >>845   大別するならawaitは非同期、Task.Wait()は同期的、という所だけど 
 Task.Wait()は単純にその場でタスクの終了を待つので足踏みする事になる 
 awaitを使うと内部的にはその後のコードもTask化されてasyncメソッドの返り値になる   
 awaitまで到達した時点で呼び出し元に処理が戻るので、主にUIスレッド等でよく使われる 
 後続処理を追加するだけならTask.ContinueWith()も有るんだけど 
 UIコンポーネントは作成スレッドからしかアクセスしてはならない制約とか 
 後続処理を担うスケジューラ指定とか煩雑なのを纏めて糖衣構文にしたのがawait 
  >>845   助手(他のスレッド)がタマネギを炒め終わるのをジャガイモの皮を剥きながら待つのがawait 
 手を止めてじっと待つのがWait   
 awaitが画期的なのは、「助手の仕事が完了するまでは別の仕事をしつつ、完了後に 
 やりかけの仕事の続きをする」という本来シーケンシャルでない手続きを、あたかも 
 「助手の仕事が完了したら続きをやる」という単純なシーケンスであるかのように記述できること 
  awaitの正体は「Taskがすぐに終わらなかったらすぐにreturnする特殊構文」ってことを知っておけば理解はしやすいと思う 
 await 〇〇やっといてよろしく。私いったん席外すんで終わったら連絡ちょうだい。続きこっちで引き継ぐから 
 たとえが分かりやすいですw 
 WinFormという前提でいうと 
 スレッド 
 C#のマルチコアなんたらっていう非同期処理のテキスト読んだらいいよ 
 async/awaitとTask.Runの使い分けが今でもよくわからん。。 
 >>856   それどこかに書いてあったな 
 5年くらい前の記憶でそのリストがあった 
  それ多分C#じゃなくて組み込みとかの話だから参考にならんよ 
 >>861   え?どこにC#だと助かる要素があるの? 
  >>856   この記事の内容が組み込みc++じゃないのかと 
  C++だと駄目でC#だと助かる要素なんて1つもないけど 
 >>856   これスレッドに限らずどのプログラムにも言えることだと思うわ 
 出典元知りたい 
  >>859   Task.Runとawaitは組み合わせて使うものだし、使い分けって何のことだろうか 
 (同期する必要が無ければawaitしないことはある) 
  助かるってどっかの方言なのかな。まったく意味わからなかったw 
 >>867   は?c#に特別なギミックなんてないが 
 君はスレッド使わないほうがいいね 
  awaitのおかげで非同期書きまくる現代のプログラミングでこんなチェックリストいちいち考えてたら工数足りん 
 各アプリケーションの機能テストで確認すべき項目と 
 組み込みになるとシングルコアで動くのにマルチコアで動かないとか、通信ライブラリが処理をつかんだままだとほかのスレッドが止まるとか(それマルチスレッドなのか?でも本当に起きる) 
 そんな感じになっていくからな。特にFreeRTOSは・・・   
 c#だとlockとかを知らないと色々トラブル。そっちの方が重要だろ  
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/statements/lock   doxygenって何処のスレで質問すれば良いですか? 
 >>870   。oO(ああ、こいつダメだ、経験が少なすぎてなんも当たったことねぇのなw) 
  GUIアプリ作るのにシングルスレッド縛りはありえねーって 
 >>878   GUIアプリでシングルスレッド縛りだと重い処理で画面固まってるように見えてしまうからうまく行かないね 
  >>870 のどこがダメなのか分からない 
 スレッド制御を自前で1から書かなきゃいけなかった00年代ならともかく 
 async/awaitにほぼすべてを任せられて非同期を安全お手軽に書けるようになってる時代なのにさあ   
 脳みその中もPentium4あたりで進化が止まった老害が 
 async/awaitを当たり前に使う現在のコーディングスタイルについていけなくて 
 誰彼かまわずケチをつけてるだけにしか見えない   
 年取ってこういうゴミみたいなジジイにはなりたくないもんだ 
  何がしたいかによる 
 大半のケースで考慮不要 
 もともとがc#に合わせた話じゃないからどうとでも読み取れちゃうんだよ 
 そんなのはloggerがなんとかしてくれるから気にするな 
 >>883   > でもログファイル出力と捉えたら、マルチスレッドから同じファイルに対して書き込もうとして・・・なんてできないこともある 
 キューに書くなりして排他制御するだけじゃね? 
  そうなんだよ 
 オラオラ交通整理マン仕事しろや早く議論スレに誘導しろよ 
 >>886   > マルチスレッドからファイル操作するならlockで排他制御しろ(自分でスレッドセーフにしないとトラブルぞ) 
 スレッドセーフならいいって話じゃないことぐらいは理解してから議論に参加しようよ… 
  凄まじく複雑な相談なんだけど良い? 
 初心者スレだぞ 
 >>891   そもそも専用クラスにする必要あるの? 
 っていうかこの板命名スレもあるよ 
 いや目くじら立てて行くべきと言いたいわけじゃないw 
  IDを使うときは配列でインデクサがある、とか 
 object xxxと対になる鍵オブジェクト = new object(); 
 TextBoxの高さに合わせてFormの高さを調整したいのですが、下記のようにすると、TextChangeのたびに高さが減ってしまいます。 
 TextBoxの高さに合わせてFormの高さを調整したいだけなのに 
 >>897   一回目の呼び出しで 
 フォントの高さに合わせてtextBox1.Heightを設定する(小さくなる) 
 textBox1.Heightの高さに合わせてフォントの高さが変わる(小さくなる)   
 二回目の呼び出しで 
 フォントの高さに合わせてtextBox1.Heightを設定する(小さくなる) 
 textBox1.Heightの高さに合わせてフォントの高さが変わる(小さくなる)   
 というループだからでわ? 
 少なくともtextBox1.HeightはtextBox1.Font.Height より少し大きいはずだから 
 そのまま代入していくとどんどん小さくなるんだと思うわ 
  >>897    TextChangedのイベントごとにHeight+=deltaの設計自体良くないとは思う 
 >>902   言いたいことは分からないでもないが、 
 恐らくセッター自身にプロパティーの値に変更がなければ何もせず戻る処理が 
 入っているはずなので考えすぎ。   
 実際問題動かしてみてそれに起因する問題があるようには見えない 
  WinFormsのListViewで、仮想モード、LargeIcon表示にしたとき 
 Shift+マウスクリックでの項目の範囲選択がクリック位置より広く選択されてしまいます。   
 以下は2008年の古い情報ですがWindowsXPの不具合のため回避困難とあります。  
https://social.msdn.microsoft.com/Forums/ja-JP/484c578a-df46-4624-a4e7-99ceaa0588ef/2020624819212701237512383listview12391389173044612398350792596836?forum=vsgeneralja     Windows10でも解消していないようなのですが、 
 検索しても有用な情報が見つからずどなたか回避できてる方いないでしょうか。 
 スクリーンロックを抑止したくてネットで調べて下のようなプログラムを書きました。 
 static bool _stopTest;  
 CancellationToken使おう 
 >>842   >> c# + visual studioでデータブレークポイント使えますか?   
 これひょっとして使えな 
  c#でAddressSanitizerみたいなツールはありますか? 
 https://stackoverflow.com/questions/209281/c-sharp-equivalent-to-javas-wait-and-notify     l   
 foo.notify() => Monitor.Pulse(foo) 
 foo.notifyAll() => Monitor.PulseAll(foo) 
 foo.wait() =>  Monitor.Wait(foo) 
  >>907 だと、クリティカルタスクの最中に例外が起きたら壊れそうだなw  
>>906 は、Pulseが抜けてる 
  ピクチャーボックスに直線を実寸(o)で引きたいんですけど、どうすればよいですか? 
 GraphicsオブジェクトのPageUnitプロパティを変更する 
 >>913   GDI+はたぶん常にdpiを96dpiと仮定しているので 
 モニターのdpiが96dpiなら
>>914 で上手く行くがそれ以外の場合は 
 自分でページ変換を設定しないとだめだと思うよ 
  GDI+のDPIは可変だよ 印刷にも使うんだから 
 >>916   それってやっぱりモニターの解像度は96dpi固定ってことだろ 
 32インチ4Kスケーリング100%なら138dpiが取得できる方法を示さないと 
  >>916   印刷時に物理単位(mmやインチ)を選択できるのは 
 プリンタの場合はdpiを報告する仕組みが最初から確立してるからで 
 ディスプレーの場合は残念ながらそうじゃないんでいろいろややこしいよw 
  質問させてください。 
 >>919   対象プロセスのプロセスIDを取得してGetExtendedTcpTable/GetExtendedUdpTableで取得できるデータと突き合わせる 
  >>920   >>921   ありがとう。今日の夜試してみる。 
  スクリーンロック抑止の者ですが、遅れながらメカニズムを理解できました! 
 似たようなソフト作ったことあるけど、キーを押下するよりマウスを現在位置から現在位置に移動するほうが普通に使ってるときの影響なくていいよ 
 >似たようなソフト作ったことあるけど、キーを押下するよりマウスを現在位置から現在位置に移動するほうが普通に使ってるときの影響なくていいよ 
 画面ロックというのが具体的になんなのかだけど 
 そりゃSetThreadExecutionState呼んでるやろなあ 
 あとはキーボードフックでWin+Lを握りつぶせるかだな 
 >Windowsシステムのスリープとか退席モードのことならAPIで抑制した方がいいのでは 
 質問させてください 
 ほんとにタイムアウトなのかい? 
 PostgreSQLだと割とあるみたいね、接続数の上限というの 
 >>935   ありがとうございます 
 接続する際はusingブロックで囲って使用しているので解放漏れは大丈夫だと思ってはいます… 
 (こういう接続の仕方です:
https://qiita.com/Nossa/items/b6d84aeb134abc85f027 )   
 接続数に関してもpg_stat_activityを使用すると、タイムアウト発生時は見れていないのですが、正常時は15程度でした(デフォルトはMax100) 
  >>938   System.TimeoutExceptionとSystem.Data.Entity.Core.EntityExceptionが発生している事は確認出来ました。 
 ただ、例外処理を書いていなかったので「ハンドルされていない例外が発生しました」以上の情報は得られませんでした…   
 これらを調べても接続文字列が正しいか確認をするなどの記載が多いのですが、基本的に処理が正常に行われているのでここは問題ないのではかと考えてます… 
  接続上限を疑って再現を目指すなら接続数をデフォルトから100→10に変えてもいいと思う 
 >>934 に便乗して 
 NpgsqlでDB接続するコンソールアプリを1分おきに起動するタスクがあるんだけど、 
 それなりの頻度でStsyem.TimeoutExceptionで接続失敗しちゃう 
 どこに問題があると疑うべきなのかなあ   
 と思っていまログを確認したら 
 半年くらい前までは2〜3日に1回(=1/1000〜1/5000位の確率)でTimeoutしてたのが 
 最近だと月1回くらいしか起こらなくなってた・・・ 
 環境というかPostgreSQLサーバの負荷等の問題だったのかな・・・・・・? 
  同時に書き込アクセスできず待たされるのはよくある 
 >>939   TimeoutExceptionのエラーメッセージに何をした時にタイムアウトが発生したのかが書いてあるから 
 まずそれを確認したら? 
  一概にタイムアウトと言っても、「接続タイムアウト」と「コマンドタイムアウト」があるからどっちが発生しているかをよく確認しないとね。 
 接続文字列のTimeout、CommandTimeout 
 (もしくはコード上でef経由で個別設定しているとか)    
>>939   npgsqlが吐いてる例外をInnerExceptionで見れません? 
 - 詳細エラーメッセージ 
 >>940   ありがとうございます 
 なるほど、確かに下げてみれば再現が出来るかもしれません 
 早速試してみます 
 これで同じエラーが出てくれれば良いのですが…      
>>944   タイムアウト設定に関して、Timeout、CommandTimeout共にデフォルトで運用していました 
 現在試しにそれぞれ60に伸ばしています 
 InnerExceptionは例外の詳細ですよね? 
 お恥ずかしい話ですが、例外処理を書いていなかったため、今回このエラーが分かったのもwindowsのイベントビューアで発見しました 
 急遽例外処理を入れたのですが、エラーが再現せず… 
  >>945   ありがとうございます   
 現在分かるエラー内容 
 @System.TimeoutException 
 ASystem.Data.Entity.Core.EntityException   
 各種バージョン 
 Npgsql:ver.4.1.3.0(ランタイムver.v4.0.30319) 
 PostgreSQL:PostgreSQL 13.3, compiled by Visual C++ build 1914, 64-bit 
 .NetFramework:4.6.1 
 OS:Windows10pro   
 エラー発生箇所コード   
 static void GetStartProcessTime() 
 { 
     using (var context = new DbContext()) 
     { 
         var processingTimeTable = context.CheckprocessingTimeTable.First(x => x.id== 1); 
         processingTimeTable.CreateDate = DateTime.Now;   
         context.SaveChanges(); 
     } 
 } 
  >>947   すいません言葉足らずでした 
 エラーはその2つの例外情報は分かるのですが説明は「ハンドルされない例外のため、プロセスが中止されました。」となっており、それ以外はエラーに至るまでの内部的な関数?が呼ばれた場所が記載されている状態です 
 その呼ばれた場所の最後が、エラー発生箇所コードとして記載させて頂いた部分です 
  >>856   これをありがたいと思うのは変な人 
 分からないでありがたがってる    
>>870 が正解 
  まずは作成日みたいなフィールドを後で更新するなと。 
 >>947   これ同じ処理が複数同時に走る?   
 複数同時に走る場合でread committedならデッドロックになるケースじゃない? 
 それが原因かどうかはわからないけどlog_lock_waitsがoffならonにしてしておくといいかも 
  >>949   ちゃんとチェックするとこに行ったら全弾被弾して 
 ○○さんって大したことないよねって評価をいただくわけですね 
  スタイリッシュなつもりでいるようだけど自分の処理の状態も把握できないもん作って悦に浸ってるのがダセェ 
 >>951   デッドロックやDB上のロックタイムアウトなら、普通はDBサーバ上で確認できるだろ 
 まず何がエラーになったのかちゃんと確認すべきじゃね   
 DB側で何の(接続要求すらの)感知もできてないなら、おれならまずはネットワーク系の問題を疑うがな 
 ソケットの枯渇とか名前解決の不具合とかファイアウォール関係とか、その辺があやしい 
  >>951   ありがとうございます 
 このGetStartProcessTimeが複数の箇所で同時に呼ばれる事はありません 
 教えて頂いた設定等は私の知識不足で全然触れたことがないので一度調べてみます    
>>954   ありがとうございます 
 postgresのログも見てみましたが、タイムアウト発生時にはエラーや何らかの処理をしているログ自体ありませんでした 
 データベースがEntityFrameworkから接続を要求されているというのは後からでも見ることが出来るのでしょうか? 
  >>954   >まず何がエラーになったのかちゃんと確認すべきじゃね 
 そりゃそうよ 
 ただ本当に詳細が確認できない状態で再現もできないのなら 
 次に発生した時に情報を取れるようにしておくのは重要   
 DB側のログで何が確認できるかは設定次第  
https://www.postgresql.org/docs/current/runtime-config-logging.html    そもそもタイムアウトが起きるぐらいの処理時間かかってるの? 
 >>952   c#のwindows環境でシングルコアで動くか?ってやってるところどこにあるんだよ 
 脳みそ何のために使ってんだ? 
  >>955   自PC内ってことだったからnpgsqlのtraceレベルのログも仕掛けといたら?   
 NpgsqlLogManager.Provider = new ConsoleLoggingProvider(NpgsqlLogLevel.Trace, true, true);  
https://www.npgsql.org/doc/diagnostics/logging.html    >>957   各クエリの時間を測った事は無いのですが、アプリケーション自体の一連の処理が0.5〜0.7秒程度で終わっているので、今回のDBへの接続がタイムアウトになるほど長くかかる事は通常は無いと考えています…     
 テンプレートにあったサイトを使ってエラーを記載してみました 
 上手く出来ているか分かりませんが、以下が現在確認出来ているエラー内容です    
https://ideone.com/rIerhm    >>958   っていうかそういう自分の思い込みでしか物事を判断できないから 
 バグまみれのスレッド立てても気にもならないんだろうな   
 シングルコアで動かしたログがあればマルチコアで並列で動作してるか 
 どうかチェックになんだろ 
 得にオメーのはどうせ並列でなんか動いてねぇからシングルでもマルチでもログかわんねーだろw 
  >>961   シングルコアが分からないなら口出ししなければいいのに 
  あなたの会社ではどのシングルコアCPUを搭載したwindowsPCでスレッドの動作確認を行っているんですか? 
 初代ラズパイ+monoかな 
 >>963   わざわざ相手するなよ 
 その人ろくに有益なこと言えないのにひたすらマウント取ろうと粘着するから 
 無駄にレス流れて迷惑なんだよ 
  脳みそはマルチコアでも容量が1bitしかないようだなハハハ 
 Windowsフォームのプログラムをタブレットでも使いたいという要望があったのですが 
 >>968   プロパティでどうこうみたいなお手軽な方法は無くって、カスタムコントロールを作るとかしないとダメだった気がする 
  つーかAndroidタブのコンボボックスにスクロールバーなんかないよね 
 >指で操作するためのUIに変える必要があるってことよね 
 >指で操作するためのUIに変える必要があるってことよね 
 スクロールバーを出ないぐらいコンボボックスの範囲を大きくしておけばいいのでは? 
 WPFのコンボもフリックしてタップで止めるとかできないんだっけ? 
 >>975   これできないな。メッセージ飛ばせば終わりだろと思ったけどまったくだった 
  コンボボックスやめてパネルにでかいボタンを並べてスクロールさせるかリストボックスだな 
 .Net6.0にしようとしたらSJIS削られてて焦った 
 >>979   まじかよ、俺社一生使えないじゃん・・・ 
  CodePageEncodingProvider.Instance.GetEncoding("shift-jis") 
 CP932とshift-jisは実は別物と2chブラウザを作ったときに理解した 
 会社で新しくC++MFCからC#に移行しそうなのですが、結構違いますか? 
 むしろ共通点はほぼないと思いますよ。 
 >>988   MFCのDocument/View構造とWPFのMVVMは考え方がほんのちょっと似てるかも 
  ありがとうございます 
 Javaと同じ人が作っただけあって 
 MFCとC#のWPFなら基本的にまるで別物だよなぁ 
 JAVAじゃなくてDelphiでしょw 
 MFCのカオスに耐えられた人がC#は理解できないとかないと思うよw 
 mfcを初めて触ったときはなんて簡単にwindowsアプリが作れるんだって感動したものだけど、c#はそれより数十倍簡単だからな 
 拡張子がcppってだけのC言語使い方だときついでしょ 
ID:6CYDlCWX0のレス一覧:  Xamarinって流行ったか?つまりそういうことだ 
 mauiも期待はしてるけどいつも通りなんだろうなあ。。 
 マルチプラットフォームっていう目的での利用は流行らないだろうな 
 >>44   おっ、.NET Core + Linux いいね 
  これからMSワールドの外へ出てみたら実感すると思うけど、MSスタックは全部MSで揃えて他には見向きもしなくていい状態にこそ意義があるんだよ 
 >>47   linuxはコミュニティによってサポートされます 
  C:\Users\a>dotnet --info 
 .NET SDK (global.json を反映): 
  Version:   6.0.100 
  Commit:    9e8b04bbff   
 ランタイム環境: 
  OS Name:     Windows 
  OS Version:  10.0.19042 
  OS Platform: Windows 
  RID:         win10-x64 
  Base Path:   C:\Program Files\dotnet\sdk\6.0.100\   
 Host (useful for support): 
   Version: 6.0.0 
   Commit:  4822e3c3aa   
 .NET SDKs installed: 
   6.0.100 [C:\Program Files\dotnet\sdk]   
 .NET runtimes installed: 
   Microsoft.AspNetCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] 
   Microsoft.NETCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] 
   Microsoft.WindowsDesktop.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]   
 To install additional .NET runtimes or SDKs:    
https://aka.ms/dotnet-download   c#を勉強しはじめたのですが、メモリ関連でヒープとスタックというのがあるのを知りました。 
 スタックって日常でも使うことあるけど、積み重ねるって意味だからな 
 メモリの確保と開放って元々C言語の概念だったよね 
 メモリを確保するのはアセンブラでもそうだよ。開放するのは動的に使うってことだよ。 
 そんなの意識するわけないだろ。どう意識するんだよw 
 Marshal.AllocHGlobal使うときとかヒープ意識するな 
 大昔独自のC言語使った組み込み開発で、StaticはROMにマッピングされるやつが有った 
 ただしstack overflowはバイブルな。 
 >>51   ちょっと検索した感じだとstaticな「変数」(あくまで変数ね)は 
 ヒープに置かれるって意見とヒープでもスタックでもないって意見があって 
 はっきり分からんねw   
 個人的にはstaticな「変数」は一度staticコンストラクタが呼ばれて 
 作られてしまった後は管理が不要なので後者の方が正しいように感じるがどうだろう 
  MSスタックどころかWindowsフォームしかできないのがMSワールドの外に出ることなんて不可能だろうな 
 C#は適当にGC呼び出せば適切なところでメモリ解放がんばってくれるじゃん 
 >>51   メモリ領域にはヒープとスタックとコードがある 
 staticはコード領域に確保される 
 コードていうのはそのまんまの意味で命令が書かれてる場所 
 ちなみにC#のヒープはGCが管理してる特殊な領域 
  これ?? 
 >>62   >staticはコード領域に確保される   
 これはあってんの? 
  xpSP2以降、自己書き換え禁止されたはずだから嘘だと思うけど 
 >>64   ざっくりだけどあってる   
 AppDomainのLoaderHeapのHigh Frequency Heapと呼ばれる場所に 
 MethodTable Strucureの一部として確保される 
 Heapと名前がつくがGC HeapやLarge Object Heapとは別で 
 GCはされずAppDomainがアンロードされるまで生きてる   
 AppDomainをざっくり言えばコード領域 
  ざっくり曲げすぎ。そもそもいわゆるコード領域はリードオンリーだよ 
 とにかくGC連打 
 結局、Dispose()だらけで汚いコードだらけみたいな。 
 某現場で提供されてたDB接続クラスがIDisposable持ってるからusingで書いたら全然動かん 
 >>73   周りに聞いたらみんなusing使わないようにしてた 
 ライブラリは別部署からの提供品で、修正してもらう手続きがめんどくさいから・・・ 
  usingはMSの提供品ならアリ 
 >>75   別にDisposeの実装だけが特別バグりやすい理由はどこにもないので、 
 それは羹に懲りて何とかそのものだねw 
  別にStreamWriterのusingも疑えって言ってるわけじゃない 
 そもそもなまじガベコレなんてあるから 
 >>78   人の話聞かない人? 
 だから、同じことはDispose以外の全てのメソッドについても当てはまるでしょ。   
 他人の作ったものは全て信じられないから使わない。 
 これなら偏執狂的ではあっても論理的に一貫している。 
 しかしDisposeだけ疑うのは羹に( 
  >>68   厳密にいうと微妙に違う属性みたい   
 SECTION HEADER #1 
    .text name 
    1830C virtual size 
     1000 virtual address (0000000140001000 to 000000014001930B) 
    18400 size of raw data 
      400 file pointer to raw data (00000400 to 000187FF) 
        0 file pointer to relocation table 
        0 file pointer to line numbers 
        0 number of relocations 
        0 number of line numbers 
 60000020 flags 
          Code 
          Execute Read 
  >>72   トランザクション処理を行っていたらロールバックする仕様は普通じゃね? 
  >>82   失敗してないのにやるんじゃない? 
 usingを正常に抜けるための何らかの条件があってそれがされてないと 
 disposeで失敗とみなしてロールバックするんじゃね? 
 その条件はソースを見るか組んだやつしかわからんが 
  >>55   以下ソースで30000ちょっとでスタックオーバーフロするから、 
 それなりに意識する必要のある人もいるように思われ 
 企業が作るデカイアプリとか   
 public class Hello 
 { 
     public static void a(int n) 
     { 
         System.Console.WriteLine(n); 
         a(n + 1); 
     }   
     public static void Main() 
     { 
         a(0); 
         System.Console.WriteLine("hello world!"); 
     } 
 } 
  https://dotnetfiddle.net/tXv7Oq   ランダムで0〜100までの数値を出して0〜50と50〜80、80~100の場合に分けてそれぞれを表示するプログラムです 
 場合分けを増やすとどうしてもforが複数回繰り返してしまいます、2回目以降の 
 for (int i = 0; i < 5; i++) 
 を1回に抑えたいのですが何かいい方法はありませんか? 
  なんかのデータ構造を3つ用意して一回のループで分けるとか 
 linqなんかを使うって方法もあるけど実質同じだからなしだよな 
 普通にcommitしてからdispose()すればrollbackしないんじゃねーの? 
 速度重視なのかメモリ効率重視なのかによるよな。 
 >>86   その例なら単純にdata[]を昇順にソートしてから   
 var i = 0; 
             Console.Write("0以上50未満:"); 
             for (; data[i] < 50 && data[i] >= 0; i++) { ... }   
 Console.Write("50以上80未満:"); 
 for (; data[i] < 80 && data[i] >= 50; i++) { ... }   
 とかでいいんじゃないの? 
  >>90   disposeでrollbackするのはConnectionじゃなくてTransactionだと思う 
 いずれにしても動かなくなるのは使う側の問題だね 
  >>90   正確には、コミットしたあと、何もない処理をロールバックするんじゃないかな 
 実質何もしないのと同じ 
 未コミットあるかないか確認するのが丁寧ではあるだろうけど   
 なんにせよIDisposableなDB接続クラスを未コミットでDisposeするのは使い方が悪いわ 
  ここってスキル高そうな人いるみたいだけど、以下でランキング入りできますか? 
 色々ありがとうございます、自分に合ったものを探してみたいと思います 
 1.jpg 
 ライブラリはないと思うよ 
 nugetとかgoogleで「natural sort」 
 全角ぐらいならnatural sortにCompareOptions.IgnoreWidth渡せばできる 
 漢数字やローマ数字対応してもICompareを実装するのにおそらく10分。 
 こういう手合いは追加要件が出てくるのが基本だから最後には自分で実装しろって回答になってるはず 
 なんか頭おかしい奴が大量に湧いてるけど、少なくとも2000年代の前半には 
 "2.jpg" "123.jpg" "500.jpg" "百日紅(さるすべりの花).jpg" "百.jpg" 
 ソート順って問題になることが多いからな 
 タブコントロールの色ってフォームのデザイナーから変えられないの? 
 職場でcsc.exe使ってフォームアプリつくろうと思ったけど 
 csc.exeのショートカット作って、 
 自然順ソートっ標準で搭載されている言語って結構少なかったんですね 
 chartコントロールについてですが、折線グラフを使用したときにデータポイント間の線上の任意のX位置を取得してその箇所のY値を取得することは可能でしょうか 
 線の中にPoints[]があってそこにXValueとYValueがあるからそれ読めばいい 
 >>117   ありがとうございます 
 ちょっと試してみます 
  116の人が聞いてるのはいわゆる「内挿」ってやつのことだと思うけど、 
 ああ、そういう意味か。それはないな 
 >>116 です 
 そうですか。。できませんか 
 では取得した位置の近いほうのデータを使うことにします 
 ありがとうございました 
  >>121   でも求め方は中一レベルの数学だから難しくないでしょ 
  >>123   あっ。そうですね。2点のXYデータがわかるわけだから折線だったら計算でだせますね。ありがとうございます   
 すみませんがもう1点だけ質問いいでしょうか 
 グラフの拡大縮小をしたときにX軸にスクロールバーがでると思いますが、それを元の表示に戻したいときにスクロールバーの横の小さいボタンを押すと戻りますが、これを自前のボタンイベントで実装するにはどうしたらいいでしょうか 
  >>124   AxisScaleView.ZoomReset ? 
 使ったことないのであってるかどうか知らない。 
  >>125   ありがとうございます! 
 期待通りの動きが確認できました 
  海外の12歳の少女が、NFTで1億8000万円を稼ぐ 
 c# winForms webView2 
 ありがと! 
 form上のボタン押したら、web上のボタンを押すためのjavascriptをwebview2に突っ込む 
 JavaのSpringフレームワークみたいにウェブサービス関係を学ぶにはASP.netでいいのですか? 
 .NET 6 のASP.NET Core Web Apiでの質問です。 
 >>138   Requestヘッダにアクセスするユーティリティクラスを作ってそれをDIする。 
 ちょっとstackoverflow検索すれば出てくると思うが。  
https://stackoverflow.com/questions/24024291/web-api-read-header-value-in-controller-constructor     まぁAPIキーを調べたいなら、いちいちControllerでやるより 
 StartUpの段階で検証処理を割り込ませておくのが定石だと思うが。 
  char[] str = { 'A', 'A', 'A', '\0' }; 
 List〈staring〉の中に複数四角の座標点が入っていて、四角と四角重なってるものを再計算して重なりがなくなるまで繰り返したいんですが、これは無限ループですよね? 
 >>141   よくわからないけど 
 List<Rect>みたいな感じ? 
  >>141   重なりは無くならないのですか? 
 無くなるのなら無限ではありませんね 
  2つの四角が重なってたら最大5つの四角に分割するってことなのかな 
 携帯なので伝わるかあれですが、まず元リスト(oLst)を  
レス:1-200  201-400  401-600  601-800  801-1000  ALL  
このスレへの固定リンク: http://5chb.net/r/tech/1639403601/ ヒント: http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ  TOPへ   
 
	  
全掲示板一覧  この掲示板へ  人気スレ  | 
	Youtube  動画  
	>50  
	>100  
	>200  
	>300  
	>500  
	>1000枚  
	新着画像 一覧 )Rubyについて(アンチ専用) Part005 	 「PATHを通す」というテーマで記事を書きましょう  大学でpythonってやつやるらしいんだが 	 DIYソフトウェア 	 各言語の記法と用語の変換スレ 	 WPF(.NET, WinUI) GUIプログラミング Part27  次世代言語24 Go Nim Rust Swift Kotlin TypeScript  プログラミング学習サイトについて語るスレ  Ruby 初心者スレッド Part 64 	 フロントエンドJavaScriptフレームワーク総合  プログラマって馬鹿が多いよね  次世代言語26 TypeScript Swift Go Kotlin Nim  Pythonの次に身につけておく言語  設計支援/自動化, ドキュメント作成支援ツール 	 自然言語処理スレッド その5 	 Android開発質問スレ 	 Pythonについて(アンチ専用) EmEditor は、Windows11でも使えるのですか?  動画プログラミング 	 失敗ばかりのおっさんだが無能じゃない 	 chainerでnmtを使ったencoder-decoderを作りたい 	 C# vs Java どっちが好き? その5 	 【PHP】下らねぇ質問はここに書き込みやがれ 3 プログラムと宗教って深い関連あるよな 	 最強の静的型付け言語は何? 【VBScript】WSHについて話し合うスレ【JScript】  【.cmd】 バッチファイルスクリプト %13 【.bat】 	 プログラミングはRyzenでやってもエエ? 	 pythonを仕事で使えるレベルにするには何日かかる? 	 
  
    
  
 
 06:08:05 up 8 days, 20:30,  2 users,  load average: 145.21, 138.18, 127.65
in 0.16436505317688 sec
@[email protected]  on 103119