[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/22 04:32 / Filesize : 279 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<279KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef