1 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 22:53:21.18 ID:dhjmiKBp0.net] !extend:checked:vvvvv:1000:512 次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください >>980 を踏んだ人は新スレを建てて下さい。>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part152 mevius.5ch.net/test/read.cgi/tech/1629888256/ ■関連スレ C#, C♯, C#相談室 Part94 mevius.5ch.net/test/read.cgi/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
2 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 15:04:57.66 ID:DHQEOVX70.net] stringデータの容量を小さくしてソフトのAPIに送りたいのですが APIの都合でstringのまま送らなければならない場合、 これ以上容量を小さくする手段はありませんか? 圧縮したバイナリデータをどうにか送信できないかと調べたのですが無理そうで……。
3 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 17:52:43.39 ID:vmKXmndG0.net] 何らかの方法で圧縮できたとして 受け取る方のソフトは圧縮されたデータを伸長できるの?
4 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 17:56:17.81 ID:WeLzug3DM.net] uudx / uuex か?
5 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 18:19:29.34 ID:DHQEOVX70.net] >>3 圧縮して送りたいのはただのセーブデータなのですが、 サーバー側の保存形式がstringを使ったkeyValueで作られているので文字列形式でしか保存できないみたいで。 保存しておいた文字列をこちらで読み込んでからデコードすればいいのでstringのまま圧縮できればよくて、 どうせ日本語までしか扱わないデータなのでSHIFT-JISをutf-8で圧縮……みたいなことができれば理想なのですが そんなピンポイントなのあったりしませんよね、と……。 >>4 解釈があってるかはわからないのですが、 一応圧縮したバイナリデータをBase64でConvertみたいなことは試してみたものの 容量を減らすという目的ではむしろ文字数が増えてしまって。 何か手段がないかなあと思っている次第です。
6 名前:デフォルトの名無しさん [2021/12/14(火) 18:26:30.90 ID:QT7QgCvlM.net] 使用できる文字に番号振って 圧縮したバイナリを文字に割当る いわゆる復活の呪文方式 文字が足らなければ32bitsバイナリを31bitsにずらしていくなど工夫してみな
7 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 18:35:23.50 ID:70QYvgE2a.net] >>5 の文章はユニコード(utf16)で720バイト、ユニコード(utf8)で921バイト >>5 の文章をzip圧縮したらバイナリで678バイト。その圧縮バイナリを2文字ずつ(utf8)にしたら2倍の1356バイト(圧縮したらバイト数が増えた) でも前スレ(utf16で348,236バイト)を圧縮したらバイナリ104,639バイト、圧縮utf8で209,278バイト。圧縮したバイナリをテキストにしたほうが小さい 送りたいデータ次第じゃ一度圧縮してから無理やりテキストにした方が容量小さくなるから どっちが有利か生と圧縮を自動選択しながら送る手もある
8 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 19:00:02.18 ID:DQcTzC4QM.net] 通常のデータ圧縮は8ビットフルに使うので、 そのままでは難しいのでuuと組み合わせて作ったら?
9 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 19:40:08.80 ID:vmKXmndG0.net] UTF-8でバイナリ化してdeflate圧縮してBase64化した後2文字ずつを1つのcharに詰める まあ基本ライブラリで手軽にやるならこんな感じじゃない?
10 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 20:14:03.30 ID:4rMew3mV0.net] 7zかなにか圧縮率の高い奴で圧縮しておいてbasE91だな。 base91.sourceforge.net/
11 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 07:44:21.38 ID:viWcJGha0.net] 圧縮することによっぽどのメリットがないと無駄にややこしくなるだけだぞ サーバー側が必要に応じて圧縮するのが筋かと UTF-8に変換して送信とか脆弱性の問題もあってサーバー側で禁止してることもある
12 名前:2 mailto:sage [2021/12/15(水) 08:20:09.42 ID:KIyi4EVP0.net] 皆さんありがとうございます! Base64化したものを自分でさらに詰めるというのは思いつきませんでした……なるほど……。 BasE91もまさに机上論こねくり回してるときに欲しかったものの気配がするので中身覗いて調べてみます! >>11 こちらは利用する側なのでサーバーの仕様を変える事はできず、 用意されたフォーマット(これが文字列形式での送信)従うしかないやつですね。 ユーザー毎に使用可能なデータの容量が決められていて(しかもそれがやたら少ない)、 少しでも軽減するためにこちら側でデータを小さくできないかと画策しています。
13 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 08:43:57.49 ID:doly6UKJ0.net] ビットマップ間で部分的に画像コピーするのはDrawImageでできますが コピーする際に左右を反転してコピーする方法はないでしょうか? 検索でビットマップ全体をまるごと反転する表示はたくさん出てくるのですが DrawImageの部分コピーで反転するのは見当たらないのです
14 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 09:39:43.96 ID:SWORTfJ40.net] g.ScaleTransform(-1, 1) 描き出す先の座標も反転するから座標指定注意
15 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 10:18:47.15 ID:IF/hKOzS0.net] できました、ありがとうございます
16 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 20:55:12.09 ID:KtX6zlRp0.net] DrawImageに渡すWidthやHeightを負の数にするだけで反対向きに描画するよ
17 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 22:41:30.07 ID:9OkRwsNs0.net] LinuxでC#でソフト作りたいのですが .Net 6とmonoは同じものでしょうか?
18 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 22:58:53.71 ID:RALnEWNsa.net] monoは.NET4.6か4.7相当
19 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 23:37:58.07 ID:9OkRwsNs0.net] ありがとうございます .Net 6をインストールしました
20 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 12:03:30.27 ID:GoezKG390.net] private void Form1_KeyDown(object sender, KeyEventArgs e) { keyCode = (int)e.KeyCode; } public void button1_Click(object sender, EventArgs e) { button1.Visible = false; anThread(); // ここをtest();に変えると直接実行になる } private void anThread() { Task task = Task.Run(() => { test(); } } private void test() { int dt; while (true) { if (keyCode!=0) { dt = keyCode; // ここにブレークポイントを置く キーが押されると止まる return; } Thread.Sleep(10); } }
21 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 12:04:03.26 ID:GoezKG390.net] このプログラムbutton1押しで開始して、キーが押されるとループ中のブレークポイントで止まるものなんですが これで一般文字キーを押すとちゃんとブレークポイントで止まりkeyCodeが確認できます Enterキーを押した場合はなぜか止まりません anThread();のように別スレッドから動かさずに直接test();で呼ぶと 一般文字キーもEnterキーの時も止まりkeyCode 13が確認できます 別スレッドで動かした時に、Enterキーの時だけForm1_KeyDownさえ呼ばれなくなるのは どうしてでしょうか?
22 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 12:25:18.98 ID:6kTxk0Gya.net] 直接呼びで停まる? 直接呼ぶと無限ループに入って、keycode変数が変化しないから(代入が行われるのはループの外だから代入が起きない) ブレークポイントに入ることもないんじゃないかな? ここに書き込む過程でコードを書き換えたなら、そこで略した部分に問題ありそう
23 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 12:36:40.33 ID:GoezKG390.net] いえ止まるというのはブレークポイントで止まるので正常に機能しているということです 直接呼びの時はEnterキーでもkeycode変数が変化するのです(正常) 別スレッド呼びにした時にEnterキーだけ変化しないようになります 文字キーは変化します button1にEnterキーが吸収されてるのではないかと思い button1.Visible = false; button1.Enabled = false; さらにForm1.KeyPreview=true; としたのですが、結果は変わりませんでした
24 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 12:59:19.79 ID:6kTxk0Gya.net] デバッグ開始する ボタン押す enter以外のキーを押す=止まる 再開する enterを押す=止まらない って順番ということ?それならreturnで抜けてるから デバッグ開始する ボタン押す enterを押す=止まらない enter以外のキーを押す=止まる って順番ということ?
25 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 13:04:12.22 ID:GoezKG390.net] そうですね、デバッグ実行は毎回やりなおしてますが enterを押す=止まらない ここのところですね問題は Enterキー故に何かわからないですがviewのどれかに吸収されてるんではとも考えられるんです
26 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 13:11:56.87 ID:GoezKG390.net] inr fs; public void button1_Click(object sender, EventArgs e) { if (fs==0) { button1.Visible = false; button1.Enabled = false; anThread(); // ここをtest();に変えると直接実行になる } fs=1; }
27 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 13:12:29.66 ID:GoezKG390.net] もっとボタンのとこ具体的にかくと上のようにして一度しかtest()呼ばれないようにしてます
28 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 13:19:59.88 ID:6kTxk0Gya.net] なら KeyPreview=true; protected override bool ProcessDialogKey(Keys keyData) { return false; } protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); }
29 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 13:24:57.28 ID:GoezKG390.net] おおEnterキーでもブレークポイントで止まるようになりました ありがとうございます
30 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 13:28:58.72 ID:lYga0rvW0.net] Formに配置したbuttonがEnterキーの制御を奪うから その前にFormでキーを取得したいならPreviewKeyDownイベントを使う
31 名前:デフォルトの名無しさん [2021/12/16(木) 14:09:04.68 ID:i/INwEgL0.net] docs.microsoft.com/ja-jp/dotnet/api にバージョンとかあって.NET 6とか選択するじゃないですか? これって、どれを選べばいいのでしょうか? 自分のPCにどの.NET入ってるか調べる方法はありますでしょうか? よよろしくおねがいします。
32 名前:デフォルトの名無しさん [2021/12/16(木) 14:38:33.33 ID:k8cIynuMM.net] 自分のPCではなくユーザーの環境を考えて選ぼう Windows2000なら2.0 WindowsXPなら4.0までしか使えない
33 名前:デフォルトの名無しさん [2021/12/16(木) 15:37:50.09 ID:y2oCKs8P0.net] 今から始めるなら.NET 6選んでおけば問題ない
34 名前:デフォルトの名無しさん [2021/12/16(木) 17:43:59.24 ID:i/INwEgL0.net] Environment.Versionだと6.0.0 RuntimeEnvironment.GetSystemVersionだとv4.0.30319でした
35 名前:デフォルトの名無しさん [2021/12/16(木) 17:53:32.89 ID:i/INwEgL0.net] System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription だと.NET 6.0.0-rtm.21522.10でした
36 名前:デフォルトの名無しさん [2021/12/16(木) 17:56:18.18 ID:i/INwEgL0.net] clrver.exeだと、こう PS C:\Users\a\source\repos> clrver.exe Microsoft (R) .NET CLR Version Tool Version 4.8.3928.0 Copyright (c) Microsoft Corporation. All rights reserved. Versions installed on the machine: v2.0.50727 v4.0.30319
37 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 18:05:33.14 ID:6CYDlCWX0.net] https://i.imgur.com/jv9gyBg.png
38 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 20:33:18.00 ID:SBcuHk850.net] mauiって流行りますか?
39 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 20:45:26.99 ID:9+J81CzA0.net] Xamarinって流行ったか?つまりそういうことだ
40 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 20:53:46.41 ID:p4ec86X90.net] 人脈が無い人には無理
41 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 21:37:09.74 ID:nAiVmB6z0.net] mauiも期待はしてるけどいつも通りなんだろうなあ。。
42 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 22:11:02.45 ID:6kTxk0Gya.net] マルチプラットフォームっていう目的での利用は流行らないだろうな でも普通にGUIアプリ作る一手段としては使われるんじゃないかな
43 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 23:26:32.48 ID:el7qs11a0.net] 言語仕様が多すぎてうんざり。
44 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 00:31:22.94 ID:A3/Tt7aa0.net] Linuxに本気で移行しようと思う。
45 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 01:19:48.74 ID:OxYtcTfz0.net] >>44 おっ、.NET Core + Linux いいね
46 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 01:35:44.89 ID:0Acfg8Fxd.net] これからMSワールドの外へ出てみたら実感すると思うけど、MSスタックは全部MSで揃えて他には見向きもしなくていい状態にこそ意義があるんだよ いったん外にはみ出し始めちゃって歯車が狂うとたちまち不便なところばかりが目につくようになって、気がついたらMS成分は跡形も残らない、という結果になるのがオチだ MSスタックをディスるつもりはなくて、これはむしろ最大限の賛辞だ
47 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 08:09:16.08 ID:GkoM7wOP0.net] あれ?MAUIのターゲットにLinuxが入ってない。。。 https://docs.microsoft.com/ja-jp/dotnet/maui/what-is-maui
48 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 08:24:00.59 ID:ObFlVNVZM.net] LVGLを使え。という託宣。
49 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 08:44:31.07 ID:dbqWYop50.net] >>47 linuxはコミュニティによってサポートされます
50 名前:sage [2021/12/17(金) 11:45:19.21 ID:2+pcMu4G0.net] 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
51 名前:デフォルトの名無しさん [2021/12/17(金) 13:11:43.35 ID:2+pcMu4G0.net] c#を勉強しはじめたのですが、メモリ関連でヒープとスタックというのがあるのを知りました。 で、C#で型がstaticのデータはヒープ領域に格納されるのですか?それともスタック領域に格納されるのですか?
52 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 13:38:19.99 ID:g/fCEX7wa.net] スタックって日常でも使うことあるけど、積み重ねるって意味だからな 積み重ねちゃってるから下にあるものを無理に取り出そうとすると崩れてぐちゃぐちゃになる だから下にあるデータは上にあるのがなくなるまで取り出せない データは上下関係なく好きなところにあるデータにアクセスしたいものだからスタックにはしない=ヒープ でもスタックとかヒープとか覚えなくていいよ C#のテスト問題にそんなのが出たら「もっとまともな問題出せ」って回答用紙に書いときゃいいし C#の本やサイトにそんなのが出てるなら投げ捨てときゃいい
53 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 13:41:20.99 ID:eUY6ZgLC0.net] メモリの確保と開放って元々C言語の概念だったよね Javaではなくなったようだけど
54 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 14:24:53.34 ID:A3/Tt7aa0.net] メモリを確保するのはアセンブラでもそうだよ。開放するのは動的に使うってことだよ。 スタックはCPUの基本機能、ハードで実装、提供されてるものだよ。だから高速。 SPレジスタ書き換えるだけだからね。速いコード書く人はスタック、ヒープは常に意識してる。
55 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 15:05:27.40 ID:g/fCEX7wa.net] そんなの意識するわけないだろ。どう意識するんだよw アセンブラならpush/pop使うこと多いけど、C#じゃそんなの意識して組むのは非常に困難 意識するのは例えばこれはList<int>よりも基本通りint[]でいった方が速度有利だけど、こっちはListでいいとかそういう(ヒープの)使い方程度だよ
56 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 15:35:53.88 ID:Uf0Oj/NFd.net] Marshal.AllocHGlobal使うときとかヒープ意識するな
57 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 15:38:33.74 ID:8qM/JwoR0.net] 大昔独自のC言語使った組み込み開発で、StaticはROMにマッピングされるやつが有った いやあ、確かに便利だけど言語仕様くらい守れよとは思った
58 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 16:30:31.61 ID:xwFg4/y80.net] ただしstack overflowはバイブルな。 これさえあれば、大抵のことは何とかなる
59 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 17:26:57.23 ID:OLbNm50pa.net] >>51 ちょっと検索した感じだとstaticな「変数」(あくまで変数ね)は ヒープに置かれるって意見とヒープでもスタックでもないって意見があって はっきり分からんねw 個人的にはstaticな「変数」は一度staticコンストラクタが呼ばれて 作られてしまった後は管理が不要なので後者の方が正しいように感じるがどうだろう
60 名前:デフォルトの名無しさん [2021/12/17(金) 19:03:20.75 ID:FDMn0ZP00.net] MSスタックどころかWindowsフォームしかできないのがMSワールドの外に出ることなんて不可能だろうな
61 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 19:14:42.55 ID:25ZW3+3Or.net] C#は適当にGC呼び出せば適切なところでメモリ解放がんばってくれるじゃん
62 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 20:16:20.89 ID:hfvLzPNZ0.net] >>51 メモリ領域にはヒープとスタックとコードがある staticはコード領域に確保される コードていうのはそのまんまの意味で命令が書かれてる場所 ちなみにC#のヒープはGCが管理してる特殊な領域
63 名前:デフォルトの名無しさん [2021/12/17(金) 20:53:34.58 ID:2+pcMu4G0.net] これ?? PS C:\Users\a\source\repos\stack\stack\bin\Debug\net6.0> dumpbin /headers stack.exe Microsoft (R) COFF/P
64 名前:E Dumper Version 14.30.30706.0 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file stack.exe PE signature found File Type: EXECUTABLE IMAGE <<中略>> SECTION HEADER #3 .data name 14F8 virtual size 24000 virtual address (0000000140024000 to 00000001400254F7) A00 size of raw data 21C00 file pointer to raw data (00021C00 to 000225FF) 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers C0000040 flags Initialized Data Read Write [] [ここ壊れてます]
65 名前:デフォルトの名無しさん [2021/12/17(金) 21:35:28.65 ID:IQClZtiS0.net] >>62 >staticはコード領域に確保される これはあってんの?
66 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 21:40:51.67 ID:A3/Tt7aa0.net] xpSP2以降、自己書き換え禁止されたはずだから嘘だと思うけど
67 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 22:19:09.70 ID:RGFXVjzf0.net] 嘘つきはMicrosoftの始まりって聞いたで
68 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 22:37:03.33 ID:ePonqmC10.net] >>64 ざっくりだけどあってる AppDomainのLoaderHeapのHigh Frequency Heapと呼ばれる場所に MethodTable Strucureの一部として確保される Heapと名前がつくがGC HeapやLarge Object Heapとは別で GCはされずAppDomainがアンロードされるまで生きてる AppDomainをざっくり言えばコード領域
69 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 23:21:12.45 ID:g/fCEX7wa.net] ざっくり曲げすぎ。そもそもいわゆるコード領域はリードオンリーだよ
70 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 01:21:58.30 ID:4KhQcFRSr.net] とにかくGC連打 メモリ管理をどうこうしようなんて考える必要なし
71 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 01:27:31.41 ID:5vur9Hw60.net] 結局、Dispose()だらけで汚いコードだらけみたいな。
72 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 01:36:05.34 ID:T7YxQHIHa.net] いやいや。disposeは必ずしろよ・・・
73 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 01:51:37.69 ID:pciZCSWm0.net] 某現場で提供されてたDB接続クラスがIDisposable持ってるからusingで書いたら全然動かん よく見たらdispose内でロールバック処理が入ってて目を疑った
74 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 02:07:40.04 ID:hd7cWOei0.net] それどうなったの
75 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 02:38:11.15 ID:pciZCSWm0.net] >>73 周りに聞いたらみんなusing使わないようにしてた ライブラリは別部署からの提供品で、修正してもらう手続きがめんどくさいから・・・
76 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 03:04:40.74 ID:+EDLAGXQ0.net] usingはMSの提供品ならアリ それ以外のライブラリでは信じるに値しない 精々努力目標がいいとこ
77 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 03:11:34.73 ID:4KhQcFRSr.net] >>72 何そのトラップw 作った奴アホだろ
78 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 03:25:01.34 ID:rlJS0/xAa.net] >>75 別にDisposeの実装だけが特別バグりやすい理由はどこにもないので、 それは羹に懲りて何とかそのものだねw
79 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 03:48:54.74 ID:+EDLAGXQ0.net] 別にStreamWriterのusingも疑えって言ってるわけじゃない ただ、チェックされてる保証がないモノを無条件に信じるのはやめろってこと 少なくともMS提供品以外のusingは使うなら一度はdisposeの実装に目を通したほうがいい ブラックボックスのライブラリはメモリリークしてても不思議じゃないから場合によっては 別プロセスにしてキックしないといけないかもしれない
80 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 04:00:36.02 ID:+EDLAGXQ0.net] そもそもなまじガベコレなんてあるから 綺麗な後始末にはヘルプをよく読まないといけないクラスが多い気がする まあ、その前にアプリを終了してしまえば問題は起きないが サービスとかだとこいつが牙をむく場面が多い
81 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 04:43:58.91 ID:QLDMMuZWa.net] >>78 人の話聞かない人? だから、同じことはDispose以外の全てのメソッドについても当てはまるでしょ。 他人の作ったものは全て信じられないから使わない。 これなら偏執狂的ではあっても論理的に一貫している。 しかしDisposeだけ疑うのは羹に(
82 名前:デフォルトの名無しさん [2021/12/18(土) 05:17:14.21 ID:4kEqj5670.net] >>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
83 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 07:53:04.33 ID:EMtIeou+0.net] >>72 トランザクション処理を行っていたらロールバックする仕様は普通じゃね?
84 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 08:55:44.41 ID:+EDLAGXQ0.net] >>80 まあ、確認対象に入るだけとも言うな
85 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 08:59:22.77 ID:+EDLAGXQ0.net] >>82 失敗してないのにやるんじゃない? usingを正常に抜けるための何らかの条件があってそれがされてないと disposeで失敗とみなしてロールバックするんじゃね? その条件はソースを見るか組んだやつしかわからんが
86 名前:sage mailto:sage [2021/12/18(土) 09:13:54.47 ID:4kEqj5670.net] >>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!"); } }
87 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 10:36:30.21 ID:rkAxz2WM0.net] https://dotnetfiddle.net/tXv7Oq ランダムで0〜100までの数値を出して0〜50と50〜80、80~100の場合に分けてそれぞれを表示するプログラムです 場合分けを増やすとどうしてもforが複数回繰り返してしまいます、2回目以降の for (int i = 0; i < 5; i++) を1回に抑えたいのですが何かいい方法はありませんか?
88 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 10:42:34.52 ID:/Zq/GLbL0.net] なんかの
89 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 10:43:28.05 ID:/Zq/GLbL0.net] なんかのデータ構造を3つ用意して一回のループで分けるとか 一回全部ソートして前から見ていくとか
90 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 10:46:28.80 ID:T7YxQHIHa.net] linqなんかを使うって方法もあるけど実質同じだからなしだよな stringをいくつか用意しといて、最初のforの中でconsole出力するんじゃなくてstringに値を格納 for抜けてからconsole出力するとか?
91 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 11:37:28.63 ID:5vur9Hw60.net] 普通にcommitしてからdispose()すればrollbackしないんじゃねーの? 原因不明で途中終了されたらrollbackするのは普通に見える。 とにかくデストラクタがC++と同じタイミングで走ってくれれば C#にdisposeはいらなかったんじゃないのかと初心者のボクは思うわけですよ。
92 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 11:57:23.73 ID:EMtIeou+0.net] >>86 宿題っぽいから単純にメソッドを分けてみたよ https://dotnetfiddle.net/639EZQ
93 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 12:12:33.65 ID:5vur9Hw60.net] 速度重視なのかメモリ効率重視なのかによるよな。 普通は分けたデータは再利用するので3つ分の配列を作ってそこに入れるかな。 なら場合分け処理は最初の1ループ一回しかしないで済む。
94 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 13:11:47.91 ID:Y+I1/Zg80.net] 自分も分離と利用を分けるかな。 こんな感じ。 https://dotnetfiddle.net/OMdmbO
95 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 14:04:14.85 ID:GkRVZLhXa.net] >>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++) { ... } とかでいいんじゃないの?
96 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 14:32:27.17 ID:iUN/Cy1s0.net] >>90 disposeでrollbackするのはConnectionじゃなくてTransactionだと思う いずれにしても動かなくなるのは使う側の問題だね
97 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 14:56:48.68 ID:yfxR8FS90.net] >>90 正確には、コミットしたあと、何もない処理をロールバックするんじゃないかな 実質何もしないのと同じ 未コミットあるかないか確認するのが丁寧ではあるだろうけど なんにせよIDisposableなDB接続クラスを未コミットでDisposeするのは使い方が悪いわ
98 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 18:11:55.26 ID:iUN/Cy1s0.net] >>95 うー、俺が間違ってたわ https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.close?view=dotnet-plat-ext-6.0#remarks
99 名前:デフォルトの名無しさん [2021/12/18(土) 22:12:35.26 ID:4kEqj5670.net] ここってスキル高そうな人いるみたいだけど、以下でランキング入りできますか? paiza.jp/botchi/ranking paiza.jp/steins_gate/ranking paiza.jp/logic_summoner/top/ranking
100 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 23:03:36.27 ID:rkAxz2WM0.net] 色々ありがとうございます、自分に合ったものを探してみたいと思います
101 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 14:12:33.67 ID:XEu/0Ow00.net] 1.jpg 10.jpg 2.jpg を 1.jpg 2.jpg 10.jpg のように自然順ソートできるライブラリありませんか? Windows,Mac,Linuxで動かせるものがほしいです
102 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 14:34:22.80 ID:O/qDX0wZ0.net] ライブラリはないと思うよ 君の言う自然順の定義が適当すぎるからね
103 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 14:37:18.67 ID:pYj8pB6Ua.net] >>100 古い記事だけど参考まで 今は標準で実装されてるかも https://wiki.dobon.net/index.php?.NET%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%A6%B5%E6%2F111
104 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 14:38:55.11 ID:n0pWJPWXa.net] nugetとかgoogleで「natural sort」
105 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 14:48:02.86 ID:wbja7KXrM.net] 漢数字やローマ数字は? 全角は?
106 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 15:12:30.82 ID:n0pWJPWXa.net] 全角ぐらいならnatural sortにCompareOptions.IgnoreWidth渡せばできる 漢字はやりたきゃ自分でやるか日本語対応のを探すしかないだろうな
107 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 15:24:46.95 ID:JBr0bC1G0.net] 漢数字やローマ数字対応してもICompareを実装するのにおそらく10分。
108 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 16:12:08.38 ID:3MHXzmFiM.net] こういう手合いは追加要件が出てくるのが基本だから最後には自分で実装しろって回答になってるはず
109 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 16:56:47.20 ID:EE70Ra2ja.net] なんか頭おかしい奴が大量に湧いてるけど、少なくとも2000年代の前半には 「自然順ソート」という概念はあった。 何が「こういう手合い」だバカw ウンコはお前の方だろ。
110 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 17:14:52.86 ID:kxTQmf/60.net] なるほど。 https://ja.wikipedia.org/wiki/自然順
111 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 17:29:08.07 ID:n0pWJPWXa.net] "2.jpg" "123.jpg" "500.jpg" "百日紅(さるすべりの花).jpg" "百.jpg" 用途によっては漢数字も数字としてソートしたい場合もある 今回は漢数字不要だろうけど、「こういう手合い」になることは多い
112 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 17:50:05.64 ID:TLyD+52gd.net] ソート順って問題になることが多いからな 特に日本語は色んな文字を使うので厄介 カナとか漢字あたりの動作がめちゃくちゃでいいならライブラリなんていくらでも見つかるだろうけど後からケチ付けられないようにしとくのは大事
113 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 05:46:43.82 ID:3MMk62pZa.net] タブコントロールの色ってフォームのデザイナーから変えられないの?
114 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 10:32:55.78 ID:f5rUAgGLd.net] 職場でcsc.exe使ってフォームアプリつくろうと思ったけど コマンドプロンプト自体制限されてて使えなかったなり
115 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 14:19:05.77 ID:qyvCBTAG0.net] csc.exeのショートカット作って、 プロパティでオプションやソースファイル指定するとか
116 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 14:20:33.92 ID:zxhyAyTl0.net] 自然順ソートっ標準で搭載されている言語って結構少なかったんですね PHPから入ったので当たり前に貼るものだと思ってました 頂いた情報で組んでみます
117 名前:デフォルトの名無しさん [2021/12/20(月) 14:24:01.64 ID:wYqxvWvia.net] chartコントロールについてですが、折線グラフを使用したときにデータポイント間の線上の任意のX位置を取得してその箇所のY値を取得することは可能でしょうか
118 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 14:26:28.21 ID:BkeSeNUYa.net] 線の中にPoints[]があってそこにXValueとYValueがあるからそれ読めばいい
119 名前:デフォルトの名無しさん [2021/12/20(月) 14:35:19.70 ID:/nEC48Zya.net] >>117 ありがとうございます ちょっと試してみます
120 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 14:39:36.28 ID:I6RlAoqPa.net] 116の人が聞いてるのはいわゆる「内挿」ってやつのことだと思うけど、 そんな気の利いた機能がchartについてるかな。 使ったことないから知らんけどついてないと思うw
121 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 14:49:56.05 ID:BkeSeNUYa.net] ああ、そういう意味か。それはないな 読めるのは追加した点だけ
122 名前:デフォルトの名無しさん [2021/12/20(月) 15:38:01.47 ID:EVpX0LdIa.net] >>116 です そうですか。。できませんか では取得した位置の近いほうのデータを使うことにします ありがとうございました
123 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 15:58:56.17 ID:hpQP1bPDd.net] >>113 powershell使えば
124 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 17:33:26.35 ID:I6RlAoqPa.net] >>121 でも求め方は中一レベルの数学だから難しくないでしょ
125 名前:デフォルトの名無しさん [2021/12/20(月) 18:59:07.12 ID:/usP9Uara.net] >>123 あっ。そうですね。2点のXYデータがわかるわけだから折線だったら計算でだせますね。ありがとうございます すみませんがもう1点だけ質問いいでしょうか グラフの拡大縮小をしたときにX軸にスクロールバーがでると思いますが、それを元の表示に戻したいときにスクロールバーの横の小さいボタンを押すと戻りますが、これを自前のボタンイベントで実装するにはどうしたらいいでしょうか
126 名前:デフォルトの名無しさん [2021/12/20(月) 19:19:36.55 ID:I6RlAoqPa.net] >>124 AxisScaleView.ZoomReset ? 使ったことないのであってるかどうか知らない。
127 名前:デフォルトの名無しさん [2021/12/20(月) 22:05:52.14 ID:4d89Imwra.net] >>125 ありがとうございます! 期待通りの動きが確認できました
128 名前:デフォルトの名無しさん [2021/12/21(火) 19:30:29.17 ID:smn5oieg0.net] 海外の12歳の少女が、NFTで1億8000万円を稼ぐ 12歳のナイラ・ヘイズ氏のNFT(※)コレクションが、数時間で160万ドル(約1億8000万円) を稼ぎ出したと、米メディアの『Business Insider』が報じている。 ヘイズ氏は4歳で絵を描き
129 名前:始め、9歳のときにスマートフォンを使って彼女の代表作 「Long Neckie Ladies」を描いたという。このシリーズは3333点からなる、首の長い 多種多様な女性を描いたコレクションだ。出品後わずか数時間で売り切れとなり、 総額は約1億8000万円にのぼるという。 「アートは私が自分自身を表現し、言葉では不可能なやり方で人々を 驚かせるのためのもの」と述べている。 これまでにヘイズ氏は、NFTで1394ETH(約6億6000万円)を稼ぎ出してきた。 若きアーティストのさらなる活躍に期待しよう。 [] [ここ壊れてます]
130 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 20:26:03.81 ID:A1/tNWXn0.net] >>127 マネーロンダリング定期
131 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 23:18:04.09 ID:F5aAVbmG0.net] c# winForms webView2 Form1にウェブビューとボタンを配置しました。 表示したwebサイトの方のボタンを、コードで指定して押させたいんだけどできますか? (フォームに配置したボタンを押すと、HTMLの方のボタンが押される)
132 名前:デフォルトの名無しさん [2021/12/22(水) 00:11:20.30 ID:jK1jR4AH0.net] できます
133 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 00:15:56.40 ID:3dt5vZu90.net] ありがと! お手数おかけしますがどなたか教えてください
134 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 00:20:23.33 ID:3dt5vZu90.net] >>129 ですが 実装の仕方を知りたいです...
135 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 00:31:14.60 ID:b3HiuJNda.net] form上のボタン押したら、web上のボタンを押すためのjavascriptをwebview2に突っ込む 詳しくは WebView2.ExecuteScriptAsync をぐぐれば出てくる
136 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 08:04:47.48 ID:UZclHfmg0.net] JavaのSpringフレームワークみたいにウェブサービス関係を学ぶにはASP.netでいいのですか? net coreとかnet6とか用語が新しくできてASP.NETは廃止されたりしてませんか?
137 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 12:23:03.79 ID:Af2fhJsR0.net] >>134 されてません
138 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 12:47:15.14 ID:xFuE7Z410.net] >>134 今ならASP.net coreですね
139 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 13:17:51.59 ID:UZclHfmg0.net] >> 135 >>136 ありがとう。
140 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 16:32:03.68 ID:Gb4RQ3pz0.net] .NET 6 のASP.NET Core Web Apiでの質問です。 [ApiController] [Route("[controller]")] public class UserController : ControllerBase { private readonly ILogger<UserController> _logger; private readonly IConfiguration _config; public UserController(ILogger<UserController> logger, IConfiguration config, IBearerTokenValidater bearer) { _logger = logger; _config = config; } [HttpGet(Name = "GetUsers")] public string Get() { ★ var _ = Request.Headers.TryGetValue("Bearer", out var apiKey); return apiKey; } } というControllerを作りました。 ★の処理を本当はコンストラクタで行いたいのですが、移動すると以下のエラーが出ます。(もしくはもっと前に行いたい) System.NullReferenceException: 'Object reference not set to an instance of an object.' Microsoft.AspNetCore.Mvc.ControllerBase.Request.get が null を返しました。 ★の処理をコンストラクタ(もしくはもっと前)で行うにはどうすればいいでしょうか。 (コンストラクタではHttpcontextを参照できないのでしょうか。エラーになるのは起動時ではなくRequestで到達した時です。)
141 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 17:24:08.56 ID:GlBmoaYS0.net] >>138 Requestヘッダにアクセスするユーティリティクラスを作ってそれをDIする
142 名前:。 ちょっとstackoverflow検索すれば出てくると思うが。 https://stackoverflow.com/questions/24024291/web-api-read-header-value-in-controller-constructor まぁAPIキーを調べたいなら、いちいちControllerでやるより StartUpの段階で検証処理を割り込ませておくのが定石だと思うが。 [] [ここ壊れてます]
143 名前:デフォルトの名無しさん [2021/12/22(水) 19:57:47.15 ID:gZ1M8pW10.net] char[] str = { 'A', 'A', 'A', '\0' }; Span<char> span = str.AsSpan(); char[]型からSpan<char>型へは、AsSpan()を使って取り出せるのですが、 Span<char>型からchar[]型へ、取り出す方法はないのでしょうか? SpanのToArray()は新しい配列を作ってしまうので、それではないです
144 名前:デフォルトの名無しさん [2021/12/22(水) 20:11:28.65 ID:LzRptcUf0.net] List〈staring〉の中に複数四角の座標点が入っていて、四角と四角重なってるものを再計算して重なりがなくなるまで繰り返したいんですが、これは無限ループですよね? 重なった時の再計算方法は別にしてコードの構成ってどうやってやるのか教えて欲しいです。
145 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 20:18:40.21 ID:epvDktEA0.net] >>141 よくわからないけど List<Rect>みたいな感じ?
146 名前:デフォルトの名無しさん [2021/12/22(水) 20:25:56.04 ID:svF48xPZM.net] >>141 重なりは無くならないのですか? 無くなるのなら無限ではありませんね
147 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 20:54:43.67 ID:ASx8K7vaa.net] 2つの四角が重なってたら最大5つの四角に分割するってことなのかな こんな関数用意して全組み合わせのstaringが分割しなくなるまでぶんまわす List<staring> 分割処理(staring a, staring b) { (aとbが重なってたら分割して返す)}
148 名前:sage [2021/12/22(水) 21:36:42.01 ID:3dt5vZu90.net] >>133 ありがとうございます
149 名前:デフォルトの名無しさん [2021/12/22(水) 22:51:01.68 ID:LzRptcUf0.net] 携帯なので伝わるかあれですが、まず元リスト(oLst)を 昇順に並び替えた上で下記のループを通すと1個に対して1個の重なりに関しては問題ないんですけど、2個3個と重なるともちろん無理なんですけど、、、、 ====================== for oLst ループ ※数値変数格納 if nLst.Countが0はoLst[i]をadd else for nLstのloop ※数値変数格納 ※oLst変数とnLst変数で重なり計算 計算結果でnLst書き換え、追加 ======================
150 名前:デフォルトの名無しさん [2021/12/22(水) 23:11:35.00 ID:jK1jR4AH0.net] ロジック(頭)の問題だからスレチ
151 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 00:31:07.80 ID:OWAFmQuW0.net] 重なってたらどうするん? 重なってたら重ならないように移動って処理なら無限ループありえるよ そもそも与えられた領域に対して四角形の面積のが大きかったらどう処理しようが重ならないようにするのは不可能でしょ
152 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 01:52:30.77 ID:xiJKAqfg0.net] 質問者c#使う気ナッシングでワロタ
153 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 06:06:41.21 ID:9nVKwS0QM.net] 学校の課題が出る季節なのか?
154 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 09:21:59.12 ID:QC2UxaCs0.net] >>139 返信ありがとうございます。 やっぱりどこかで取ってからDIしたほうがいいですよね .NET 5 まではStartupでいろいろやってたんですが、 .NET 6 のASP.NET Core WebだとStartup.cs自体やConfigure周りがないんですよね・・・ (少なくともプロジェクト作成時点で) なので起動後、URLアクセス時点でコントローラに直に行ってるように見えます・・ .NET 6のググラビリティもそんな良くないですが、 DI自体はbuilder.Services.AddTransientあたりでできているので、そっちで出来ないか、 最悪はStartupを自作出来ないかまた調べてみます!
155 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 09:47:09.94 ID:lsirm1I00.net] >>140 君はspanの実態がchar[] strと知ってるかもしれないけど言語側からはそんなこと分からないからそれは無理だね char[]含めマネージ型はアンセーフな方法で作る事は不可能なので、もしそのspanの実態がstackallocとかだとしたら大変な事になるし どうしてもやりたいならMemory<T>を使えばできる
156 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 14:18:00.17 ID:D5zS0GJt0.net] >>151 .NET6でもStartupがC#9.0のトップレベル構文に変わってProgram.csに組み込まれただけでしょ? 例えばJWTならProgram.csで以下のように検証処理を登録可能じゃないのかな using (var serviceScope = app.Services.CreateScope()) { services.AddAuthentication( JwtBearerDefaults.AuthenticationScheme ).AddJwtBearer( options => ほげほげ); }; でservice取得して.NET5以前のConfigureServices相当の処理が出来ると思うが。 (というか出来ないと困るw)
157 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 14:20:58.23 ID:D5zS0GJt0.net] services取得する文が抜けてた失礼 using (var serviceScope = app.Services.CreateScope()) { var services = serviceScope.ServiceProvider; services.AddAuthentication( JwtBearerDefaults.AuthenticationScheme ).AddJwtBearer( options => ほげほげ); };
158 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 16:52:51.25 ID:QC2UxaCs0.net] >>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にしても複雑になっててちょっとな・・・
159 名前:デフォルトの名無しさん [2021/12/23(木) 17:22:50.07 ID:ZRc9iK9X0.net] >>152 なるほどです、ご解説ありがとうございます Memory<T>の方も調べてみます
160 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 13:32:10.30 ID:XCrVpQjR0.net] オブジェクトをバイナリで直列化するにゃ結局どうすりゃええんじゃ。 binaryFormatterはASPじゃ使えんし、nugetで見つけたBinarySerializerも すぐ無限ループで止まるし遅いしで使えなさそう。 JsonSerializer感覚で使えるバイナリのシリアライザは無いんか……
161 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 14:34:05.08 ID:dgPpP4/Qa.net] バイナリであることに意味があるとは思えないので(だって全てはバイナリだから) 要するに吐き出すサイスが小さい and/or 高速であればいいんだよね? いや答えは持ってないけどw
162 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 14:52:18.99 ID:QunxCEetM.net] MSは廃止されたWCFの代替としてgrpcを推奨してるから、バイナリ形式のシリアライザはprotobufでいいんじゃね
163 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 16:56:42.12 ID:XCrVpQjR0.net] >>158 せや。今ワイは差分データを管理してオブジェクトグラフの去就を眺められるようなアプリを作っとるんやが、 バイナリにすりゃ20バイトのデータがJsonを経由すると5倍とかに膨れてまうんや。 そんだけ差があると1000オブジェクトの各1000差分で100MBとか差が出ちまうわけで。 ここをもっと高圧縮+高速展開できるフォーマットにしたいんや。
164 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 16:58:00.07 ID:hnRiR98X0.net] し、し・・・尻洗い座
165 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 16:59:17.78 ID:dl4nCBdHa.net] あのclassもこのclassもなんでもかんでもシリアライズしたいんだ、じゃなくて特定のデータか ならbinarywriterで十分だろ というか、binaryformatterよりもはるかにいいだろ
166 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 17:03:08.03 ID:XCrVpQjR0.net] binaryWriterでやりくりするにもインスタンスが持ってる別のオブジェクトの参照をどうするか問題が面倒すぎるやろ。 binaryFormatterならその辺はスルーできるわけで。
167 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 18:37:43.23 ID:7pq3d27z0.net] >>163 MessagePack for C#
168 名前:デフォルトの名無しさん [2021/12/25(土) 11:18:28.56 ID:/ADmtxYCd.net] フォームにいろいろ書き込んだ内容を印刷したんですけど、フォーム直印刷だとリストビューとかあるので見きらないんで、なんかいい方法ないですか? Excelに貼るとかですかね?
169 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 13:13:26.63 ID:R3AeJQpZ0.net] >>160 速度、データサイズ共に最高な汎用シリアライズフォーマットはGoogleが開発したProtocol Buffers
170 名前:デフォルトの名無しさん [2021/12/25(土) 15:24:03.77 ID:sZ4+jXNJ0.net] >>161 パナソニックがお勧め。
171 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 16:31:25.59 ID:lta8bYVGa.net] >>165 GDI+の印刷は多少面倒くさいけど別に難しくはない。 好きなように自分で実装するのが一番じゃないの?
172 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 18:32:48.38 ID:R611sM/xr.net] WinFormsのデスクトップアプリ開発でデスクトップアプリ内に組み込むデータベースはSQLiteしかないですか? むしろSQLiteが最適ですかね?
173 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 18:57:35.10 ID:uQo3kTST0.net] >>169 accessのファイル形式のmdbとかaccdbとか
174 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 19:33:35.62 ID:bx014roB0.net] >>169 LiteDBもSQLiteと同じシングルファイルだから運用楽でオススメ
175 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 19:57:51.53 ID:R611sM/xr.net] >>170 >>171 ありがとうございます! その後調べてSQLiteが定番っぽいですね 信頼性と速度も速いですし
176 名前:デフォルトの名無しさん [2021/12/25(土) 20:10:02.35 ID:/fiswOOz0.net] >>172 馬鹿って人の言うことに耳を傾けないから馬鹿なんだよな
177 名前:デフォルトの名無しさん [2021/12/25(土) 20:37:46.29 ID:gvd3przGa.net] こいつが部下だったらちょっとキレるかもしれんw
178 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 20:42:32.18 ID:5ppS8Aaq0.net] 理系ってバカ文系にいくら説明しても無駄だと散々経験してるから無視するよね。
179 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 20:43:40.19 ID:Ba+2nHZ/a.net] litedbとかaccessよりsqliteの方がよほどいいからな。注意しないと激遅だけど
180 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 20:46:17.70 ID:R611sM/xr.net] >>173 なんか変なこと言いました? 教えてくれた4つを調べて比較したんですが
181 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 20:48:41.15 ID:FMuPTmPe0.net] redisを使うのです
182 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 21:00:27.06 ID:5ppS8Aaq0.net] 正直、褒めてるのかディスってるのか分からないレスだよな。
183 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 21:00:28.06 ID:KekUyy+Z0.net] 信頼性いうならSQL Server LocalDBじゃないの
184 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 21:21:27.23 ID:PUQlITfY0.net] >>180 それ組み込みDBじゃないから SQL-Server Compact Edtion はまだ提供されてるけど開発止まっちゃてるしねぇ
185 名前:デフォルトの名無しさん mailto:sage [2021/12/26(日) 11:01:59.91 ID:bwDwv7pP0.net] ブラウザとか、たいていのアプリは、SQLite
186 名前:デフォルトの名無しさん mailto:sage [2021/12/26(日) 11:39:00.73 ID:/Mcnum8Y0.net] アプリの設定の保存に便利とか?
187 名前:デフォルトの名無しさん mailto:sage [2021/12/26(日) 11:43:30.10 ID:Ep2AbKxF0.net] そもそもVisual Studio自体がSQLite使ってるし https://qiita.com/h_matsumura/items/e1597a985de25e2ea9c8
188 名前:デフォルトの名無しさん mailto:sage [2021/12/26(日) 11:50:44.60 ID:/Mcnum8Y0.net] そういえばATOKのジャストシステムって、内部DBは昔から自社で抱え込んでるだけだっけ?
189 名前:デフォルトの名無しさん mailto:sage [2021/12/26(日) 12:01:04.09 ID:+dhDC6900.net] ちなみにSQLiteはWindowsならwinsqlite3.dllとして組み込まれてるから別途dllをダウソする必要なくDllImport("kernel32.dll")と同じ感覚で使える winsqlite3はstdcallだから尚更何も設定せずに呼べる 逆にオフィシャルsqlite3.dllはcdecl呼びなので注意 まぁ今時ネイティブ呼びなんて一々する奴はおらんか
190 名前:デフォルトの名無しさん mailto:sage [2021/12/26(日) 12:35:17.11 ID:CeLvnh/P0.net] 個人的にはFirebirdがEmbeddedでもC/Sでも使い方変わらなくてとても扱いやすいけど まあ誰も使ってないからなあ
191 名前:デフォルトの名無しさん mailto:sage [2021/12/26(日) 14:15:59.80 ID:3V1vzGfad.net] >>186 nugetでラッパークラス持ってこればいいだけでしょ
192 名前:デフォルトの名無しさん [2021/12/26(日) 18:59:54.98 ID:XSCzp0/m0.net] チキンマックナゲット? あれバーベキューソース以外はうまくないよね
193 名前:デフォルトの名無しさん mailto:sage [2021/12/26(日) 19:19:54.19 ID:0tkG5TaRd.net] >>189 C#er でnuget知らないのはモグリだね
194 名前:デフォルトの名無しさん mailto:sage [2021/12/26(日) 19:21:20.78 ID:za+d+iaN0.net] >>189 マスタード結構好きやで
195 名前:デフォルトの名無しさん [2021/12/27(月) 09:55:41.47 ID:wVOMt1/ia.net] me too
196 名前:デフォルトの名無しさん mailto:sage [2021/12/27(月) 11:45:32.82 ID:vQCGjWOK0.net] マックはやっぱり朝マック ソーセージマフィンとハッシュポテト最高
197 名前:デフォルトの名無しさん mailto:sage [2021/12/27(月) 11:50:50.36 ID:70kYKKIvM.net] ここ1年ぐらいで急に最近もの忘れが増えた なんでだろう カルボナーラのレシピ間違えて大失敗 (´Д`)ハァ…
198 名前:デフォルトの名無しさん mailto:sage [2021/12/27(月) 23:31:50.52 ID:j+U+mLOY0.net] >>194 シチューじゃないんだけど シチューでも美味しいだろ?w
199 名前:デフォルトの名無しさん mailto:sage [2021/12/28(火) 03:27:40.46 ID:fTNrE9qna.net] キャラメルみたいな奴:それはヌガーや Xファイルの...:それはドゲットや >>194 フルスクラッチで作らんでもレトルトで十分おいしいねw ベーコンとブラックペッパーを足せば
200 名前:デフォルトの名無しさん mailto:sage [2021/12/28(火) 14:41:54.41 ID:KhNUA+lU0.net] .Net 6 を利用してlinuxで開発することは不可能ですか? ほとんどWindowsの記事しかないのですが、できないと考えていいでしょうか?
201 名前:デフォルトの名無しさん mailto:sage [2021/12/28(火) 14:42:14.18 ID:KhNUA+lU0.net] .Net 6 を利用してGUIソフトをlinuxで開発することは不可能ですか? ほとんどWindowsの記事しかないのですが、できないと考えていいでしょうか?
202 名前:デフォルトの名無しさん mailto:sage [2021/12/28(火) 15:07:47.70 ID:x0tKn+Lqa.net] .net6はlinux対応してるし、linux対応のvscodeなんかもあるから十分linux完結でできるだろ やったことないからどんなトラブル起きるか知らないけど
203 名前:デフォルトの名無しさん mailto:sage [2021/12/28(火) 15:48:12.29 ID:nNq9VLvH0.net] コンソールとかならできると思うけど、GUIはどうなんだろう? Xamarin.Formsとかでいけるんかね?
204 名前:デフォルトの名無しさん mailto:sage [2021/12/28(火) 16:09:42.66 ID:onzdS06W0.net] unoというUWPアプリを作ると、スマホやリナックス、webに翻訳してくれるソリューションがあるな
205 名前:デフォルトの名無しさん mailto:sage [2021/12/28(火) 16:26:15.60 ID:I0zktY0qM.net] AvaroniaUIってどうなったんだ マイナーすぎて消えた? XAMLじゃ流行らんよな。。。
206 名前:デフォルトの名無しさん mailto:sage [2021/12/28(火) 16:29:45.08 ID:x0tKn+Lqa.net] mauiすら忘れ去られてる感じだな
207 名前:デフォルトの名無しさん mailto:sage [2021/12/28(火) 16:39:43.27 ID:X7A0KCITM.net] XamlもBlazorも微妙なんでXMLリテラル導入してJSXパクってCSXとかやれば良いのに
208 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 00:23:49.09 ID:CdP0np+t0.net] >>202 最近 git credential manager で採用されたから君も実は使ってるんじゃない?
209 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 00:52:47.99 ID:O0eaohY80.net] guiはラズパイでwinformが起動はしたけどちょっと動かしただけでアレがねーコレがねーでコケまくったので諦めた コンソールアプリはサーバ用途でcから置き換えたりと普通に使ってる
210 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 10:57:21.23 ID:BXs4L8uGr.net] なんでGUIって一向に解決しないんだろ WinFormsがゴミだったからIEObjectかなんかでブラウザ表示させてそこにhtmlとcssのGUIをつくったことあったけどそれも手間で微妙だった
211 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 11:23:01.28 ID:8IhoLKLed.net] >>207 MS的には既にツール系はElectron、業務系はWebで解決してるからだよ 本気でWinUIが成功するとか社内でも誰も信じてなさそう
212 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 12:23:55.88 ID:Ra2a7YlyM.net] エレクトロンは遅いからなー 見た目もそこそこで速くて開発が楽なフレームワークならまだ需要あると思うけど
213 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 12:34:02.62 ID:YT6dcuk4a.net] 一時期はGUIアプリのuiをwebにするの流行ったけどそれも消えたな 結局素のwinformで十分 マルチプラットフォームでのGUIアプリはそもそも需要がない
214 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 13:49:36.52 ID:FEkVVVGta.net] 15年以上迷走してる最大の原因はたぶん大企業病だね バルマーさんが「デベロッパー」連呼しなくなった頃でもあるよね あと、ラピッドリリース的なアメリカ人好みの「ノリ」もよくない。 使えねーから利用者が増えず利用者が増えないから〜の悪循環の原因になってる。 たまたまC#と.NETは割とうまくいったけど他はだいたいこれで消えてるよね
215 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 15:42:21.72 ID:CdP0np+t0.net] >>208 TeamsはElectronを捨ててWebview2に移行したし、MSはそういう流れだよ
216 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 17:53:05.01 ID:BXs4L8uGr.net] GUIはWebでいいから裏はc#ってのはないの? Electron.Netってあったみたいだがどういうのかは知らん
217 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 18:55:45.23 ID:CdP0np+t0.net] >>213 Webview2
218 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 19:14:43.10 ID:BXs4L8uGr.net] >>214 ガワはWinforms、フロントGUIはWebView2でReact、裏側はc#って可能?
219 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 19:21:08.49 ID:CdP0np+t0.net] >>215 できるよー https://itnext.io/write-a-desktop-app-with-react-typescript-asp-net-core-and-webview2-3a15daef4d64
220 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 20:00:49.32 ID:BXs4L8uGr.net] >>216 ありがとう! 素晴らしすぎる! これで長年求めていたものがすべて作れそうだ
221 名前:デフォルトの名無しさん [2021/12/29(水) 20:52:17.04 ID:Nt8x11Lh0.net] 間違いなく理解力しとらんだろうな
222 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 22:09:38.99 ID:1mZddh0b0.net] MSはwinformsをブラッシュアップするだけでいいのに 他のことに気を取られてばかり
223 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 22:54:54.27 ID:BXs4L8uGr.net] >>218 よく読んだらちょっと違うかも 実行環境にわざわざNode.jsをインストールしないといけない時点でElectronより面倒 あとバックエンドがc#ならNodeはなんのために入れるんだ?
224 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 23:14:59.32 ID:wkYL84Sf0.net] >>220 そんなもの要らんだろ。 create-react-appで作ったアプリをそのまま実行する気なの? いわゆるガワネイティブにするならaspnetcoreを使う必要も無い。
225 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 23:31:22.38 ID:qvydRR790.net] >>210 消えてない消えてない BADUSBがあるからUSB経由でデータが持って来れないから WEB画面でデータ登録させるのは現役よ ルータ設定みたいな画面出る
226 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 23:32:05.16 ID:a/yruJDS0.net] >>221 バックエンドはC#で書きたいという要件なんだからそんなこと言っても意味ない
227 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 00:18:07.99 ID:bIp4jvLE0.net] >>223 別にasp.net coreで受けんでもC#のメソッドとWebView2内のJavaScriptのinteropはできる。
228 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 00:41:07.70 ID:zcLz16Vn0.net] >>224 そういうことじゃなくてサーバーサイドのDB処理などのビジネスロジックをC#で書きたいとか普通にある要望だろ
229 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 00:57:41.55 ID:aPDyoOjbr.net] あーすまんやっぱできそうだね https://qiita.com/NagaJun/items/baf00494e0841a5e767e >>225 そうそう バックエンドはc#でフロントはjs + React + bootstrapなどのcssフレームワークがいい 別にNode.jsでもいいんだがそれだともはやElectronになってしまうしこのスレ的に意味がない とにかくWinFormsだとGUIが限界だしかといって今更wpfやuwpは使いたくない
230 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 03:45:43.54 ID:bIp4jvLE0.net] あ、これはすまん、完全に誤解してたわ。
231 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 05:11:02.37 ID:X93R+eJ50.net] いいってことよ
232 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 05:24:01.14 ID:ULSEZSm40.net] 優しい世界
233 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 14:43:07.83 ID:SV8D0i0R0.net] ツールバーはアイコン集めと選択が面倒で好きじゃない
234 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 15:52:58.20 ID:bIp4jvLE0.net] しかしWebView2、割と良いな。 XamarinのWebViewもEdgeベースになってるので、ガワネティブはホントに捗るかも。
235 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 18:29:16.67 ID:fY9tDQGH0.net] WebView2ってhtmlやcss、javascriptの知識が必須でしょ? 一から覚えるのは少し敷居が高すぎるんだよなぁ
236 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 19:10:45.85 ID:X93R+eJ50.net] cssはなくてもええんやで
237 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 19:31:49.55 ID:5ETdhzffr.net] htmlやcssやったことがないならムリだろうね 俺は25年くらいやってるからむしろ何も考えずに作れる
238 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 19:34:16.23 ID:bIp4jvLE0.net] >>232 XAMLで日本地図書いてホクホクしてた連中にとっては割と朝飯前だと思うぞ。
239 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 20:30:29.11 ID:Q51k9VIp0.net] どっちにしても今時htmlとjsは避けて通れないやろ スクレイピングツールの一つや二つは作るだろうし
240 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 20:32:40.49 ID:JgkxYzDs0.net] bootstrap5は使えないの?
241 名前:デフォルトの名無しさん [2021/12/30(木) 20:41:45.42 ID:eW25y3/J0.net] 表 html css javascript 裏 C# で開発するのって効率的なのか?
242 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 20:46:42.24 ID:Zu0xfojoM.net] フロント開発はReactが多分ベストなんで仕方なくJSかAltJSを使います バックエンドは強い制約がないので好きな言語を使えばいいでしょう そして自由に選べるならC#より快適な言語なんてありません
243 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 20:47:53.26 ID:QTRHqfCgM.net] >>238 まあ開発効率はともかく、今更XAML系のゴミを覚えるよりはスキルの価値を加味すればマシなんじゃないかな JSに慣れたらそのうち裏もTypeScriptで書きたくなるだろうけど
244 名前:デフォルトの名無しさん [2021/12/30(木) 20:53:16.32 ID:eW25y3/J0.net] 時代遅れのWindowsフォームからそろそろ逃げ出す先がほしいってことだよね Web技術が好きならReact Native for Windows + macOSが選択肢になるんじゃないかな
245 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 23:12:19.19 ID:ULSEZSm40.net] c#スレですよ c#で積み上げたライブラリを別言語で書き直すのヤダ!派に救いの手を
246 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 00:36:27.02 ID:geAImU1qr.net] >>238 リッチなGUIにしたいときだけかな
247 名前:デフォルトの名無しさん [2021/12/31(金) 03:13:26.16 ID:AHpR20H50.net] 何年か前からだけどC#は目的がはっきりしてる人が使う言語になった感じがする スキルの価値とか気にする人には全く向かない システムプログラミング用の言語とスクリプト言語だけあればいい世界になってきた感じ C#のような立ち位置の言語の利用シーンが広がっていくことはないのではないだろうか
248 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 03:41:36.53 ID:ScgFuRuP0.net] 何故そう思ったのかわからん 全然ピンとこない
249 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 09:41:30.53 ID:ApQoIWIb0.net] >>238 いずれWebでやる前提ならいいけど、スタンドアロンで動かすだけなのに わざわざそんな構成にするのは手間が増えるだけだな。
250 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 09:45:47.30 ID:1BOJjA0/0.net] >>246 スタンドアロンの話はしてないだろ
251 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 09:48:56.35 ID:XRzC6nSy0.net] スタンドアロンの話だろ
252 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 09:50:52.09 ID:i/j6j8jEa.net] 角が丸い四角や吹き出しや、そういうのGUIを純粋なC#で作るの面倒なんだよ そういうときにhtml/css/javascript使うと簡単に作れる。スタンドアロンでもそういう構成にすると手間が減るんだよ 俺は手間かけてc#でやる方が好きだけど。html使いだすとソースがごちゃごちゃして最悪だしオーバーヘッドも大きいから
253 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 10:03:43.42 ID:xJV3dJ+lM.net] https://zenn.dev/okazuki/articles/mobile-blazor-bindings これはどう?
254 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 10:54:23.68 ID:7PtxpeiFr.net] >>250 良さげ!
255 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 13:24:39.29 ID:FNrpfdyG0.net] >>246 手間が増えるだけか? 俺は楽だけどな、この方法。
256 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 14:04:55.17 ID:i4wD88hA0.net] WinFormsで何の問題もない
257 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 14:36:27.18 ID:e+iXUqyka.net] >>249 それはちょっと変な話で、自分の手でゼロベースで作るなら C#の方がはるかに簡単で可読性も高いと思うw
258 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 14:43:15.34 ID:e+iXUqyka.net] >>252 こういう話は「コードは書く物だ(つまり書いたら終わり)」 と思ってる人と「コードは読む物だ(つまり他人に理解しやすくなければ無意味)」 と思ってる人で意見が割れるw
259 名前:デフォルトの名無しさん [2021/12/31(金) 14:52:08.44 ID:AHpR20H50.net] コードで角を丸くするのってそんな大変だったっけ・・・
260 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 15:02:56.34 ID:PZrDxaJGa.net] 角丸めるだけなら簡単だなw でも丸めるだけだとダサいだろ。そういうデザインのことだよ
261 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 15:04:09.93 ID:ONP3ZHucM.net] こういうビジュアルデザインの実装に対する方法論って、ガチのWeb開発をやったことがある奴とない奴とでは話が通じにくいんだよね この線とこの線は何ptの太さで間に何ptの隙間があって色は#aaff12でとか指定されるんだぞ
262 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 15:13:44.40 ID:+14EUf560.net] やっつけ専用言語にデザインこだわってもなぁ。
263 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 15:42:51.31 ID:ApQoIWIb0.net] そもそも、一貫したUIガイドラインに沿うべきGUIと、それぞれのサイトで独自色を出したいWebの方法論って かなり方向性がq違うからあまり混ぜないでほしいがなぁ。
264 名前:デフォルトの名無しさん [2021/12/31(金) 15:43:49.86 ID:2Zk/vij+0.net] 混ぜたのはマイクロソフトでは?
265 名前:デフォルトの名無しさん [2021/12/31(金) 15:45:01.75 ID:AHpR20H50.net] >>258 その程度なら普通にできない?
266 名前:デフォルトの名無しさん [2021/12/31(金) 15:52:24.59 ID:2Zk/vij+0.net] 今年は厚生労働省が「マスクの供給は十分です」と発表したのでマスク買い溜めて、厚生労働省が「トイレットペーパーは無くなりません」と発表したので即座にトイレットペーパー買いだめしたので、一年中ウンコできたわ。 来年もこの調子で厚生労働省の流すデマに惑わされないよう生きようと思います。
267 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 16:13:21.59 ID:ONP3ZHucM.net] >>262 できるかできないかで言えばそりゃできるだろうね 今日の折込チラシのうちで一番凝ったデザインのものを完全再現した画面を作るのを想像してみ で作って見せたらここの角はやっぱり丸くしないとか影付けて強調したいとか変更が入るんだよ WinFormsだと技術的に対応しにくい例をあげるとすれば、例えばテキストボックスを角丸にしたとして、 統一感を持たせるためにその隣りにあるボタンも同様のデザインにしたくなったとする こういうのはCSSなら一瞬だけど、WinFormsなら一大事だよね
268 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 16:14:58.78 ID:FNrpfdyG0.net] >>255 これはわかる。 俺はロジックではない部分は積極的に外に出してしまいたいし、誰でもできるようにしておきたいなと思う。 そういう部分で、HTML+CSSでテンプレート作るのは滅茶苦茶ラクだよなぁって思ってる。 角丸ぐらいだったら良いんだけど、みんな無茶言ってくるからな。
269 名前:デフォルトの名無しさん [2021/12/31(金) 16:16:21.80 ID:2Zk/vij+0.net] その程度なら問題なくない?
270 名前:デフォルトの名無しさん [2021/12/31(金) 16:17:05.46 ID:2Zk/vij+0.net] カレーは飲み物って人は?
271 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 16:30:43.26 ID:ApQoIWIb0.net] >>252 まずC#とJSの2つの言語を使うってだけでもディスアドバンテージでかいと思うがな。 デバッグやテストも手間が増えそうに思うけど、UIフレームワークは何を使って?
272 名前:デフォルトの名無しさん [2021/12/31(金) 16:47:15.22 ID:AHpR20H50.net] まだ時代遅れのWinForms使ってる人いたのか あれはデザイン性やUXを捨てたものしか作れないから使わないほうがいい
273 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 16:56:22.55 ID:4KQ1p4JtM.net] デザイン性www UXwwwww
274 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 16:57:44.41 ID:FNrpfdyG0.net] >>268 実のところここは凄く楽になる。 C#側は正しくデータを入出力できる事を確認すれば良い。 JS側(というかHTML側)は与えられたJSONなりを検証して画面を正しく構築して、C#側から何かjsをevalする可能性があるならそれを全てこなせることを確認するだけ。 パキッと分けられるしどちらも自動化できる。 UIのフレームワークは業務ではReact使うことが多いけど、メンツ的な問題で個人的にはガワネイティブにはVueの方が楽だと思ってる。 流行に乗るならSvelteでも良いのでは?
275 名前:デフォルトの名無しさん [2021/12/31(金) 17:03:51.48 ID:AHpR20H50.net] HTML以下でしょWinFormsは
276 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 17:10:31.19 ID:ApQoIWIb0.net] >>271 それってただのWebでは? 俺はC#のGUI(Forms or WPFもWeb(React+express)もやってるけど、デバッグやテストはやっぱり スタンドアロンのC#の方が楽だと感じている。 それが>>238 みたいにGUI側をhtmlにしてもっと楽になるんであればと思って訊いてみたけどどうも違うようだな。
277 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 17:20:57.32 ID:FNrpfdyG0.net] >>273 UIがWebかどうかなんかあんまり関係ないのでは? ローカルのリソース使うんだし実際あんま関係ないと思うが。 CordovaやelectronをWebと言うかどうか、みたいな問題に聞こえる。 正直WPF以降であれば、慣れの問題では?と思うけどなぁ。
278 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 18:17:17.40 ID:ApQoIWIb0.net] 定義はどうでもよくて、気になったのはのは実際にFormsやWPFより楽になるのかなんだが。 スタンドアロンアプリの話をしているわけじゃなさそうだからもういいけど。
279 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 18:37:19.76 ID:CE1IM8E70.net] >>258 むしろそこまでキッチリ指定されてるなら面倒ではあるけど難しくはないだろ
280 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 19:00:48.11 ID:FNrpfdyG0.net] >>275 スタンドアロンアプリの話してるよ。 ガワネイティブ理解してないだけでは…?
281 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 19:06:50.70 ID:54dO0PUs0.net] C#で作られたDLLでSafeFileHandleを返す関数があるんだけど C++で呼び出すラッパーDLLを作ろうと思うんだけどどうするのがベターなんだろうか ラッパー側でSafeFileHandleを格納するvectorとか作っておいて Openで格納、Closeで削除するって感じでいいのだろうか
282 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 19:07:51.75 ID:ApQoIWIb0.net] Svelte使うスタンドアロンアプリってのは興味深い。
283 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 19:11:37.16 ID:DclmO4XRd.net] >>278 C++/CLIだったら変に集中管理とかしないで普通にRAIIなラッパークラス作ればよくね
284 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 19:18:48.86 ID:FNrpfdyG0.net] >>279 それ自体は既にある。 WebView2でやるのがちょっと面倒なだけで。 https://dev.to/khangnd/build-a-desktop-app-with-electron-and-svelte-44dp
285 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 20:06:32.82 ID:ApQoIWIb0.net] それでどこまで楽になるのか興味深かったんだが >WebView2でやるのがちょっと面倒なだけで。 本末転倒やん
286 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 20:09:14.87 ID:+14EUf560.net] 楽なのはVB6、winformあたりが限界で それ以上何かやろうとしてもどんどん面倒になるだけだな。
287 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 20:11:29.60 ID:FNrpfdyG0.net] >>282 お前は本当に何も理解してないんだな。 WPFでつくる方がよっぽど面倒なんだよ、そもそも。 BlendとモックのDLL使ってコントロール作って貰ってたのが、Web技術で作って貰えるだけでも相当工数下がるの。 デザイナー×制作にでも作れるんだから。
288 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 20:12:57.99 ID:FNrpfdyG0.net] >>283 MSがあれだけBlendを振り回して叫んでた「デザイナーと技術者で役割分担」という絵空事を解決したのは結局これというね。
289 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 20:14:09.02 ID:+14EUf560.net] 昔はASP案件が多かったから経験ある人はWEBまわりの学習コストが下がるがWPFはね。
290 名前:デフォルトの名無しさん [2021/12/31(金) 20:26:28.10 ID:AHpR20H50.net] このスレは能力低い人が多いからWinForms以外をすすめても意味がない あれしか理解できない
291 名前:デフォルトの名無しさん [2021/12/31(金) 20:29:05.37 ID:F5O9+7Cr0.net] WinFormsで事足りる案件をそれ以上でやる意味なんてないからな
292 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 20:47:01.32 ID:ScgFuRuP0.net] なんかwinformに一族を滅ぼされた人がいるっぽいな
293 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 20:54:49.37 ID:ApQoIWIb0.net] >WPFでつくる方がよっぽど面倒なんだよ、そもそも。 >BlendとモックのDLL使ってコントロール作って貰ってたのが、Web技術で作って貰えるだけでも相当工数下がるの。 つまりhtml+jsの方が楽ってのはこういうふうにカスタムコントロールを作る前提での話なのかい? それとも、それがなくてもhtmlの方が簡単っていうことなのかい? こんなふうにどんどん後付け条件が出てくると話が迷走していけない。
294 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 20:59:35.03 ID:FNrpfdyG0.net] >>290 ほとんど全ての場合だよ。 カスタムコントロール作らない事の方が珍しいだろ。ペタペタと直接、素のコントロール置いて作ってるとか狂気の沙汰じゃん。 後付け条件も何も俺は最初からその想定で言ってる。 お前がどんどん原始的な例ばっかり挙げて後付け条件出してるんでは?
295 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 21:04:02.72 ID:+14EUf560.net] コモンコントロール以上の何かがほしいってそれはもうRICHなGUIですよ。 アナログメーターだのバーコードだのね。
296 名前:デフォルトの名無しさん [2021/12/31(金) 21:13:20.91 ID:2Zk/vij+0.net] >>289 それはお気の毒に。 仇討ちするなら助太刀いたしますぞ。
297 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 21:48:59.01 ID:M0GZ3VlB0.net] WPFは結局見た目重視の癖に他のデザインツールとの連携がゴミカスだったからな お前に食わせられるデータって何のアプリで作れるの?っていう根本的な問題が解決しない
298 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 22:31:41.34 ID:DunWig+Gr.net] flutterみたいにGUIが整備されていればいいだけなのにマイクロソフトには作れないのか https://codezine.jp/article/detail/15063
299 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 23:02:04.13 ID:M0GZ3VlB0.net] つか、データ内容から言ってイラレとの連携が必須なのにそこの対応がおざなりなのがいけない そして見た目にこだわらせるツールなら 全コントロールカスタマイズ可能にしろ もちろんイラレのデータで これができんからwebview2なんて使ってんだろそいつも
300 名前:デフォルトの名無しさん mailto:sage [2021/12/31(金) 23:38:40.48 ID:FNrpfdyG0.net] なんでイラレなの?XDとかFigmaとかでは? Storyboardで見ながら全カスタマイズ出来て当然かと。 デザイナーや制作にもそれができるからWebView2とかelectron使うんだが。
301 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 00:03:57.34 ID:s/VzubKG0.net] >>297 いや、俺が最近のツール知らんだけ まあ、アドビ製品で作れないと辛いと思うなってことで
302 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 00:04:02.95 ID:s/VzubKG0.net] >>297 いや、俺が最近のツール知らんだけ まあ、アドビ製品で作れないと辛いと思うなってことで
303 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 00:05:29.75 ID:pK4dI97g0.net] >>298 最近はAdobe製品あんまり人気ないよなって感じしてる。 デザイナーの人、だいたいFigmaかなぁ。人によっては直でCSS書いてくるよ。
304 名前:デフォルトの名無しさん [2022/01/01(土) 05:34:40.61 ID:zdHw19Xx0.net] >>292 メーターはCommunity Toolkitにあるな
305 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 08:49:17.03 ID:pK4dI97g0.net] このあたりが出来るのが楽。 https://observablehq.com/@d3/zoomable-sunburst JSのエコシステムは割と手厚くて、結構色々できる。 変わり種だと最近はこれも使った。今までだったら相当大がかりな仕組みになってた。 https://modelviewer.dev/ IEベースのWebViewだったら出来なかったんよね、これ。
306 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 16:57:15.57 ID:cbVZORXia.net] 何の話で盛り上がってるんだっけ? 結局MSは今後デスクトップは何使えって言ってるんだっけ? もうWin32を追放してUWPで統一する計画は頓挫してたよね?
307 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 17:38:08.24 ID:lDil4oeBr.net] MSは何も示せなくてユーザーたちが独自になんとかしようともだえてる
308 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 17:52:27.24 ID:cbVZORXia.net] >>304 やっぱりあいかわらずそうなんだね。 今後はこういう展開をしていきます、みたいなの(横文字で何って言ったっけ?) も一切ないんだっけ。
309 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 17:56:51.18 ID:gOXFnTf60.net] UWPってアレ結局なんなん? MSのうさんくさい説明見ても正体がさっぱり掴めんわ ちなXAML使い
310 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 19:05:01.23 ID:Je/lt7i4a.net] >>302 IEコンポーネントは初期設定がIE6になってるだけで、その制限解除するだけで使えるんじゃないのかな? 設定しないと使えないのは多かったけど、設定して使えないものがあった覚えはないな
311 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 19:09:06.13 ID:pK4dI97g0.net] >>307 IEコンポーネントはパフォーマンス悪すぎて大変だったんよ。本当に悪かった。 WebGL 2.0は全くダメだし。 そしてごく最近の記法が使えないので、古い書き方で苦労するかトランスパイラで相当トランスパイルしないといかんのだけど、これもこれで大変。
312 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 19:38:20.84 ID:FXZWUiqn0.net] そういえば、IEのコンポーネントって他プロセスから普通にDOM掴めたけど今のはそんなこと無いよな、さすがに。
313 名前:デフォルトの名無しさん [2022/01/02(日) 02:26:12.88 ID:XjOyUWVU0.net] >>308 VML使えや
314 名前:デフォルトの名無しさん mailto:sage [2022/01/02(日) 08:39:01.25 ID:i8dUNFkB0.net] >>309 今のIE11でも変わらない。Chromium Edgeは無理。
315 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 00:27:24.71 ID:qrnm2syfM.net] 結局DelphiやVB6を超えられなかったね
316 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 09:45:55.35 ID:eQW2AhJK0.net] ということにしたいのですね
317 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 09:53:42.79 ID:Nty+tcHi0.net] もったいないので私にください
318 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 10:54:19.16 ID:SmC4rDQma.net] はつみみです。
319 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 13:30:35.98 ID:lKbCt2OW0.net] C#でNewtonsoft.Jsonを使用して [272,1496922300000,1496934000000,"Y3913",true,"XA","XA","HSZ-HAC","HAC-DFS-WCY",1496913600000] のようなJSONを作成できますか? (数値と文字列の混合配列)
320 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 13:46:53.86 ID:AMytSBf5a.net] 名前なしのカンマ区切りだったらそれはcsvとして処理した方がはやいんじゃないのか
321 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 14:44:00.30 ID:5Qqik4MO0.net] >>316 全部文字列でいいじゃん
322 名前:316 mailto:sage [2022/01/03(月) 15:23:04.22 ID:lKbCt2OW0.net] echartsのガントチャートのデモです。 https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight このデモ用のデータが https://echarts.apache.org/examples/data/asset/data/airport-schedule.json なんですが、これをバックエンドのC#から渡したいのです。 >>316 はJSON構造の一部で、他に名前付きのデータも渡します。 なのでCSVはそぐわないかと思われます。
323 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 16:42:23.19 ID:JMA8ZT+Nd.net] >>319 CSV一行分をjsonのValueとして持てばいいんだよ
324 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 17:00:56.51 ID:0xi3No7I0.net] var objs = new { hoge = "hoge", fuga = new object[] { 272, 1496922300000, "Y3913", true, "XA" }, }; var json = JsonConvert.SerializeObject(objs); できない理由はないけどなんか他に条件とかありそうでアレだな
325 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 18:09:00.90 ID:lKbCt2OW0.net] >>321 おお、出来るんですね。 ありがとうございます、試してみます
326 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 18:12:39.51 ID:TMV+x4l+0.net] var json = 結局何の型だよってイライラくるよね
327 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 18:57:22.48 ID:GjMIBEAT0.net] >>323 Visual Studioだとvarの上にカーソル持っていったら型が表示されるだろ
328 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 20:14:18.47 ID:pwAwOJBp0.net] var: 無能発見機
329 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 22:52:28.05 ID:TMV+x4l+0.net] 型が分からなくてもソースが読み書きできる人が羨ましいわ。 どういう脳の論理構造してるのだろう。分からないまま読み進めるとかイライラしないの? 昔、『菊次郎の夏』って映画見て、映画見ながら、だから菊次郎って誰だよ?って 最後までイライラして発狂しそうになったの思い出したわ。ほんと糞な脚本だと思ったわ。
330 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 22:59:05.73 ID:/qjDMXVn0.net] 右辺見ろよ
331 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 23:54:17.33 ID:/ROio/0MM.net] インテリセンスとAPIデザインが優秀って前提はあるだろうね 適当に.で繋げてけばなんとなくコードが出来上がる 間違ったらコンパイルエラーになる だったらもうそれで型名は書かなくてもいいじゃない 型付スクリプト言語はその辺がまだまだ雑魚なんで型名をしっかり書かないと間違えるようにできてる
332 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 00:14:59.85 ID:fY9OVGa4a.net] >>326 いや、型がメソッド名や右辺式から推測しづらいと思ったら var使うなという方針は基本的には間違ってないと思うよw
333 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 00:16:29.87 ID:2Grj8syS0.net] >>326 なんでvarの上にカーソル持って行かないの?
334 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 00:23:52.35 ID:ufcanjsed.net] >>330 俺はvar推奨派だが、コードレビューでGitHub上で読むとかあるだろ? コード工の数が多いといちいち全部pullしてVSで開くとかやってられない
335 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 02:20:28.03 ID:f9obKWjH0.net] >>326 わからないままに何かしてない。 よめばわかるだろ。
336 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 09:52:16.17 ID:2gpItayR0.net] 326はC#の話じゃなくてジャバスクとかの話してるんだろ
337 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 10:52:36.05 ID:+AHJD1dV0.net] inai inai var !
338 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 11:04:23.12 ID:Qpyz6D0Nd.net] >>333 そういうことか 型推論は型が確定してるのに意味不明なこと書いてるなと思ってた
339 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 11:48:21.13 ID:Oz0E0ZFa0.net] 型が分からないとほんとイライラくるよな。 今回の反応でスルーできる奴の脳みその構造がだいたい分かってきたわ。わかったつもりで何も分かってない。 ジャバスクの話だ!! そういうことか!!! ←こいつらの脳の構造はこれなんだよ。馬鹿かこいつら…
340 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 11:52:23.41 ID:Hrzc5R7N0.net] >型が分からないとほんとイライラくるよな。 varは型が確定しています イライラしているのはあなたがバカなだけ
341 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 11:56:22.08 ID:698Ta9DA0.net] >>337 “いつ”確定するの?
342 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 11:58:40.79 ID:Oz0E0ZFa0.net] ジャバスクの話だ!!! varは型が確定している!!! ほんと馬鹿かこいつら…
343 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 12:00:45.54 ID:K01QBlyFd.net] >>338 コーディングした時点で確定してるよ varの上にカーソル持って行ったら確認できるだろ
344 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 12:01:01.01 ID:g8h7/5Pi0.net] >>321 から>>323 ときてジャバスクとか後付感半端ないわ こういうのとは仕事したくねーわw
345 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 12:07:12.39 ID:kSsP1HEHa.net] >>323 見たときに var json = こうあったとき、デコード後のclassが入ってることあったり、json stringが入ってたり、varやjsonなんて型や変数名だとわけわかんねーよ! って話かと思ったら全然違った。なんだこの流れ・・・
346 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 12:11:24.66 ID:Oz0E0ZFa0.net] これこれ。>>341 おれは一言もジャバスクなんて言ってないのにジャバスクの話にされて、 さらにはおれがジャバスクを後付したと妄信し、いきなり仕事したくないとかキチガイ妄想炸裂。 仕事先でこんなキチガイいたらガチで名誉毀損で訴えるわ。 これが型をスルーできる奴の脳の構造。リアルでアホだろ、こいつら…
347 名前:デフォルトの名無しさん [2022/01/04(火) 12:12:43.55 ID:IgSyCTXi0.net] ※現在は削除されています https://i.imgur.com/1WGlGRS.png
348 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 12:14:13.14 ID:K01QBlyFd.net] >>343 TypeScriptおすすめ
349 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 12:23:30.92 ID:CklunmhzM.net] TypeScriptは型ヒント付きスクリプト言語にはよくあることだけど型が嘘をつけるので積極的に使わない方がいい 「型がついてるから安心だ」と思っていたら実行時に違う型の値が入っていることがよくある なんなら生のJavaScriptの方が「型がないから全ての変数が信用できない」という前提に立てる分まだマシまである
350 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 12:29:36.62 ID:K01QBlyFd.net] >>346 それ言い出すとC++もreinterpret_cast多用で型の嘘つけるからなあ
351 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 12:42:28.79 ID:rprq1MIMM.net] >>347 まさにそれだね cppは名前付きのキャストを使い分ける習慣が広まってるから状況は多少、マシ TSにはanyとかいう負の遺産がある それにJSはそれ自身ではできることが少ない言語なのでインフラapiコールに頼りがちだ そこでanyを使いたくなくても多用するのでとにかく間違えやすい 自分がうっかり間違える可能性 チームメンバーが間違える可能性 ライブラリ作者が間違える可能性 とにかく間違いが起こりやすい なのでTypeScriptは使わないほいがいい
352 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 12:53:18.36 ID:rkCZbU1/0.net] ・間違ったコールバックの型付け ・間違ったasの使用 ・間違った.d.tsの使用 ・間違ったユーザー定義タイプガード TypeScriptで肩を間違える可能性があるのはこんなところかね。 まぁ、自分で使いこなせないものを使わない方がいいってのはその通りだが、 他人も同じように使いこなせないわけじゃないしな。
353 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 13:23:06.07 ID:b15zgk0OM.net] >>349 間違える余地が在ることが問題 特定の個人が使いこなせるこなせないという低次元な議論じゃない 型Aと書いたものが実際にはAでないという可能性が生じた時点であらゆるコードが信頼性を失い その検証のために心労とコストが増えて そして実際にバグが増える C#では例えば「DateTimeと書いた変数に実際にはstringが入っているかもしれない」などと考えてコーディングする人は誰もいない C#ではよほどのことがなければ基本的に型が嘘をつかないからそれで上手くいく DateTimeと書かれたらそれはDateTimeであってstringであることを考慮する必要はない しかしTypeScriptは違う 型は平気で嘘をつく Date型と書いた変数が実際は文字列だろうが数値だろうがお構いなしだ TypeScriptでは型が嘘をついていないことを確かめるには その型が嘘をついている可能性があるという前提でバリデーションを追加するか 依存してるライブラリの内部の隅々までソースを追いかけるか そういった対策をしなければならない それはあまりにも非生産的だ
354 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 13:31:23.12 ID:b15zgk0OM.net] function ExternalLibFunc(): string function example() { const s: string = ExternalLibFunc(); if (typeof s === “string”) throw new Error(“type errro”); // do something } これが安全なTypeScriptコード stringと宣言されたものを本当にstringかどうか確かめなければならない この確認はバカバカしいと思うがやらなければバグを踏む可能性がある でも全てを確認するなんて大変だ だからみんな確認を怠る そして実際にバグが発生する そういう言語なんだTypeScriptってのは
355 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 14:02:28.93 ID:4jDgn5Qw0.net] Form1csにイベントがたくさんあるので行数が多くなってしまうのですが 部品ごとにファイルを分けてコードを書く方法を教えてください
356 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 15:10:27.49 ID:v2mo/5h3a.net] >>352 メニューやツールバーみたいのがあったら イベントハンドラの数が増えること自体は仕方ない。 行数が増えて困ることは目的の場所を探しにくくなることだから、 対策は#regionディレクティブをうまく使って分類することぐらい
357 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 15:15:26.98 ID:2Grj8syS0.net] >>352 partial class
358 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 15:40:55.02 ID:y9M4FwJ2M.net] >>352 void HogeEvent(object s, EventArgs e) { //長いコード } ↑これを ↓こうする void HogeEvent(object s, EventArgs e) { _hoge.DoSomething(); } class Hoge { public DoSomething() { // 長いコード } }
359 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 16:14:54.64 ID:3sRZKpnOa.net] >>350 そうは言ってもc#だってobjectや継承あるからな・・・
360 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 17:04:00.85 ID:BWSRqAyGM.net] >>350 ネイティブ呼び始めたら嫌でもチェックせんか? タグ付きユニオンとか使い始めたらどうせそうなるし。
361 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 17:29:19.72 ID:XgG7cDH40.net] なんだ動的型付け言語が嫌いなだけか
362 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 17:41:00.66 ID:h9ISFI6AM.net] >>356 全く意味合いが異なる
363 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 17:42:21.35 ID:h9ISFI6AM.net] >>357 本来バリデーションが必要がないところでバリデーションが必要になることが大問題
364 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 18:00:52.01 ID:v2mo/5h3a.net] それはバリデーションじゃなくてバグのチェックだねw
365 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 18:24:36.74 ID:h9ISFI6AM.net] そだね TypeScriptdではそういうことも必要になってくる 言語上の欠陥なんだけどランタイムがJSだから永遠に解決しないだろうなこれ
366 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 18:24:37.24 ID:rkCZbU1/0.net] >間違える余地が在ることが問題 完全無欠な言語以外は認められないと? >型Aと書いたものが実際にはAでないという可能性が生じた時点であらゆるコードが信頼性を失い どういう場合にそのようなことが起きるかがわかってないんだろうね。結局使いこなしの問題。
367 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 18:27:22.35 ID:h9ISFI6AM.net] >>363 完全無欠な言語しか使わないとまでは言わない ただ大きな欠陥のある言語は使いたくない 感覚としてはその程度だね どういう場合に起こるか? それはあらゆる場面で起こりうる ライブラリすら信用できない
368 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 20:53:29.42 ID:f9obKWjH0.net] >>360 本来バリデーションは必要なのに必要じゃないと思い込んでるだけだろ。 カナリア置いたりした経験無さそう。
369 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 20:55:06.78 ID:f9obKWjH0.net] >>364 あるゆるは言い過ぎでは? ほとんどの場合信頼境界を越えるからかと。
370 名前:デフォルトの名無しさん [2022/01/04(火) 21:33:12.76 ID:e29mAngZa.net] formsのchartを使ってるんだけど、20系列くらいを100ms以下でリアルタイム更新って厳しいのかな 色々試したけど更新にどうしても時間がかかる。。
371 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 21:37:51.18 ID:I8DXoUzs0.net] >>365 c♯においてdatetime型の変数の中身がdatetime型以外である可能性があるの? 本来必要なバリデーションって何よ?
372 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 21:44:14.34 ID:rkCZbU1/0.net] >>364 Cのポインタだって使い方を間違えたら正しい型を示さないことになるし、C自身も安全でない言語と見做される こともあるが、それを分かったうえで正しく使う人はいるし実際広く使われている。そういうこと。
373 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 21:58:28.71 ID:f9obKWjH0.net] >>368 外部のAPIで1899年以前を扱いうる場合。
374 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 22:45:31.35 ID:mTPUUbcD0.net] >>367 サードパーティ製のチャートを探すことをお勧め 詳しくないから具体的な名前は特に挙げられないけど とりあえずScottPlotって名前を最近見かけたので試してみては しかし20系列もあると読みづらそうだな
375 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 22:57:39.12 ID:xZMfmUxua.net] >>367 ただの折れ線グラフとかでビジュアル的に凝る必要がなければ UserConrolから自分で作った方が早いかもね。 昔散々そういうのやってたけど、やってみると案外簡単だ。 WPFを選択するとパフォーマンス問題にぶち当たるから注意。
376 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 23:04:51.13 ID:hJBi5qqI0.net] おすすめ本あります? アマゾンで独習を見たのですが第4版は不評、第3版おすすめとなってたんですが 2010年出版っというのが引っかかっているので他を探しています。 スキルはPythonでPyGameのサンプルを打ち込みつつ、解説を見て勉強してるレベルです。 その他言語の経験はなし!
377 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 23:13:01.18 ID:0nFT+Tq8M.net] >>365 違う 本来バリデーションは必要ないのにTSでは(というか型がゆるゆるのスクリプト言語全般だが)余計なバリデーションが必要ということ string x = func(); と書いた時にC#ではxが本当に文字列であることを検証する必要はない nullになっていないか、文字列が特定の書式を満たしているか、といった心配はあるだろう しかし、xにintが入ってる可能性は考慮する必要はない TSではxにnumberが入っているかも、という可能性を考慮しなければならない これが本来やらなくていいはずのバリデーションだ これは型が嘘をつくから起こりうること TSの代表的な欠陥の1つだ
378 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 23:14:48.44 ID:0nFT+Tq8M.net] >>369 詭弁 話を逸らすな
379 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 23:19:57.46 ID:Oz0E0ZFa0.net] var x = func(); var y = x.func(); 型が分からないとイライラくるよね。 スルーできる奴の脳みそってそ
380 名前:れをすべて妄想で埋めてることが社会実験で実証された。 [] [ここ壊れてます]
381 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 23:20:34.56 ID:rkCZbU1/0.net] >型が嘘をつく この言い回しをよっぽど気に入っているようだけどw当然TypeScriptが勝手に嘘をつくわけはなくて、 嘘をつかせたのはそれを使うプログラマ自身だわな
382 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 23:24:23.97 ID:Hrzc5R7N0.net] >>376 それはメソッド名が糞なだけだよ
383 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 23:30:10.65 ID:r+SDF27Td.net] わざわざ宣言した行まで戻って型確認するのか
384 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 23:30:19.98 ID:QHt6N4Fh0.net] 相変わらずコードが読めてもテンプレ読めない人が多いな
385 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 23:36:38.21 ID:0nFT+Tq8M.net] >>377 TSが勝手に嘘をつくことはないがC#と比べて嘘をつかせるように導くのに長けている プログラマは世界中に沢山いてTSを使うと漏れなくその脅威に晒される また彼らが作成したライブラリにも嘘が潜んでいるかもしれない
386 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 23:58:26.60 ID:f9obKWjH0.net] >>374 違わないよ。 全てTSの中であればNumberであることが担保されているのは、全てC#の中である場合と同程度に正しい。 C#の場合でも信頼境界を越えるのであればその可能性は考慮しないといけないし、TSの場合でも信頼境界を越えないのであれば気にする必要は無い。 ましてやTSというかJSはシングルスレッドなので別スレッドに壊される事も無い。
387 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 00:01:01.66 ID:fuEg19Cq0.net] >>381 お前信頼境界って言葉一切ググらずに喋ってるだろ。 言われたことぐらい理解して反論してこいよ。
388 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 00:50:54.28 ID:JsfvM5KJM.net] >>382 全てTSでも型が保証されない 最も簡単な事例は const x: string = 100 as any もちろんこんなコードを書く人はいないが 複雑で膨大なアプリケーションコードを扱うプロジェクトのなかで誰一人としてミスをしないかというと そんな保証は全くなく型に嘘をつかれることになるだろう
389 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 00:51:02.44 ID:
] [ここ壊れてます]
390 名前:JsfvM5KJM.net mailto: >>383 ブーメラン [] [ここ壊れてます]
391 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 00:56:20.83 ID:fuEg19Cq0.net] >>384 それはC#でも同じでしょ。
392 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 00:59:38.17 ID:JsfvM5KJM.net] C#ではI/Oが生じる場合にも型が嘘をつくことはない 例えばこうだ int x = Parse<int>(inputStream); パースエラーにより実行時に例外が発生することはある それはどの言語でも起こりうることだ しかし、依然としてxにstringが入ったり、DateTimeが入ったり、という、TSでは普通にあり得る悍ましい挙動を示すことは無いのだ なぜならC#はTSと違って型が嘘をつかないから C#の型は信頼できる TSの型は嘘つきで信頼できない
393 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 01:00:08.39 ID:fuEg19Cq0.net] >>384 大規模アプリ開発では、何層もの見えない層があった結果これが起こる。 オブジェクトの型を破壊的に変換 - C#と諸々」でググってみ。
394 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 01:00:59.54 ID:fuEg19Cq0.net] >>387 じゃあTSはどうしてxにStringやなにがしかが入るの?どこで入れてんのよ?w
395 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 01:10:21.43 ID:JsfvM5KJM.net] >>386 全く異なる C#ではdynamic、リフレクション、コード生成を使えばコンパイラの検証を回避して、間違った型の変数に値を設定できる しかし、C#でこれをやると実行時にエラーになるのだ TSで何事もなく処理が進むのとは、全く趣が異なる そう、TSではstringと指定した筈の変数にnumberやDateの変数が入ったまま、何事もなく進んでしまうのだ これは本当に恐ろしい挙動だ つまり、バグを仕込んだところから、しばらく処理が進んだところで被害が顕現する、ということだ これはまるで、潜伏期間の長いコロナウイルスのように厄介な特性だ この挙動はC言語などではよくあるものだったが、原因と結果が離れているのでデバッグがしにくい、とのことで先人達は大いに苦しめられたものだ まがりなりにも後発の言語であるTSが、大昔の言語設計と同じ失敗を繰り返しているのは残念でならない
396 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 01:17:22.12 ID:JsfvM5KJM.net] >>388 低レベルなメモリアクセスでランタイムを破壊できるのはどの言語でも当たり前のことだろう TSのように低レベルメモリアクセスでもなんでもない、ただの代入で型安全を破壊できるようなものと同列に扱うべきではない
397 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 01:19:07.95 ID:JsfvM5KJM.net] >>389 困ったことにTSではどこででも起こりうる だから欠陥言語なんだよ C#のように低レベルメモリアクセスで無理やり破壊すればできるよ、といった次元とはわけがちがう
398 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 01:46:29.20 ID:lnjYKBBj0.net] >>379 varの上にマウスカーソル合わせてツールチップに表示される型を見るだけ
399 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 07:33:07.78 ID:OXnyWrYu0.net] >>384 既に>>349 で挙げているがそこに注意してプログラミングすればいいだけ。 お前は馬鹿だからそれができないんだろうが世の中の人間がみなお前と同じように馬鹿なわけではない。
400 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 07:38:49.44 ID:t5pkfnoc0.net] JSなんて使いたくて使ってるやつはいないって事だよ ほかに選択肢がないから仕方なく使ってるだけで そもそも本来TSのようなトランスパイラはこの世に存在し得ない存在
401 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 09:23:21.76 ID:bvaGXVet0.net] なんでc#スレで一生懸命TSの悪口言ってるの?
402 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 09:53:21.58 ID:SNzZltS0M.net] 欠陥指摘できる俺すげー君だろw スルーしとけ
403 名前:デフォルトの名無しさん [2022/01/05(水) 09:57:56.22 ID:5ORhcVX2D.net] WinFormのlistViewをタブレットで使いたいのですがlist部分を指で上下してlistをスクロールする事は出来るでしょうか スクロールバーで上下出来るのですがスマホのように出来ないかなと
404 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水)
] [ここ壊れてます]
405 名前:10:15:33.57 ID:Zzh6nSy3M.net mailto: >>394 挙げられたリストでは全く足りない こういう認識の甘さがバグを仕込むキッカケになるのだろう そもそも人間は間違える余地があれば、いつか必ず間違える 注意してれば大丈夫、などという考え方では到底ダメだ [] [ここ壊れてます]
406 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 10:17:21.15 ID:Zzh6nSy3M.net] >>396 しつこく返してくる奴がいるから仕方なく付き合ってやってる そいつがTSの型は安全でないという当たり前の事実を素直に受け入れれば俺もこんなレスバしなくても済むんだが
407 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 10:34:58.47 ID:TbL+VltAd.net] TypeScriptなしではJS開発やってられなくなってしまったな 特にチーム開発
408 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 11:00:24.24 ID:dUhlmVC50.net] >>398 一応標準でサポートされてるはずだけど なんかスクロール遅いし慣性の扱いが下手糞だけど…
409 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 11:06:50.05 ID:llHLsWPPp.net] >>400 おまえは相手がうんと言うまでスレチ議論続けるつもりか
410 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 11:43:03.34 ID:93Qk8F8ua.net] 例えばリストビューを作るときにアイテムのTagに日時を代入しとく そうしたら選択したアイテムの日時がすぐにわかるから。こんなのはよくやる手法だよね で、実際にアイテムがクリックされたときにTagを読んで日時を取得しようとしたらstringだったりDateTimeだったりして型エラー。バリデーションwが必要になる こんなの(アホがプログラミングしたら)c#でも日常茶飯事だからな tsでも同じ。アホがプログラミングしたらバリデーションwは必須だし、普通にプログラミングしたら不要
411 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 11:54:44.06 ID:ZRZErZAVM.net] >>404 君は議論の焦点を全く理解してないようだね
412 名前:デフォルトの名無しさん [2022/01/05(水) 12:07:48.08 ID:2gwkfiFL0.net] すまんが、昔、Linux + LLDBでのC#のデバッグ方法が公式サイトに書かれていたようが気がするんだけどさ そんなようなページってどこにあるのか、誰か知ってたら教えて!!!
413 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 14:47:28.15 ID:kRupjksVa.net] 昔OSも乗ってない小規模組み込みをアセンブリでずっと書いてたけど、 アセンブリには当然型なんて概念そのものが存在しないが、 だからintとBCDを間違えたり、構造体のポインタを別の構造体のポインタと勘違いする ミスが多いかと言うと、そこは意外とそうでもなかったりする。 それより生産性に対する影響の方が大きい印象だね。 まあこれは小規模かつ基本1人の開発だったからそうだっただけで、大規模かつチーム開発だと 話が変わってくるのかもしれない。 この辺はゲーム業界の人が詳しそうだね。 あの世界は下手したら90年代の終わり頃までアセンブリでやってたはず
414 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 15:04:40.06 ID:XpPjLRYm0.net] バグには様々な要因があるから、不正な型が代入された場合だけを過度に心配してもね
415 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 15:08:39.22 ID:C1Xb8B3u0.net] 型を気にしない馬鹿はテストも当然にしないから
416 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 15:14:15.12 ID:ROW6egx4d.net] >>384 自分が守らなければそりゃ保証もされないだろ。 C#ならある型にはある値しか入らないと思ってそう。 例えば構造体につっこんでFieldOffsetで上書きすればあっさり壊れるぞ。 [StructLayout(LayoutKind.Explicit)] struct XXX { [FieldOffset(0)] public DateTime Value; [FieldOffset(0)] public ushort Tag; } でXXX.Tagに適当なもの入れ
417 名前:スらValueは無茶苦茶になる。 [] [ここ壊れてます]
418 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 15:54:13.43 ID:qaVNdYDmM.net] 参照型の変数にnullが入ってるかもしれないし、C#の場合は例外の型もドキュメントの記載を信じるしかないよね 結局は程度問題なんだよ 前者のnullの問題についてはnull許容参照型を使えば型として区別できるけど、null非許容だからといって絶対にnullが入らないわけではなく簡単にnullを混入させることができる 彼の大嫌いなTSと同じく、特にランタイムチェックのない紳士協定だ
419 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 16:24:00.16 ID:kRupjksVa.net] っていうかこれたしか元はvarの話だよね。 繰り返しになるけど、元々の問題提起、つまり 「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」は正しいよ完全にw 匿名型を受ける場合以外のvarの目的は、「見れば分かる」冗長な繰り返しを避けて シンプルにすること。 「かっこ悪い」みたいな中二病的動機で意地でも型を明示しないことに固執する奴はアホだが、 困ったことに現実にはそういうアホが結構いる。 この辺LINQの乱用が嫌われるのと同じなんだろうねw シンプルにするための道具を使ってわざわざ難解にするバカw たぶん彼はシンプルとは文字数が少ないことだと倒錯している
420 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 17:12:39.57 ID:x9hFTlB3d.net] varの型が分からん分からんってこいつメモ帳で開発してんのか?
421 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 17:24:59.67 ID:5TZJeeZKa.net] IDEだけでしかソース見ない奴は問題ないんだよ ぐぐってブラウザ上で見るソースなんてマウスあてても型表示してくれないからな
422 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 17:28:23.80 ID:C1Xb8B3u0.net] どんだけ小さなプロジェクトしか関わったことないのか知らないが code reviewするときに数百、数千というvarをおまえはいちいちマウス乗せてチェックしてるのか? 型を気にしないならオープンソースもコードを確認せずビルドして使うタイプだろう。 OSS品質=誰かがチェックしてくれるはず=テストしてない=今のMSのコード品質
423 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 17:32:31.52 ID:5TZJeeZKa.net] var使ってるぐらいで崩壊するようなとこは大きいの作れないから気にする必要ないよw
424 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 17:43:11.47 ID:t5pkfnoc0.net] varなんて大抵は右辺見たら型わかるやろ? 何が分からんのだ?
425 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 17:48:48.78 ID:C1Xb8B3u0.net] 実験結果は分かった気になって実は全然分かってないでした。 でも分かった気になってるのでいつまでもなぜ分からないのだ?と問い続ける。
426 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 17:52:58.23 ID:t5pkfnoc0.net] いやマジで何が分からんの?アホの子なの?
427 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 17:58:12.21 ID:bWjicXEh0.net] つか、変数名見ればクラス名も分かる程度にしておくのが普通だから マウスで調べなくてもだいたい分かる
428 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 17:58:55.28 ID:C1Xb8B3u0.net] 自演じゃないよ、彼はそう信じてるんだ。笑わないでほしい。
429 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 18:09:44.71 ID:R56PdZ5+0.net] >>421 このスレの住人はお前のことを笑っているぞ
430 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 18:09:55.54 ID:t5pkfnoc0.net] staticおじさんみたいなもんだな
431 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 18:21:06.82 ID:C1Xb8B3u0.net] そして彼は笑いながら未テスト納品を繰り返す。そしてまたスパコンのデータを吹き飛ばす。
432 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 18:39:16.92 ID:w42D9Ab/0.net] コードレビュー時にローカル変数の型をいちいち調べる意味がよくわからん 必要になるのってバグの原因調査する時だけでしょ
433 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 18:41:30.05 ID:jje+EFiu0.net] TS、JSの型がゴミなのはわかる c#のvarも俺は嫌い 普通に読みにくい 最近は派遣先会社のVSに仕込まれた強制変換スクリプト?で保存すると勝手にvarが明示的な型に置き換えられて 久しく見ない問題だったが
434 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 18:42:19.84 ID:C1Xb8B3u0.net] 何も知らないなら喋らなきゃ無知はバレない。
435 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 19:07:10.79 ID:5TZJeeZKa.net] >>425 人のソース読むのにvarで省略されてるよりも、型が使われてる方が理解しやすい もちろん>>420 のようにしてくれればvarでも変わりゃしないけど、世の中そういうソースばかりじゃないし酷いのになると名前で型を騙されることあるからな 整数型にn、floatにfついてるからdがついてたらdoubleかと思ったらそれも整数だったり。そりゃないだろ・・・
436 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 19:19:51.10 ID:fuEg19Cq0.net] 限度の問題では? MSの規約にあわせれば良いでしょ。 IEnumerable<T>で受けるべきなのにList<T>で受けてるとかそういう不適切な状態になってない限りvarで良いと思うけどな。 varは省略の為に使うのではなくて推論の為に使うんよ。
437 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 19:53:56.06 ID:jje+EFiu0.net] varなんて右クリックメニューで元に戻せるから書くだけ書いたら明示的な記述に直しちゃった方がいいよ
438 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 19:57:59.86 ID:kRupjksVa.net] >>429 推論はするよりしない方が脳への負担が低いはずなので、 君の説を採るとvarは全面禁止すべきという結論になってしまうよw 少なくともコードの読み手(書き手ではなく)にとってのvarのメリットは 右辺の型が分かりきっている時に左辺の方でもくどくどそれを繰り返される冗長さが回避されることだ。
439 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 20:04:49.66 ID:lXYh5E9eM.net] 型推論 https://ja.wikipedia.org/wiki/%E5%9E%8B%E6%8E%A8%E8%AB%96
440 名前:デフォルトの名無しさん [2022/01/05(水) 20:09:49.34 ID:34fypwCFM.net] 書くやつは楽 コピペ盗作するやつは脳味噌が必要 var大勝利じゃん
441 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 20:11:27.06 ID:jje+EFiu0.net] >>432 そもそもこれがゴミなのか有効なのか? って議論がなされないまま突然導入されてほら使えだからな VSの右クリックメニューにもvarを元に戻す機能が付いたってことはあんまり評判よくないだろコレ
442 名前:デフォルトの名無しさん [2022/01/05(水) 20:16:51.17 ID:eampx4mf0.net] 議論に参加できるぐらい出世しろ
443 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 20:20:48.72 ID:jje+EFiu0.net] >>435 お前の会社は社長が1番技術力高いのか?
444 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 20:41:21.39 ID:P9kF/5N50.net] varで推論しないほうが脳への負担が低いというのはどういうことですか?
445 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 20:42:40.80 ID:C1Xb8B3u0.net] >>437 型が分からなくてもイライラしない人はそもそも負担がありません。
446 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 21:00:44.67 ID:jje+EFiu0.net] アホが作った無意味なマトリョーシカクラス追わなくて済むからな
447 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 21:16:57.60 ID:w42D9Ab/0.net] 15年近く前から導入されてるものに対して いまだに文句を言い続ける「熱量」には感心する
448 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 21:20:57.24 ID:jje+EFiu0.net] >>440 正直、クラスから嫌いです 構造体以上のメリットを全く感じたことない
449 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 21:56:49.45 ID:LjEcMnXra.net] >>441 そこは「しっくりこないんです」、と書いて欲しかったw
450 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 22:09:26.64 ID:R56PdZ5+0.net] staticおじさん生きてたのかw
451 名前:デフォルトの名無しさん [2022/01/05(水) 23:32:21.89 ID:9KUuQ3bM0.net] わかってる奴がvar使うのはOK 馬鹿がvar使うのはNG
452 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 23:33:33.69 ID:HyMzvNe00.net] じゃあdynamicつかうね
453 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 02:10:11.97 ID:jegOl+WX0.net] >>431 推論させる方が脳への負担は低いよね? 型がわからなくてイライラすると言うけど、解る必要ある部分ではないのでは? 極端な
454 名前:bメソッドの入口と出口は型が決まってんだから。 [] [ここ壊れてます]
455 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 02:36:29.67 ID:Vr7+jyV40.net] そのメソッド追っ掛けるのが面倒だって話ではないのか
456 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 02:50:36.77 ID:ChZ1cCgVa.net] >>446 推論の主語が変わってるよw あなたの言ってる推論の主はコンパイラ(開発環境)だよね?w ついでに言うと、あなたがたぶん言いたいことは「書く時の負担が減らせる」ということ。 だからそうじゃなくてコードの読み手にとってのメリットが重要なのよw そう書いてるよね?>>431 だってそうでしょ。 コードを書いてる時の書き手にとってはどの変数がどの型かなんて 当然自明なんだからvarにはメリットしかないよ。そんなの当たり前でしょw 結局varについても意見が割れるのは前にも書いた(>255)こういう意識の差があるからだろうね。 世の中KISSなんてただのお題目だと思っててなぜ重要か体感レベルで実感できない人が結構いる。
457 名前:デフォルトの名無しさん [2022/01/06(木) 03:46:43.08 ID:Jy6L3sVt0.net] >>448 >コードを書いてる時の書き手にとってはどの変数がどの型かなんて当然自明なんだから 馬鹿はvarを使えばエラーが出ないという理由でvarを使っているだけで型なんか理解もしとらんのだよ
458 名前:デフォルトの名無しさん [2022/01/06(木) 06:07:27.91 ID:WSidiaMA0.net] >>449 その発想はなかったわ バカの考えは馬鹿にしかわからないのだな
459 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 08:30:02.04 ID:GGuE86Bnd.net] >>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で充分では?
460 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 09:18:51.63 ID:BMV6DlOj0.net] 全く論点が不明 コードレビューでは全てのvar変数をマウスオーバーして型を確認しなければならないと言うのもシチュエーションとして理解不能、猿が働いてる企業なのか? そもそもそんな使用の是非の議論が必要な話なら世の中にvar禁止の組織はさぞかしあるんだろ? 御託並べる前にgithubでvar禁止にしてるC#プロジェクトでも持ってこいよw
461 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 09:23:52.72 ID:BMV6DlOj0.net] この手の「一人のstaticおじさんに大勢が説教する図」はさまざまなスレで見かけるけどまったく生産性ゼロで不毛だよな ほかに同調する奴いない時点で自分が間違ってる可能性か考えろよ まず自分を疑うのはエンジニアの基本やろ
462 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 09:37:12.69 ID:VWdkYx+r0.net] >>440 また低能馬鹿論理でましたね。WPFでも同じ馬鹿なこと言ってる人がいました。
463 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 10:00:08.90 ID:WPmMIBV7M.net] >>451 C#だとresultの型は推論できないんだっけ?
464 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 10:02:24.36 ID:VWdkYx+r0.net] >>ID:BMV6DlOj0 論点すら分からない馬鹿でも喋らなきゃ無知はバレない。
465 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 10:07:20.21 ID:sIABQ4ka0.net] 初心者スレで無知晒しても別に構わんだろ ちゃんと教えてやれよ
466 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 10:10:39.02 ID:jegOl+WX0.net] >>455 resultというか、メソッドの宣言的には省略不可。 なので、returnしているということはvarでも良いかもしれんな。
467 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 10:11:51.45 ID:VWdkYx+r0.net] >>ID:BMV6DlOj0 いちいち捏造してはマウンティングしてきて 相手を猿だの罵倒してくるクソ野郎にはクソレス返しで十分。
468 名前:デフォルトの名無しさん [2022/01/06(木) 10:36:42.54 ID:cm3DDwaa0.net] 議論用でやれば 凄い流れるんだけど
469 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 10:38:33.11 ID:BMV6DlOj0.net] 数千のvarをマウスオーバーして型を調べるってんだからそんなもん猿以外の何者でもないだろw それでカネ貰えるんだからいい仕事だなあ で、var禁止のC#プロジェクトは見つかったのか? さっさと探してこいよ
470 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 10:42:17.16 ID:VWdkYx+r0.net] ID:BMV6DlOj0 ←無職のクソ野郎が仕事を語る
471 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 10:52:01.70 ID:XJZjWgUBd.net] 戦犯は>>323
472 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 10:58:22.55 ID:VWdkYx+r0.net] >>463 馬鹿の壁の社会実験。参加してくれた馬鹿に感謝する。
473 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 11:41:47.82 ID:CKbwlJU4M.net] >>458 メソッドの宣言? ここの話だろ > IQueryable<Bar> result = xxxx.Where(predicate).Take(10); xxxx の定義によるけど普通は var で良くね?
474 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 12:18:50.36 ID:+o9sIybza.net] IQueryable<Bar> result = xxxx.Where(predicate).Take(10); ↑だとこの一行でBarとってるとわかる var result = xxxx.Where(predicate).Take(10); これだとなにかを取ってるとしかわからない。たった数文字の差だけど受け取れる情報が多くなって読みやすい 俺みたいなエスパー能力低い人間にとっては普通に書いてくれた方がありがたい
475 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 12:34:17.18 ID:B4j0C8aZM.net] 試してみたけどpredicateの型を明示的にExpression<Func<T>>にしてないと WhereがIEnumelableで解釈されてだめやね resultの型をIQueryable指定しててもコンパイルエラー Whereにlambdaのリテラル入れた場合は varでOk
476 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 12:57:35.75 ID:jegOl+WX0.net] >>465 すまん、そこ間違えた。varで良い。 言語によってはTask<IQuerable<Bar>>が要らない言語があるんよ。 確かにBar取ってるとわかるが、Barを取っているとわかる必要はある? >>467 スマホで書いたらダメだな、すまん。
477 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 13:20:28.91 ID:+o9sIybza.net] Barだと分かる必要はないけど分かったほうがありがたい 無地のジグソーパズルでも問題なく完成できるけど、絵柄があったほうがありがたいのと同じ
478 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 13:50:37.41 ID:A4g6fK0TM.net] わかる必要はないのわかったほうがありがたい? 初心者にありがちな必要ないのにやけに細部にこだわるタイプなのかな?
479 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 14:04:18.23 ID:+o9sIybza.net] その行の前後見ればvarとあってもそれがBarだとわかる でもBarと明示してくれたら前後見る手間なく分かる、たったそれだけの差をありがたいと言ってる var result = colBar.Where(predicate).Take(10); xxxxでなくcolBarというように書かれてたらvarでもBarだと分かるからありがたいし もっと言えばresultとかやめて var resBarTop10aroundPOI = colBarInTokyo.Where(predicate).Take(10); こんな風にしてくれたら、この一行見るだけでそれが何しているのかが分かってありがたい 俺みたいに理解力に乏しい人間にとっては情報量多いほうがありがたいんだよ。無駄に多すぎるのは勘弁だが
480 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 14:08:45.09 ID:t38juXmg0.net] class HogeBase { ・・・ } class Hoge : HogeBase { ・・・ } static Hoge GetHoge() { return new Hoge(); } の場合 HogeBase hoge = GetHoge(); だと右辺の型確認しない主義の人はhogeの実態がHogeBase型だと勘違いしたまま作業することになるからまずいんじゃないの?
481 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 14:13:52.71 ID:HsEWm91X0.net] それは勘違いじゃないんじゃないの?
482 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 14:15:52.97 ID:+o9sIybza.net] それはHogeBaseとして扱いたいからHogeBaseに入れてるんでしょ 中身はHoge2やHoge3かもしれない。Hogeと知らなくてもいいよ
483 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 14:19:47.84 ID:t38juXmg0.net] virtualメソッドがHogeとHogeBaseで違う動きするよ? virtualがHogeBaseの動きする前提でレビューしていいのかい? >>473 >>474
484 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 14:29:24.20 ID:HsEWm91X0.net] 何か問題が? それで困るなら派生させちゃ駄目
485 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 14:33:13.09 ID:+o9sIybza.net] HogeBaseがさらにIBaseってインターフェース派生だったらどうするよ IBase hoge = GetHoge(); hogeは何も実装できないInterfaceだから何の動作もしないはずなんて思うやつはいない そもそも型に対して前提としてる考え方が違う GetがHogeじゃなくてHogeBase返してきたら右辺見ても区別つかないよ static HogeBase GetHoge() { return new Hoge(); }
486 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 14:33:43.94 ID:t38juXmg0.net] >>476 へー、呼ばれるメソッドを間違えて認識しててもレビューできるんだ すげーな
487 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 14:37:00.03 ID:t38juXmg0.net] >>477 うん、だからレビューするなら真面目に右辺のメソッドの中身まで確認しろってこと
488 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 14:41:37.87 ID:A4g6fK0TM.net] >>478 えっ? 多態使ったことないんか?
489 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 14:54:39.91 ID:t38juXmg0.net] 使ってるからこの話題持ち出したんだけど >>480
490 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 15:15:22.51 ID:FKeKEAH4M.net] hoge.fuga(); って言うコードをレビューする時に実際に呼ばれるメソッドがまだ作られてないケースもあるんだけどどうやってレビューしてるの?
491 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 15:19:14.44 ID:Rudq/m5Ya.net] >>451 人の話聞かない人?何が言いたいのかさっぱり分からん。 恐らく誰も、少なくとも俺は 「varを使うと自動的に左辺の変数が不明瞭になるからvarは一切使うな」 などとは言ってないの。 例えば>>431 むしろ現実的にはほとんどの場合varでいいんだよ。 それはコードの書き手にも読み手にもメリットがある。 論点は>>412 に書いた通り、「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」だ。
492 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 15:20:25.57 ID:77VqpiEwM.net] var嫌がってるのってもしかしてテストコードを書かない種族の人?
493 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 16:21:47.64 ID:7whnQ4QD0.net] ワイはvarのほうが効率あがる うちはそこはレビューよりも書き手優先でvar推奨(c#) レビューも気にするならその段階でIDE起動してる その現場でいちいち書かせたいんなら型明示を強制すればいいんでね うちのとこはそんなとこまでちまちま言い合うほど暇じゃないし、それ以上にテスト充実してほしい勢 まあvarにわざわざ書き直させたりもしないねw
494 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 16:35:03.08 ID:+o9sIybza.net] 俺はvarが嫌なんじゃなくて読みにくいコードが嫌 で、読みにくい要因の一つがvarだということな さらに自分がvar使うのが嫌なんじゃなくて他人が使ってるのが嫌。自分のコードだったらそんなこと気にしなくても読めるし 自分に優しく他人に厳しくがモットーなんだよ
495 名前:デフォルトの名無しさん [2022/01/06(木) 16:36:42.04 ID:OeKJG00I0.net] 私C#良く分からないのですが、 そんな私がC#の説明することになりました。 クラスが参照型なのですが、どういう理由でこうなっているのか、 どういう意図でこうなっているのか、何と言って説明すればいいの? 本読んでも「参照型はポインタ的な雰囲気の何か」的な説明しかなくて なんでこうなっているのか全く書いてなかった。 ちなみに、参照型=ポインタと言い切っちゃってもいいのかな?? よろしくお願いいたします。
496 名前:デフォルトの名無しさん [2022/01/06(木) 16:38:59.36 ID:OeKJG00I0.net] コード書くときはvarで書いて、 それをintとかlongに変換してくれるツールを作ればいいだけなのでは??
497 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 17:01:20.10 ID:WCTWOnks0.net] >>487 書籍に例えるとどちらも目次に該当する ポインターがページ数だとすると参照型ってのはタイトル
498 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 17:31:36.72 ID:ae3RunliM.net] >>487 参照型はデータそのものじゃなくデータへの参照を持ってる型 C言語しか知らない人にC#を説明するんじゃなければわざわざポインタとの対比で説明する必要ないよ
499 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 17:35:14.31 ID:WCTWOnks0.net] Varでも何でもいいけど読みながらその都度型を類推するよりは読む前に何をしてるか理解してから読む 大まかな流れを理解してから読むのとメクラ滅法に読むのじゃ時間が100倍も1000倍も異なるからね 書く時だってそう
500 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 17:50:32.30 ID:rL+VifTwM.net] >>483 > 論点は>>412 に書いた通り、「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」だ。 具体的にどういうケースを言ってるの?
501 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 17:51:43.10 ID:VWdkYx+r0.net] >>492 型が分からなくてスルーできる脳みそが羨ましいわ〜
502 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 17:55:43.01 ID:h7LPoqLqM.net] そもそもvarがいいのって書くときだけじゃん 戻り値なんかでやられると最悪じゃん
503 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 17:58:59.73 ID:XJZjWgUBd.net] 結局宣言行まで戻って型見る面倒 ショートカットでいいような
504 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 18:41:32.37 ID:6bRgcWdcM.net] >>493 そういうレスしかできない時点でなにも困ってないのがバレバレやん
505 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 19:04:48.00 ID:VWdkYx+r0.net] >>496 トラが檻に戻ってないのに確認しないで施錠できる脳みそみたいな
506 名前:sage mailto:sage [2022/01/06(木) 19:25:09.72 ID:OeKJG00I0.net] >>489 >>490 返答ありがとうございます。 「参照型とは何か」を問うているのではなくて、 クラスが参照型なのは、どういう理由でこうなっているのか、 どういう意図でこうなっているのかを問うています。 クラスを参照型にしている思想は何かということです。
507 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 19:27:13.03 ID:6bRgcWdcM.net] 単なるアホかよ、NGしとくわ
508 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 19:34:15.72 ID:VWdkYx+r0.net] >>499 推測しづらいケースが一つも思い浮かばない→推測をしたことがない→馬鹿の壁
509 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 19:34:56.89 ID:jNRDp0FJa.net] >>498 逆に参照型じゃないならどうする? 多くのデータを抱えたクラスを毎度毎度コピーして渡すコピー型にでもする?
510 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 19:35:48.42 ID:Bcw/lb7Z0.net] >>498 C# クラス 参照型 でググれば一番上にお前が望んでいる答えがあるぞ
511 名前:デフォルトの名無しさん [2022/01/06(木) 19:38:04.42 ID:OeKJG00I0.net] var addFunc(var a, var b){ return (a + b); } とかはありですか??
512 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 19:42:33.04 ID:Z0ROnAB1M.net] >>503 その宣言内容だけでどうやって型推論するのか いくら何でもコンパイラに与える情報が足りなさすぎる
513 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 20:15:49.57 ID:pGhYWD4M0.net] >>499 気付くのが遅いぞ コレいつもの人だわ
514 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 20:27:11.92 ID:VWdkYx+r0.net] >>505 おまえの型推論はバグってるな。
515 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 20:53:48.44 ID:2nit6p8q0.net] >>471 これ、古より嫌われているシステムハンガリアンだから結構嫌がる人多いと思うよ
516 名前:デフォルトの名無しさん [2022/01/06(木) 20:55:39.69 ID:WSidiaMA0.net] winapiのクソキャストにはハンガリアンぐらいが丁度いい
517 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 20:59:03.64 ID:snULIxlRa.net] >>487 問題設定自体を変えた方がいいかもね。 なぜ値型ではだめなのか?と。 値型だと少なくとも「フールドを増やしたサブクラスの値を ベースクラスの型の変数に入れる」なんて芸当は難しくなるね。 というか、こういう禅問答みたいな話は(たぶん重要なんだろうとは思うけど) 初心者は後回しにした方が絶対にいいと思う。
518 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 21:28:53.73 ID:TiVU33P2M.net] >>498 参照型を理解してないんだからそれを理解するのが先 クラスが参照型なのはポインタ型や値型だと困るから 文字列が値型だとどうなるか考えてみれば? ポインタを理解してるならすぐわかる
519 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 23:17:09.17 ID:mv8eR6oh0.net] C#のスレでメソッド名の先頭が小文字から始まってる時点で、 ・意識が低い ・まともに調べたり勉強していない どちらかであることを認識すべき。
520 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 23:20:50.62 ID:VWdkYx+r0.net] varがある時点でやっつけ専用言語なのに
521 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 23:32:25.27 ID:8QDluGwV0.net] >>512 ???
522 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 23:51:42.25 ID:t38juXmg0.net] >>512 今時C++でさえ型推論付いてるというのに
523 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 23:53:35.71 ID:VWdkYx+r0.net] どうしてもc++でやっつけコード書きたいから追加した仕様だろ
524 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 00:03:01.88 ID:IK3vjsT30.net] 今時型推論ないほうが珍しいだろ
525 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 00:09:41.99 ID:qow9t6Ky0.net] やっつけコードしか書かないプログラマだらけの時代に何言ってんだ 昔はOSの無償サポートは10年とかだったのに今はすぐサポート切れの切り捨て。 なぜならやっつけコードで保守する気ないからだ。Win8とかEdgeとかWPFとかぜーんぶやっつけで作ってたからすぐ捨てられた。
526 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 00:23:20.23 ID:bs4RpyaW0.net] 型推論はやっつけなのか。 古き良きなのか、時代についてこれないのか 考え方は人それぞれよね
527 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 00:30:28.71 ID:uWMJJK3h0.net] 型推論だめってチームいやだわ ギスギスしてそうw
528 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 00:32:56.56 ID:IK3vjsT30.net] 型推論付きの言語はやっつけ専用か 普段この人は何言語でやっつけじゃない開発してんだろう
529 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 00:40:49.40 ID:YgufRjXg0.net] 最近は「int key = 0」でなく「Key key = new(0)」みたいに書いてるからvarは使わんな
530 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 06:45:05.41 ID:j4Wq+RBJM.net] >>520 ・老害のCOBOLer ・自称スーパープログラマーな組込C使い ・Javascriptのvarと混同してるボンクラPG
531 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 08:15:52.34 ID:y6x0s+uzd.net] var一切使わない人ってラムダの引数型もクソ真面目に書いてそう
532 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 09:50:10.76 ID:qow9t6Ky0.net] スップw 初心者スレでラムダw
533 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 10:00:38.21 ID:qow9t6Ky0.net] 知らないうちにLINQスレもなくなってる。過疎なム板で落ちるとかよほど人気ないのか。 >>523 そうやってガキみたいに初心者相手にマウンティグして全部追い出したんじゃないのか。
534 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 11:42:40.26 ID:yxixByMw0.net] おーっとここでガキマウントです
535 名前:デフォルトの名無しさん [2022/01/07(金) 11:50:35.85 ID:FRwoYiaWM.net] >>524 初心者のくせにラムダなんて生意気だ! ってマウントですね
536 名前:デフォルトの名無しさん [2022/01/07(金) 12:38:03.65 ID:6zNCaZbD0.net] >>509 >> 値型だと少なくとも「フールドを増やしたサブクラスの値を >> ベースクラスの型の変数に入れる」なんて芸当は難しくなるね。 すみません。良く分かりません。クラスが値型のC++で 「フールドを増やしたサブクラスの値をベースクラスの型の変数に入れる」 なんて芸当、なんの問題もなくできると思うのですが >>510 >>文字列が値型だとどうなるか考えてみれば? 文字列は内部実装は参照ですが、ユーザ見えは値型と同じだと思うんですが・・・ 内部でどう実装されているのかは、そんなに説明するつもりもないし・・・
537 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 13:00:57.38 ID:y6x0s+uzd.net] >>528 ベースクラスの変数に入れることはなんの問題もないけど逆の操作派生クラスに戻せなくなる C++でもそうだけどnewされた時の型をベースクラスが覚えておかないとvirtualとかasが使えない
538 名前:デフォルトの名無しさん [2022/01/07(金) 13:01:07.20 ID:6zNCaZbD0.net] 返答ありがとうございます。 >>501 >>逆に参照型じゃないならどうする? c++ではクラスは参照型ではないですよね? c#では構造体は参照型ではないですよね? >>502 >> C# クラス 参照型 >> でググれば一番上にお前が望んでいる答えがあるぞ 配列が参照型なのを考慮すると、高速化・・・・ いや、そのサイト見てると高速化よりも ポインタを無理やり追い出した弊害に思えてきました・・
539 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 13:03:35.17 ID:qow9t6Ky0.net] c++に参照あるのに
540 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 13:03:54.16 ID:y6x0s+uzd.net] >>528 型ってのはコンパイル時に大きさ(byte数と配置)が決まってないといけないという縛りがCのときからある 長さがいくつになるか分からんstringは参照型にするしかない
541 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 13:06:18.93 ID:qow9t6Ky0.net] クラスや構造体の中にポインタもって動的にメモリを確保するだけである。型のサイズは変わらない。
542 名前:デフォルトの名無しさん [2022/01/07(金) 13:08:54.79 ID:6zNCaZbD0.net] >>529 >>C++でもそうだけど まことに申し訳ないけど、何を言いたいのか全く理解できません。 クラスが値型のC++でも通用する話を出してきても???と思うんですが
543 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 13:09:35.44 ID:IAj8vN+S0.net] >>530 生のポインタだとオブジェクトを移動して断片化したメモリの整理が出来ない
544 名前:デフォルトの名無しさん [2022/01/07(金) 13:12:31.36 ID:6zNCaZbD0.net] >>532 それだとクラスは値型でOKという話になっちゃいます。
545 名前:デフォルトの名無しさん [2022/01/07(金) 13:17:33.66 ID:6zNCaZbD0.net] >>535 ひょっとして私根本的な所を理解していないのかな? class clsA { class clsB { class clsC { xxx }}} みたいなクラスの内部にクラスを含んだクラスであっても GCでガンガン割り当てられているメモリアドレスを 動かされると言いたいのでしょうか??
546 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 13:18:48.25 ID:qow9t6Ky0.net] で参照の何を議論してるんだ? c#のクラスが参照型なのが許せない!!って言いたいのか? キミがそういうのならそうだろう。キミの中ではな。
547 名前:デフォルトの名無しさん [2022/01/07(金) 13:26:11.81 ID:FRwoYiaWM.net] 参照のほうが便利だからじゃね?
548 名前:デフォルトの名無しさん [2022/01/07(金) 13:28:12.36 ID:6zNCaZbD0.net] >>538 >> c#のクラスが参照型なのが許せない!!って言いたいのか? 質問を読んでそういう理解なのでしょうか? 質問を読まずにそういう理解なのでしょうか?
549 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 13:34:18.44 ID:qow9t6Ky0.net] >>540 誰が質問をしたかすら知らないが、質問を質問で返す。つまりそれは構ってちゃんだ。
550 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 13:45:30.30 ID:BJs69ghP0.net] 流れを読まず、適当なところに突っかかる つまりそれは荒らしだ
551 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 13:51:09.32 ID:qow9t6Ky0.net] 話題が分散しすぎて流れが分からないから聞いただけなのに酷い言い掛かりだ。 C#のクラスがなぜ参照型かだって? C#は関係ないよ。.net側の仕様だから。vb.netでも同じ。で終わりの話。
552 名前:デフォルトの名無しさん [2022/01/07(金) 13:54:19.71 ID:FRwoYiaWM.net] >>543 その仕様をなぜ決めたかを聞いているんでしょ こんなところで
553 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 14:01:57.02 ID:IAj8vN+S0.net] >>537 そう頻繁では無いにしろ移動されない保証は無いね
554 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 14:24:42.02 ID:qow9t6Ky0.net] >>544 え? コピーのコストが違うから分けたという単純な話だが。 Cだって配列のコピーは重いから引数で参照渡しされるだろう?
555 名前:デフォルトの名無しさん [2022/01/07(金) 14:55:19.17 ID:FRwoYiaWM.net] だからみんな単純な回答してるじゃん あ、俺はどちてぼうやじゃないよ
556 名前:デフォルトの名無しさん [2022/01/07(金) 15:17:14.00 ID:6zNCaZbD0.net] >>546 >> コピーのコストが違うから分けたという単純な話 確かにそんな感じですね。 クラスが値型のc++が遅くて クラスが参照型のc#が早いなんて 全く聞いたことないのですが、 MSがトチ狂って高速化を優先(それ以外を犠牲)したようですね。
557 名前:デフォルトの名無しさん [2022/01/07(金) 15:54:45.54 ID:FRwoYiaWM.net] トチ狂っててワロタ
558 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 16:20:24.15 ID:EZdfrZXhM.net] >>548 C++ は値型のクラスを作れるけどそれをそのま他の関数に渡すなんてことはほぼやらんぞ そもそもCでも構造体をそのまま渡したらコピーされるからコピーコストを言うなら参照型にしてるだろ 要はC/C++はそういう制御もプログラマに開放してるがC#は開放してない(コピーはそれなりのメソッドを呼び出す)ってだけの話
559 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 17:18:23.04 ID:0zyZKkps0.net] 牛乳飲んで落ち着いて
560 名前:デフォルトの名無しさん [2022/01/07(金) 17:50:23.82 ID:7Nc+xMj80.net] >C++ は値型のクラスを作れるけど なんかもう、松永パソコン大先生みたいな話だな
561 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 18:17:48.54 ID:EoqFVcXVr.net] 割りきればいいものを、どうでもよく無駄にこだわるやついるよな
562 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 19:02:16.87 ID:NAsC2Vwba.net] >>528 正直C++よく知らんので調べてみたけど、だから↓にあるような「問題」があるわけだよね https://www.cloverfield.co.jp/%E7%B5%84%E8%BE%BC%E3%81%BF%E7%8F%BE%E5%A0%B4%E3%81%AE%E3%80%8CC++%E3%80%8D%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%20%E6%98%8E%E6%97%A5%E3%81%8B%E3%82%89%E4%BD%BF%E3%81%88%E3%82%8B%E5%BE%B9%E5%BA%95%E5%85%A5%E9%96%80/3.3%20%E7%B6%99%E6%89%BF%E3%81%AE%E8%A3%8F%E5%81%B4.html だから他の人が指摘しているstringのようなケースを無視するとしても、 値型で無理に継承を実現しようとすると、 (1) >>509 に書いたように多態を諦めるか (2) メモリ効率を犠牲にして、ベースクラスの変数のメモリ上のサイズは全ての派生クラスの 「共用体」のサイズとする。当然全ての型はinternalとして定義する必要もある。 こういうありがたくない制約が出来ちゃうでしょ
563 名前:デフォルトの名無しさん [2022/01/07(金) 19:37:25.76 ID:6zNCaZbD0.net] >>546 >>Cだって配列のコピーは重いから引数で参照渡しされるだろう? つ【std::vectorは参照ではない】 [] [ここ壊れてます]
565 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 19:39:06.67 ID:46kMC38t0.net] Unityの座標系って左下起点がデフォなの? WindowsのGUIとのやり取りが凄い大変なんだけどなぜこういう仕様になってるのか教えてもらいたい
566 名前:デフォルトの名無しさん [2022/01/07(金) 19:41:19.72 ID:6zNCaZbD0.net] >>554 >> 正直C++よく知らんので調べてみたけど、だから↓にあるような「問題」があるわけだよね 菱形継承はいろいろと問題あるからね。菱形継承問題でググってみな それにc#は多重継承できないからね・・・
567 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 19:42:11.75 ID:46kMC38t0.net] >>555 push_backでコピーorムーブが発生するってことを言いたいん? そのコピーコストを無視できないくらい大きなもの扱ってるときは正にC#の参照型Listのようにポインタ型のvectorを作るか、resize+インデクサアクセスで直埋め込みするじゃん
568 名前:デフォルトの名無しさん [2022/01/07(金) 19:44:39.54 ID:6zNCaZbD0.net] >>554 >> ベースクラスの変数のメモリ上のサイズは いや、ベースクラスの変数のメモリ上のサイズは ベースクラスが持っている変数のメモリ上のサイズの合計 (パディング考慮)でしょうが・・・
569 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 19:46:03.22 ID:NAsC2Vwba.net] >>556 Unity知らんけど、印刷考えなきゃ最初から普通のデカルト座標採用してくれた方が 自然ではあるね。 むしろCRTなんていう前世紀の遺物の仕様をいまだに引きずってる方が「なぜ」のような気が
570 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 19:47:36.10 ID:NAsC2Vwba.net] >>559 だから、そうだとしてそれにフィールドを追加した派生クラスの値を入れられるんですかと
571 名前:デフォルトの名無しさん [2022/01/07(金) 19:48:35.26 ID:6zNCaZbD0.net] >>558 引数で参照渡しされるだろう? と言ってるので『std::vectorを引数にする時は参照渡しではない』という意味で言ってるが
572 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 19:54:08.11 ID:46kMC38t0.net] >>562 C/C++には参照型も糞なく全部値型だからvectorそのままだと当然値渡しになるから言葉そのまま受け取ればそういうことになるけど std::vectorって配列へのポインタを持ってるだけだから疑似参照型みたいなもんってことを言いたいんだろ sizeof(std::vector<T>)のTが何であろうと固定で16byteくらいだし
573 名前:デフォルトの名無しさん [2022/01/07(金) 19:54:17.18 ID:6zNCaZbD0.net] >>561 つまり『ポインタを無理やり追い出した弊害に』だよなぁ
574 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 19:58:27.54 ID:46kMC38t0.net] >>560 WindowsGUIの方がレアだったのか C#でもSIMD命令呼べるようになったから_mm_add_psとかで一気にやりたいのにxとyで加算減算分けないといけないから出来ないのが
575 名前:c念すぎる [] [ここ壊れてます]
576 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 20:02:45.79 ID:qow9t6Ky0.net] >>555 それC++やないか。しかもそれはC++でも配列やない、classや。 しかもC++はclassの参照渡しできるねん。
577 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 20:49:57.04 ID:NAsC2Vwba.net] >>564 いや何でそうなるw 意味が分からん。 問題設定は「なぜクラスの変数はポインタなのか?」 だからポインタを使わないとどうなるかを示しているわけで、 実際はC#はポインタを追放なんかしてないよ
578 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 20:56:58.30 ID:0Qlm+FNra.net] 他人の話を聞かないタイプだから相手するだけ無駄よ 相手するならMSはトチ狂ってるってのに同意する方向じゃないと
579 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 21:12:41.39 ID:qow9t6Ky0.net] だから.netの仕様だと。 言葉を借りるならポインタを追い出したのが値型だ。値型と参照型の機能の違いを仕様書で確認しなさい。 つまるところガベジコレクションからの分離。値型はスタックに乗せれる。確保も開放も高速。 つまり型が分からなくてもスルーできる奴は元から何も考えてないということだ。
580 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 00:48:49.28 ID:T5N54j6i0.net] 手動でメモリ確保して解放すんのめんどくせぇなぁって流れから、 全自動でメモリ確保と解放するC#が生まれたってだけの話じゃないの?
581 名前:デフォルトの名無しさん [2022/01/08(土) 01:01:47.02 ID:PQBT4Nc/0.net] >>570 Delphiを知らない馬鹿
582 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 01:03:56.61 ID:IGpBQzM50.net] その後10時間もマウンティングゴリラしてたのかw
583 名前:デフォルトの名無しさん [2022/01/08(土) 02:44:00.27 ID:1bILROxT0.net] 大昔にVBで作られた社内業務アプリをC#で作り直す事になったけど、 GUIはWinForms?WPF?WinUI?どれが一番メジャーなの? WPFは死んでるとか言われてるようだし、WinUIは出たばかりで情報少ないっぽいし、古いけどWinFormsがいいの?
584 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 03:02:40.46 ID:35B5Rb5B0.net] >>573 一番メジャーなのはWinFormsだけど 社内でよく使われているモニターが高解像度で スケーリング表示をきれいにしたいなら WPFかWinUIの方がいいよ
585 名前:デフォルトの名無しさん [2022/01/08(土) 03:13:30.02 ID:IEuXTu700.net] WinFormsって2番目だぞ 1番使われているのはWPF 社内アプリならとりあえず.NETのバージョンは6にしたほうがいいな 以前のとパフォーマンスが段違いなので
586 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 04:22:41.48 ID:BHQyctLJa.net] >>573 何がベストかは結局何を重視するのかの関数だよね。 だからたぶん各選択肢のいわゆるpros and consを挙げてもらった方がよい気がする コスト重視ならVBにもっとも近いFormがベストだ。 視覚効果や高DPI対応が重要ならWPFがベストだけど、学習コストが高いし、 はっきり言ってパフォーマンス的にまったく使えない分野もある。 WinUIは知らんw
587 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 06:02:52.91 ID:35B5Rb5B0.net] 一番楽チンなのはVS2008のコンバーター使ってVB6→VB.netにコンバートし、コンパイルエラーが発生する部分をちょいと修正する事 複雑な計算式使ってる場合に計算式の移植間違いを防げる
588 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 09:09:54.52 ID:LhcZsKvbM.net] >>571 Delphi に GC あったっけ?
589 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 09:30:56.43 ID:qvdwzZse0.net] >>578 ないと思う
590 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 09:56:39.05 ID:PHIkImNk0.net] 関係ないけど、こういう案件て段々広がって収拾つかなくなるか、 客がビビりはじめて結局ほぼ何もしてない変わらないみたいになるか、 ってなりがちよね 客にも腰据えてもらわないとぐだぐだになる
591 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 10:52:45.90 ID:76ewE+lX0.net] Webで作るという選択肢はないのかな? ある程度の規模があるところなら配布やサポートコストまで考えるとWebのほうが安上がり
592 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 11:16:30.10 ID:6MOJW9HWM.net] 社内業務アプリの内容によるけど今どきならWebだろうね サーバーやDBMSの構築すらままならんとかならしゃーないけど
593 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 11:21:14.11 ID:eHBvCcl00.net] クラサバとかの業務システムをWeb化するのはよくある話だが、スタンドアロンで済む ただのGUIアプリをわざわざWeb化するのは割に合わんと思うがな。 それを上回るなにかメリットがないと。
594 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 11:32:33.07 ID:Sgj71hWsa.net] データをサーバー管理するようなのならまだしも、普通のアプリなら普通に作ったほうが圧倒的に楽
595 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 12:01:38.53 ID:6MOJW9HWM.net] 今どき社内業務システムでローカルに閉じてるやつなんてある?
596 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 12:13:29.45 ID:qVp9qlx6r.net] ローカルアプリから直接DB見に行くとかならあるんじゃね ストアで更新配賦とか夢見たこともあったなあ
597 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 12:18:21.83 ID:eHBvCcl00.net] >>573 の業務アプリというのがどういうものかは>>573 に聞いてみなけりゃわからんが、 業務で使う内製アプリがスタンドアロンだって例はいくらでもあると思うが。 逆に、なんで無いと思ったの?
598 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 12:18:22.15 ID:Sgj71hWsa.net] 社内業務アプリって言ってもいわゆる業務管理システムだけじゃないからな ローカル完結なんていくらでもある ちょっとしたツール類なんて全部そうだろ
599 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 12:45:29.08 ID:+n5rVMIfd.net] Web化すべき案件なら最初からそっちで検討してるんだから余計なお世話やで
600 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 12:47:06.13 ID:v0nm/uLMM.net] ツール類って具体的には? そりや業務端末でも一般的なフリーソフトとか使ってることはあるけど、 業務用に作られたスタンドアロンなツールなんて機器制御関連以外では滅多に見かけないわ システム連携が不完全なためにローカルなアプリやVBAで局所的な自動化をやってるケースはあるけど、結局その入出力は手動で他と連携するわけで、スタンドアロンとは違うでしょ
601 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 12:48:22.96 ID:35B5Rb5B0.net] スタンドアロンで作るって言ってるのにしつこいな
602 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 12:50:35.22 ID:VCGpsaaV0.net] VisualStudioでデバッグ中に変数やらクラスの中身を追っていくとき 大量にプロパティがあるとアルファベットの後半追うのに ▼で下まで流すのがかなりまどろっこしいんですが スクロールバーもでないし・・・ もうちょっとスムーズにする方法ってあるんですかね
603 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 13:01:28.24 ID:Sgj71hWsa.net] >>590 テキストファイルの文字数や段落数カウントするだけ 指定したウインドウのスクリーンショットを取るだけ 画像をpngにするだけ ファイルをリネームするだけ 動画からフレームや動画を切り出すだけ こういうの実際に作ったツールだな。フリーソフトでもできるけどそういうのも開発することあるんだよ
604 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 13:24:30.41 ID:a4nwkm/0M.net] デスクトップアプリじゃなきゃダメな強い理由がなければ WinFormならともかく今からWPFとかやるのは無駄だよね
605 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 13:25:51.14 ID:a4nwkm/0M.net] >>592 ウォッチ式?
606 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 13:29:23.33 ID:Rc/Af6wIM.net] >>593 そう言うのを社内業務アプリって言うの?
607 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 13:37:12.89 ID:Kbht7+jO0.net] やっつけアプリ、やっつけツールと言います
608 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 13:38:58.06 ID:OnpKeph7a.net] >>596 仕事に使うなら全部業務アプリだろ 区別する意味はないと思うが
609 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 14:16:08.90 ID:sJWr1x2I0.net] 業務といっても何を指すかで見当違いなことを言い合ってたりするからな ちなみに俺は追記式で容量が10メガ超えるログファイルを待ち時間なしに検索&色分けフィルターするビューアー が必要だったので作った
610 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 14:19:48.42 ID:QfvG5fL40.net] プロパティの値についてなんですが 値が変わらないプロパティに関しては Visual Studioの右側のプロパティから変更するのか それともForm1.csのなかで変更するのどっちが王道でしょうか?
611 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 14:22:07.76 ID:LyVlYLKR0.net] >>600 Visual Studio
612 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 14:45:55.87 ID:Sgj71hWsa.net] 変更したってことを把握しにくいからできるだけForm1.csだな
613 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 18:25:53.14 ID:W7HGPhnA0.net] >>595 変数にカーソル合わせてポップアップででてくるクラスや変数の中身がでますよね デバッグ中にそれで実際に入っている値を追っていくことがよくあるんですが 大量にあるとアルファベット順に並んでいるせいで たとえば コンボボックスでいうと Selected〜まで見に行くのに Sまで下りてこなければならないですよね ポップアップにはスクロールバーもでないから毎回スクロールしないとならなくて それが面倒で・・・
614 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 19:02:53.17 ID:9AShM9M8a.net] デバッグで実行止めてるときに、デバッグ->ウインドウ->ウォッチでウォッチ1開いて、そこに見たい変数をドラッグ&ドロップ 配列の一部だけ見たいなら.Skip(100).Take(20)みたいに適当なlinqでもつけて
615 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 21:28:00.33 ID:WWAiwq7Z0.net] ArrayクラスのResizeメソッドの引数が参照渡しなのは何故ですか? 他のReverseやSortメソッドが値渡しなので統一されていないと感じてしまうのですが
616 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 21:31:36.72 ID:7PajA1910.net] ReverseやSortは要素を置き換えるだけで済むけど 配列は固定長である以上Resizeするには新しく配列を作り直すしかない
617 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 22:55:18.70 ID:W7HGPhnA0.net] >>604 レスありがとうございます ウォッチ、使ったことがなくて知らなかったです クイックウォッチでも簡単に見渡せるんですごく楽になりました 感謝です
618 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 23:12:33.36 ID:WWAiwq7Z0.net] >>606 ありがとうございました 納得しました
619 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 02:13:23.67 ID:LmDP/A0i0.net] .net6だとプロジェクト作成時にいつものusing systemとかが無かったんですけど暗黙的に使えるようになったか、あるいはどっかに記述を引っ越したんですかね?
620 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 03:14:56.13 ID:t77ZMTfv0.net] global usingとかいう迷走の果てみたいなものがあったような覚えがある
621 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 16:59:27.76 ID:9R5shyc4d.net] >>609 .csproj見てみ
622 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 18:05:28.98 ID:LmDP/A0i0.net] >>611 Implicitusingsってやつですか このglobal usingってのはユーザが任意に追加できるんですかね?.net標準分だけ?標準だけだと有り難みがイマイチ・・・
623 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 18:14:37.58 ID:Fbfc1ztE0.net] implicitなのはSDKで固定のはず global using自体は.csprojに自由に書けるよ https://ufcpp.net/blog/2021/11/implicitusings/
624 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 18:32:28.44 ID:Fbfc1ztE0.net] というか.csにも普通に書けるよ
625 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 19:26:41.39 ID:mJ9SvVvR0.net] というか.txtにも.hogeにも普通に書けるよ
626 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 19:32:53.98 ID:Yn6t3tioM.net] >>614 書けるけど1つに書くと全ファイルに影響するのは怖くね? なんかやりすぎ感ハンパない
627 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 20:21:18.79 ID:mJ9SvVvR0.net] >>615 悪ふざけじゃなくて、書いたらちゃんと認識されるよって意味ね。
628 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 21:15:40.34 ID:zf/OU/S30.net] え、readme.txtとかに書いてても影響しちゃうの?
629 名前:デフォルトの名無しさん [2022/01/10(月) 22:20:21.82 ID:pzAlxVbU0.net] 何度も同じことを書かせる仕組みはプログラムの基本的な考えと違うと考えればglobal usingは妥当
630 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 22:45:07.71 ID:zjcR70ev0.net] global usingもあれば楽だけど書ける場所は限定された方が良かったような
631 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 06:33:56.47 ID:TdDX7t/9M.net] >>619 それなら.csprojとかでいいでしょ どこかに書いたら全体に影響するのはなんか違う
632 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 07:14:14.80 ID:qLFRpNWYM.net] もうあっちゃう時点でキモいから書けるなら制限なしでいいでしょ
633 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 08:18:04.81 ID:34v9AEL90.net] VS2022からC#やる人は結構わかりにくいやろなぁ。 なぜimportもusingもなにも書いてないのに、Console.Writel... みたいにいきなり書けるのみたいな。 グローバルにいきなり書いてるがクラスに属さないグローバル変数はあるのないのとか。
634 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 09:25:26.02 ID:7v4JZSk/0.net] えーーーんTT Console Programつくろうとしたらmain()がないよー>< なにこれ、こわい>< たすけてー
635 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 09:36:34.63 ID:qBZtvv4T0.net] 従来のようなプロジェクトテンプレートでもプロジェクトを作れるようなオプションなりテンプレートなりあればいいのにね テンプレートぐらい自分で作れって?面倒じゃん
636 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 11:21:28.14 ID:MvizqUHc0.net] >>625 .NET 5.0をターゲットにプロジェクト作成してから.NET 6.0にターゲット変更する https://docs.microsoft.com/ja-jp/dotnet/core/tutorials/top-level-templates#use-the-old-program-style
637 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 11:57:17.32 ID:7v4JZSk/0.net] C#作ってる人たちはC#をスクリプトにしたいの?? 何を目指してるのかよくわからない
638 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 12:22:25.87 ID:4qGoqi+ca.net] なんでもできることを目指してるんだよ もちろんスクリプトとしても使えるぞ。アプリの拡張プラグインをc#スクリプトにするとか簡単にできる
639 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 13:10:40.24 ID:Grp1ZbCtM.net] >>627 IDEによるコード生成を完全に排除しようとしている、と考えると理解しやすい 最近の内製系の開発では、コードの自動生成は避けてソースを極力コンパクトに保とう、という考え方が主流になっているんだよ
640 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 13:50:01.49 ID:luTEChNva.net] 何で自動生成やめたらコードがコンパクトになるの? そんなわけないと思うんだけどw
641 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 13:58:30.81 ID:/T2lNEPNM.net] コードの自動生成と言うか簡便さを求めてるのだろう 他の簡易な言語と比べると不必要な部分があるからそれを簡略化する ボイラープレート(決まり切った特定のコードの記述 )やおまじないのような入門者にとって敷居の高いものを減らす それ自体は問題ないはず C#は言語的に無駄な記述が多すぎたから一気に来たんだろうな
642 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 14:02:02.73 ID:/T2lNEPNM.net] ファイル内のnamespaceは一個なのにそのためにインデントが一つ増えてエディタでのコードが見通しが悪くなる こんなの早くから導入してくれと思ってた
643 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 14:14:24.58 ID:Jt6jcb4u0.net] てかusingみたいに冒頭宣言みたくできればよかったのにな
644 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 14:35:22.28 ID:8rbbEYvA0.net] >>629 コードの自動生成はむしろ最近より進んでるやろ gRPC周りやソースジェネレーターなんてその最たるもの
645 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 14:56:40.93 ID:luTEChNva.net] >>631 それってVBの思想だよねw ただしい選択とは思えんな
646 名前:デフォルトの名無しさん mailto:sage [2022/01/12(水) 00:03:33.81 ID:3DcpczOy0.net] スクリプトとしては異常に使いにくいよ、 特にアプリのプラグインとしては致命的。 やったことあるひとならわかるよね。 スクリプトだろうと1回実行したら、そのクラス型は解放されないから。 .netは型生成してしまうと、そのクラス型は基本的にアプリ終わるまで解放されない、 間違ったと思ってクラス型の部分のスクリプト変更して再実行しても反映できないのよ、アプリ終了しないと クラス型が解放されないから。
647 名前:デフォルトの名無しさん [2022/01/12(水) 04:14:45.93 ID:qMg3RrrS0.net] コンパクトに書けるようになっていくのはいいと思う 元のC#は長く書くことを是としていたようで他の言語と比べると見栄えが悪い
648 名前:デフォルトの名無しさん mailto:sage [2022/01/12(水) 10:32:03.61 ID:2Wvp4VJl0.net] C#はいいんだけど、ASP他諸々がなあ Authorize入れるのも一苦労
649 名前:デフォルトの名無しさん mailto:sage [2022/01/12(水) 13:15:42.75 ID:++K/dCbX0.net] 何に比べてどう苦労するの?
650 名前:デフォルトの名無しさん mailto:sage [2022/01/12(水) 15:39:18.51 ID:BLJCWDpKa.net] >>636 作り方しだいだけどアプリ終了しなくても スクリプト実行&終了→スクリプトファイル書き換え→スクリプト実行で書き換えた編集が反映されるよ 開放されないってのと反映されないってのは別問題でしょ
651 名前:デフォルトの名無しさん mailto:sage [2022/01/12(水) 18:17:31.66 ID:C1xp3kdWM.net] おれはC#とASP.NET Core WebAPIが最もやりやすい フロントは流石にReactとか使ったほうが楽だがJSもAltJSも罠だらけで洗練されてないね
652 名前:デフォルトの名無しさん mailto:sage [2022/01/12(水) 22:52:04.20 ID:JXqJfbQh0.net] >>636 まさにクラスを書き換えて実行するのをやってるけど そんな現象に出くわしたことがないぞ?
653 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 06:18:56.80 ID:hEm3mWj0M.net] >>642 糞アプリの名前も書けない無能の相手すんなよ
654 名前:デフォルトの名無しさん [2022/01/13(木) 18:48:22.57 ID:OK31jUfcd.net] 質問です。 ピクチャーボックスに描画された物をボタン投下で色を印刷用に変更したいです。 元は背景色黒。線は水色。文字は黄色。四角は緑色塗りされてる物を 背景色白、四角は外枠黒線白塗り、他黒に変更したいです。 これを参考に弄って、背景色は直変更し、線は無事変更、文字は滲んだ感じになり、ほかはそのままでした。 https://dobon.net/vb/dotnet/graphics/setremaptable.html こんなのやるなら色を再設定して再描画した方が早いですかね? イメージ的にはCADで書いてる物を印刷時に白黒反転するみたいな感じなんですが。
655 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 19:01:26.19 ID:Lka/sttda.net] >>644 印刷の品質の観点から言っても「ビットマップを流用する」 という発想自体が不適切で、「描画処理を流用する」べきでしょうね。
656 名前:デフォルトの名無しさん mailto:sage [2022/01/14(金) 07:06:02.10 ID:uASM5+QH0.net] .net 6の Windows Forms の TreeView のサブクラスを作ったのですが、 サブクラスでOnMouseDownをオーバーライドすると動くのに、OnMouseClickをオーバーライドしても動きません。 何が原因でしょうか?
657 名前:デフォルトの名無しさん mailto:sage [2022/01/14(金) 09:52:38.44 ID:Wn0kK1te0.net] そもそもTreeViewのMouseClickはノードのある行の部分しか発生しないけど ノード上でクリックしても反応しないの?
658 名前:デフォルトの名無しさん mailto:sage [2022/01/14(金) 23:45:25.88 ID:8g6TvuWW0.net] こういう実装の隠蔽ってありだと思う? https://ideone.com/XNNgQM リポジトリクラスでしか使わないキークラスを外部から勝手に生成されたくないっていう着想なんだが、 特定のクラスからのみメソッド叩かせたいときとかにも使えそうな気はする 雁字搦め感は出てるし、将来の健忘症になった俺が手を付けてしまう恐れも減るしでメリットはある ただぶっちゃけちまうとinternalで十分では?と他でもない俺自身が思ってしまった
659 名前:デフォルトの名無しさん [2022/01/15(土) 00:11:45.90 ID:TZiSYT8I0.net] 質問させてください using System.Collections.Generic; class TestEnumerable { static public Ienumerable FromTo() { yield return 1; yield return 3.14; } static void Main(string[] args) { foreach(var I in FromTo()) { Console.Write(I); } } } 上記のようなコードがあった場合 yield return1を表示、続きから実行されて yield return3.14を表示すると思うのですが そのあと、メソッドが終了した場合の処理がイメージできません FromTo()メソッドが終了した後は何か値がreturnされるのでしょうか? FromTo()メソッド終了時の挙動の詳細を教えてほしいです
660 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 00:15:49.41 ID:Fo59HrKfa.net] CreateProxyをpublicにしないとエラーになるんじゃないかな
661 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 00:20:28.44 ID:dZ7wz90eM.net] yieldを使ってるメソッドの末尾には 「yield break」が暗黙のうちに挿入される、みたいなイメージをもっておけばいいんじゃないかな
662 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 00:35:37.46 ID:RH/JKl1ia.net] >>650 そんなページ開いたらダイレクトに書いてあることを指摘されたいわけじゃないんだ ニュアンス通じれば良いかなって思いながらも一応直したんだけど張るURLを間違えたんだよ
663 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 01:00:14.09 ID:e/r7AWqZ0.net] は?
664 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 01:05:14.25 ID:mkRG7Oi7a.net] >>649 メソッドのシグネチャのみたまんま FromToはIEnumerableを返すのであって1とか3.14を返すんじゃない。 何言ってるのか理解できなかったら川俣さんの記事のイテレーターの 説明でも読んでもらった方が早いよ。
665 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 01:10:18.60 ID:JIhdD5Fq0.net] >>648 キークラスから派生してリポジトリクラスって構造が変 駄目な継承の使い方だと思う
666 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 01:25:11.79 ID:z3QAlxXC0.net] >>655 キー生成クラスだぞ? 本来リポジトリ内部で生成するものなのに基底に置いては駄目とは何ぞ
667 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 01:43:23.33 ID:JIhdD5Fq0.net] >>656 この場合は継承(is-a)ではなく包含(has-a)にすべき
668 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 01:57:04.48 ID:mkRG7Oi7a.net] >>648 VBは確か型Bが型Aの内側で定義されている時、 BのインスタンスをAが握っているとBのprivateメンバーに アクセスできる裏技があった気がしたんでVBならそれを使う手はあったかも。 試してみたらやはりC#ではできないw
669 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 02:01:13.57 ID:mkRG7Oi7a.net] まあセキリティー的な目的じゃなく単なる精神衛生の問題なら 単純にKeyのコンストラクタをprivateにして必要な個所ではリフレクションで使えばいいよね
670 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 02:49:41.70 ID:mkRG7Oi7a.net] 「早い者勝ち」にしちゃうのもありかなとか思った。いやねーかw public class Key { public int Value { get; private set; } private static int serial = 0; private static Func<Key> func = () => new Key(serial++); private Key(int val) { Value = val; } public static Func<Key> GetCreator() { var ret = func; func = null; return func; } }
671 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 03:06:56.37 ID:ccrjJyGq0.net] >>649 関数内にyield returnがあったらイテレータブロック扱いになって普通の関数じゃなくなる IEnumerable<T>の約束通り、Tの要素を返してって終端がきたらおわり
672 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 11:19:56.44 ID:6qmp/Z4R0.net] >>649 FromTo()が返すのはIEnumerable foreachは大雑把に言えば↓に展開される var iterator = FromTo().GetEnumerator(); while (iterator.MoveNext()){ var I = iterator.Current; Console.WriteLine(I); } イテレータとかイテラブルでググるといい .NETの型名だとIEnumrator<T>とIEnumerable<T>
673 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 12:29:33.15 ID:mY1vrnaaM.net] >>651 有能 >>654 ,662 無能、聞きたいのはお前のチンケな知識じゃねーよ
674 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 13:44:23.87 ID:agiarv77a.net] >>663 馬鹿だねこいつw 質問した人と別人みたいだけど
675 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 14:20:07.42 ID:XKyr/S8qM.net] 馬鹿としか言えない無能w
676 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 14:24:42.58 ID:6Adwrh4F0.net] 今週のNDワッチョイ ドコグロ MM4f-KcIn
677 名前:デフォルトの名無しさん [2022/01/15(土) 14:48:33.55 ID:6bjOtxZz0.net] WindowFormでTimerクラスを使ってlabelのTextを定期的に変更したのですが 「有効ではないスレッド間の操作」ということでエラーになってしまいます。 どのようにすれば実現できるでしょうか? public Form1() { InitializeComponent(); var timer = new System.Timers.Timer(); timer.Elapsed += new ElapsedEventHandler(OnElapsed_TimersTimer); timer.Interval = 5000; timer.Start(); } private void OnElapsed_TimersTimer(object sender, ElapsedEventArgs e) { label1.Text = "1"; }
678 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 14:53:57.88 ID:OfoSB/Yx0.net] >>667 Timerには何種類かあって WinFormsならSystem.Windows.Forms.Timerクラスを使うのが簡単
679 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 14:56:31.51 ID:2bsBwYtoa.net] スレッド間の〜は Invoke((MethodInvoker)delegate{処理}); ってやればわんちゃん
680 名前:デフォルトの名無しさん [2022/01/15(土) 16:08:48.34 ID:6bjOtxZz0.net] Windows.Forms.Timerクラスでやりたいことができました! 後学のため、Invokeも調べたいと思います ありがとうございます
681 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 20:02:17.15 ID:XKyr/S8qM.net] >>666 黙ってNGできない無能w
682 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 04:00:49.97 ID:az6Mfsfa0.net] OpenCVSharp入れたらexeのフォルダがdllだらけになったんですが、 これ全部リリースの時にこのまま一緒に渡さないといけないんですか? exe1個にまとめられないんですか?
683 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 07:00:20.21 ID:DVPU1vQA0.net] >>672 単一ファイルの配置と実行可能ファイル https://docs.microsoft.com/ja-jp/dotnet/core/deploying/single-file
684 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 10:03:18.59 ID:gWCKJdmK0.net] ネイティブじゃね?
685 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 10:19:22.15 ID:1ZlPRUHva.net] インストーラーのexeひとつ渡せばおk
686 名前:漆黒の翼 mailto:sage [2022/01/16(日) 20:01:08.59 ID:VfeV/Qg80.net] 教えていただきたいのですがWindowsでc#のプログラムが落ちた時にメモリダンプを吐くようにするにはどうすればいいのでしょうか? よろしくお願いいたします
687 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 20:14:28.43 ID:8g0F/aL60.net] メモリダンプ吐くと何かわかるん?
688 名前:漆黒の翼 mailto:sage [2022/01/16(日) 20:18:34.35 ID:VfeV/Qg80.net] >>677 メモリダンプをvisual studioに食わせるといろいろ分かります!!
689 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 20:19:29.37 ID:el47HiNu0.net] メモリダンプを解析できない人たちのスレですよ、ここは。
690 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 20:22:15.01 ID:F2RYBHf20.net] 明らかに"初心者用"の範疇を超えているよね
691 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 20:34:12.82 ID:T486FPBl0.net] C#でゲロ吐く方法はしらん Windows Error Reportingで取得するはずなので、呼び出せば行けるかもしれない
692 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 20:41:28.24 ID:X0X6y0PK0.net] 先輩社員から「まずはメモリダンプとって調べてみろよ」と無理難題言われたとか
693 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 20:47:08.84 ID:el47HiNu0.net] Drワトソンって解雇されてたのか。
694 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 21:01:51.64 ID:uYZKVP770.net] メモリダンプを見ると 変数とかスタックとの内容がじかにわかるので デバグの助けになるかもしれない そこまで必要になることは珍しいけど
695 名前:デフォルトの名無しさん [2022/01/16(日) 21:18:19.12 ID:VfeV/Qg80.net] >>677 ダンプ解析入門 - Visual Studioでの可視化によるC#トラブルシューティング - Grani Engineering Blog の説明読むとどういうことがわかるかわかります
696 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 21:38:53.48 ID:zIpkfF6j0.net] >ダンプ解析入門 - Visual Studioでの可視化によるC#トラブルシューティング 読んでみたけど支離滅裂な記事だった でもメモリダンプ吐くよう設定する方法はちゃんと書いてたぞ
697 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 21:40:20.63 ID:P0LzLgpAM.net] >>683 出世して Watson Server として MS で働いてます
698 名前:デフォルトの名無しさん [2022/01/16(日) 21:42:20.27 ID:VfeV/Qg80.net] https://docs.microsoft.com/ja-jp/dotnet/core/diagnostics/dumps ここ読むと環境変数だけでいけそうだができませんです
699 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:06:33.35 ID:aMgjkUSV0.net] C#でメモリダンプが必要って、C#の利点捨てまくったクセの強い作りしてるんちゃうか UnsafeゴリゴリとかそれC#で作る意味あるのっていう
700 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:08:28.63 ID:8g0F/aL60.net] >>686 書くやつも書くやつなら読むやつも読むやつってことだな
701 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:17:34.06 ID:8g0F/aL60.net] まあ、そんなもん調べても結局使ってるライブラリがタコでしたなんて可能性もあるし それより先にやることあんじゃねーの? 的な
702 名前:デフォルトの名無しさん [2022/01/16(日) 22:20:42.02 ID:VfeV/Qg80.net] 長時間連続運転するプログラムなんだけど、ちょっとずつメモリ使用料が増えていくななんて 時はメモリダンプ一択だと思うんだが・・・ というかID:8g0F/aL60さんはC#のメモリダンプ何回くらい使った経験あるの? ゴミクズのような経験から導かれた結論は、やっぱりゴ
703 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:24:55.74 ID:el47HiNu0.net] 例外機構が当たり前になった今ではアプリ内でcatchするだけですからね。 仮にテストですり抜けてもcatchしたらエラーログに吐けよと。 今ではWinDbgでカーネルダンプ解析するぐらいかな。
704 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:27:14.39 ID:el47HiNu0.net] C#はガベコレあるからメモリリーク気にしないでいいって後輩が言ってました!!!
705 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:41:54.12 ID:RG8YDX1E0.net] 少しずつメモリ使用料が増えていくとか、 Ruby みたいに、世代別GC を使っていたら、 古世代は閾値を越えるまで実行されないかも知れないし、 さらに、メモリ領域が大きいと、閾値もかなり大きいだろうし、なかなか実行されない
706 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 23:17:44.09 ID:8g0F/aL60.net] >>692 正直ないね 無駄だから c#でリークの対応なんて無駄 精々頑張った挙げ句にウチの会社が組んだところじゃない箇所でリークしてて対応できません みたいな事実がわかるだけ まず、c#みたいな 厳密なメモリ管理ができない言語での 組み方を学ぶべき 3日に一度再起動するとか 機能毎にモジュール化して動かすたびに破棄するとかな 廃棄したらガベコレ適当に実行してりゃOSが片付けてくれるだろ
707 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 23:31:50.74 ID:I0k7QK8La.net] 何のお役にも立てんけど、「メモリ使用料」って結構じわるねwww まあマネージドなユーザーコードでリークが発生する原因は限られてるし、 ユーザーコードじゃないならどうしようもないし、ブル中野みたいな大鉈振るう必要って 確かにあるのかなという気はする
708 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 23:40:43.96 ID:zIpkfF6j0.net] >>692 メモリ使用量が増えるならまずはプロファイラーじゃないか?
709 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 23:42:20.42 ID:zIpkfF6j0.net] C#でも断続的に性能が極端に悪化する問題みたいなのが発生したときに 性能悪化したタイミングでダンプ吐かせると糸口がつかめたりする そういうのはだいたい.NET Frameworkとか下位の部分が原因だけど 原因が明確になれば回避策が取れる
710 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 23:44:56.33 ID:8g0F/aL60.net] >>699 それもうガチでわかんねーときの最後の手段で まずはデバッガで見てみるべきじゃね? 最近は結構いい機能が付いてる VC6の時代とは違う
711 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 00:12:14.01 ID:BWxacq0R0.net] C#でのリークは大抵長寿命のeventに+=してるだけでしょ
712 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 07:41:52.27 ID:MbNkwuBfa.net] GDIなどのシステムリソースの解放忘れとか
713 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 09:30:07.53 ID:9uEhEVX70.net] リリースの特殊な(?)解放方法なんて半ば作ったやつの趣味だからな 可能であれば別モジュールにしてキックして終わりがいい 個人製作的な(会社内であっても)ライブラリだとusingのdispose実装忘れはよくある 信じて使うと後ろからバッサリだ
714 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 10:45:22.36 ID:TWhgTM4G0.net] もう半年以上起動しぱなっしの.NET5で作ったスクレイピンクツールあるけど25mbで安定してるな
715 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 12:44:47.10 ID:DKJy6PH50.net] >>704 25ミリバールって気圧かよw
716 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 13:14:05.94 ID:U4Fph
] [ここ壊れてます]
717 名前:VWG0.net mailto: ミリビットだろ、この板なんだから [] [ここ壊れてます]
718 名前:デフォルトの名無しさん [2022/01/17(月) 13:15:12.00 ID:XdTy16+8M.net] ミリバールって昭和かよ
719 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 13:45:40.07 ID:McAG9Ljja.net] マネージドな世界で閉じている限り、Disposeの実装ミスや呼び出しの忘れは リークの原因には普通はならないと思うけどね。 単にリソースの解放が逐次的でなくなるだけ。
720 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 13:52:14.45 ID:NIAK/ICvM.net] >>708 Disposeが呼ばれたらstaticなイベントからハンドラを削除するような実装は低品質なライブラリなんかだとたまに見かける
721 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 14:02:14.57 ID:s/zLKX0LM.net] >>708 > GDIなどのシステムリソースの解放忘れとか の話の流れで > マネージドな世界で閉じている限り とか頭おかしいのか?
722 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 14:05:18.68 ID:McAG9Ljja.net] >>710 頭がおかしいのは君の方 普通のプログラマはマネージドなライブラリを挟んで 間接的にGDIのリソースを利用するんであって直接使ったりしないの だからライブラリのコードにバグがない限りGDIを間接的に 利用しているからといってリークの原因にはならないんだよ
723 名前:デフォルトの名無しさん [2022/01/17(月) 14:10:54.78 ID:McAG9Ljja.net] ついでに言えば、俺は別に>>702 に反論したわけじゃないw すごい被害妄想だよねw ネトウヨさんじゃねえのw
724 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 14:26:56.43 ID:ly062VWjM.net] 普通のプログラマw 無能の言い訳に多用されてて笑う
725 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 14:40:41.16 ID:IUPVmsWca.net] 理想のマネージドだったらdisposeなんて関係ないし、メモリリークなんて起きない でもc#は理想のマネージドじゃないんだよ・・・
726 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 15:20:30.64 ID:C2NpqJUJM.net] ゲロみたいな話題で盛り上がってんなあ
727 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 17:33:38.89 ID:0pf4TYua0.net] っぱRustよ
728 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 19:32:54.18 ID:rqpdgGXW0.net] mb ミリビットもジワるwww
729 名前:デフォルトの名無しさん [2022/01/18(火) 09:23:03.79 ID:HVobsaMl0.net] 低レベルな質問で恐縮です。VisualStudioを使っています。 やりたいことは、定期的に更新されるcsvからデータを取得しDataGridViewに表示させたいです。 (つまり、DataGridViewでリアルタイムに更新されているように見せたい) 取得・更新することはできたのですが、更新時にソート状態が解除されて困っています。 DataTable・DataSet・DataSource・データバインドなどのキーワードを見つけて調べているのですが、理解力が乏しく解決できていません。 こんな方法があるよと、ヒントになる助言をいただけたらありがたいです。 よろしくお願いします。
730 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 10:13:54.13 ID:Tap2eyJjM.net] >>718 DataGridViewのSort順を復元するだけでは?
731 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 10:18:04.98 ID:jhcMMPao0.net] ・DataGridViewにどうデータをセットしているか、どう更新しているか ・どうソートさせているか ・ソート状態が解除というのは結局どういう状況になっているのか を具体的に
732 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 11:36:28.39 ID:HVobsaMl0.net] 反応ありがとうございます。 >>719 更新前にソートされている列を取得して、更新後に強制ソートする という感じですね。試してみます。 >>720 >DataGridViewにどうデータをセットしているか 今の状態は、あるサイトにのっていたコードをコピペして試しています。 //フォームデザイン //csvデータ:person_read.csv //button4のソース ソースコードはこちら ttps://dotnetfiddle.net/i89pR3 ///////////////////////////////////
733 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 11:37:01.32 ID:HVobsaMl0.net] >・どう更新しているか button4を押すたびにcsvからデータを更新しています(実現したらtimerで自動更新に変更予定) >・どうソートさせているか >・ソート状態が解除というのは結局どういう状況になっているのか button4クリック→初期状態(csv並び順) GUIのdataGridViewの任意の列(
734 名前:痰ヲば年齢)をクリックしソート 1,山田,25 3,鈴木,28 2,佐藤,30 4,山田,46 csvに 5,田中,37 が追加される button4クリックで更新 csvの並びに戻る(希望はこの順で表示させたい) 1,山田,25 → (1,山田,25) 2,佐藤,30 → (3,鈴木,28) 3,鈴木,28 → (2,佐藤,30) 4,山田,46 → (5,田中,37) 5,田中,37 → (4,山田,46) 以上です。 [] [ここ壊れてます]
735 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 11:43:01.00 ID:HVobsaMl0.net] リンクが404になっていたので貼り直しします。 これで大丈夫か心配ですが。 https://dotnetfiddle.net/ulZ3M9
736 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 13:08:53.17 ID:jhcMMPao0.net] DataTableの場合ソート順は dataTable.DefaultView.Sort に文字列で格納されるからこれを使えばいい
737 名前:デフォルトの名無しさん [2022/01/18(火) 13:20:14.01 ID:k1mhP8XB0.net] C#で正規表現のperlでの「tr」と同じ事をしたいのですが、 Regexクラスにそれっぽいのがありません。 何か方法はありませんでしょうか?
738 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 13:29:49.03 ID:pQS/rHaxa.net] trは置換なのか?だったらc# regex 置換とかでぐぐりゃ方法出るだろ 痴漢じゃないなら知らない
739 名前:デフォルトの名無しさん [2022/01/18(火) 13:41:14.96 ID:k1mhP8XB0.net] 置換ではあるのですが、 pattern [a-z] replacement [a-z] とすると半角英字が全角英字に変換されるといった感じです
740 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 13:52:43.16 ID:pQS/rHaxa.net] 正規表現でマッチした位置とマッチした文字列を取り出すのはできる 正規表現関係なく文字列を全部変換するってならできる これを組み合わせて自分でやるしかないんじゃない?
741 名前:デフォルトの名無しさん [2022/01/18(火) 13:54:14.42 ID:9szJ9jA+0.net] Regex.Replace(mojiretsu, "[a-zA-Z]", p => ((char)(p.Value[0] - 'a' + 'a')).ToString()); 動確はしてない。
742 名前:デフォルトの名無しさん [2022/01/18(火) 14:04:35.01 ID:k1mhP8XB0.net] なるほど、やはりないですか ありがとうございました
743 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 18:17:30.27 ID:UqX3jEvG0.net] 全角半角ならVB.NetのStrConv使えばいいじゃね
744 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 18:27:21.22 ID:80llBYJsr.net] c#って全角半角変換でまともなメソッド用意してないよな
745 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 18:49:27.58 ID:HVobsaMl0.net] >>718 です。 .SortedColumn で現在のソート選択列を取得 ListSortDirection で昇順・降順の状態を取得 データ更新後、.Sort で更新前のソート状態を復元することができました。 >>719 さん>>724 さんヒントをありがとうございます。 >>720 さん、気にかけていただいてありがとうございます。 また何かあればよろしくお願いします。
746 名前:デフォルトの名無しさん [2022/01/18(火) 19:17:27.38 ID:DZmAMHWt0.net] >>732 C#の言語仕様にそんなのあるわけないだろうが 頭がおかしいのかな?
747 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 19:30:02.02 ID:uGAsykz90.net] .NETのことだろ。 あれ本当に不便。
748 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 19:44:39.78 ID:g9d5Z42+a.net] 全角無視した比較はあるんだから変換もあればいいのにな .net6はいたるとこでCultureInfo受け取れるようになってるから、オリジナルCultureInfo作ってやればtolowerなんかはできそう
749 名前:デフォルトの名無しさん mailto:sage [2022/01/19(水) 04:15:15.58 ID:4BL/bkWB0.net] nuget辺りに.net言語で使える漢字処理モジュールみたいのないの
750 名前:デフォルトの名無しさん [2022/01/19(水) 13:57:55.37 ID:b1tRS/0c0.net] あの、Asp.netMVCでサイトを作ったんですが、 robots.txtって Global.asaxと同じ場所もしくはViews\Layout.cshtmlと同じ場所 のどっちに置けばいいんでしょうか?
751 名前:デフォルトの名無しさん [2022/01/19(水) 22:04:21.46 ID:67zDZ4RH0.net] WebProgという板があるからそっち言ってみれば?
752 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 08:59:26.49 ID:fgAfnzipM.net] >>738 デプロイしてみればわかる話を
753 名前:、何故聞いてしまうのか? [] [ここ壊れてます]
754 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 10:11:03.18 ID:8HL1zORE0.net] めんどいじゃん ネットでクダ巻いてるゴミが代わりに試して教えてくれれば儲けもんだろう?
755 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 12:57:10.80 ID:MJ6I7RR7r.net] おっ、そうだな
756 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 14:46:47.86 ID:n7chvAG30.net] >>741 うそを教えられるという可能性は考えないのか?
757 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 18:34:05.33 ID:NL1fx3HA0.net] すでにサイト作ってる段階なら、掲示板で聞くより自分で試すほうが早いと思うんだがなぁ
758 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 00:57:35.59 ID:yyC8EMRk0.net] 共変と反変という言葉がよく分かりません アップキャスト/ダウンキャストと何が違うんでしょうか?
759 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 02:01:57.32 ID:r2dC59Vr0.net] class B{} class C:B{} class D:C{} static D Function(B b){ return new D();} Func<C,C> fp = Function; Functionの返り値DはCの派生クラスだから返り値CのFunc扱いしても大丈夫だよねってのが共変 Functionの引数BはCのベースクラスだから引数CのFunc扱いしても大丈夫だよねってのが反変 両方ともアップキャスト(asがいらない)が約束されてるから許される
760 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 04:17:33.74 ID:9FYmM/Q0a.net] ハロウィンの子供にチョコレートを渡せることが反変で チョコレート工場をお菓子工場とみなせることが共変ってことか
761 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 08:32:03.92 ID:kufT2hajr.net] よく理解できるね これを理解したとしても他人がコードを読むの大変だよね コメントに書いておくものなの?
762 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 10:57:27.37 ID:r8LIAXWEM.net] c#自体にそういう機能があるので楽だねって感じ うまくいかない場合は何か思い違いしてる
763 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 22:48:46.71 ID:0wwLw+zrM.net] >>746-747 めちゃくちゃ分かりやすいです ありがとうございました
764 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 22:52:58.30 ID:DQ1OUxKV0.net] なにこれ もしかしてnullになるかもしれんやつは片っ端から?つけなきゃいけなくなったの??
765 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 23:17:35.13 ID:Yoc43dCB0.net] そうだぞ
766 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 23:37:35.61 ID:DQ1OUxKV0.net] なんか俺かっぺになった気分だべ・・・
767 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 01:35:08.87 ID:xgyvtLBZ0.net] nullチェックをコンパイラが管理するやつだから慣れれば神機能
768 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 06:49:46.16 ID:sQZaaq50M.net] 参照前に必ずnullチェックというコーディング規約から解放される?
769 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 07:48:24.01 ID:dpfIrrzB0.net] なわきゃあない
770 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 08:36:39.06 ID:odBVOzqN0.net] on/offを行単位で切り替えられるから混乱すると思う
771 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 09:30:40.13 ID:AMYiKIMXM.net] 行単位でそんな事する奴はすでに混乱してるだろw
772 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 09:57:57.24 ID:dGbyTm5r0.net] 何が利点なんだろうネ?(笑)
773 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 10:16:46.92 ID:z2LDxi9+M.net] まあ利点がわからないなら君は今のままでいいんじゃね?
774 名前:デフォルトの名無しさん [2022/01/22(土) 10:35:14.93 ID:tP9M/cw30.net] 5年ぶりに.Netで作ることになったんだけど、.Net Frameworkってオワコンなの? Coreとか出てきてさらに.Netに統合されるとか混沌としてて何が今の最適解なのか解らない。 どうせ作るなら今の最適で作りたいからお聞かせ願いたい。 つかWPFって普及前に死んだ感じ?
775 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 10:40:46.17 ID:om6KWGu40.net] .NET FrameworkはオワコンだけどWindowsに標準で入ってるのでWindowsユーザー視点だと一番有難い WPFもWinFormsのWindowsであれば現役
776 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 11:13:26.21 ID:dGbyTm5r0.net] .netもオワコンだが WPFもオワコンなので 代わりがない状態 他のはもっと過疎ってて .netやWPFより更に消えやすい感じ なので何もオススメできない状態
777 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 11:41:22.99 ID:cBfIrJY2a.net] オワコンっても単なる流行の話だからな中身はオワコンでもない .NET Framework 4.8 .NET6 今選ぶならこのどちらか。どっちも長期サポートになってるはず 表面的にはどっち選んでも同じ。昔の記憶が残ってるなら4.8使った方がスムーズに扱える UIは色々増えてるけどwinだけならWinFormsが無難
778 名前:デフォルトの名無しさん [2022/01/22(土) 11:45:58.45 ID:tP9M/cw30.net] >なので何もオススメできない状態 調べる限り、今はコレってのが無いんだよね。 WPFも生き腐れしてるみたいなので、 無難なWindowFormsと.Net Framework4.6.Xで良いやって思ってます。 ぬるぬるUIによる快感性はiOSに任せようと。
779 名前:デフォルトの名無しさん [2022/01/22(土) 11:49:15.98 ID:tP9M/cw30.net] >.NET Framework 4.8 ユーザーのコンピュータには.NET Framework 4.6が入ってるので 5年程度を稼働を目安にすると.NET Framework 4.6のが導入のハードルが 低くて良いなと思うのですが、.NET Framework 4.8のが何か優れてるんですかね? 純粋にサポートの長さかな。
780 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 12:08:19.50 ID:cBfIrJY2a.net] 4.6だと今年でサポート終了かな サポート気にしないなら・・4.xの差で機能的にはほとんど変わってないから何使っても同じ ただちょこちょこソースコードの書き方が追加されてる(変更じゃなくて追加だから昔の書き方で問題起きない) ぐぐってソースコードコピペしたときに新しい書式のソースコードだと思わぬエラーがでて困るかもしれないって程度 わざわざ古いの選ぶ意味もないけど、新しいの入れるのが面倒なら古いままでもいいんじゃないって程度だよ
781 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 12:11:29.47 ID:63g4vstfM.net] 基本的には.NET6を選べばいい 既存システムのメンテナンス・マイグレーションなら資産状況次第だけどFW48の方が低リスクで間違いない ランタイムのサポート期間は意外にもFW48の方が長い でも開発環境のサポート期間はわからない
782 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 13:06:27.03 ID:MOxbGC/+0.net] 最近は4Kとか高解像度ディスプレイ対応(スケーリング対応)が必要になって来たせいか WPFを使ってる所が前よりは増えた印象 他に良いのが無いから消去法で採用って感じ何だろうけど
783 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 13:10:19.88 ID:MOxbGC/+0.net] >>766 スケーリング対応は4.8の方が改良されてる もっと言えば.NET6の方が進んでるけど
784 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 13:16:37.15 ID:+eWEN8w/0.net] WPFでもMVVMを考えなくてもWinFormsと同じように使えるし、スケーリング対応が楽なのはいいよね あと最近のWindows10は標準で4.8が入ってなかったっけ?
785 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 13:25:41.09 ID:i+EsaIAtd.net] サポート期間を気にするなら.NET6は問題外だよ なんと2024年にサポート切れ
786 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 13:36:54.52 ID:63g4vstfM.net] 十分だよ .NETは互換性が高いから.NET8への移行も苦労はせんだろう 他の言語と比べたら天国だ
787 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 14:04:30.15 ID:MOxbGC/+0.net] >>771 WinFormsの*.Designer.csと*.resxから解放されるのも大きいね 差分を見たりマージするのに問題あり過ぎた Windows10はMay 2019 Update(1903)から標準で4.8が入ってる 現在サポート中のバージョンは全部4.8が入ってるね
788 名前:デフォルトの名無しさん [2022/01/22(土) 14:08:40.62 ID:gJEoCqwv0.net] 今の最適で作りたいなら.NET 6/WPFだな
789 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 14:33:41.83 ID:KL4k8E210.net] .NET Frameworkは最終版の4.8でもC#7.3までの対応 C#8.0は.NET Core 3 C#9.0は.NET 5 C#10.0は.NET 6 C#のバージョンを上げるなら.NETも移行せざるを得ない
790 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 14:35:53.77 ID:nTnTl9DUr.net] わかりました、Mauiで頑張る
791 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 14:44:13.78 ID:Ii2fD9R0a.net] WPFの方が高DPI(高「解像度」では必ずしもないよね)対応が優れているっていうのは DPIが異なる複数のディスプレイ間をウィンドウが行ったり来たりするような状況を想定した話?
792 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 14:49:58.72 ID:ARjVXSY1M.net] WPFってWebみたいに解像度に合わせて画像切り替えるとか標準じゃできないだろ? HDPI対応が優れているとか片腹痛い
793 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 15:19:51.12 ID:EyuzyEvM0.net] 俺社環だと2012R2なんで4.5.1なんだよな サポート外だからさっさと4.6移行に切り替えたいけど、不具合出てないから誰もやりたくないという
794 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 16:54:28.58 ID:1FaTcT0G0.net] >>779 そんなもん解像度は取得できるしなんとでもやりようあるやろ つうデスクトップGUIアプリに求めることかそれ? どんなシチュエーションで必要なのかわからん
795 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 18:01:32.84 ID:dpfIrrzB0.net] 想像力が無いだけだなあ
796 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 18:55:07.04 ID:Hnp3kh2k0.net] >>780 誰もやりたがらないけど、OS のサポート切れが迫ってきて対応中。w いまさらその上で動いてるオレ様ソフトのインストールの手順とか覚えてないんだけどなあ。
797 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 19:41:02.79 ID:DSkywrpw0.net] ドキュメントは残しておけよw
798 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 19:49:34.26 ID:vcUHcBQYM.net] 昔自分用に作った(家で自分の時間を使って)アプリがあって退職時に無理やり引き継ぎさせられて勝手に使われてる PC壊れたときに連絡あってアプリを送った思い出…
799 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 19:51:39.05 ID:vcUHcBQYM.net] 毎日使うものなので劇的に工数が減った あくまでも自分用 それを恨みこそすれ感謝してない元会社がタダでずっと使ってる
800 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 21:17:29.45 ID:9EvEVFCn0.net] Main内 Test t = new Test(); t.Num = 1; t.Add(10); Console.Write(t.Num); class Test { public int Num {get; set;} public int Add(int p) { return Num + p; } } これで出力が1になるのは何故なのでしょう?11になると思うのですが…
801 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 21:22:02.32 ID:vcUHcBQYM.net] return Num + p; これは足したものを返してるだけで Num自体に変更をかけていないからな Num = Num + p; return Num; ならわかる
802 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 21:37:34.36 ID:9EvEVFCn0.net] あ、、、確かに。納得しました。 ありがとうございました
803 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 23:20:32.09 ID:mmM8IstB0.net] いえいえ
804 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 14:44:30.58 ID:is+XSiL/0.net] すみません、初心者で何からしたら良いのか、何をすべきなのか分からなくて助けてください。 計算アプリを作らなければならず、調べてなんとかボタン配置とかはできたのですが、プログラミングが何をどういった順番でするのか分からなくて… 計算は 固定数字÷ボタン入力した数字(+必要に応じて選択した数字)×ドロップダウンで選択した数字 これを出来るようにしたいのですが、やるべきことは @ボタンとドロップダウンの紐付け?認識? A入力した数字の表示 B()の条件付け C計算結果の表示 これで大丈夫でしょうか? うまく質問できず、申し訳ありません。 今までプログラミングに触れたことが無く、必要情報が不足していましたら追加致します。
805 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 15:13:55.20 ID:XkFSmW1wd.net] 今期の単位は諦めましょう
806 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 15:15:05.76 ID:Wu5qqWWYa.net] ボタン押したらボタンに対応した値を表示する(固定値で割らなくておk) それができたら、次は固定値で割った結果を表示するように修正 それができたら、次はドロップダウンの選択が変わったことを知る方法と選択された値を取得する方法調べる それがわかったら、ドロップダウンの値を掛けた結果を表示できるように修正 それができたら、どんな条件でこういう計算するって条件別け かな?
807 名前:デフォルトの名無しさん [2022/01/23(日) 15:16:44.75 ID:CCpFlBt8M.net] それを決めたら他の人がコードを書いてくれるのか? それならマルナゲをオススメ
808 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 15:20:46.99 ID:is+XSiL/0.net] >>793 ありがとうございます! 直ぐにやってみます。 やるべきことを分かりやすく教えて頂き、本当にありがとうございます。
809 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 15:30:22.12 ID:is+XSiL/0.net] >>794 いえ、コードも私が書かなければなりません。 丸投げする相手が居ないです…
810 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 19:04:59.40 ID:nwzKJ0xW0.net] ひっでえ課題 そんなもんが何の足しになるんや
811 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 19:47:07.31 ID:is+XSiL/0.net] やっと、数字の表示ができました…… 何故か一桁しか表示されなくて、次の数字押したら上書きされるけど、表示はできました… 何のたしになるかは分からないです… 曰く『コロナ禍だけど、この機会に家で出来きることをしよう!』って事らしいです。
812 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 19:48:24.39 ID:is+XSiL/0.net] 投稿が重複してしまいました、誠に申し訳ありません。
813 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 23:26:33.12 ID:pR5ferbX0.net] メンバー'hoge' はインスタンスデータにアクセスしないため、static にマークできます
814 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 12:21:02.64 ID:bXxRLmwJ0.net] 四角をグラフィックに描画する場合の座標について g.DrawRectangle(pen, 始点x座標,始点y座標,幅,高さ); このようにあります ならば幅が2,2の場合 g.DrawRectangle(pen, 16, 16, 2, 2); これで(16,16)-(17,17)で2ドットだけの中抜きがないものを想像するのですが 実際は (16,16)-(18,18)の中央に穴がある状態の四角が描画されるようです これは3,3指定なら理解できるんですが 幅指定なのになぜこのようになってしまうのでしょうか?
815 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 12:39:27.95 ID:zeqExr0Ka.net] g.DrawRectangle(pen, 16, 16, 1, 1); g.DrawRectangle(pen, 16, 16, 0, 0); こいつらはどういう挙動をするべきかを考えたら?
816 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 13:27:00.02 ID:VRumLvNTM.net] GDIは終点は描画領域に「含まない」 だから、幅として成立する。 FORTRAN由来とかで「含む」系 もあるので注意だ
817 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 14:09:38.84 ID:97kNTb42a.net] >>801 まあこうは言える。 まずユークリッド幾何学的な数学的に抽象化された世界で考えるべき。 その世界では、1対の平行線の距離がペンの幅より大きければ必ず平行線の間に「隙間」が出来る。 GDI+の描画はこういう抽象化された世界をピクセルの世界に写像してるだけ
818 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 18:54:49.46 ID:97kNTb42a.net] まあたぶんこんな感じだね (1) 論理座標の原点は(0, 0)のピクセルの中心に設定されている。つまり論理座標とピクセル座標は 0.5ずれている(少なくともペンの幅が奇数ピクセルの時は) (2) DrawRectangleは論理的な矩形の辺がペンの中心になるように描画する (3) だから描画された矩形はペンの幅の1/2 * 2だけ指定したサイズより大きくなる
819 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 19:46:14.25 ID:ph7NlGryd.net] 小数のない世界なら厚みゼロで隙間がないんだろうけど、塗りつぶすならFillRectngleで明示しろってことかな。
820 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:02:24.84 ID:AwkrZJuk0.net] 独習C#やってるんだけど、これを一通りやれば基本は身に付くと思っていい?
821 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:03:27.85 ID:3T3OgJ8A0.net] 信じるしかないだろ。もう買ってしまったのだから。
822 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:23:59.29 ID:bPaq+vdr0.net] >>807 その本なら自信持って良いよ。 record, using var, initなどのC#8以降の機能は別途学習が必要。 LINQや正規表現などは実践でないとなかなか身につかないので、だいたい理解したらどんどん読み進めるのがおすすめ。 ちなみにプログラミング未経験で、全部読むのに3ヶ月かかりました。
823 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 00:57:13.82 ID:TS8Lm52TM.net] 自分だったら3か月かかるならモチベーションが保てそうにないなw 20年前はそんな本がなく手探りだったけど逆に良かったのかな…
824 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 01:14:23.92 ID:TS8Lm52TM.net] 仕様もライブラリも今よりペラペラだったから入門しやすかった
825 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 01:55:09.45 ID:4qIztPSU0.net] >>809 ありがとう プログラミング経験はエクセルVBAのみ C#は簡単な方だと聞いてたけど難しいね、頑張ります
826 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 12:37:45.33 ID:IaxANYMEd.net] やっつけ仕事するだけなら今も昔も変わらんと思う C#の便利機能が山ほど増えてて書きやすくはなってるけどどこまでが入門なのかは正直わからん
827 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 13:20:24.56 ID:S6jLK41vM.net] Recordとかぜってえ使わねえ
828 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 13:32:46.48 ID:MBxJE5i40.net] ともーじゃん? ・・・まあ使わなくても済むよなあ
829 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 13:50:18.74 ID:wOQPCoOZM.net] DTOだらけの低品質なコードが量産されてTypeScriptみたいになりそうな気はしてる
830 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 14:28:40.80 ID:pfxZ0tMsd.net] おれも独習で勉強した 分厚いから真ん中ぐらいまでくると最初の方忘れてるわ んでもう一度戻ってやり直したり、途中で挫折したりで 1年以上うだうだ読んでた 読み終わる前にいろいろ作って遊んでたけど イベントとか非同期処理とか分からないとまともなの作れないんで 途中すっ飛ばしてその辺読んだり
831 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 19:22:56.75 ID:uxP3YVvMH.net] >>817 その独習、旧版(ハーバード・シルト)?
832 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 19:59:28.45 ID:zF2HduXmM.net] シルトは過去の人 昔読んだ時もそういうイメージ 文法ぐらいが得意分野
833 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 21:16:01.91 ID:uxP3YVvMH.net] >>819 では最近の教科書で優れたものは、どなたの著作ですか?
834 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 00:27:57.09 ID:XnQeNwtl0.net] 俺はオライリーの薄いやつで大体把握して、デザパタをjavaの結城さんのやつで学んだな
835 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 10:26:45.87 ID:i4V+v3ft0.net] C++の本で勉強した知識だけでC#の本は買わず、dobonを見ながら書いてる
836 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 00:37:45.37 ID:UrWQ/KNN0.net] dobonよく参考にしてるけどもしかして見てるとバカにされる風潮とかあるの?
837 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 00:43:53.93 ID:OmkEpZCo0.net] 昔はよくお世話になったけど、今となっては古い記事が多いので最近はあまり見ないな
838 名前:デフォルトの名無しさん [2022/01/28(金) 05:13:54.08 ID:AmULl7RP0.net] 全ページのヘッダに古い言語仕様の内容であることの明示くらいはしてほしい あと初心者向けと言いながら 同じ処理でベストプラクティスと非推奨な書き方を同列に載せてるのも印象よくない
839 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 08:13:42.95 ID:MUNMfoCeM.net] recordはvalueobject作るのに便利 使い捨てのアプリ作るのには不要
840 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 12:18:41.61 ID:g6bFcMDaM.net] で、あるか
841 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 14:24:04.65 ID:C+lFkEfx0.net] お世話になります。 ComboBox.IsReadOnly を使おうとしてエラー(usingまたはアセンブリが不足)が出ました。 https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.controls.combobox?view=windowsdesktop-6.0 で調べ、 名前空間:System.Windows.Controls アセンブリ:PresentationFramework.dll を追加しました。 しかし、現時点でエラーに変化がなく困っています。他に考えられる原因があればお教えてください。
842 名前:デフォルトの名無しさん [2022/01/28(金) 14:32:54.24 ID:QwC8uFzi0.net] 「他」とか言われてもお前以外にゃわからんのよ
843 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 14:38:21.72 ID:S6VsJW6p0.net] >>828 追加したのはWPF用のアセンブリだけどお前が作ってんのはWPFじゃなくてWinFormsだとか
844 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:20:17.24 ID:D0DTDHxMd.net] ComboBoxのインスタンス作らずにプロパティ見ようとしてるとか? プロジェクトのエラー起こしてるコードさえないからわからん
845 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:31:53.40 ID:C+lFkEfx0.net] >>829 >>830 反応ありがとうございます。 はい。WinForms(VisualStudio使用)です。 ソリューションエクスプローラーの参照からアセンブリを探して追加しました。 WPF用ではなかったか確認します。 using System.Windows.Controls と書いて追加した気になっていましたが、 ソリューションエクスプローラーに同名がないのを確認しました。これが原因かもしれないので調べてみます。 >>831 盲点でした。確かにインスタンス化していません。やってみます。 みなさんのアドバイスのおかげで糸口が見えました。あとは自力で頑張ってみます。 また困ったことがあればよろしくお願いします。
846 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:36:53.16 ID:bcAzYVuU0.net] >>832 横からレスだけど、次からは情報を端折らずに書いてね 場合によるから
847 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:38:40.89 ID:bcAzYVuU0.net] >>832 833の追記 WinFormsのComboBoxはSystem.Windows.Formsの方だったはず
848 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:51:48.62 ID:C+lFkEfx0.net] >>832 反応ありがとうございます(横レスでも大歓迎です) 情報を端折ってしまったようで今後気を付けます。 必要になる正しい情報とはこちらでよろしいですか? エラー CS1061 'ComboBox' に 'IsReadOnly' の定義が含まれておらず、型 'ComboBox' の最初の引数を受け付けるアクセス可能な拡張メソッド 'IsReadOnly' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください それとも部分的であってもソースでしょうか?今回の問題では必要ないと判断してしまいましたが、次回以降気を付けます。 次回もぜひお願いします。ありがとうございました。
849 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 16:04:30.29 ID:AFiLYmq20.net] 単に、WinFormsのComboBoxにはIsReadOnlyプロパティが存在しないだけだな https://atmarkit.itmedia.co.jp/ait/articles/0711/01/news152.html
850 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 16:32:10.58 ID:bcAzYVuU0.net] >>835 エラーメッセージもそうだけど、こっちが言ってたのは「WinFormsかWPFか」の方だね WinFormsの方のComboBoxにはDropDownStyleプロパティがあるからこれにComboBoxStyle.DropDownListを渡せば選択可能で文字列入力を受け付けないタイプになるよ (まあ、他の人がすでに提示しているようだけど)
851 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 16:34:15.50 ID:ycXEhqEs0.net] もしかして Enabled
852 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:05:47.31 ID:C+lFkEfx0.net] みなさん親切で涙が出てきます。 >>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行出てきてしまうのがかっこ悪いかなと考えて最善を探していました) なんとか頑張ってみます。みなさんありがとうございました。
853 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:14:46.64 ID:AFiLYmq20.net] >>839 System.Windows.Forms.ComboBoxを継承してカスタムコントロールを作るってのが調べると出てくると思うよ 例えばこんなのとか jeanne.wankuma.com/library/readonlycombobox/
854 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:20:12.41 ID:OmkEpZCo0.net] >>839 839のリンク先もそうだけど、記事にXAMLって単語があったらWinFormsと無関係だと思って良いよ WinFormsのコンボボックスの操作不能にするのは、comboBox.Enabled = false;
855 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 19:13:46.87 ID:l6dMzLky0.net] c# + visual studioでデータブレークポイント使えますか? c#のクラスは参照型ですが、値のコピー (int型変数i,jだと、i = jに相当する処理) するにはどのようにすればよいのでしょうか?
856 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 19:27:11.67 ID:LzvJDC40a.net] ブレークポイントの上で右クリ→条件
857 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 20:10:31.96 ID:LzvJDC40a.net] コピーはコピー先をnewして作って、メンバー変数の値をそこに一個ずつコピーしてく クラスによってはそういうnewとコピーをしてくれるClone()を持ってることもある
858 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 16:47:47.80 ID:3whatsSd0.net] 独習C#で学習されている方が多そうですがマルチスレッド難しすぎないですか(泣) 新版を使っておりますが、P530〜の説明が意味不明です awaitとWait()メソッドの違いがよくわかりません どちらもタスク(サブスレッド)の処理を待機するという同じような意味という理解ですが、 なぜかサンプルプログラムで両方使われています 試しに片方削除して実行すると、ループが最後まで実行されないので、意味が違うんでしょうが調べてもよくわかりません… どなたかご教示いただけないでしょうか
859 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 17:25:22.69 ID:xNgrtKWR0.net] >>845 大別するならawaitは非同期、Task.Wait()は同期的、という所だけど Task.Wait()は単純にその場でタスクの終了を待つので足踏みする事になる awaitを使うと内部的にはその後のコードもTask化されてas
860 名前:yncメソッドの返り値になる awaitまで到達した時点で呼び出し元に処理が戻るので、主にUIスレッド等でよく使われる 後続処理を追加するだけならTask.ContinueWith()も有るんだけど UIコンポーネントは作成スレッドからしかアクセスしてはならない制約とか 後続処理を担うスケジューラ指定とか煩雑なのを纏めて糖衣構文にしたのがawait [] [ここ壊れてます]
861 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 18:18:28.62 ID:5CdUE0YMa.net] >>845 助手(他のスレッド)がタマネギを炒め終わるのをジャガイモの皮を剥きながら待つのがawait 手を止めてじっと待つのがWait awaitが画期的なのは、「助手の仕事が完了するまでは別の仕事をしつつ、完了後に やりかけの仕事の続きをする」という本来シーケンシャルでない手続きを、あたかも 「助手の仕事が完了したら続きをやる」という単純なシーケンスであるかのように記述できること
862 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 18:22:38.33 ID:p/SD7W260.net] async汚染に注意な
863 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 18:50:59.09 ID:wjo4lb340.net] awaitの正体は「Taskがすぐに終わらなかったらすぐにreturnする特殊構文」ってことを知っておけば理解はしやすいと思う Taskが終わったらさっきawaitしたところから(途中処理を飛ばして)再開する 関数先頭に特殊構文を使うことを明記(async)しなきゃいけない (FormとかWPFとかのGUIアプリなら裏で勝手にやってくれるから気にしなくていいが) Taskが終わった後にawaitから再開できるように呼び出し元のスレッドでDispatcher.Run()しとかなきゃいけない
864 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 19:19:00.14 ID:7kxnQq4mr.net] awaitは「あ!まって!」って覚えればいい
865 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 19:28:39.37 ID:RKF0PElVM.net] await 〇〇やっといてよろしく。私いったん席外すんで終わったら連絡ちょうだい。続きこっちで引き継ぐから Wait 〇〇やれや!終わるまで後ろでじっと見とるからな!はよせえよ! どっちがいい?
866 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 19:41:45.39 ID:S+vKlyc9a.net] Threadが一番わかりやすいw
867 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 20:51:42.02 ID:kkw3q4n30.net] たとえが分かりやすいですw イメージがわきました、みなさんありがとうございます! もう一点だけ確認なのですが、asyncメソッドのawaitよりあとのプログラムに移るタイミングですが、 メインスレッドでプログラムが実行中のときはどちらが優先になるのでしょうか?
868 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 20:57:28.48 ID:z01vGxpA0.net] >>853 OSの気分次第
869 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 21:26:41.18 ID:qmqxr6WH0.net] WinFormという前提でいうと まず前提としてメインスレッドではずっとメッセージループっていうループが回ってる でマウスの入力とか再描画要求はメッセージって形でキューに貯められる メッセージループはキューから1つメッセージを取り出してはアプリの実装に流してくる ちなみにその辺のシステムメッセージはWinFormだとMouseMoveとかPaintとかのイベントとしてアプリが対応することになる await以降の処理もこのメッセージを使って実現してるから メインスレッドの手が空いて次のメッセージを処理できる態勢になるまで待たされる
870 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 22:02:51.88 ID:p/SD7W260.net] スレッド 注意点一覧 ・シングルコアで動くか? ・応答がないときに自決するか? ・失敗時のメモリリークはないか? ・タイムスケジュールはあるか?(例:1分の内AスレッドはX秒、BスレッドはY秒等) ・生存確認方法はあるか? ・実行中の状態は取得できるか? ・ログは出力できるか? ・最大使用メモリは把握できているか? ・失敗時のリザルトの受け取り方法は適切か? ・処理が複数失敗する可能性は考慮できているか?(例:ファイルオープン成功→ファイル書き込み失敗→ファイルクローズ失敗→tempフォルダ削除成功のとき何が返る?) ・本体終了時に終了できるか?
871 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 23:49:44.87 ID:kkw3q4n30.net] ありがとうございました!
872 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 01:12:48.99 ID:XLpABEj80.net] C#のマルチコアなんたらっていう非同期処理のテキスト読んだらいいよ
873 名前:デフォルトの名無しさん [2022/01/30(日) 03:05:22.41 ID:2zm6GvSaa.net] async/awaitとTask.Runの使い分けが今でもよくわからん。。
874 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 09:00:16.50 ID:F79hzdqmr.net] >>856 それどこかに書いてあったな 5年くらい前の記憶でそのリストがあった
875 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 11:27:59.00 ID:zEfMsuv9M.net] それ多分C#じゃなくて組み込みとかの話だから参考にならんよ
876 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 14:20:38.52 ID:6d5Lec+00.net] >>861 え?どこにC#だと助かる要素があるの?
877 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 15:48:10.14 ID:WELts56MM.net] >>856 この記事の内容が組み込みc++じゃないのかと
878 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 17:06:41.10 ID:6d5Lec+00.net] C++だと駄目でC#だと助かる要素なんて1つもないけど 今まで何やってたん?
879 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 17:17:33.02 ID:nTSKdiu90.net] >>856 これスレッドに限らずどのプログラムにも言えることだと思うわ 出典元知りたい
880 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 17:18:42.01 ID:v/uLxU6j0.net] >>859 Task.Runとawaitは組み合わせて使うものだし、使い分けって何のことだろうか (同期する必要が無ければawaitしないことはある)
881 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 17:21:16.29 ID:cT0our3Wa.net] 助かるってどっかの方言なのかな。まったく意味わからなかったw ほぼすべてがc#(とVSの組み合わせ)で助かるか、マルチスレッド関係なくそのぐらい考えとけって項目
882 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 17:29:29.52 ID:6d5Lec+00.net] >>867 は?c#に特別なギミックなんてないが 君はスレッド使わないほうがいいね
883 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 19:59:30.72 ID:XMZDBma3d.net] またシングルスレッドおじさんの講釈が始まったのか
884 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 20:10:42.59 ID:Mi/4eGx6M.net] awaitのおかげで非同期書きまくる現代のプログラミングでこんなチェックリストいちいち考えてたら工数足りん それに現代の実行環境は優秀なんでほとんど考えなくていいよう出来てる C#もJavaScriptもそう C++とはもう時代が違う ・シングルコアで動くか?→普通に書けば当たり前に動く ・応答がないときに自決するか?→普通に書けばライブラリ側からタイムアウト例外出て落ちる ・失敗時のメモリリークはないか?→普通に書けばあり得ない ・タイムスケジュールはあるか?(例:1分の内AスレッドはX秒、BスレッドはY秒等)→大半のケースで環境に任せるのが正解。制御したいならより上のプロセスレベルで制御する ・生存確認方法はあるか?→死んだら例外でる出てないなら生きてる ・実行中の状態は取得できるか?→大半のケースで取得要件はない ・ログは出力できるか?→出来ないことなんてあるの? ・最大使用メモリは把握できているか?→環境に任せるのが正解。したいならより上のプロセスレベルで制御する ・失敗時のリザルトの受け取り方法は適切か?→例外で標準化されてる ・処理が複数失敗する可能性は考慮できているか?(例:ファイルオープン成功→ファイル書き込み失敗→ファイルクローズ失敗→tempフォルダ削除成功のとき何が返る?)→例外出たら止めろ。例外出ても進めるならしっかり設計しろ。そしてそれは非同期関係ない ・本体終了時に終了できるか?→普通に書けば猶予期間内に終了する。ロングランニングの時だけ気をつけろ
885 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 20:27:29.51 ID:MKtsah/wM.net] 各アプリケーションの機能テストで確認すべき項目と 非機能要求のテストで確認すべき項目と フレームワークの仕様テストで確認すべき項目と 全部ごちゃ混ぜだから分かりにくい タイムアウトを含め失敗時の振る舞いは一般的な品質レベルなら全部テストする項目
886 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 20:32:44.54 ID:cT0our3Wa.net] 組み込みになるとシングルコアで動くのにマルチコアで動かないとか、通信ライブラリが処理をつかんだままだとほかのスレッドが止まるとか(それマルチスレッドなのか?でも本当に起きる) そんな感じになっていくからな。特にFreeRTOSは・・・ c#だとlockとかを知らないと色々トラブル。そっちの方が重要だろ https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/statements/lock
887 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 22:57:40.72 ID:aiFnFmm30.net] doxygenって何処のスレで質問すれば良いですか?
888 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 23:50:15.42 ID:cT0our3Wa.net] スレ立てるまでもない質問はここで 158匹目 https://mevius.5ch.net/test/read.cgi/tech/1635193843/
889 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 00:03:34.26 ID:HAfOA5uC0.net] >>870 。oO(ああ、こいつダメだ、経験が少なすぎてなんも当たったことねぇのなw)
890 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 01:18:01.43 ID:rap/w09T0.net] GUIアプリ作るのにシングルスレッド縛りはありえねーって
891 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 01:20:52.56 ID:PXu70Z+W0.net] (応答なし)
892 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 01:30:02.02 ID:HAfOA5uC0.net] >>876 うまく行かなかったんだろ?w
893 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 02:43:38.51 ID:rap/w09T0.net] >>878 GUIアプリでシングルスレッド縛りだと重い処理で画面固まってるように見えてしまうからうまく行かないね
894 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 08:09:11.84 ID:RgoQRIUnM.net] >>870 のどこがダメなのか分からない スレッド制御を自前で1から書かなきゃいけなかった00年代ならともかく async/awaitにほぼすべてを任せられて非同期を安全お手軽に書けるようになってる時代なのにさあ 脳みその中もPentium4あたりで進化が止まった老害が async/awaitを当たり前に使う現在のコーディングスタイルについていけなくて 誰彼かまわずケチをつけてるだけにしか見えない 年取ってこういうゴミみたいなジジイにはなりたくないもんだ
895 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 09:50:16.85 ID:JauXjIS80.net] 何がしたいかによる await/asyncを使うのは主に外部要因で待たされる時 ダウンロード残り1GBとかSQLサーバーからレスポンスが2秒以上かかってるとか そういう感じの時クルクル回したりプログレスバーとキャンセルボタンが欲しいわけ ボタンすら反応しませんだと、クソ重いソフトと因縁つけられちゃうの 一方マルチスレッドでCPU100%がん回しですってのがしたいことだったら Partitioner.CreateとParallel.ForEachを使うawait/asyncは関係ない
896 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 10:15:13.28 ID:FSK5xZBqM.net] 大半のケースで考慮不要 この一言でまあそうだよねと納得できないなら開発経験不足としか言えん
897 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 10:47:47.62 ID:F4OTxaxpa.net] もともとがc#に合わせた話じゃないからどうとでも読み取れちゃうんだよ 分かりやすいとこで言えば例えば > ログは出力できるか?→出来ないことなんてあるの? プログラミングの話をしてるのだからきちんと意図通りに動くことを把握するためのDebug.WriteLineのようなログと捉えたらできないことなんてあるの?となる でもログファイル出力と捉えたら、マルチスレッドから同じファイルに対して書き込もうとして・・・なんてできないこともある
898 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 11:33:05.16 ID:I+ECkei6M.net] そんなのはloggerがなんとかしてくれるから気にするな つか今時はログは全部標準出力でいい 標準出力を拾って何処に吐くかは環境が担当するところ
899 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 11:38:53.86 ID:BNlzdeLSM.net] >>883 > でもログファイル出力と捉えたら、マルチスレッドから同じファイルに対して書き込もうとして・・・なんてできないこともある キューに書くなりして排他制御するだけじゃね?
900 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 12:08:05.50 ID:F4OTxaxpa.net] そうなんだよ だからログ取るならこのクラス使え(c#が勝手にスレッドセーフにしてくれたり管理するよ) マルチスレッドからファイル操作するならlockで排他制御しろ(自分でスレッドセーフにしないとトラブルぞ) ってチェックシートならいいんだけどな
901 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 12:13:17.55 ID:a9TU5xJTa.net] オラオラ交通整理マン仕事しろや早く議論スレに誘導しろよ まさか交通整理マン自身が議論してるんじゃねえだろうな?ん? まあ、個人的には議論は結構だけど論点は明確にして欲しいね。 正直何を争ってるのかさっぱり分からんw こんなあいまいな話で藁人形と戦ってる奴って普段よっぽど邪険にされてるのかねwww
902 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 12:53:42.98 ID:80+F6Vz/M.net] かわいそうに
903 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 13:04:34.28 ID:dnOSCP4XM.net] >>886 > マルチスレッドからファイル操作するならlockで排他制御しろ(自分でスレッドセーフにしないとトラブルぞ) スレッドセーフならいいって話じゃないことぐらいは理解してから議論に参加しようよ…
904 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 15:26:32.90 ID:2TQISd5L0.net] あ、これ議論なの?
905 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 19:09:11.37 ID:yyWr14dta.net] 凄まじく複雑な相談なんだけど良い? インスタンスと対になる鍵オブジェクトって xxxIdかxxxKeyかxxxTokenのどれで名付けるべき? ちなみに中には格納番号が入っててリポジトリからインスタンスを引き出すのに使う
906 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 21:03:11.17 ID:eqy2NGbAd.net] 初心者スレだぞ 簡単な使い方ならともかく なんか動かんだのデータ壊れただのデッドロックしただのの対策を一気に詰め込んでも無理でしょ
907 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 21:27:15.36 ID:a9TU5xJTa.net] >>891 そもそも専用クラスにする必要あるの? っていうかこの板命名スレもあるよ いや目くじら立てて行くべきと言いたいわけじゃないw
908 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 11:07:54.02 ID:Z6xO941E0.net] IDを使うときは配列でインデクサがある、とか Keyを使うときは辞書でKey-Valueの対がある、とか Tokenを使うときは重複しない文字列(大抵はハッシュ)が入ってる、とか そういう話なのかな、C#とどう関係するのか知らんけど
909 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 11:19:59.86 ID:Tjw+V3tAM.net] 普通にハンドルパターンじゃないのか
910 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 12:10:52.81 ID:LUb4jo/Ua.net] object xxxと対になる鍵オブジェクト = new object();
911 名前:デフォルトの名無しさん [2022/02/01(火) 13:48:07.91 ID:1d/yMvRJ0.net] TextBoxの高さに合わせてFormの高さを調整したいのですが、下記のようにすると、TextChangeのたびに高さが減ってしまいます。 何が原因でしょうか? private void textBox1_TextChanged(object sender, EventArgs e) { textBox1.Height = textBox1.Lines.Length * textBox1.Font.Height; ClientSize = new Size(ClientSize.Width ,textBox1.Height); }
912 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 18:19:16.26 ID:R62wNw5Va.net] https://docs.microsoft.com/ja-jp/dotnet/desktop/winforms/advanced/how-to-obtain-font-metrics?view=netframeworkdesktop-4.8
913 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 18:21:14.03 ID:I6aD7b89a.net] TextBoxの高さに合わせてFormの高さを調整したいだけなのに textBox1.Height = でテキストボックスの高さまで変更してるからでは?
914 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 19:55:39.20 ID:x6m1XFOP0.net] >>897 一回目の呼び出しで フォントの高さに合わせてtextBox1.Heightを設定する(小さくなる) textBox1.Heightの高さに合わせてフォントの高さが変わる(小さくなる) 二回目の呼び出しで フォントの高さに合わせてtextBox1.Heightを設定する(小さくなる) textBox1.Heightの高さに合わせてフォントの高さが変わる(小さくなる) というループだからでわ? 少なくともtextBox1.HeightはtextBox1.Font.Height より少し大きいはずだから そのまま代入していくとどんどん小さくなるんだと思うわ
915 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 00:39:48.73 ID:TKyxc9mCa.net] >>897 これで出来た でも何か気付いてない問題がありそうw private void textBox1_TextChanged(object sender, EventArgs e) { var delta = textBox1.PreferredSize.Height - textBox1.Height; Height += delta; textBox1.Height += delta; }
916 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 01:06:16.73 ID:Xe1+J6sR0.net] TextChangedのイベントごとにHeight+=deltaの設計自体良くないとは思う イベントごとにテキスト内容からHeightの再計算させるなら理解できるが
917 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 01:14:48.57 ID:TKyxc9mCa.net] >>902 言いたいことは分からないでもないが、 恐らくセッター自身にプロパティーの値に変更がなければ何もせず戻る処理が 入っているはずなので考えすぎ。 実際問題動かしてみてそれに起因する問題があるようには見えない
918 名前:デフォルトの名無しさん [2022/02/02(水) 09:11:06.71 ID:RlffTed50.net] WinFormsのListViewで、仮想モード、LargeIcon表示にしたとき Shift+マウスクリックでの項目の範囲選択がクリック位置より広く選択されてしまいます。 以下は2008年の古い情報ですがWindowsXPの不具合のため回避困難とあります。 https://social.msdn.microsoft.com/Forums/ja-JP/484c578a-df46-4624-a4e7-99ceaa0588ef/2020624819212701237512383listview12391389173044612398350792596836?forum=vsgeneralja Windows10でも解消していないようなのですが、 検索しても有用な情報が見つからずどなたか回避できてる方いないでしょうか。
919 名前:デフォルトの名無しさん [2022/02/02(水) 09:12:35.95 ID:4XyzPXmZ0.net] スクリーンロックを抑止したくてネットで調べて下のようなプログラムを書きました。 static async void Test(){ for(;;){ SendKeys.Send("Break"); await Task.Delay(10000); } } 目的は達成したのですが、Test()メソッドを終了するにはどう書けば良いでしょうか? よろしくお願いします。
920 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 10:25:26.24 ID:qrF7Vqa00.net] static bool _stopTest; public void StartTest() { _stopTest = false; Test(); } public void StopTest() { _stopTest = true; } static async void Test() { while( !_stopTest ) { SendKeys.Send("Break"); await Task.Delay(10000); } } 止めたいところでStopTestを呼ぶ
921 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 11:00:41.80 ID:tkuApL0q0.net] CancellationToken使おう private CancellationTokenSource cts = new CancellationTokenSource(); private Task task; public void Start() { this.cts = new CancellationTokenSource(); this.task = Test( cts.Token ); } public void Stop() { this.cts.Cancel(); this.task.Wait(); // 必要があれば } static async Task Test( CancellationToken ct ) { while ( ! ct.IsCancellationRequested ) { SendKeys.Send( "Break" ); try { await Task.Delay( 10000, ct ); } catch ( TaskCanceledException ) { } } }
922 名前:デフォルトの名無しさん [2022/02/02(水) 12:33:54.15 ID:2OSrRGw90.net] >>842 >> c# + visual studioでデータブレークポイント使えますか? これひょっとして使えな
923 名前:デフォルトの名無しさん [2022/02/02(水) 12:47:34.78 ID:2OSrRGw90.net] c#でAddressSanitizerみたいなツールはありますか? >>これひょっとして使えな これは「これひょっとして使えないのでは?」です
924 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 12:49:24.20 ID:5pRqnuwX0.net] >>908 https://docs.microsoft.com/ja-jp/visualstudio/debugger/using-breakpoints?view=vs-2022#set-data-breakpoints-net-core-3x-or-net-5
925 名前:デフォルトの名無しさん [2022/02/02(水) 15:01:03.10 ID:MolDdSgsa.net] 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)
926 名前:デフォルトの名無しさん [2022/02/02(水) 15:06:00.81 ID:MolDdSgsa.net] >>907 だと、クリティカルタスクの最中に例外が起きたら壊れそうだなw >>906 は、Pulseが抜けてる
927 名前:デフォルトの名無しさん [2022/02/02(水) 22:04:43.57 ID:GVJKCJUY0.net] ピクチャーボックスに直線を実寸(o)で引きたいんですけど、どうすればよいですか?
928 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 22:13:43.42 ID:NhKBMVet0.net] GraphicsオブジェクトのPageUnitプロパティを変更する
929 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 22:49:06.74 ID:p1re6OTba.net] >>913 GDI+はたぶん常にdpiを96dpiと仮定しているので モニターのdpiが96dpiなら>>914 で上手く行くがそれ以外の場合は 自分でページ変換を設定しないとだめだと思うよ
930 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 23:21:53.08 ID:vNzv2HbB0.net] GDI+のDPIは可変だよ 印刷にも使うんだから 描画先がモニタの場合WindowsのDPI設定に依存して変わる 例えば125%なら120dpiだな まあDPI設定に従うだけでモニタのDPIは恐らく別だからモニタ上で正しく表現できるわけではないけど
931 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 23:29:58.32 ID:30BhQoQ30.net] >>916 それってやっぱりモニターの解像度は96dpi固定ってことだろ 32インチ4Kスケーリング100%なら138dpiが取得できる方法を示さないと
932 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 23:31:34.80 ID:p1re6OTba.net] >>916 印刷時に物理単位(mmやインチ)を選択できるのは プリンタの場合はdpiを報告する仕組みが最初から確立してるからで ディスプレーの場合は残念ながらそうじゃないんでいろいろややこしいよw
933 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 09:28:12.33 ID:Nd7AcXHS0.net] 質問させてください。 起動すると適当な番号でhttpポートを開くアプリがあります(仮にaaaa.exe) このaaaa.exeのパスが分っている状態で、アプリが使用しているポート番号を取得したいのですが、どのように処理したら良いでしょうか?
934 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 09:46:56.82 ID:X/mng9aEM.net] >>919 netstat
935 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 13:48:25.19 ID:EdZmqiFt0.net] >>919 対象プロセスのプロセスIDを取得してGetExtendedTcpTable/GetExtendedUdpTableで取得できるデータと突き合わせる
936 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 14:20:51.83 ID:Nd7AcXHS0.net] >>920 >>921 ありがとう。今日の夜試してみる。
937 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 15:09:05.58 ID:1AlNHnvf0.net] いえいえ
938 名前:デフォルトの名無しさん [2022/02/04(金) 07:20:32.62 ID:34mLDZGV0.net] スクリーンロック抑止の者ですが、遅れながらメカニズムを理解できました! ありがとうございます! SendKeysで"Break"を定期的に押すと文章書いてる時に ガッツリ消えるので、何のキーが良いかは探求したいと思います。
939 名前:デフォルトの名無しさん [2022/02/04(金) 07:42:03.31 ID:QVbyni0c0.net] 似たようなソフト作ったことあるけど、キーを押下するよりマウスを現在位置から現在位置に移動するほうが普通に使ってるときの影響なくていいよ
940 名前:デフォルトの名無しさん [2022/02/04(金) 17:23:13.30 ID:34mLDZGV0.net] >似たようなソフト作ったことあるけど、キーを押下するよりマウスを現在位置から現在位置に移動するほうが普通に使ってるときの影響なくていいよ キーインする限り、どんなに使わないキーでも影響は避けられないと気が付きました。 マウス操作をトライしたいと思います。ありがとうございます。
941 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 21:42:43.56 ID:+ZxkHXQpd.net] 画面ロックというのが具体的になんなのかだけど Windowsシステムのスリープとか退席モードのことならAPIで抑制した方がいいのでは
942 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 15:50:35.16 ID:qLntA6C8M.net] powertoysのawakeでいいだろ
943 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 16:19:11.63 ID:yLNqj27S0.net] >>928 それはどうやって実装してるの?
944 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 23:38:56.22 ID:x0YbOETD0.net] そりゃSetThreadExecutionState呼んでるやろなあ
945 名前:デフォルトの名無しさん mailto:sage [2022/02/06(日) 00:11:20.36 ID:66j2bw9/0.net] あとはキーボードフックでWin+Lを握りつぶせるかだな
946 名前:デフォルトの名無しさん mailto:sage [2022/02/06(日) 04:20:06.01 ID:D8jWL7f30.net] Win+Lとかまで対応する気ならOSの設定いじった方がいいのでは https://i-bitzedge.com/tips/how-to-lock-screen-enable-or-disable-on-windows-10
947 名前:デフォルトの名無しさん [2022/02/07(月) 12:45:48.73 ID:eA8tvD7r0.net] >Windowsシステムのスリープとか退席モードのことならAPIで抑制した方がいいのでは SetThreadExecutionStateを使うことでやりたい事がダイレクトに出来ました。 ありがとうございます! キーイン、マウスカーソルぷるぷるも、非同期処理の使い方を知れたので、 実り多かったと感謝しております。
948 名前:デフォルトの名無しさん mailto:sage [2022/02/07(月) 21:03:15.86 ID:yNoTcSOm0.net] 質問させてください EntityFrameworkを使用して自PC内(localhost)のPostgreSQLを操作しています 普段正常に参照や更新といった処理は出来ているのですが、極々まれにデータベースとの接続がタイムアウトするケースがあります データベースのログにもエラー等が無く、なぜタイムアウトになるのか根本の原因が掴めていないのですが、試しにタイムアウト設定の秒数を伸ばしている状態です お聞きしたい事は、EFは接続に失敗した場合、タイムアウトの秒数になるまで何度もリトライしているのでしょうか? また、失敗したクエリを再試行する事は可能なのでしょうか? 直接C#とは関係のない質問かもしれませんが、アドバイス頂きたいです
949 名前:デフォルトの名無しさん mailto:sage [2022/02/07(月) 22:00:16.47 ID:kx+AzsPB0.net] ほんとにタイムアウトなのかい? どこか閉じ忘れて接続数上限まで使い切ってるとかは?
950 名前:デフォルトの名無しさん mailto:sage [2022/02/07(月) 22:46:47.42 ID:0I88UVsz0.net] PostgreSQLだと割とあるみたいね、接続数の上限というの
951 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 04:32:53.12 ID:fYph1ArX0.net] >>935 ありがとうございます 接続する際はusingブロックで囲って使用しているので解放漏れは大丈夫だと思ってはいます… (こういう接続の仕方です:https://qiita.com/Nossa/items/b6d84aeb134abc85f027) 接続数に関してもpg_stat_activityを使用すると、タイムアウト発生時は見れていないのですが、正常時は15程度でした(デフォルトはMax100)
952 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 07:37:47.00 ID:2OtTL/zKM.net] ログに出すようにしたの?
953 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 09:23:52.16 ID:Ki5uCpbuM.net] >>938 System.TimeoutExceptionとSystem.Data.Entity.Core.EntityExceptionが発生している事は確認出来ました。 ただ、例外処理を書いていなかったので「ハンドルされていない例外が発生しました」以上の情報は得られませんでした… これらを調べても接続文字列が正しいか確認をするなどの記載が多いのですが、基本的に処理が正常に行われているのでここは問題ないのではかと考えてます…
954 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 12:22:11.88 ID:MACKR5LXd.net] 接続上限を疑って再現を目指すなら接続数をデフォルトから100→10に変えてもいいと思う ありうるシナリオは接続上限→接続空き待ち→待っても開かないからタイムアウト
955 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 12:30:36.89 ID:QQmTWHSUM.net] >>934 に便乗して NpgsqlでDB接続するコンソールアプリを1分おきに起動するタスクがあるんだけど、 それなりの頻度でStsyem.TimeoutExceptionで接続失敗しちゃう どこに問題があると疑うべきなのかなあ と思っていまログを確認したら 半年くらい前までは2〜3日に1回(=1/1000〜1/5000位の確率)でTimeoutしてたのが 最近だと月1回くらいしか起こらなくなってた・・・ 環境というかPostgreSQLサーバの負荷等の問題だったのかな・・・・・・?
956 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 12:38:00.12 ID:Vzn
] [ここ壊れてます]
957 名前:qt3iZa.net mailto: 同時に書き込アクセスできず待たされるのはよくある 書き込んでる奴が時間かかってたらタイムアウト プログラミング分かりやすくするなら、DBアクセスは排他処理して同時に複数接続しない。それで失敗はなくなるだろ [] [ここ壊れてます]
958 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 12:44:07.19 ID:m2Ico1fWM.net] >>939 TimeoutExceptionのエラーメッセージに何をした時にタイムアウトが発生したのかが書いてあるから まずそれを確認したら?
959 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 12:59:02.44 ID:nLjBt9+k0.net] 一概にタイムアウトと言っても、「接続タイムアウト」と「コマンドタイムアウト」があるからどっちが発生しているかをよく確認しないとね。 接続文字列のTimeout、CommandTimeout (もしくはコード上でef経由で個別設定しているとか) >>939 npgsqlが吐いてる例外をInnerExceptionで見れません?
960 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 14:08:23.98 ID:TsBQQX8fM.net] - 詳細エラーメッセージ - npgsqlとpostgresのバージョン - 再現コード この3点セットがあれば誰か調べてくれるよ .NETやOSの情報もあればなお良い
961 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 14:33:47.63 ID:Ki5uCpbuM.net] >>940 ありがとうございます なるほど、確かに下げてみれば再現が出来るかもしれません 早速試してみます これで同じエラーが出てくれれば良いのですが… >>944 タイムアウト設定に関して、Timeout、CommandTimeout共にデフォルトで運用していました 現在試しにそれぞれ60に伸ばしています InnerExceptionは例外の詳細ですよね? お恥ずかしい話ですが、例外処理を書いていなかったため、今回このエラーが分かったのもwindowsのイベントビューアで発見しました 急遽例外処理を入れたのですが、エラーが再現せず…
962 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 14:42:17.36 ID:Ki5uCpbuM.net] >>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(); } }
963 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 15:07:00.89 ID:Ki5uCpbuM.net] >>947 すいません言葉足らずでした エラーはその2つの例外情報は分かるのですが説明は「ハンドルされない例外のため、プロセスが中止されました。」となっており、それ以外はエラーに至るまでの内部的な関数?が呼ばれた場所が記載されている状態です その呼ばれた場所の最後が、エラー発生箇所コードとして記載させて頂いた部分です
964 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 15:35:11.95 ID:4pbgYgTcM.net] >>856 これをありがたいと思うのは変な人 分からないでありがたがってる >>870 が正解
965 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 15:42:07.62 ID:2+2aacXwr.net] まずは作成日みたいなフィールドを後で更新するなと。
966 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 18:40:08.93 ID:11RalhgJ0.net] >>947 これ同じ処理が複数同時に走る? 複数同時に走る場合でread committedならデッドロックになるケースじゃない? それが原因かどうかはわからないけどlog_lock_waitsがoffならonにしてしておくといいかも
967 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 18:50:37.00 ID:u9WL3yPq0.net] >>949 ちゃんとチェックするとこに行ったら全弾被弾して ○○さんって大したことないよねって評価をいただくわけですね
968 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 18:53:19.11 ID:u9WL3yPq0.net] スタイリッシュなつもりでいるようだけど自分の処理の状態も把握できないもん作って悦に浸ってるのがダセェ お前がよく見るのはあくまでサンプルだからな
969 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 20:10:07.63 ID:pmS2YoNl0.net] >>951 デッドロックやDB上のロックタイムアウトなら、普通はDBサーバ上で確認できるだろ まず何がエラーになったのかちゃんと確認すべきじゃね DB側で何の(接続要求すらの)感知もできてないなら、おれならまずはネットワーク系の問題を疑うがな ソケットの枯渇とか名前解決の不具合とかファイアウォール関係とか、その辺があやしい
970 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 20:26:14.86 ID:fYph1ArX0.net] >>951 ありがとうございます このGetStartProcessTimeが複数の箇所で同時に呼ばれる事はありません 教えて頂いた設定等は私の知識不足で全然触れたことがないので一度調べてみます >>954 ありがとうございます postgresのログも見てみましたが、タイムアウト発生時にはエラーや何らかの処理をしているログ自体ありませんでした データベースがEntityFrameworkから接続を要求されているというのは後からでも見ることが出来るのでしょうか?
971 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 21:45:24.55 ID:11RalhgJ0.net] >>954 >まず何がエラーになったのかちゃんと確認すべきじゃね そりゃそうよ ただ本当に詳細が確認できない状態で再現もできないのなら 次に発生した時に情報を取れるようにしておくのは重要 DB側のログで何が確認できるかは設定次第 https://www.postgresql.org/docs/current/runtime-config-logging.html
972 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 22:06:08.66 ID:u9WL3yPq0.net] そもそもタイムアウトが起きるぐらいの処理時間かかってるの?
973 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 22:25:24.63 ID:RReR8OJiM.net] >>952 c#のwindows環境でシングルコアで動くか?ってやってるところどこにあるんだよ 脳みそ何のために使ってんだ?
974 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 22:34:34.58 ID:11RalhgJ0.net] >>955 自PC内ってことだったからnpgsqlのtraceレベルのログも仕掛けといたら? NpgsqlLogManager.Provider = new ConsoleLoggingProvider(NpgsqlLogLevel.Trace, true, true); https://www.npgsql.org/doc/diagnostics/logging.html
975 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 22:47:06.84 ID:fYph1ArX0.net] >>957 各クエリの時間を測った事は無いのですが、アプリケーション自体の一連の処理が0.5〜0.7秒程度で終わっているので、今回のDBへの接続がタイムアウトになるほど長くかかる事は通常は無いと考えています… テンプレートにあったサイトを使ってエラーを記載してみました 上手く出来ているか分かりませんが、以下が現在確認出来ているエラー内容です https://ideone.com/rIerhm
976 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 22:48:14.55 ID:u9WL3yPq0.net] >>958 っていうかそういう自分の思い込みでしか物事を判断できないから バグまみれのスレッド立てても気にもならないんだろうな シングルコアで動かしたログがあればマルチコアで並列で動作してるか どうかチェックになんだろ 得にオメーのはどうせ並列でなんか動いてねぇからシングルでもマルチでもログかわんねーだろw
977 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 23:01:38.91 ID:RReR8OJiM.net] >>961 シングルコアが分からないなら口出ししなければいいのに
978 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 23:07:43.01 ID:RReR8OJiM.net] あなたの会社ではどのシングルコアCPUを搭載したwindowsPCでスレッドの動作確認を行っているんですか? そんなことしてる会社などないだろ
979 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 23:18:00.69 ID:NUxQNPK7a.net] 初代ラズパイ+monoかな 脳みそ何のために使ってんだ? ← 妄想
980 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 23:18:39.86 ID:QQmTWHSUM.net] >>963 わざわざ相手するなよ その人ろくに有益なこと言えないのにひたすらマウント取ろうと粘着するから 無駄にレス流れて迷惑なんだよ
981 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 02:29:49.81 ID:6+/OHix60.net] 脳みそはマルチコアでも容量が1bitしかないようだなハハハ
982 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 03:04:14.67 ID:w+huDBHz0.net] またシングルスレッドおじさん帰ってきたのか
983 名前:デフォルトの名無しさん [2022/02/09(水) 10:25:30.10 ID:FQOg5JO/0.net] Windowsフォームのプログラムをタブレットでも使いたいという要望があったのですが comboboxのスクロールバーを大きくすることはWindowsフォームで出来るでしょうか? というかタブレットかつ高解像度のPCが出てくると いよいよWindowsフォームがキツくなってきた気がします。
984 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 10:27:52.18 ID:tI59uOap0.net] >>968 プロパティでどうこうみたいなお手軽な方法は無くって、カスタムコントロールを作るとかしないとダメだった気がする
985 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 11:46:02.13 ID:kunTT2/DM.net] OwnerDrawは全てを解決します
986 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 13:55:19.52 ID:nVoy06Fa0.net] つーかAndroidタブのコンボボックスにスクロールバーなんかないよね 指で操作するためのUIに変える必要があるってことよね オーナードローなんかで解決するかな
987 名前:デフォルトの名無しさん [2022/02/09(水) 14:17:49.58 ID:P+Dycpf60.net] >指で操作するためのUIに変える必要があるってことよね フォームアプリがタッチパネルに反応するだけでも御の字と思っている状況なので、 出来るなら是非とも欲しい動作です。
988 名前:デフォルトの名無しさん [2022/02/09(水) 14:17:49.99 ID:P+Dycpf60.net] >指で操作するためのUIに変える必要があるってことよね フォームアプリがタッチパネルに反応するだけでも御の字と思っている状況なので、 出来るなら是非とも欲しい動作です。
989 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 14:19:08.14 ID:5WmGk4RQ0.net] スクロールバーを出ないぐらいコンボボックスの範囲を大きくしておけばいいのでは? オーナードローとかしだしたら大変だからやらない方が身のためかもしれない
990 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 14:35:48.89 ID:gJYxYm5Ia.net] コピペで一発とはいかないけどこれでできるな スクロールバー二重になったりちょっとおかしいとこ変えるだけだからすぐだろ https://www.codeproject.com/Questions/552065/Customizepluswindowsplusscrollplusbarplusinpluscom
991 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 15:24:21.38 ID:lp//LDU1a.net] WPFのコンボもフリックしてタップで止めるとかできないんだっけ? まあWPFの方が不十分とはいえ一応タッチパネル系のイベントに対応してるんで できるならWPFで作り直した方がいいんだろうねたぶん
992 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 16:41:51.90 ID:iS0fYVVpa.net] >>975 これできないな。メッセージ飛ばせば終わりだろと思ったけどまったくだった
993 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 21:31:08.51 ID:nVoy06Fa0.net] コンボボックスやめてパネルにでかいボタンを並べてスクロールさせるかリストボックスだな そうなるとやっぱオーナードローか
994 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 22:39:05.34 ID:HRI/vJyh0.net] .Net6.0にしようとしたらSJIS削られてて焦った
995 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 22:43:02.03 ID:1A90hyai0.net] >>979 まじかよ、俺社一生使えないじゃん・・・
996 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:04:40.19 ID:7kRrx8rI0.net] EXCEL用のCSV出力できなくなるの?
997 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:05:53.89 ID:a7Kiiaid0.net] >>980 次スレよろぴく
998 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:06:30.96 ID:gW34M8HF0.net] それは BOM を付けたげたら済む話じゃないの?
999 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:12:22.58 ID:iS0fYVVpa.net] CodePageEncodingProvider.Instance.GetEncoding("shift-jis") こんな感じで取得できたはず
1000 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:14:43.66 ID:1A90hyai0.net] >>982 はい次スレ ふらっと C#,C♯,C#(初心者用) Part154 https://mevius.5ch.net/test/read.cgi/tech/1644416019/
1001 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:25:51.66 ID:FxI6XKVTM.net] CP932とshift-jisは実は別物と2chブラウザを作ったときに理解した 大体20年近く前の話
1002 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 00:27:38.90 ID:WTxAQl/h0.net] >>981 UnicodeのTSVで出せばいい
1003 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 04:11:44.10 ID:Bfsj9FyQ0.net] 会社で新しくC++MFCからC#に移行しそうなのですが、結構違いますか?
1004 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 04:41:11.49 ID:8GgErYEHa.net] むしろ共通点はほぼないと思いますよ。 UIにWindows Formを使うならWin32の知識が無駄にはならない程度
1005 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 04:51:25.43 ID:nU5m13/Jd.net] >>988 MFCのDocument/View構造とWPFのMVVMは考え方がほんのちょっと似てるかも
1006 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 05:16:17.86 ID:Bfsj9FyQ0.net] ありがとうございます やっぱり違うところもそれなりにあるんですね 本格以降の前に勉強しないと…
1007 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 09:10:07.63 ID:0HR3aWgk0.net] フレームワークのバージョンに右往左往
1008 名前:デフォルトの名無しさん [2022/02/10(木) 18:20:37.30 ID:hh6EUNrwa.net] Javaと同じ人が作っただけあって Javaのが似てると思います
1009 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 19:31:29.55 ID:G6G2NR290.net] MFCとC#のWPFなら基本的にまるで別物だよなぁ WinFormsも別物だけど、C++よりはC#の方が簡単だと思うけど ラムダ式やらその辺の書き方に付いていけない奴は結構いるらしい staticおじさんにはC#は辛いかも知れないw
1010 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 19:33:58.19 ID:vwYTLp7Ia.net] JAVAじゃなくてDelphiでしょw JAVAやC++はむしろ反面教師として否定的継承をしてるのがC#
1011 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 19:37:23.72 ID:vwYTLp7Ia.net] MFCのカオスに耐えられた人がC#は理解できないとかないと思うよw ラムダ式なんてむしろC++やってた人には馴染みやすいでしょ
1012 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 19:57:50.08 ID:y+gM+mODa.net] mfcを初めて触ったときはなんて簡単にwindowsアプリが作れるんだって感動したものだけど、c#はそれより数十倍簡単だからな mfcとc#はまったく違うけど、mfcできるなら一瞬で使えるようになるよ
1013 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 21:50:11.16 ID:Wm6mdcT10.net] MFC今も現役なの?
1014 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 22:05:49.13 ID:WTxAQl/h0.net] 今のC++はラムダ式も型推論もあるもんね
1015 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 22:41:54.23 ID:VfTItntg0.net] 拡張子がcppってだけのC言語使い方だときついでしょ
1016 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 58日 23時間 48分 33秒
1017 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています