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


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



1 名前:デフォルトの名無しさん mailto:sage [2019/07/16(火) 15:36:23.74 ID:i1fbuZ/pM.net]
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/

■コードを貼る場合は↓を使いましょう。
ideone.com/
https://dotnetfiddle.net/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part143
https://mevius.5ch.net/test/read.cgi/tech/1558002486/

■情報源
https://docs.microsoft.com/ja-jp

41 名前:デフォルトの名無しさん mailto:sage [2019/07/21(日) 13:44:31.17 ID:AXqQTYqQ0.net]
>>39
理想的な動作です
UWPでやってみます
ありがとうございます

42 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 01:46:10.70 ID:fKk8m16B0.net]
どんな処理に対してどんな例外処理をすればよいのか理解出来ないのですが、
「〇〇メソッドが投げる可能性がある例外」という感じの一覧みたいなものってないでしょうか?

43 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 02:11:10.76 ID:Z/C74OJi0.net]
>>41
Docsの.NET Framework API リファレンスの各メソッドの説明に載ってる

44 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 15:09:04.83 ID:9U8T6M8Za.net]
>>41
他にも、VisualStudio上でメソッドにカーソルを合わせると出てくるツールチップで「例外」箇所に型が載っていたり
F12で定義に移動した後のコメント中で「例外」箇所に型と理由が載っていたりする

45 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 20:31:22.66 ID:bxEn3DSVr.net]
>>38
WinFormのWebBrowserでajaxで読み込みはタイマーみたいなの使って取れてる

46 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 21:30:46.97 ID:roLN7w1Qd.net]
ざっくりで失礼します。
面白半分にc#でエロや風俗系を作れたらいいなと思ったのですが案ありますか?
なかなか思いつかなくてw

47 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 21:34:28.66 ID:zEKbbod30.net]
>>45
C#+Unityのエロゲなんかいっぱいあるでしょ
そしてこの板で聞くことじゃない

48 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 21:41:17.09 ID:Uygc18n30.net]
>>46
言われてみればそうですね
失礼しました。

49 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 23:55:04.04 ID:SedAptpn0.net]




50 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 16:27:29.05 ID:UXkDZrqn0.net]
変態さんでいっぱいだ
前スレのエロ画像スクレイピングマンは成功したのかな

51 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 03:11:13.96 ID:8BXDtT/D0.net]
エロ画像なんて厳選して保存しないとすぐ500GBぐらいいくだろうに

52 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 12:52:05.57 ID:53dis5oN0.net]
動画ならともかく画像で500GBはベテランの領域。

53 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:12:23.94 ID:53dis5oN0.net]
コンテキストメニューを定義して、それを別コントロールに割り当てて、
それを更に別のフォームからクリックで実行したく、下記の構造にしているのですが、ControlExの公開プロパティになっている点に、なんとなく違和感感じています。
もうちょっと綺麗な構造に出来ないでしょうか?

public class ContextMenuEx : ContextMenu
{
  public ToolStripItem OpenMenu { get; private set; }
}

public class ControlEx : Control
{
  public ContextMenuEx ContextMenuEx { get; set; }
  public ControlEx()
  {
    ContextMenu = ContextMenuEx;
  }
}

public class ViewControl : Form
{
  private ControlEx MyControlEx = new ControlEx();
  public ViewControl()
  {
    MyControlEx.ContextMenuEx.OpenMenu.Click += //クリックイベント

  }
}

54 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 16:05:13.49 ID:uxWd1qa6a.net]
>>52
ごめん何がしたいのかさっぱり分からんw

55 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 16:28:06.90 ID:Kg/2nYdc0.net]
コンテキストメニューがnewされてないから例外が出るね

56 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 17:02:58.89 ID:VkzQYvSYM.net]
普通にメニュー出してsendmessageでええよ?

57 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 17:08:02.31 ID:Kg/2nYdc0.net]
なんとなくの違和感なんて知らんが
要するに何をどうしたいんだか

58 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 18:11:15.82 ID:tpwQJJNh0.net]
違和感

スポーツ選手みたいやなw
右肩に違和感を・・・

○○.cppに違和感を感じ納品を見送ったとのことです

59 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 07:50:47.17 ID:1So0tMH70.net]
質問する技術が足りてない
とにかく違和感とかいう抽象的なことじゃなくて具体的に



60 名前:デフォルトの名無しさん [2019/07/27(土) 23:40:34.97 ID:NQ4+UjHL0.net]
配列添字演算子付のpropertyはありますか?
イメージ的には
public int MyIDList[int]{
set{this.myIDList[idx] = value;}
get{return this.myIDList[idx];}
}
みたいな事がしたいです

61 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 23:46:47.22 ID:+ZEWiPdqa.net]
>>59
ない

62 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 23:48:18.25 ID:NQ4+UjHL0.net]
>>60
ありがとうございます

63 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 23:49:00.45 ID:F72yN9ZSM.net]
できない
インデックスの渡し方しか考えてないようだけど
それだとLengthやforeachで回せる機構など
配列に必要な関数群も仕組みもないだろ?

素直にListから継承させるか
インデックスを引数で渡せばいいじゃない

64 名前:デフォルトの名無しさん [2019/07/28(日) 00:26:47.42 ID:vg9qDEAT0.net]
んん、インデクサのことではなくて?
https://ufcpp.net/study/csharp/oo_indexer.html

65 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 00:35:17.04 ID:GU+doGlgM.net]
それはクラスにインデクサが付く話だし
プロパティには持たせられないじゃん

66 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 00:49:15.67 ID:zR0XYwX4a.net]
>>63
質問者がやりたいのはそのリンク先の「余談: VB のインデックス付きプロパティ」のこと
C#で出来ないようにしている理由はリンク先に書かれているし >>62 も書いてくれている

67 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 01:53:35.14 ID:GU+doGlgM.net]
まあたださ

class p {
List<double> da;
double center[int index]{
get {return (da[index+1] - da[index]; }
}
}

みたいに、クラスの配列データを元に
仮装配列的なものを作りたいんだろうなと思う
昔俺もやりたくて調べまくったよ

これを今のc#で実現しようとすると、わざわざプロパティごとにクラス化なきゃいけないし
クラスの生成や配列を振る舞うクラスに元データを渡すのとか非常に面倒になる

そこまで出来たとしてもメリットはインデックスを[]で渡せるだけで
配列(っぽいもの)ですよとコード上で示せるだけ

普通に関数実装で[]表記以外は同じことが出来るので
コードの美しさ的には不満があるけど
実装上は困らないんだよな

単純に関数の引数は()でも[]でも囲めるようにしてくれたら簡単なんだけどね

68 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 07:11:46.83 ID:iidlab190.net]
ttps://ideone.com/DcIIzB

69 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 09:26:09.88 ID:IhJrxMBNM.net]
constって継承できないもんかな

継承クラスで定数を変えたいんだけど
何か上手い方法はないだろうか



70 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 09:51:52.35 ID:MQBecH/v0.net]
できないので、諦めてオーバーライド可能なメンバでやって

そういう機能が欲しいなら、githubで提案してくるとよい
ここで喋っても入らないのでそのつもりで高説は垂れるように

71 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 09:53:45.93 ID:aYg/q9jya.net]
>>68
隠蔽(new)は出来るでしょ

継承というかoverrideはインスタンスメンバーを上書きするものであり、
constは本質的にstaticメンバーなんで、継承でconstを変更という発想はそもそも矛盾してるんじゃないの?

72 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 10:10:15.53 ID:nToTFkzEd.net]
constは埋め込みだから無理
コーディングを見やすくしてるだけなんよ
static virtual readonly とか…できるんかな書いたことないけど

73 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 10:22:24.95 ID:IhJrxMBNM.net]
単純にこんな実装がしたいんだよね
オブジェクトの詳細で表示する名称表示とかさ

class BaseObject{
const virtual string ObjectName=“(基底クラス)“;

string GetObjectName(){return ObjectName;}
}

class TextObject:BaseObject{
const override string ObjectName=“テキストボックス“;
}

class LineObject:BaseObject{
const override string ObjectName=“直線“;
}

class EllipseObject:BaseObject{
const override string ObjectName=“楕円“;
}


大して文字数も変わるわけでもないし、やっぱこう実装するよりないか
override string ObjectName{ return “楕円“; }

74 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 10:31:59.35 ID:AKu0TaFKM.net]
>>68
定数を返すだけの読み取り専用のプロパティにする

75 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 10:40:17.04 ID:B9XYpo8O0.net]
>>73
これ

76 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 12:17:38.06 ID:AKu0TaFKM.net]
>>72
読み取り専用プロパティはもうちょっとコンパクトに書ける
override string ObjectName => "楕円";

77 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 12:33:54.79 ID:vSU/UXgGa.net]
https://ideone.com/R6UBzL
あんまり面白くないねw

78 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 12:49:16.40 ID:IhJrxMBNM.net]
>>75
おお、いいですね!活用させてもらいます!

79 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 13:37:48.40 ID:k9k21JDF0.net]
>>68
readonly使うのが定石



80 名前:デフォルトの名無しさん [2019/07/31(水) 15:31:35.93 ID:tEceTxskd.net]
MacでC#勉強してみたいんですがVisual Studio入れないと厳しいですか?
VS Codeだけでは難しいですか?

81 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 16:00:55.32 ID:lLYOef6LM.net]
MacでC#を勉強するメリットはないから他の言語にしとき
唯一意味があるのはUnityでゲーム作る用途だから、Unity入れてC#やってみるのはまあアリ

82 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 18:13:54.85 ID:vBQ8AC7J0.net]
>>79
言語の学習目的なら.NET Core SDKとVSCodeでじゅうぶん

83 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 18:27:29.21 ID:SBa7OC8vd.net]
>>79
難しくないよ

84 名前:デフォルトの名無しさん [2019/07/31(水) 18:38:19.42 ID:quxH8qSha.net]
>>79
変な意地をはらずに一番イージーな道を選択した方がいいよ
つまらないことに時間を浪費したいの?w

85 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 18:43:57.13 ID:lLYOef6LM.net]
>>83
その理屈だとBootcampでWindowsをインストールするのが最善ということになってしまう
VS for Macなんかほとんど誰も使ってないんだから、時間の浪費という意味ではVSCodeといい勝負だわ

86 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 19:10:03.53 ID:9TaORHsg0.net]
Listでindex aのアイテムをindex bにインサートするスマートな方法はないだろうか

aをremoveしてbにインサートすると、a>=bならいいけど、a<bの時 removeでインデックスがズレるので狙いより1つ下に行ってしまう
一番下だと範囲外の例外が起きてしまう
できればこれを実行するメソッドを作って既にあるList<T>を拡張したいんだけど
ヘルパークラス的なものって作れないかな?

87 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 20:05:23.41 ID:i+V4gIP9a.net]
>>85
「拡張」という言葉の意図がわからないけど
ヘルパークラス作って静的メソッドや拡張メソッドとして定義すれば良いんじゃない?
List<T>を継承したオレオレListでメソッド定義、という方法は止めとけ

88 名前:デフォルトの名無しさん [2019/07/31(水) 20:12:36.58 ID:quxH8qSha.net]
>>85
やってみたが例外なんか出ないけど
https://ideone.com/CazHs2

89 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 21:18:24.59 ID:uxU05rGA0.net]
>>79
両方使って比較してみては



90 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 23:06:20.36 ID:9TaORHsg0.net]
>>87
2 to 9なのに1が9に移動しちゃうでしょ?

91 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 23:07:54.33 ID:9TaORHsg0.net]
ああごめん、リストの再生成をしてないのね

92 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 23:27:27.06 ID:9TaORHsg0.net]
申し訳ない、コードを見直したら質問の前提を間違えてました

やりたかったのは
List<T> というリストがあった場合に
リストに入っているかわからないオブジェクトaを
リストに入っているオブジェクトbの1つ後に挿入する
…というメソッドを作りたかったんです

List<T>.MoveAfter(T b,T a) //リスト内bの後ろにaを挿入、aがList内にある場合は元の位置から移動させる

で、このメソッド自体の実装はできているんですが
いただいたサンプルのextensionsの記述がよくわからず質問しました
おかげでうまく実装できました、ありがとうございます!

93 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 08:01:53.51 ID:xGy0TEOb0.net]
>>79
他の人も言ってるけど、unityでC#使ってるよ
C#自体の勉強ならこれで出来る
当然、WindowsアプリをC#で作れるようなスキルは得られないが

94 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 00:28:39.75 ID:pwBgdUBF0.net]
c#とvsの至れり尽くせり感に慣れすぎて他の開発環境でできなくなりました

95 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 00:45:41.15 ID:RRmMDCsx0.net]
そうなんだよなー
VSは使いやすすぎる
Delphiの開発者を引き抜いてきただけあるわ

96 名前:デフォルトの名無しさん [2019/08/02(金) 00:52:16.45 ID:80wMhccea.net]
最低限IDEで自動ビルドなら慣れれば貧弱な環境も楽しいよ

インテリセンスなんかないから長い識別子をダブルクリック & Ctrl + C ⇒ Ctrl + V
ばっかりしてたら左手が腱鞘炎になっちゃったけどw

97 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 09:27:47.59 ID:NmFjjWZQ0.net]
秀丸ですらファイル内入力補完あるよ

98 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 13:45:35.78 ID:E5BJDT7zM.net]
秀丸御殿が建ってる偉大なエディタに対して「ですら」って

99 名前:デフォルトの名無しさん [2019/08/02(金) 14:01:07.04 ID:ktX3qXN3a.net]
大昔試用したことあるけどまだ存在するんだw
いい加減タブ化とかしたのかな

しかし、日本人も真面目に作者に金払って使う人結構いるんだね



100 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 14:48:47.26 ID:NmFjjWZQ0.net]
いや秀丸はすげーと思うけど言語解析までするIDEと比較してテキストエディタですら入力補完あるのにコピペ頑張らんでもええやん、って話
タブ化は10年前くらいには対応してたはず

vscodeも良いけど軽さはやっぱ秀丸のほうが良いから今でもちょいちょい起動するよ

101 名前:デフォルトの名無しさん [2019/08/02(金) 15:14:57.86 ID:e58H0HHKF.net]
Nif●y の決済システムってまだ稼働してるんか
最近使ってないから知らんけど

102 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 15:18:13.18 ID:j/fAdfUcd.net]
俺も秀丸とvscodeの併用だね
秀丸は起動が速いから

103 名前:デフォルトの名無しさん [2019/08/02(金) 15:47:38.91 ID:ktX3qXN3a.net]
xyzzyなら一時期使ってたなあ
道具にこだわるたちじゃないんで、金払ってまで禿丸さんを使う気にはなれなかった

104 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 15:50:45.00 ID:xzjh5WuB0.net]
きたああああああああああああああああああああああああああああ
https://i.imgur.com/Q7qeopR.jpg

105 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 16:01:20.35 ID:4Xvk7WGTM.net]
Rider使いは?

106 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 18:09:45.30 ID:sXaRfN3S0.net]
>>102
道具にこだわらないのにWindowsは金払ってまで使うんだ

107 名前:デフォルトの名無しさん [2019/08/02(金) 22:46:17.18 ID:UiHNxeJXa.net]
ここにいる人は趣味プログラマーが多いんかな
本業なんだけど経験ないC#開発もやらないといけなくなったって人も結構いたりする?

108 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 22:52:43.67 ID:ol3AyafF0.net]
windowsはみんな使ってるからこだわってるとは言わない。普通。

109 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 22:54:15.89 ID:j/fAdfUcd.net]
>>106
本業だけどWin32から.NETへの移行期はC#の経験ないところから始めたね



110 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 23:19:14.53 ID:bTVyt88NM.net]
俺はDelphiからの転向

111 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 00:28:08.22 ID:3YKHpYYf0.net]
同じく本業。
事前に経験ってほどのものがあったことなんかほとんどないような気がするけどなあ。
最近なら python をやってみたり。これ ruby っぽくてそんなに好きになれそうにないや。C# は大好き。

112 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 00:31:46.15 ID:n84PTU/80.net]
本業C#erだわ
趣味時代はCとかPythonとかやってた

113 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 01:17:35.52 ID:lgH4NInK0.net]
組み込みだけど本業の開発よりc#でGUI作ってるほうが楽しい!

114 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 10:25:21.86 ID:QMMl7Yx90.net]
聞きたいこと
ライブラリ内の数値を、メインのプログラムで参照した。

arduinoを動かそうとプログラムを書いているのですが、
hoge.h
内に、

enum class Button : uint16_t{
A = 0x0001,
B = 0x0002};

というクラスがあります。

これを、

#include <hoge.h>
void setup()
{
const int BtPt[2] = {Button.A,Burron.B};
}
のように、代入したいんですけど、うまくいきません。
どうすれば参照できるんでしょうか。
そもそも概念的に間違ってるのかもしれませんが、、、

115 名前:デフォルトの名無しさん [2019/08/03(土) 10:27:40.91 ID:3ia1GLNcF.net]
書き込むスレが間違ってる

116 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 11:44:13.94 ID:6qsjMY4R0.net]
俺も最近CからC#に移行したんだが、下痢ゲートだとか阿弥陀式とか、ワケ分からないw

117 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 16:40:29.95 ID:n84PTU/80.net]
Cもまともに書けてなさそう

118 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 19:56:50.53 ID:voIsjIeCM.net]
本業C#erの方、年収とキャリア教えて下さい!!

119 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 21:25:49.26 ID:MA8i5rVM0.net]
新卒5年目、約600万円や



120 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 22:06:36.96 ID:WW7jv2oU0.net]
>>117
40歳年収240万

121 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 22:07:55.00 ID:n84PTU/80.net]
新卒2年目450万くらい

122 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 03:03:55.72 ID:JPscGmkT0.net]
1000万越えのC#erはいないのか?
てか、そのくらい高額になるともはやコード書く仕事ではなくなるからC#erを名乗らなくなる?

123 名前:デフォルトの名無しさん [2019/08/04(日) 03:23:55.03 ID:jcz7NslOa.net]
そういう話はさすがにスレ違いでプログラマ板でやった方がいいと思うが、
C#に限らずサラリーマンプログラマで1000万越えは少ないだろうね。

フリーランスの優秀な人はもっと貰ってるかもしれない。

意外だろうけど零細企業は景気がいい時は大手より高給が貰えるところもある。
ただいかんせん不安定

プログラマに限らんけど、優秀な人はアメリカにでも行った方がいいね。
日本はいろいろ終わってると思うw

124 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 03:39:09.71 ID:JPscGmkT0.net]
そうですね、確かに年収ネタは荒れやすいしすれ違いでした。これでこの話題は終わりにしときましょう。

125 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 16: ]
[ここ壊れてます]

126 名前:52:52.62 ID:idEgR3Nvr.net mailto: まあ色々な意味でも終わってるのかもねw

この不寛容さの社会を作ってしまった「市民」として責任を少しだけ感じます
[]
[ここ壊れてます]

127 名前:デフォルトの名無しさん [2019/08/06(火) 17:15:33.24 ID:8h96sAQZ0.net]
C言語スレとマルチですが質問がスルーされてるので質問させてください。
コマンドライン引数というのは具体的に何が出来る引数なのでしょうか?
WisdomSoftって入門サイトと苦しんで覚えるC言語って本を読んでるのですがイマイチ何が伝えたいか分かりません。

128 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:23:41.64 ID:lwH+jHue0.net]
ファイルをダブルクリックされた時に
なんのファイルをダブルクリックされたか
知るためなどに使う

129 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:24:51.93 ID:lwH+jHue0.net]
関連付けされたファイルをダブルクリックして起動された時などに…だな
言葉が足りなさすぎた



130 名前:デフォルトの名無しさん [2019/08/06(火) 17:37:01.47 ID:8h96sAQZ0.net]
>>126
ありがとうございます。
しかしファイルをダブルクリックしても何も起こりません;
読んでるサイトにはD&Dすると白紙のメモ帳にプログラムが書き写されるみたいなこと書いてあるので
試しましたが何もおこらず・・・
使ってる環境VS2019なのですがそれが駄目なんでしょうか?

131 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:38:57.54 ID:lwH+jHue0.net]
>>128
その読んでるサイトとやらのURLを見せてみ?

132 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:41:48.19 ID:hdPDl6nEM.net]
>>125
まあなんだ、引数を指定してバッチ起動できるわけよ。
すると引数に応じた処理をすることが出来たりする。

133 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:43:05.87 ID:nV6bzp6s0.net]
>>125
アプリ実行時に引数で指定した文字列の配列を渡せるだけ
それを使って何が出来るかはアプリ次第

134 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 17:44:52.93 ID:8h96sAQZ0.net]
>>129
http:ああwisdom.sakura.ne.jpあprogrammingあcあc32.html と
https:ああ9cguide.appspot.comあ17-03.html です
URL禁止みたいなのでスラッシュを置き換えてます。スイマセン
後者に関してはstdin等なんの説明もなく使ってるので更に分からないです

135 名前:デフォルトの名無しさん [2019/08/06(火) 17:55:25.38 ID:8h96sAQZ0.net]
>>130-131
メモ帳とかを使ってそれを実行できたりしないのでしょうか?
わかり易く解説してサイトとかあったら教えて頂けると助かります;

136 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:02:11.72 ID:lwH+jHue0.net]
もしかして実行して一瞬チラッと何か出てすぐ終了する感じ?

137 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:11:09.99 ID:D2KPblxl0.net]
>>133
関数に引数を渡すのは知ってる?
渡す引数の内容でその関数の動作は変わるよね?
コマンドライン引数はmain関数への引数になる
その引数はファイル名だったりexeを起動する人が入力する文字列だったりする

まずはコマンドライン引数を出力してみて何が入っているか確認しよう
出力先はテキストファイルでもコンソール(stdout)でもいい

138 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:11:12.27 ID:ruFXP44J0.net]
>>133
これコンパイルして、以下のようにコマンドライン引数渡して起動してみて。
C:\どっかのフォルダ> MainClass.exe 引数1 引数2 引数3

using System;
public class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("最初の引数は" + args[0]);
foreach(string s in args)
{
Console.WriteLine(s);
}
Console.ReadLine();
}
}


バッチ使うなら、exeと同じフォルダに、以下の内容のバッチファイル(***.bat)置いて、バッチファイル起動してみて。
hello.exe 引数1 引数2 引数3

139 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:11:17.28 ID:8h96sAQZ0.net]
>>134
いえ、コードをVS2019で実行して実行画面を出したままデスクトップのメモ帳をD&Dしました



140 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:13:03.10 ID:6OOXAacva.net]
>>125
どのスレのどの書き込みがマルチ

141 名前:ポスト元なの?
質問系のスレならスルーはあまりないと思うけど書き込むスレ間違えてない?
↓のスレあたりで、開発環境やコンパイラー種類、実行している方法などを添えて書き込んで見ればいいんじゃない
C言語なら俺に聞け 152 https://mevius.5ch.net/test/read.cgi/tech/1560763630/l50
スレ立てるまでもない質問はここで 149匹目 https://mevius.5ch.net/test/read.cgi/tech/1529199088/l50
[]
[ここ壊れてます]

142 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:13:46.50 ID:D2KPblxl0.net]
>>137
実行画面にドラッグアンドドロップするのではなく実行ファイルにする
ファイルの上にファイルをのっけるってこと

143 名前:デフォルトの名無しさん [2019/08/06(火) 19:53:18.36 ID:fRCzQnxrr.net]
>>139
あまり深く考えたことないけど、それでドロップしたファイル名がとれるのってどこで仕様化されてるのだろ

144 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:12:17.66 ID:V0Kuh8Wnd.net]
>>140
osの仕様じゃないの?

145 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:16:01.22 ID:hi1INabv0.net]
OSの仕様だね
実行ファイルにファイルをドロップすると
ファイルのフルパスが引数になって起動する
複数ファイルドロップするとファイルが全部引数で入る

送る(sendto)フォルダにexeのショートカットを置いて
右クリックして送るとやっても同じ動作をする

146 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:36:54.80 ID:Dc7UiKoCM.net]
ダブルクリックとかドラッグ&ドロップよりも

dirやpingとかの例から教えてやれよ
説目下手かよw

147 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:42:48.62 ID:Dc7UiKoCM.net]
>>138
すまんCの質問者だったわ
誘導乙です

148 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:45:30.56 ID:hi1INabv0.net]
君は質問者がCUIを知らないとわかった途端に
必死でマウントするタイプっぽいねw

まあ文句があるなら君が教えれば良いじゃない

149 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 21:44:06.23 ID:h96rX+BU0.net]
OSというかエクスプローラの仕様では?
まぁOSみたいなもんだけど
macも一緒だっけ?



150 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 22:15:41.42 ID:2e28HN3n0.net]
ここがPC初心者スレに見える連中がいるみたいだな

151 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 06:57:51.84 ID:HD57Pps60.net]
まあコマンドライン引数という言葉は出てるんだからコマンドラインとはこれのことって説明にはコマンドプロンプトを用いる方がわかりやすいかもしれないけどどっちもどっちかなあ

152 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 12:43:02.55 ID:0NR5yQ8YM.net]
プログラミング初心者に
PC初心者がいないと思える方が理解に苦しむ

153 名前:デフォルトの名無しさん [2019/08/07(水) 13:17:43.31 ID:+fGjf0jSF.net]
>>140
Win32API なら WinMain の LPSTR lpCmdLine

154 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 22:34:55.42 ID:7okrY9pr0.net]
定義なら
HKEY_CLASSES_ROOT\exefile

155 名前:デフォルトの名無しさん [2019/08/08(木) 01:37:38.81 ID:ihcgMCFx0.net]
OSの仕様とAPIの仕様とC言語の仕様がごっちゃになるから
昔より初心者は大変よな。

ただ質問の仕方はジャンル関係ないから
もうちょっと伝わるように書いた方がいいと思うぞw

156 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 14:29:31.16 ID:zX15bpOA0.net]
最も低コストな2点間時間差の測定って何なのでしょうか?
元々DateTime型を利用していましたが、超高精度である必要もなくマシンの長時間稼働で符号が反転することがあるのを承知でEnvironment.TickCountを利用しています。
Environment.TickCountよりも低コストなものはあるのでしょうか?

157 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 14:34:41.65 ID:mB2We2tKp.net]
コストの意味によって違う。
プログラム量なのか、費用なのか、所要時間なのか。

158 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 14:37:19.14 ID:zX15bpOA0.net]
>>154
実行パフォーマンス的なコストです

159 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 15:38:41.10 ID:mhwi8eEg0.net]
C# で無限Undo/Redoが出来るテキストエディタコンポーネントを探してるんですが、
使い勝手がいいものは何でしょうか?



160 名前:デフォルトの名無しさん [2019/08/08(木) 17:25:58.20 ID:EGuA/4uga.net]
>>155
兆円単位の資産持ってる人がスーパーの食材の値段を比較するような話で、
意味ないよそんなのw

コストなんかどっちにしろゼロと同じだ

161 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 18:00:45.46 ID:tebxUNsfa.net]
>>155
https://referencesource.microsoft.com/#mscorlib/system/datetime.cs,1503
ご覧の通りDateTime.operator -()は
InternalTicksプロパティ内部でのビット論理積各1回と、減算と、TimeSpan型のコンストラクター呼び出し(内部はlong値の代入のみ)だけで
最適化されたら小さな計算だけになると思うんだが
Environment.TickCountを使ったほうが優位な速度差が出ると測定したの?
測定して有意差があってかつ本当に速度を追求する場所ならEnvironment.TickCountはintだけで低コストだろうから使えばいいし
そうでないのなら「早すぎる最適化」について調べればいいよ

>>156
少なくともWPFのTextBoxはUndoLimitプロパティがあって、初期値では無制限になってる

162 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 20:11:51.79 ID:zX15bpOA0.net]
>>158
減算のみだとそこまでの差は無いのかもしれませんが現在のタイムを取得する命令もセットで測定した場合に結構な差が出たため乗り換えました。
具体的にはこのような方法で現在時刻を取得し
int lastTime = Enviroment.TickCount;
DateTime lastTime = DateTime.Now;
下記のようにして指定秒数以上立ったかなどの判定を行っています
if (Enviroment.TickCount - lastTime > 10000) {}
if ((DateTime.Now - lastTime).TotalMilliseconds > 10000) {}

163 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 20:23:44.89 ID:1yv5WNbeM.net]
その辺りはDDKの領分だから深入り
しない方が吉かも

尚、OSとしての仕様と実際に動作している
ハードの仕様の差異もあるし

164 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 20:46:23.03 ID:tebxUNsfa.net]
>>159
一定時間経過したかをより正確に判定したい、が本当にやりたかったことか
ドキュメントによるとEnvironment.TickCountは「resolutionは通常10〜16ms」とあるけど
DateTime.Nowでは「0.5〜15ms」とあるから
判定1回の処理時間ではなくて、精度を測定したほうが良いと思うよ
Stopwatchクラスは「high-resolution performance counter」を使えるから精度出るんじゃない?

165 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 23:24:35.70 ID:1oNCOrAR0.net]
指定秒数経過の判定で実行パフォーマンスを気にするのが間違ってる
そういうのは秒間1万回処理する必要があるとかいう処理で考えるべき

OS上で動作するからミリセカンドより細かい粒度での正確性はそもそも無理
stopwatch以上の細かい精度が必要ならC#じゃ厳しい

どんな要件か知らんけどそんな細かな精度なくても大丈夫
120FPSのゲームでもフレーム間で80msあるんだから

166 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 23:27:17.60 ID:J4rZTmDc0.net]
>>162
計算間違ってるよ

167 名前:デフォルトの名無しさん [2019/08/08(木) 23:57:14.98 ID:d0Ff1eN7a.net]
文章読んでる限りそんな頭悪そうじゃないのに
何でそんな部分の最適化は無意味だっていう簡単な事実が分からないのかねw

昔からそういう人一定数いるけどほんと不思議

168 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 00:05:32.58 ID:yqHkFNZaa.net]
>>164
この人が該当するかはわからないけど、発達障害で脳の特性により一般の人よりも拘りが強いという人は珍しくないよ。知能の高低ではなく、引っ掛かるところが普通と異なる。相手に自覚がない場合、いくら理屈で説明しても受け入れてもらえないことが多い。

169 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 00:24:39.62 ID:kbBtOJ8C0.net]
プログラマには特に多いかもね



170 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 00:50:27.63 ID:ENN4/0zza.net]
どうでもいい細部に拘って動けなくなるのは中途半端に知恵がついてきた初心者にありがち
俺も経験あるからわかるわ
そこから経験を積んでいくとスケール感がわかってきて「ゴミは無視」ができるようになってくるもんだけど、
そうならずにどんどん偏屈になっていく人も一部存在する
質問者がそうでないことを祈る

171 名前:デフォルトの名無しさん [2019/08/09(金) 04:41:46.96 ID:S4+H63Q60.net]
どうでもいい細部かもしれないんですが、フォーム名やイベント名は、動詞と名詞どっちを先にするのがいいのでしょうか?
例えばユーザー登録フォームの場合、RegisterUserForm と UserRegisterForm
ユーザーが選択された時のイベントの場合、 SelectUserEvent と UserSelectEvent
どっちがいいでしょうか?

172 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 08:20:41.97 ID:VQZHSvvcM.net]
>>168
私は旧人なので、まずは Formですよが知りたい(プレフィクス派)ので、
Formユーザー登録
w
イベントはイベントハンドラー名そのまま(わざわざ変えない)

173 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 09:38:32.89 ID:dc6G/Fnt0.net]
まあ、全ての時計は独自の時間を刻んでいるので、そもそも一致させるのは不可能だし無駄なんだけどな。

174 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 10:33:45.61 ID:NKKMFBro0.net]
>>168
イベントはUserSelectedが基本じゃないかな

175 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 11:51:03.15 ID:01aaYby70.net]
>>161>>162
具体的にはゲームのスキルクールタイム計算なので、数十ms程度の誤差は別に許容範囲であるため高精度である必要はないと書きました
深刻な回答してくれた方が多いようですが、別に今の方法でボトルネックになってる訳でもなく単純にこれよりベストな方法あるのかな?程度の感覚で聞きました

176 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 12:13:27.68 ID:WHBOK0wDM.net]
ゲームなら共通の世界時計を持っといて各ゲームコンポーネント側でそれに基づいて時間の差分を取るようにするべき
各自が勝手に時間を測るとポーズの実装とかで困ることになるよ

177 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 12:23:56.96 ID:/8nxdn6c0.net]
誤差が許容できるんだったらコードから意図が読みとれる奴がベター

178 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 13:23:18.87 ID:uqa/TGO4d.net]
>>173
たしかに

179 名前:デフォルトの名無しさん [2019/08/09(金) 13:40:04.45 ID:VpFvSLvY0.net]
>>165-166
今朝のテレビでコンビニに苦情入れて出禁になったと訴えていた被害者が
まさにそんな感じの人だった
(苦情自体は正当でコンビニにミスがあったのは確かだが
コンビニが謝ってるのにどうでもいいことで納得しないで文句言い続けてた)



180 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 14:08:51.82 ID:vlGdUztx0.net]
ファイルを大量に更新するアプリを作ってるんだけど
クラウドストレージ上でやると同期に問題が多くて困ってる
単一のファイルをディレクトリのように扱えて
可変長・不特定多数のデータをファイル名をつけて格納できる
ライブラリとかないものだろうか

クラウドで同期して別のPCで実行したりするので
環境変数やサー

181 名前:o構築、DBエンジンのインストールが必要なものは避けて
ポータブル系アプリのようにUSBで持ち運べる実装にしたい

理想は仮想ドライブを動的にアプリ内でマウントして
読み書きさせるような感じ

なにかいい知恵はないものだろうか…
[]
[ここ壊れてます]

182 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 15:12:17.76 ID:OSNL5U/w0.net]
ただの質問から人格攻撃にまで発展してる奴の方が妄想癖ありそうで怖いわ
なんかC#スレやVSスレって変な奴増えてきてるな

183 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 15:27:08.13 ID:vlGdUztx0.net]
夏休みだからじゃないかな

184 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 15:28:17.68 ID:ti4i1VCta.net]
>>168
https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/names-of-type-members#names-of-events
イベント名は動詞か、時制つきの動詞にするのが習慣
既に書かれてるけど UserRegisterd や UserSelected のような名前にするのが一般的かな
命名に困ったら.NET標準のものを参考にするといいよ
>>169 のような「いちいちFormをプレフィックスにする」のは少なくとも.NETにはそぐわない

>>172
> 別に今の方法でボトルネックになってる訳でもなく
やはり「早すぎた最適化」について知っておくべき

>>177
> 単一のファイルをディレクトリのように扱えて
> 可変長・不特定多数のデータをファイル名をつけて格納できる
についてもう少し詳しく
もっともクラウドで同期の問題があるのなら、どんなライブラリを使おうとも大して変わらない気もするけれど

185 名前:デフォルトの名無しさん [2019/08/09(金) 15:42:32.52 ID:l8EdBHZf0.net]
パフォーマンス系の質問に対して無意味系の答えが返ってくるのって質問者も大体織り込み済みな上で質問してるだろうしそれなら返さなくて良いんじゃないかね
ガチの初心者ならまだしも質問者のレス内容的にその辺は分かった上で聞いてるだろう
まぁ初心者スレでパフォーマンスに関する質問する方が悪いとも言えるが

186 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 16:48:18.94 ID:m7mfmdmp0.net]
>>177
データベースのblobにファイルを突っ込むのが一番手っ取り早いが、速度や効率はまあ...

187 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 16:50:09.57 ID:m7mfmdmp0.net]
つか、クラウドストレージでやると同期の問題ってどんな問題か気になる

188 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 17:08:20.38 ID:wy7G1+HC0.net]
>>177
サーバー型のDBがだめならsqlite使えば?

189 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 17:56:29.89 ID:vlGdUztx0.net]
>>183
例えばonedriveだとフォルダ下のファイル数が一定数を超えると
フォルダに警告表示が出て同期できなくなったりする
あと変更箇所のチェックで異様に時間がかかるようになるんだよね



190 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 17:59:34.02 ID:uqa/TGO4d.net]
zipじゃだめなの?

191 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 18:00:19.74 ID:vlGdUztx0.net]
zipだと圧縮されている10万ファイルのうち
1個変更しただけでも再圧縮が必要にならない?

192 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 18:16:27.78 ID:vlGdUztx0.net]
あ、ごめん
zipって結構柔軟性あるんだね
削除も追加もできそうだしやってみる
sqliteも試してみる
ありがとね

193 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 19:02:58.69 ID:GUJ7R2MVM.net]
>>177
OLE複合ファイルってのがwindows標準
只、私ならZipで実装するね

194 名前:デフォルトの名無しさん [2019/08/10(土) 14:54:00.10 ID:ddvhW9sGa.net]
なんか昨日一日まったく5chにアクセス不能だったけど、
俺の環境固有の問題だったのか普通に書き込んでる人いるなw

>>168
UserRegistrationFormとか?

Formはサフィックスするなって意見もあるが、これは少数派の意見だと思うので
真に受けない方がいいと思う。

ほとんどの場合は付けた方が結局分かりやすいね。
あと、コントロールの変数名だけはハンガリアンを認める人も結構多い。

195 名前:デフォルトの名無しさん [2019/08/10(土) 15:01:33.84 ID:/ATKT2HCF.net]
昨日アクセス不能だったのは事実
ただし鯖は生きてたのでDNSの問題
回避できるDNSのアドレス知ってるひとは
そっちに変更して普通に読み書き出来てた
方法は避難所に書いてあった
今は元に戻しても通常通り読み書きできる状態

196 名前:デフォルトの名無しさん [2019/08/10(土) 15:36:24.79 ID:ddvhW9sGa.net]
>>191
へーそういう状況だったのか

197 名前:デフォルトの名無しさん [2019/08/10(土) 15:40:36.25 ID:/ATKT2HCF.net]
ついでに言うとDNSが死んだ原因は
2chを乗っ取った5chのjimの会社が
米の銃乱射の件でテロリスト認定されて
DNSサービスの停止になったってこと
さらにjimは指名手配で逃亡
5chは復旧したけどいつまで続くか判らんω

198 名前:デフォルトの名無しさん mailto:sage [2019/08/10(土) 18:20:40.93 ID:0gPdeKzpa.net]
>>190
スマン、質問の「フォーム名」を見落として「イベント名」だけ拾ってしまっていた
フォーム名ならFormのプレフィックスやサフィックスを付けるのは全然問題ないね

199 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 10:36:30.39 ID:HTWZ+S1Q0.net]
SelectedTextやSelectionStart、SelectionLengthのような機能をカスタムコントロールに付けたいんですが
やっぱりMeasureStringとかでいちいち文字列の長さを測定したりするんでしょうか?
もしくは2次元配列を用意して1文字ずつその文字コードと座標を格納しておくか



200 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 10:57:06.87 ID:kI0RZN1g0.net]
コレクションに要素が存在するかを判定するとき、Count > 0ではなくLinqのAny()を使う意味ってあるのでしょうか?
可読性のためだけにこちらを使ってるんですかね?

201 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 11:01:09.66 ID:2iL+RtWU0.net]
>>195
TextBoxコントロールを使わないのならそうなるだろうね
等倍フォントなら少しは楽できるけどやることは変わらない
IMEの操作も考えてるんならAzukiっていうエディタコントロールを参考にすると良いよ

202 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 11:26:07.50 ID:HTWZ+S1Q0.net]
>>197
ありがとうございました
何行目の何文字目とか指定できれば簡単なんですが
いちいち文字列の長さを測定しなければならないというのは不便ですね

203 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 11:41:48.29 ID:ssrYJHqQ0.net]
>>196
リンクの式はイテレータを返すだけだからCountやLengthのプロパティを持ってない。Count()メソッドがあるけどこれは全件評価が走ってしまうので、最終的に欲しい値が件数の場合以外は使わない。
その状態でイテレータに引っかかるのがあるかどうかを判定する際に使うのがAny()。普通のリストや配列に対してCountやLengthを使わずにAnyを使う意味はない。

204 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 11:56:29.02 ID:kI0RZN1g0.net]
>>199
ありがとうございます
SortedDictionaryに対してAny()で判定していたので、これについてはCountプロパティがあるのでCount > 0で良いということですね

205 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 12:40:47.91 ID:c1yJbHcz0.net]
>>199
勉強になる

206 名前:デフォルトの名無しさん [2019/08/13(火) 15:58:52.24 ID:hrddazny0.net]
どこが「初心者用」だよ?って質問と回答ばかりだけどなww
昔は上級者用の質問スレもあったようだが
まあ一つに集約されてるほうが情報収集には便利だけど
スレタイはこっちが気に入ってるし
シャープとフラットをかけてる辺り

207 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 18:46:02.38 ID:PAgqa6Je0.net]
NuGetパッケージの管理より
Seleniumパッケージを最新にしました。

しかし、それから

Chrome は自動テスト ソフトウェアによって制御されています。

という文言が画面に出る様になってしまいました。

options.AddArgument("disable-infobars");

を指定する事でこれまでは、
この様なエラーメッセージは表示されていませんでした。

どうすれば消えますか?

208 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 19:01:18.55 ID:ZVs77qOsa.net]
>>203
標準でもなんでもないサードパーティーライブラリの話はスレ違い
↓あたりで適切なスレを探して
web制作管理 - 5ちゃんねる掲示板 https://mevius.5ch.net/hp/
WebProg - 5ちゃんねる掲示板 https://medaka.5ch.net/php/

209 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 19:57:44.52 ID:v4xllOHk0.net]
>>203
その文言そのままgoogleにブチ込んで見る人生よ



210 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 20:37:06.27 ID:4ID4APxI0.net]
ずーっとseleniumと格闘してんね

211 名前:デフォルトの名無しさん [2019/08/13(火) 20:54:18.53 ID:yZEhfFzKa.net]
>>205
すごい字余りの川柳かと思った

212 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 20:59:35.55 ID:Gdeao/QQ0.net]
セレニウム野郎まだいたのかよw

213 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 21:33:22.43 ID:PAgqa6Je0.net]
>>204 >>205
新しいNuGetパッケージについての
解説ブログはないんだよ。

214 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 21:45:22.03 ID:ZVs77qOsa.net]
>>209
>>1

215 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 22:29:42.70 ID:4ID4APxI0.net]
>>209
君が解説ブログかけばいいんでは?
てか解説ブログあること前提なの?

リリースノート見るなりソース読むなりすればいいのでは?
できないならなんでバージョンあげたの?
問題出たならバージョン戻せば?
なんのためにnuget使ってるの?

216 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 22:56:59.36 ID:eH0ENH5J0.net]
ちなみにこれってエヌユーゲッツなんかねヌゲッツなんかね。稀に他人と会話することがあるんだけど口頭で言う時に困る単語のひとつ…!

217 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:00:05.96 ID:RVQw4+nc0.net]
https://monobook.org/wiki/NuGet
>NuGet(読み:にゅーげっと、ぬげっと)

らしい

218 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:01:57.10 ID:PAgqa6Je0.net]
>>211
常に最新を使った方がいいのかな〜と思いまして。
戻した事がなかったので調べてみます。

この手の技術系は、
詳しい人がブログにまとめてくれてるのでいつもそれらを参考にしています。

>>212 >>213
エヌユーゲット

219 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:10:42.03 ID:kJJDzO2R0.net]
漏れは、Ruby で、Selenium WebDriver を使っているけど、

「Chrome は自動テスト ソフトウェアによって制御されています」というメッセージは閉じれるけど、
その部分を閉じても、その幅が消えないから、使える画面が少なくなる



220 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:18:57.47 ID:4ID4APxI0.net]
selenium君もruby君もスレからずれたレスしないでね

221 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:24:54.56 ID:eH0ENH5J0.net]
>>213
ヌゲットにしとくかな…
Nuclear unlimited gigantic enhanced technology

222 名前:デフォルトの名無しさん mailto:sage [2019/08/13(火) 23:29:34.04 ID:mICjniMU0.net]
selenium君はRuby君を反面教師にするといいよ。
スレ違いを繰り返すのがどれだけ他人から見て迷惑でみっともない行為なのかをこれ程上手く伝えられる教材はとても稀だから。

223 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 00:36:59.18 ID:jQtv4Yb60.net]
C#+Seleniumなのでこのスレが正しい

224 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 01:38:02.43 ID:GCJub4Dp0.net]
誘導を無視することは正しいことですか?
ライブラリの問題であって言語の問題ではないから誘導しているのです
使用しているのがC#であっても言語の質問でなければ正しくはありません
問題が言語なのかライブラリなのかわからない人もいるので初めてレスするなら何の問題も無いし、誘導してくれるでしょう

今まで何度誘導を無視しましたか?
長期間、言語ではなくライブラリを起因とする質問を繰り返すのは正しいのですか?

225 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 02:14:02.89 ID:jQtv4Yb60.net]
それはあくまでもあなたの意見でしょうが

226 名前:デフォルトの名無しさん [2019/08/14(水) 03:08:22.27 ID:YX6BCcxFa.net]
芸人の押すなよは押せって意味だからどんどんやっていいよ
どうせ過疎スレで人口なんか恐らく数十人しかいないw

227 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 03:17:28.62 ID:GCJub4Dp0.net]
1に書いてあることと同じだけど、どのへんがあなたの意見なの?

228 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 08:25:36.73 ID:RPrYPUsF0.net]
>>221
俺は>>220とは別人だが同意見だ

229 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 08:33:56.94 ID:28G/wIAb0.net]
そもそもWinFormsもWPFも言語仕様じゃなくてライブラリだ
ライブラリを外せってのは余りに酷い暴論だよ



230 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 08:59:28.69 ID:gdRXPT/U0.net]
ライブラリが即NGじゃなく
サードパーティ制のライブラリがメインの質問&原因だからスレ違いでしょ

標準ライブラリは勿論OKだし
C#に関連の深い.NETやVisualStudio周りなら多少逸れてもOKだろうし
サードパーティでも例えばODP.NETとかのら基本的な質問なら答えても文句言われないでしょ
逆にUnity絡みならC#であっても専門スレのが有益だから誘導されるだろうし

誘導には、スレが汚れるから他所へ行けって側面と
ここだとまともな回答が得られないからこっちを当たれって案内の面があるんよ

231 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 09:34:24.96 ID:mrBPpWLv0.net]
>>217
この前マイクロソフトの人柄ヌゲットと言ってたからヌゲットでOK

232 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 09:38:00.49 ID:28G/wIAb0.net]
標準とか外部ライブラリーって>>1のどこに書いてあるんだよ

つまり「個人の感想です」だな

233 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 12:04:33.55 ID:RWvjQCFF0.net]
馬鹿がなんと言おうとスレチ

234 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 12:05:06.26 ID:HkWgtzgRM.net]
つかSelenium君の問題は、Seleniumの問題というより
彼の頭の悪さの問題なんだよ

それを解決するのはこのスレじゃない
そこは明白だろ

235 名前:デフォルトの名無しさん [2019/08/14(水) 12:38:54.90 ID:Ct2lHzgAa.net]
誘導してる人の動機が利他的なものなら素晴らしいことだけど、
実際は人を批判しないと気が済まないだけだからねw

そこを見透かされてからかわれているのに、それがわからないところが何とも滑稽だね
だいたいこんな過疎スレで周辺分野の質問があって誰が困るのかねw
誰も困らないと思うけど。

236 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 12:48:55.76 ID:LymH/UUL0.net]
質問者本人が(回答を得られないという点で)困るだろ

237 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 13:03:38.03 ID:pFnHcoJr0.net]
スレチな質問なんだから誘導して貰えるだけマシ

238 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 13:09:35.97 ID:RPrYPUsF0.net]
質問者以外も、どうでもいいやり取りを見せられて迷惑だと思うよ。
過疎っていても適切な話題が書き込まれていた方が良い状態だと思う。

239 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 13:40:20.40 ID:mrBPpWLv0.net]
>>231
君のようなオナニー野郎が1番気持ち悪いよ



240 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 14:49:03.49 ID:jQtv4Yb60.net]
そもそも
C#もSeleniumも根本はC++で実装さえれている
Seleniumに詳しいヤツがいないから
いいがかりつけられてばかりでかわいそう

241 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 15:26:24.08 ID:RPrYPUsF0.net]
>>236
かわいそうって、自分が?
何で実装されているかなんて尚更無関係だろうに、そんな頓珍漢なことばかり言ってるから煙たがられるんだよ。

242 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 15:39:01.35 ID:pFnHcoJr0.net]
>>236
そんじゃこれからはC++スレで質問してね
Seleniumに詳しい奴もいっぱいいるだろうからお前の助けになるだろうよ

243 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 16:13:47.02 ID:jQtv4Yb60.net]
C#の言語自体がC++で作られてる事をしらんふぬけども

244 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 16:16:19.89 ID:IV/LzryA0.net]
僕の内臓を返せ〜

245 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 16:59:56.55 ID:jDEWV9x2M.net]
Roslynも知らないガイ

246 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 17:00:39.76 ID:GCJub4Dp0.net]
そもそもかなり長期間seleniumの質問が投げられてるのにseleniumに詳しい奴からの回答なんてruby君以外からほぼ無い状態
だからこそ誘導してるんじゃないか
スレ趣旨から多少ずれてようがわかる範囲なら回答してる
回答した上で誘導までしてるのに誘導だけは無視して延々と質問を投げるなら嵐とかわらんじゃないか

247 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 17:01:32.64 ID:pFnHcoJr0.net]
>>239
GitHub - dotnet/coreclr: CoreCLR is the runtime for .NET Core. It includes the garbage collector, JIT compiler, primitive data types and low-level classes.
https://github.com/dotnet/coreclr

コア部分は間違いなくC++で開発されているから安心して巣立ってくれ

248 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 18:33:13.55 ID:rSDdWO1t0.net]
聞きたくなければ黙ってseleniumをNGワードに入れれば良い

匿名掲示板なので日記書くやつもいるだろうし
他人の服装まで直す行為は無駄
ごちゃごちゃ発言するな

249 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 18:48:49.85 ID:Q4kX3C+k0.net]
いいかげんseleniumの話題はやめて欲しいよね



250 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 21:06:43.58 ID:dNTNWi1CM.net]
業務アプリケーションでElectron.NET使ってる人いる?そういった技術も習得してた方がいいかな?

251 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 21:09:29.90 ID:IV/LzryA0.net]
どうしてなの――ッ!!
どうしてエレクトロンしないのよーッ!!

252 名前:デフォルトの名無しさん [2019/08/14(水) 21:11:16.53 ID:eGLvTmmqa.net]
業務アプリって比較的新しい技術ってあんま使わなくね?
使えるように勉強するのは多いに結構なことだとは思うけど

253 名前:デフォルトの名無しさん [2019/08/14(水) 21:34:40.40 ID:oxhAJDr00.net]
RPAスレはSeleniumの話題OKだからそっちいきなよ

254 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 22:21:04.82 ID:bBZ00i3Q0.net]
Seleniumスレでも発達障害は解決できるとは思えないけどな

255 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 00:01:22.09 ID:5MxOdPEK0.net]
options.add_argument( '--disable-infobars' ) # 通知バーを消す
Ruby で、こう書いても、通知バーを消せない!

Chrome なんて、仕様をコロコロ勝手に変えるし、文書も作らないだろ。
ソースコードを読めって、無茶苦茶だろw

各ブラウザの機能なんて、相手にしないほうが良い

256 名前:デフォルトの名無しさん [2019/08/15(木) 00:17:18.78 ID:4RLQ3HFd0.net]
>>246
WPFやFormアプリケーションで描画しきれないケースのみ採用するパターンが多いかと。
習得する分には、もしもの時に出せる手札が増える(知見が広がる)ので良いとは思います。

257 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 01:51:37.30 ID:yTBvPSIa0.net]
業務アプリは大規模開発だったり要件が機能追加(既存ソースの流用)だったりが多いから知ってる人が少ない技術は敬遠される傾向があるよね・・・

258 名前:デフォルトの名無しさん [2019/08/15(木) 05:13:06.12 ID:YYpr9nEd0.net]
dapper で、dynamic型で取得したレコードのカラム名は、どうやってプロパティにマッピング?すればよいでしょうか?
以下のようなイメージです。

var list = connection.Query<dynamic>(@"SELECT cd, name FROM hoge_table").ToList();
list.ForEach(item =>
{
this.cd = item.cd;   //cdカラムは存在しているが、この方法では取得出来ない。
});

259 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 05:18:20.88 ID:bD8BPP4C0.net]
なぜdynamicなんか使ってるの?



260 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 09:03:09.32 ID:NGEmLDBt0.net]
>>248,>>252,>>253
今はあんまり使われていないんだ
休みだし今後のためにチラッと触ってみる

261 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 13:17:25.77 ID:XW4rFrdd0.net]
using (var conn = new SQLiteConnection("Data Source=:memory:"))
{
conn.Open();
conn.Execute("CREATE TABLE test (cd INTEGER, name TEXT)");
conn.Execute("INSERT INTO test VALUES (@cd, @name)", new { cd = 1, name = "a" });
conn.Execute("INSERT INTO test VALUES (@cd, @name)", new { cd = 2, name = "b" });
foreach (var row in conn.Query<dynamic>("SELECT cd, name FROM test"))
{
Debug.WriteLine($"{row.cd} - {row.name}");
}
}
問題なかったけど?
コンパイルエラーになってるんだったらその内容書いて

262 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 15:14:02.56 ID:jCEAQJdF0.net]
常駐するアプリを作るとき、serviceにすると何が嬉しいのですか?

263 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 15:26:23.04 ID:nQmxjzka0.net]
ログインしてなくても動く

264 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 16:03:39.12 ID:wwJYNY5r0.net]
ありがとうございます

265 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 17:15:06.30 ID:X+hhUeCb0.net]
>>255
dapperはdynamic使うのが簡単でウマーだから

266 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 18:25:05.09 ID:jCEAQJdF0.net]
>>261
インジェクション対策は?

267 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 18:41:02.43 ID:VbDuA0j40.net]
>>262
ちゃんとパラメーター変数使ってるジャン

268 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 19:29:51.78 ID:UYxtktoid.net]
>>261
cdカラムとかを指定して取り出したいなら結局クラス作った方が楽やん

269 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 20:14:41.68 ID:BPnFBcl20.net]
大文字小文字の問題とか無いのかな?
止めて変数rowをウォッチしてみてね



270 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 20:56:25.88 ID:X+hhUeCb0.net]
>>264
ケースバイでしょ

271 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 20:58:03.96 ID:bD8BPP4C0.net]
>>266
うん、だけどそれで悩んでるのは事実やん

272 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 21:46:48.94 ID:pWdXHbkI0.net]
>>251
やっぱりそうだよね。


Seleniumを使いこなせないPGがC#パーには多すぎるのが問題だな

273 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 22:36:14.06 ID:nQmxjzka0.net]
あーハイハイ

274 名前:251 mailto:sage [2019/08/15(木) 23:18:45.58 ID:5MxOdPEK0.net]
まあ、Ruby では、
driver.execute_script で、JavaScript(JS)のソースコードを実行できるから、
通知バーの要素を取得して、その部分を、JS で削除できるかも知れない

例えば、漏れは普段、Showroom の多くのアバターなどを、こうやって削除している

jsCode = <<'EOT'
var elem = document.getElementById('js-avatar');
elem.parentNode.removeChild(elem);
EOT

driver.execute_script jsCode

275 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:31:14.40 ID:Capr2asl0.net]
一人でも煩いスレ違い居座り野郎が、二人になって相互作用まで始めてしまったか。

276 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:40:48.73 ID:w8wDW0z80.net]
せめてjavaスレいけよ

277 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:47:42.08 ID:9Iug+Ez/0.net]
ん?なんでrubyの話が突然出てくるんだ?

278 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:56:27.81 ID:jFKiomKf0.net]
だから。相手にすんなよ。
しつこくても枯死するまで放って置けばいいのに。

279 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:57:25.58 ID:Capr2asl0.net]
>>273
いくらやめろと言われてもところ構わず唐突にRubyの話を始める頭のおかしい奴が、この板にいついているから。スレタイにRuby禁止と書かれているスレがいくつかあるが、コイツが原因。



280 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:58:13.28 ID:2i9/2j960.net]
C#っつーかプログラミング言語一般の話になっちゃうかもしれないんですけど
勉強してて例外のところに差し掛かったんですけどめっちゃ色々種類あるじゃないですか
んでもって例えば関数一つ作るにしても考えようによってはほんと沢山の種類の例外が発生する可能性がありますよね
そういうのをとにかく可能性が少しでもあれば例外をスローするようにしてたらコードが例外ばっかになっちゃう気がします
書く例外と書かない例外の境界線はどこにあるのでしょうか

281 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 00:58:14.57 ID:Capr2asl0.net]
>>274
すまん、その通りだな

282 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 01:08:02.04 ID:G0Kx7mvIa.net]
>>276
よくわからん理屈だな
仮にその例外を「書かない」と判断したとして、その「例外的な状態」を例外の代わりにどう処理するつもり?
放置しても問題なく動き続けられるorその場で適切な対処をして回復できるなら、そりゃ例外投げるよりその方がいいに決まってる

283 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 01:13:52.65 ID:Capr2asl0.net]
>>276
ライブラリ関数に渡す引数が正しくないとかのように、自分が書いているコードが正しくない場合に発生する例外、逆に言えば正しいコードを書けば発生しない例外は基本的にその場ではいちいちcatchしない。
ただし完全にバグがないということを保証するのは困難なので、プログラムの上流でまとめてcatchして何らかのメッセージを出すなどした方が良い。どう対処すべきかはそのシステムに求められる要件次第だけど。
ファイルにアクセスできないとか、ユーザからの入力データが正しくないことにより発生するような例外とか、自分のコードの外部の要因で発生する可能性のある例外は、その都度catchして適切に対処する必要がある。

284 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 01:51:17.26 ID:XNgAzUDc0.net]
四則演算やっても
オーバーフローもゼロ除算もあるしね
一番上のcatchでまるっと処理したほうがええ

285 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 02:16:34.36 ID:3ldAil1N0.net]
>>276
その処理内で対処できるなら投げない
できないなら例外なげる

>>279-280
キャッチする話じゃなくて投げるほうの話だろ
まあ、キャッチも同じ考え方で、自分で対処できる例外はキャッチする
それ以外はそのまま上位へ

今はこういう考え方が主流だと思う

286 名前:デフォルトの名無しさん [2019/08/16(金) 02:17:58.68 ID:KW3/fLy3a.net]
>>276
そんなの手を動かさずに机上で考えてるからそうなるだけw

処理できない問題は(基本的には)例外を投げて呼び出し側に通知するしかない。
処理できない例外は投げるしかない。
処理できないのにcatchして握りつぶしてよい例外なんかない。
何が難しいの?

287 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 05:58:38.34 ID:RrHjcCxL0.net]
初心者マークの人へのアドバイスとしては

例外をthrowするケースは
・事前条件が崩れる場合、例えば引数がおかしい場合や処理の準備が整わない場合
・処理に失敗したことを伝える場合
まずはこのあたりを基準に

逆にcatchはむやみやたらにしてはいけないし、特に握り潰してはいけない

他人のソースをたくさん読んで、たくさん考えて書くしかないよね

288 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 07:20:17.23 ID:z6Pxs9AVa.net]
javaみたいに「このメソッドはこんな例外を投げるから必ずtry-catch書けよ」ってできなかったっけC#

289 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 07:41:23.99 ID:G0Kx7mvIa.net]
>>284
Javaの最大の失敗の一つだね
C#に採用されなかったのはもちろん、Kotlinですら省かれた



290 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 09:30:31.26 ID:1KF8kPqD0.net]
そもそもチェック例外を採用した言語ってJava以外にあったか

291 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 09:33:04.09 ID:w8wDW0z80.net]
>>276
動作止めたくないなら例外拾って全部ログに書き込む

292 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 11:35:21.61 ID:16ocBcE+p.net]
全部のケースを全部継続可能か不可能か判断してケース分けするに決まってんだろ。
甘えんな

293 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 11:43:27.15 ID:i2ShkSLcM.net]
俺はtry入れないでまず作って
例外が頻発する箇所に追加していく感じ

最初から丁寧に入れていくのは時間の無駄が多い

294 名前:デフォルトの名無しさん [2019/08/16(金) 12:43:54.88 ID:vQM55/5Pa.net]
いやとにかく

(1) 例外を投げるかどうか
(2) 例外をcatchするかどうか

こんなことで悩むなんてありえないよ。悩む理由がない。
悩みどころなんて、どの例外を投げるかの選択、あるいは例外をどの程度
場合分けするか、ぐらいしかない。



295 名前: これは例えば、引数が変だった場合にとにかくいつでもざっくりArgumentExceptionを投げて済ますか、
引数がどう不適切なのか、細かく場合分けしてより適切な例外を投げるようにするかの選択

余談だけどこういうと怒る人もいるかもしれんが、個人的には例外の場合分けなんて
本当はどうでもいいと思ってるw

役に立つことはほぼないwほとんど場合プログラマの自己満足だw
そのコードを見られる場合にはね。(だから他人が使うライブラリを書いてる場合は別問題)
[]
[ここ壊れてます]

296 名前:デフォルトの名無しさん [2019/08/16(金) 12:50:25.25 ID:vQM55/5Pa.net]
あと、そもそもメソッドのデザインとして
例外を投げる代わりにout引数か戻り値でnull(あるいは例外オブジェクト)
を返すって選択肢もあるから、そこで迷うってケースもないことはないけどね。

呼び出し側でいちいちtryブロックを書く必要があるのは鬱陶しい、
って需要もあるから

297 名前:デフォルトの名無しさん [2019/08/16(金) 12:59:06.06 ID:mZqFzvyqa.net]
キモいRuby厨はスレ追い出されてC#スレに引っ越した

298 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 13:33:31.65 ID:w8wDW0z80.net]
>>289
たぶん環境が緩いというか品質が知れるわ

299 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 14:56:57.30 ID:/nFnP4zmd.net]
>>291
out使うのはなぜ?



300 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 15:10:09.14 ID:Boqt1xFK0.net]
outでエラーコード返すのでは?

301 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 15:19:40.41 ID:s9O3qxdqd.net]
昔はout使う構文が嫌いだったけど、7.0でインライン宣言出来るようになってからそうでもなくなった

302 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 16:31:30.73 ID:vdJZcXlx0.net]
ValueTupleにエラーコード入れて返すじゃ駄目なの?

303 名前:デフォルトの名無しさん [2019/08/16(金) 16:34:34.90 ID:vQM55/5Pa.net]
>>294
TryParse的な物を想定して書いたけど>>291じゃ端折り過ぎて意味不明だね申し訳ない
戻り値nullは(メソッドじゃないけど)as的な物を想定

例外オブジェクトをout変数で返すのはたぶんやってる人はほどんどいないけど、
tryブロックが嫌いなら場合によっては便利かも

304 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 16:37:56.56 ID:AwRYym3H0.net]
>>272
JavaとJavaScriptは別ものだ
あほ

Slenium以前の問題

305 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 16:52:07.81 ID:/nFnP4zmd.net]
>>298
タプルで返せばよくない?

306 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 17:53:53.26 ID:9StEh2pLd.net]
例外はログ拾う時に絶望したくないから適切に投げるなぁ。
どうでも良いという論調は作るだけで保守しない人の発想みたいで少し嫌かもしれん。
アプリケーションのロジックをバッチでも使いたい、みたいな時に、毎度戻り値を検証するんじゃなくてバッチの一連のトランザクション自体落としちゃいたい時に二度手間な気がするんだが、その辺どう作ってるんだろう?

307 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 19:27:37.17 ID:16ocBcE+p.net]
>>301
二度手間と思うのは一人で全部コード書いてるから。

308 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 19:30:21.63 ID:O2kbbLouM.net]
>>299
え?なぜjsを指定してると思うの?
元々javaのつもりで書いてるんだけど。
沸いてるの??

309 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 21:32:15.51 ID:HNLZHpWT0.net]
>>303
javaの拡張子は【.java】だよ
【.js】は、思いっきりJavaScriptの拡張子
少しググって勉強してね



310 名前:デフォルトの名無しさん [2019/08/16(金) 23:41:19.50 ID:AADFbgN80.net]
プログラム板住人は煽られるとすぐムキになるから、転載アフィブロガーの種まきに最適な場所になっちまってんだろう

311 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 00:34:58.82 ID:1HSNgy8G0.net]
Seleniumって便利だな
もっとユーザが増えてほしい

312 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 02:16:51.47 ID:EsYhqRXq0.net]
>>304
え?全然噛み合わない。
なにこのアスペ

313 名前:251 mailto:sage [2019/08/17(土) 02:31:35.40 ID:fYRni8gj0.net]
Ruby on Rails では、作者のDHH が、2014年に「TDD(テスト駆動開発) is dead」と発言して、
ユニットテストから、Selenium を使った、E2E(end to end)テストへ移行した!

それで、Rails 6 では、
DHH のいるBasecamp 社から、GitHub へ移籍した、Eileen Uchitelle によって、
テストを複数CPU コアで、並列実行する機能が実装された!

314 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 10:48:29.26 ID:uGEbzf6ra.net]
気狂いしかいねーのかよ

315 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 12:36:57.19 ID:zUPT7dbd0.net]
見てわかんねーのか

316 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 13:25:59.90 ID:Mqg+a2XP0.net]
暑さで脳味噌が溶けちまったんだろう

317 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 14:35:53.37 ID:sCIOh4/p0.net]
なんでRubyスレで言わねえんだ?

318 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 15:08:20.60 ID:BwzrwDPv0.net]
>>303
なんでJavaのつもりで書く必要があったの?

319 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 15:55:56.68 ID:qUgpJGd70.net]
>>307
あんたの272の近辺にはJavaの話は全く出てきていないが、もしかするとRubyがJavaだと思った?



320 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 19:21:30.41 ID:lWdyvSQl0.net]
エスパーすると、ASP.NETがあるがデスクトップアプリがメインだったC#よりまだJavaスレの方がまだselenium詳しそうなやつ多そうだから、せめてjavaスレ行けって事だろ。
ほんとこれぐらいもエスパーできなきゃアホやろ

321 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 21:04:14.52 ID:qUgpJGd70.net]
それなら「Rubyスレに行け」が流れ的に当然であるのに何故か「Java」
彼にとってサーバーサイドの言語は全部Java
ほぼ「ゲーム機を全部ファミコンと呼ぶおかん」状態と考えるのが妥当と思われる

322 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:31:29.74 ID:2lsOlPOTd.net]
>>315
それはあまりにも苦しい擁護だな

323 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:32:06.22 ID:fWrg11mTM.net]
seleniumがjavaで書かれてるからじゃないの
>>236->>238のC++云々からの流れかと思ったけど

324 名前:デフォルトの名無しさん [2019/08/17(土) 22:34:51.12 ID:8QP5rwWB0.net]
KeyValuePair c=func1();
cをnull判定できないんですがどうしたらいいですか?
Myclass c=func2();
の場合、null判定できます。

クラスは出来て、KeyValuePairは出来ないのは何故ですか?

325 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:35:45.47 ID:1som7JJwa.net]
>>319
C# クラス 構造体
でググれ

326 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:37:54.74 ID:RvVfsurb0.net]
KeyValuePairにnullなんて入らないからな

327 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:10:53.90 ID:u5xmISorM.net]
>>314
以後アスペはNG

328 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:12:11.34 ID:u5xmISorM.net]
>>316
流石に頭が悪すぎるのでこれ以上会話するのは不可能

329 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:22:57.32 ID:w7ZVAy9F0.net]
>>319
func1をTryParseみたいにbool func1(out KeyValuePair c)にして値入れたくないときはfalseを返すようにしたら?
構造体にnullは入れられないし、どうせそのあとnullで分岐するでしょ



330 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:30:37.14 ID:u5xmISorM.net]
>>316
先走った場違いな発言を認めたくなくて必死過ぎ、こーゆう使えない部下は直ぐに切るからこいつは低収入確定

331 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:35:04.26 ID:BwzrwDPv0.net]
>>319
KeyValuePair?
を返すようにしたらいい

332 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:36:59.53 ID:+vBKVSmmM.net]
>>325
無職のおっさんに言われてもなぁ

333 名前:251 mailto:sage [2019/08/17(土) 23:47:28.51 ID:fYRni8gj0.net]
そりゃ、C#・Java は、静的言語で同じだから、
静的言語になれているなら、Selenium の話は、Java で聞くのがよい

動的言語なら、Ruby, Python で聞けばよい

Seleniumデザインパターン&ベストプラクティス、2015、オライリー
これは、Rubyでテストを書いた本

ウェブ系・HTML は基本、Ruby。
まあ、Java のSelenium の本も出てるけど

Java は、Spring Boot か?
動的言語のGroovy じゃないのか?

334 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 01:25:10.35 ID:KlRCzn4x0.net]
javaの話が出てきても勘所がないから検討違いな粘着になるんだよな
Seleniumについて知識があれば文献的に充実してるのはjavaだろうに

335 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 03:58:12.87 ID:9i6q0zGn0.net]
c#からc#をインタプリタで実行できるライブラリってありますか?

336 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 06:08:49.00 ID:t6n5brFa0.net]
>>330
https://ufcpp.net/study/csharp/cheatsheet/apscripting/

みたいな話か?

337 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:41:29.71 ID:+4zzAGlV0.net]
WinForms で質問です。
標準の Form から継承した MyForm を abstract で作りました。
この MyForm は abstract なのでデザインで開けません。
(ここまでOK)

MyForm をもとに SubForm なるものを継承して作りました。
これには abstract は付けていないのですが、これもまたデザイナで開けません。
あまりに残念すぎる挙動だと思うのですが、これは仕様でしょうか。

338 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:43:21.22 ID:+3q0UZxZ0.net]
Visual Studio .NET (2002) から続く仕様だよ

339 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:45:24.63 ID:jp7+H4+aM.net]
.NETではフォームの継承は推奨されていません
共通化したい場合はユーザーコントロールを使用してください
なお、WinFormsは既に開発が終了しており、今後改善される可能性はありません



340 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:51:36 ]
[ここ壊れてます]

341 名前:.77 ID:+4zzAGlV0.net mailto: やっぱりですか。

デザイナが使えないと不便なので、MyForm 側にabstract 付けないで、virtual 定義しているのですが
継承先で「いじり必須」なものを忘れてしまうため、本当は abstract したいのですが・・

WinForms の開発が終わったって、世の中、VS で弄られてるソースの9割は WinForms だと思うんですけどねぇ
[]
[ここ壊れてます]

342 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:57:02.56 ID:ET6qk6jL0.net]
うちは自社開発企業だがFormsはとっくの昔に淘汰された
Formsで作ってたアプリは全部WPFで作り直した

343 名前:デフォルトの名無しさん [2019/08/18(日) 14:04:52.38 ID:APnDI8yA0.net]
visualstudioを利用しているのですが最近デバッグ時にフォームアプリを動かすと
System.InvalidOperationException: '有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'hoge' がアクセスされました。'
の様なエラーが出て止まる様になりました
しかし出来たプログラムをふつうに動かす分には異常ありません
今まで作ってきた問題のなかったすべてのバージョンでこの様な現象が起こっています
これは何が原因でしょうか?

344 名前:デフォルトの名無しさん [2019/08/18(日) 14:21:30.88 ID:/RKifLkIa.net]
>>335
騙されたらあかんw

継承後のフォームもちゃんとデザイナで開けるし
コントロールを追加したりいろいろ出来るよw

フォームの継承なんて10年以上やってなかったが
今実際試して確認したから間違いない

345 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 14:29:19.80 ID:MLAzMixE0.net]
>>337
先日MSがWindowsUpdateでやらかしたのが原因で、結構話題になっているから検索すると見つかる
「windowsupdate vb」 で

346 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 15:44:26.69 ID:+4zzAGlV0.net]
>>338
「abstract な継承元から継承すると、継承先フォームがデザイナで開けない」
という意味でしたけど、こちらだと VS2019 でも叱られてしまいます。。

347 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 15:45:05.69 ID:+4zzAGlV0.net]
継承元が abstract じゃない単純なファームの継承だったら、まったく問題ありません。

348 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 17:17:03.03 ID:zvOpWkeBd.net]
>>334
終了なんかしてないよ

349 名前:デフォルトの名無しさん [2019/08/18(日) 17:55:07.39 ID:/RKifLkIa.net]
>>340
なるほど。

abstractにこだわる必要が本当にあるのかなとも思うけど、
何ならコンストラクタをprotectedにすりゃ機能的にはほぼ同じだね。
(abstractメンバーはもちろん書けないけど)

これならそういう不具合は起こらないっぽい



350 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 18:33:20.50 ID:5+yaTAKE0.net]
蕎麦とラーメン間違えるとかもう簡単ケータイにしたほうがいいんじゃね。
たぶんVPNとか使わわんだろうし。
俺もIntelだからもう日産もゴーヤチャンプルーも同じ味付けで食える。

351 名前:デフォルトの名無しさん [2019/08/18(日) 21:26:51.68 ID:37ku1J740.net]
Keyvaluepairの.Keyをnull判定したら
nullできました。

構造体だけどnull判定できましたが??
keyvalueopair本体はできないけど
KeyまたはValueはnull判定できました。

何故???まぁ良かったんですけど

352 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:29:43.77 ID:jp7+H4+aM.net]
それはKeyプロパティが返した値をnull判定しているのであり、KeyValuePairが構造体であることは全く関係ない
直行する問題の分離ができない人はプログラミング向いてないよ

353 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:32:13.83 ID:DxNAHPOT0.net]
構造体はnullにできないからKeyValuePair?使えって言ってんのに

354 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:33:54.95 ID:DxNAHPOT0.net]
言っとくけど「?」は文字化けじゃないぞw

355 名前:デフォルトの名無しさん [2019/08/18(日) 21:37:51.98 ID:37ku1J740.net]
>>346
ようはList<KeyValuePair<string,double>>

"レタス" 100
"キャベツ"120
"トマト" 120

こういうリストで、ピーマンって探すと
Keyがnullになってくれたので、良かったです。
KeyValuepairがnullじゃないのが不思議ですが
null判定できてよかった

356 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:46:55.40 ID:DxNAHPOT0.net]
構造体はnullにできないと何度も言われてるのになんで不思議に思うんだろう
ピーマンを探すときのList.FirstOrDefault()の戻り値は
KeyValuePairをデフォルトコンストラクタで初期化したものだよ

357 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:48:35.09 ID:FVnfIX0p0.net]
>>349
keyvaluepairは構造体
構造体にはnullが存在しない
構造体にnullが存在しないことと構造体の中身がどうなっているか関係ないので、中身がクラスであるならnullにもなりうる
君がやったことは構造体ではなくその中身がnullかどうかのチェックしただけ
構造体とクラスの違いが理解できないなら今後も躓くのでkeyvaluepair含め他の構造体の使用も封印したほうがマシ
まぁintだって構造体だから全部避けるなんてことは無理だけど

358 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 22:03:37.75 ID:0nN/LwEb0.net]
くどくて性格が悪そうな文章だ

359 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 23:28:35.24 ID:r1LRT6EBa.net]
listに入れるならdictionaryでいいんじゃないか…?とか話を一切聞いてなかったりとかkeyvalue君のレス見てるといらつくし
説明してあげる>>351は優しいだろ



360 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 00:48:43.25 ID:ODFt4ofXM.net]
>>349
null返ってきたのはkeyの型(string型)の初期値がnullだからなんでねか?

361 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 02:37:59.55 ID:s7+bDgX20.net]
>>327
きも

362 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 07:49:38.46 ID:2nNI8r3od.net]
>>349
ピーマン探してnullが帰ってくるのはおかしいだろ。
ピーマン探したら見つからないのが正しくないか?

363 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 08:07:23.07 ID:D7o3OMEzM.net]
ループ作ったやつ次第のような?

364 名前:デフォルトの名無しさん [2019/08/19(月) 10:35:33.11 ID:VzpEDBAc0.net]
Form1以外のクラスでlistboxに入力したいのですが
他クラスで入力する方法って望ましくないのですか?
他に方法はあるのでしょうか?

365 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 10:48:05.33 ID:Le9xiHCt0.net]
MVVMなら他クラスで用意するのが普通。

INotifyPropertyChangedとObservableCollectionでばっちりよ

366 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 10:55:08.87 ID:QArCM+jpp.net]
>>356
松茸採りに行っても見つからなかったらバスケットは空で帰って来るしか無いだろ?

367 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 10:55:52.73 ID:QArCM+jpp.net]
でもバスケットはあるから、バスケットの中の松茸の数がゼロになるんだよね?

368 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 11:52:38.83 ID:2nNI8r3od.net]
バスケットが空なのと、バスケットにnullが入ってるのは違うんじゃねえかな?
参照型は瓶と水みたいな感じで、瓶だけ持って帰ってこれても、
値型みたいな、それ単体が実体のものは言うとおり松茸みたいなもんで、取りにいってなかったら何も持って帰って来れないと思うが。

無理矢理何か持たせるのがFirstOrDefaultで、坊主だった親父がとりあえず当たり障りのないものを魚屋で買って帰るようなもんでは?

FirstOrDefaultは無かったときにnullを返すためにあるんじゃないんだから。
ちゃんとチェックしてから取ったほうがいいと思うよ。

369 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 12:00:12.26 ID:ODFt4ofXM.net]
ちゃんとチェックしてからとるならFirst()でよくね?



370 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 12:01:25.55 ID:9Ob07fGvd.net]
どうでもいい自分なりの思想を長々と書く人だね

371 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 12:07:05.62 ID:ZYeDXrpNM.net]
ILで説明してくれ

372 名前:デフォルトの名無しさん [2019/08/19(月) 13:23:05.09 ID:VzpEDBAc0.net]
>>358なんですが誰かお願いします
別クラスでテキストボックスとかいじるのって普通のやり方ではないん

373 名前:でしょうか? []
[ここ壊れてます]

374 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 13:27:26.75 ID:ERfcd1se0.net]
>>359が返してくれてるだろ

375 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 13:34:49.71 ID:eHF4rC4A0.net]
別クラスでいじるって、
class Hoge {
public void SetText(TextBox textBox, string text) { textBox.Text = text; }
}
みたいな?
コントロールを外部に渡すというのはまあ一般的ではないな

376 名前:デフォルトの名無しさん [2019/08/19(月) 13:36:41.01 ID:VzpEDBAc0.net]
>>359
返してくださったのはありがたいんですが
その3つの単語全て知らなくて、ググってみても高度すぎてわかりません
コンソールアプリケーションをフォームアプリケーションに移植しようとしているのですが
Console.Write()で出力していたものをlistBoxやtextBoxに出力したいのですが出来なくて困っております
どうかアドバイスお願いします

377 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 13:44:13.47 ID:9Ob07fGvd.net]
外部でstringの配列なりListなり作った上でそれを
ListBox.DataSourceプロパティにセットすればいいんじゃないの

378 名前:デフォルトの名無しさん [2019/08/19(月) 13:56:34.58 ID:eDOlyF+5a.net]
>>369
■ 選択肢1
FormにAddToLogみたいなメソッドを作ってConsole.WriteLineを
LogForm.AddToLog

■ 選択肢2
Console.WriteLineを、記録する文字列を通知するイベントに置き換える。
Formはそのイベントを拾ってListBoxに表示

後者を推奨
基本的にUIの参照を握らせるのは悪い手

379 名前:デフォルトの名無しさん [2019/08/19(月) 14:04:49.07 ID:VzpEDBAc0.net]
移植したいコンソールアプリ
class Program
{
static void Main(string[] args)
{
var op = new Output();
op.MainProcess(400);

Console.Read();
}
}


public class Output
{
public override int MainProcess(int count)
{
for (int col = 0; col < count; col++)
Console.Write(col);
}
}



380 名前:デフォルトの名無しさん [2019/08/19(月) 14:06:13.39 ID:VzpEDBAc0.net]
作ってみたフォームアプリ
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
var op = new Output();
op.MainProcess(400);

}

}


public class Output
{
public override int MainProcess(int count)
{
for (int col = 0; col < count; col++)
listBox1.Items.Add(col);//←ここが動かない
}
}

こんな感じです
>>371
ありがとうございます。さっそく試してみます

381 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 15:32:03.08 ID:ERfcd1se0.net]
なんでいきなりバックグラウンドワーカーが出てきてるか知らんけど、ドゥーワークは別スレッドで実行する内容を記載するところで、UIスレッドにアクセスしたらダメ→コントロールを触ったらダメ
リストボックスにアクセスしたかったらリポートプログレスもしくはコンプリートでUIスレッドにマーシャリングしてから

382 名前:デフォルトの名無しさん [2019/08/19(月) 16:32:24.93 ID:VzpEDBAc0.net]
簡略化して書いていますが凄い長い計算なので計算中でもプログラムが反応する様にbackgroundWorkerにしています
backgroundWorkerかでなくとも、他クラスからフォームをいじるということが出来なくて困っています

383 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 17:09:34.09 ID:2nNI8r3od.net]
普通にinvokeしなよ。

384 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 17:49:40.07 ID:VD+/iXFd0.net]
>>375
1.他のフォームからコントロールを操作する
https://dobon.net/vb/dotnet/form/accessanotherformdata.html
2.BackgroundWorkerからコントロール(UIスレッド)を沿操作する
https://dobon.net/vb/dotnet/programing/progressdialogbw.html またはInvoke
今の段階では1+2をやりたいんだよね

設計的なものに口だすのは良くないけど参考までに
>凄い長い計算なので計算中でもプログラムが反応する様に
ListBoxの一つのアイテムごとに時間がかかるのならMainProcessでループで一気にAddせずに
BackgroundWorkerの中で「計算実行→ReportProgressで別フォームListBoxにAdd」をループさ

385 名前:せてもいいんじゃないの []
[ここ壊れてます]

386 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 17:55:50.15 ID:V7QYb24CM.net]
>>366
ログ出したいん?
なんかプロパティのフラグ立てる必要なかったっけ?

387 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 18:04:30.50 ID:V7QYb24CM.net]
関係なかった
自分が昔出なかったのは
AppendTextしてなかったからだったw

すまんかった

388 名前:デフォルトの名無しさん [2019/08/19(月) 20:31:39.57 ID:VzpEDBAc0.net]
Invoke調べてみました。いけそうな気がしますが書き方が難しいです
上記のコードの場合どのように記述すれば良いのでしょうか?

389 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 20:43:11.70 ID:y72D5AUNp.net]
>>380
ここおススメやぞ

https://blogs.msdn.microsoft.com/nakama/2009/03/30/part-1-windows/



390 名前:デフォルトの名無しさん [2019/08/19(月) 20:46:44.95 ID:cJsYlnhia.net]
パッと見で適当だけど、formにコントロールの変更記述して、コールバック登録してtaskはしらせればいいの違うのか?invokeは当然

391 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 21:00:04.04 ID:Vps+pUHe0.net]
>>380
delegate用のメソッド作ってdelegateにセットしてinvoke
https://www.atmarkit.co.jp/ait/articles/0506/17/news111.html

392 名前:デフォルトの名無しさん [2019/08/19(月) 22:54:50.46 ID:aQCsW5pK0.net]
doubleって整数のほうに偏りがあったら
小数部分は短い精度になるんですが、これ何とかなりませんか?
doubleは精度高いから小数点第5位とか精度余裕だろwwwwwwwwwww

989〜〜〜132.1235212596  算出結果
989〜〜〜132.1235312314 正解

え???????????
ちょwwwwww

助けてください

393 名前:デフォルトの名無しさん [2019/08/19(月) 23:06:59.10 ID:eDOlyF+5a.net]
>>384
何を言ってるか人に分かるように書かないと誰も答えようがないよw

一般論として、演算誤差を累積させずに
演算可能かどうかはどういう演算をしてるかによるので、
具体的な処理が分からないと何とも言えん

394 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:27:14.16 ID:9Ob07fGvd.net]
decimal型使えば

395 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:36:21.05 ID:0KlGy2IO0.net]
>>384
浮動小数点とはそういうもの
小数点以下何桁かではなく全体で何桁か

396 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:57:36.54 ID:0eZQgVij0.net]
分数型クラスを自分で作ってとっとけ

397 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:59:07.58 ID:HKOIeNMl0.net]
Seleniumを極めよう

398 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 00:07:25.79 ID:VMXKYR4od.net]
Form1, Form2, CounterForm があります。

CounterForm にカウントを表示して、0 になったら、Form1 か Form2 のメソッドを実行するにはどうしたら良いでしょうか?

やりたいこと
5. 4. 3. 2. 1. 0 と表示 → form1.DoSomething();

CounterForm と Form1 の部分はできているのですが、
複数class間で通知する方法がよくわかりません。

399 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 00:22:58.41 ID:sL7gwS880.net]
>>390
var f1 = new Form1();
var f2 = new From2();

foreach(var i in Enumerable.Range(0, 5).Reverse())
{
 await Task.Delay(1*1000);
 if(0 == i)
  f1.DoDomething();

 // f2?
}

Form1とForm2のメソッド呼び分け条件を提示して。
あと
>複数class間で通知する方法がよくわかりません。
の意味が分からないんでもう少し詳しく



400 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 01:06:30.58 ID:yjnOK/Bv0.net]
「通知」…もし表示済みのフォームをあとからいじりたい場合、

public static class static1 {
 public static form1 form1; //スタティッククラスのフィールドを用意して、
-------------------------------------
public partial class form1 : Form {
public form1() {
 static1.form1 = this; //各自のインスタンスを各自のコンストラクタで設定しておく
-------------------------------------
public partial class CounterForm : Form {
public void hoge() {
try {
 Exception er = null;
 this.Invoke( (MethodInvoker)delegate { //デリゲートせずに外からフォームをいじるとエラーになることがある
  try {
   static1.form1.DoSomething(); //スタティッククラスのフィールドを経由すると表示済のものがいじれる
  } catch( Exception e ) { er = e; } //ちなみにデリゲート内のエラーは外側でキャッチできないので、
 } );
 if( er != null ) { throw er; } //変数を経由して外側でスローする

401 名前:デフォルトの名無しさん [2019/08/20(火) 01:15:05.72 ID:zheL5RcIa.net]
>>390
Formだろうが何だろうが、操作したい側が操作対象の参照を握れば良いだけだけど、
親子関係が成立しているとか特殊な前提がなければ、Formが別のFormの参照を
握るのはあんまり良くない。

原則論を言えばそもそもFormにUIと無関係の処理を書く時点で間違っている。

402 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 07:52:56.91 ID:yjnOK/Bv0.net]
UIと関係あるからフォームなんだろうけど…

非同期処理中にポップアップが出て、その間もメインは触れるが、終わるとメインが変更される
なんてことはよくある

書式設定的なのも別フォームから別フォームをいじるわけだし

前のいじり方を残すために、閉じても隠すだけで、同じインスタンスを再表示したい場合とか

403 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 09:26:58.30 ID:+NAZ1HN+M.net]
フォームと無関係な〜って書いてあるぞ

そんなことより全角半角がきもい

404 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 12:03:48.15 ID:NghMzgaN0.net]
対象のフレームワーク:Framework 4.0 でコンパイルした自作 DLL があります。
この DLL を 対象のフレームワーク:Framework 4.8 なプロジェクトから参照して使用したとき、
DLL の中はどっちで動くのでしょうか?

たとえば自作DLL内で、DataGridView から継承した DataGridViewEx を作ってあったとして
これを 4.8 なプロジェクトで利用したとき、DataGridViewEx 内で
4.0 の DataGridView が使われるのか、4.8 の DataGridView が使われるのか、って意味です。

405 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 12:10:21.33 ID:mC8iPjWhd.net]
自作DLL内でDataGridViewの参照を特定バージョンにしておけば4.0になるしそうじゃなければ4.8

406 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 12:17:12.47 ID:NghMzgaN0.net]
自作DLL 側の System.Windows.Forms を見たら
特定バージョン:false
になっていたので、呼ばれる側のバージョンの System.Windows.Forms.dll が使われるってことですね。

Framework 4.8 用に新たに作らないといけないかと思ったのですが、その心配ないみたいで安心しました。

407 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 00:27:12.96 ID:7whQ/iRu0.net]
あ、間違えた
× this.Invoke( (MethodInvoker)delegate {
〇 static1.form1.Invoke( (MethodInvoker)delegate {
(thisは自フォーム内のマルチスレッド部分のソースだった)

カウントダウンにマルチスレッドが必要とは限らんが
むしろモーダルだったり
でも「オブジェクトがあれば必ず「通知」できる」という方法は確立しといた方が、オブジェクト指向っぽい
クラスオブジェクト指向の前にメッセージオブジェクト指向があったので(Win32API)
メッセージ、つまり「通知」

408 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 00:57:19.98 ID:CGK7jfA0d.net]
>>392
解答どうもありがとうございます。
event かデリゲートで解決できそうです。

// Form1
private void CountDownBtn_Click(object sender, EventArgs e) {
var countdownForm = new MYCountDownForm();

// 4 3 2 1 0と表示してから、下に行きたいが、
// これだとカウント 0 を待たずにすぐ下に行く。
countdownForm.Show();

// このクラスのいろいろな処理

}

409 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 01:36:11.80 ID:7whQ/iRu0.net]
>>400
そっちかw
そっちは「モーダルフォーム」でググると出てくると思う
その方が普通に基本



410 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 16:28:36.46 ID:tih7LC2d0.net]
APIが公開されていなくてもスクレイピングして非公開websoketに接続したいのですが、
解析からトークンなど必要なheader情報取得すればできるものですか?

411 名前:デフォルトの名無しさん [2019/08/22(木) 16:50:43.33 ID:xQsiKIbM0.net]
出来るけど利用規約読め
API経由だとセーフで
API経由しないと逮捕とか書いてあるから

412 名前:デフォルトの名無しさん [2019/08/22(木) 16:57:22.84 ID:erkZnaOI0.net]
>>402
https://elaws.e-gov.go.jp/search/elawsSearch/elaws_search/lsg0500/detail?lawId=411AC0000000128

413 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 17:10:49.32 ID:NpAwFZ6qM.net]
>>404
条文ぐらい示してやれよ

414 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 17:59:59.30 ID:90PkXrDL0.net]
色んなところで迷惑なヤローだな

415 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 21:54:01.43 ID:rNXeNA230.net]
>>402
非公開だろうがクライアント側で処理してるのには変わりないんだから
お前が本当にブラウザになり切れればやれるよ

単純に能力と手間の問題だ

416 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 22:05:00.16 ID:yaxmcT7W0.net]
この質問結構前からいたるところで見る気がするんだけどただのマルチ?

417 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 23:55:52.03 ID:W1llczT4d.net]
>>400 >>401

とりあえず自力でできたのでソース抜粋 1

// Form1 呼び出し側
private void CountDownBtn_Click(object sender, EventArgs e){

var countDownForm = new MYCountDownForm(7);
countDownForm.ZeroReached += OnCounterZeroCallBack;
countDownForm.Show();
}

// コールバック
private void OnCounterZeroCallBack(Object sender, DestReachedEventArgs e){
// UI 更新
}

418 名前:デフォルトの名無しさん mailto:sage [2019/08/23(金) 00:00:27.51 ID:RwBPjFxxd.net]
ソース抜粋 2 // MYCountDownForm
private System.Windows.Forms.Timer countDownTimer;
public int timeLeft;
public delegate void ZeroReachedEventHandler(Object sender, ZeroReachedEventArgs e);
public event ZeroReachedEventHandler ZeroReached;

void Timer_Tick(object sender, EventArgs e){
if (timeLeft >= 1){
timeLabel.Text = this.timeLeft.ToString();
timeLeft--;
}
else if (this.timeLeft <= 0){
timeLabel.Text = this.timeLeft.ToString();

var args = new ZeroReachedEventArgs();
args.TimeReached = DateTime.Now;
OnDestReached(args);
this.Close();
}
} // END Timer_Tick

protected virtual void OnZeroReached(ZeroReachedEventArgs e){
var handler = ZeroReached;
if (handler != null){ handler(this, e); }
}
}

public class ZeroReachedEventArgs : EventArgs {
// コンストラクタないけどいいの?
public DateTime TimeReached { get; set; }
}

419 名前:デフォルトの名無しさん [2019/08/24(土) 00:16:35.07 ID:EZ15JXYo0.net]
アホな質問ばっかですいません
光速の計算をしたいんですが、doubleでは無理ですか?
decimalは使いません
お願いします。小数点以下が信用できません。



420 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 00:22:03.18 ID:ka7Yl/470.net]
>>411
お前さんが使おうとしている計算方法や欲しい精度とか示さんと答えられんだろうよ

421 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 01:21:02.23 ID:g8XGZa5Z0.net]
>>411

422 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 08:41:25.65 ID:VP6gB9DD0.net]
質問いいですか、クラスの処理の途中経過をTextboxのコントロールに送りたいのです
public partial class Form1 : Form
{
Class1 class1 = new Class1();
}

class Class1
{
public Class1()
{
Form1.Textbox1.AppendText("Class1を実行しています");
}
}

このようにしてもForm1のインスタンスがないから実行できません
みなさんはクラスのログなどをテキストボックスに送るとき、どう書かれてますか?

423 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 09:03:40.17 ID:BNVmeU2m0.net]
>>414
public partial class Form1 : Form
{
 public TextBox Textbox1;
 Class1 class1 = new Class1(this);
}
class Class1
{
public Class1(Form1 fm)
{
 fm.Textbox1.AppendText("Class1を実行しています");
}
}
またはFom1のなかに
public void appenttext(string st)
{
 Textbox1.AppendText(st);
}
としてClass1から呼び出す

424 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 15:23:44.45 ID:VP6gB9DD0.net]
>>415
レスさんくすです
上の方法でうまくいきました
クラスからコントロールを操作ってあまり使わない、というか推奨されてないのかな?

425 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 15:40:00.64 ID:glPHIee0p.net]
コントロールは何かを操作する為の機能なんだから、
普通はその操作する何かを直接操作するだろ?

426 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 15:45:48.43 ID:BNVmeU2m0.net]
>>416
インスタンスをどう指定していいかわからないんじゃなかったのか
親子関係にあるウィンドウでの操作はいろんなアプリで普通にあるし
C#だけにしても「C# 別のフォームのコントロール」でググればやっているところはいっぱい出てくる

427 名前:デフォルトの名無しさん [2019/08/24(土) 15:56:01.09 ID:dsz+mirUa.net]
>>416
非推奨というか、普通はやりたいと思わないね。
何かの参照を握るってことはそれに依存してしまうってことだから。

Class1は本来はForm1の参照を持つ設計にしたことで、
事実上そのプログラム専用の他で流用できないコードになってる

他で使う予定ないからそれで問題ないと思うかもしれないが(以下略

428 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 19:37:50.96 ID:VP6gB9DD0.net]
>>417
確かにコントロールというぐらいだし

>>418
さんくす、実際にやる方法もわからなかったし、教えてもらったのはわかりやすかった
考え方を標準っぽいやり方に寄せたいのです

>>419
さんくす、なるほどパーツとして完成してないですね
汎用性の低いコードは改善しないと、でも今回はこれでいきます
logの取り方考えないと

429 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 21:52:23.83 ID:PMKXSgkW0.net]
処理側に出力するだけの意味しかないデリゲートでも渡してやれば?
受け側はコントロールを操作とか意識しなくて済むけど
public partial class Form1 : Form {
 :
 Class1 class1 = new Class1((string s) => { this,Textbox1.AppendText(s); })
 ;
}

class Class1 {
 delegate void output_delegate(string s);
 output_delegate output = (string s) => { Console.WriteLine(s); }; //デフォルト出力先はコンソール
 :
 Class1(output_delegate _output) {
  output = _output;
 }
 :
}



430 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 22:59:49.50 ID:sQirZTQZ0.net]
よく答えられるな
なにをしようとしてるのかすらわからんわ

431 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 23:07:54.21 ID:VP6gB9DD0.net]
>>421
レスさんくすです
でもしかし、半分ぐらいしか理解できませんでした、スイマセン
〜解読中〜

432 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 23:11:33.91 ID:XZUr8QhOa.net]
refやout, in引数のないdelegateなら
自分で定義せずにSystem.ActionやSystem.Funcを使う手もあるよ

433 名前:デフォルトの名無しさん [2019/08/24(土) 23:15:15.44 ID:dsz+mirUa.net]
>>423
理解しなくていいよw
デリゲートを直で受け渡しなんかせず、素直にイベントの方を使いましょう。

434 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 23:54:17.30 ID:GocaxRhS0.net]
>>422
さすがにそれはお前がアホやで

435 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 23:56:09.98 ID:4OMYNXZ10.net]
使う手もあるというか余程じゃなければActionかFuncでは

436 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 00:04:50.89 ID:dkxX1jtZ0.net]
俺もActionを推す

437 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 00:26:08.77 ID:DAHO6xPV0.net]
MethodInvoker(´・ω・`)ボクも忘れないでね

438 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 06:55:23.52 ID:Jlb1UCj1M.net]
>>414
こういうのってbindingでどうにかするものじゃないの?

439 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 07:21:22.29 ID:UfI3Un4o0.net]
可変長の戻り値って実現できませんか?もしくは可変長のタプル
これを
public void hoge<T>(List<T> list, Func<T, string[]> selector) { ... }
hoge(list, listItem => new string[2] { listItem.A, listItem.B });
hoge(list, listItem => new string[3] { listItem.A, listItem.B, listItem.C });

public void hoge<T>(List<T> list, Func<T, params string[]> selector) { ... }
hoge(list, listItem => (listItem.A, listItem.B));
hoge(list, listItem => (listItem.A, listItem.B, listItem.C));
こんな風に書けたらいいのにって感じです



440 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 09:33:25.01 ID:NieUwdLz0.net]
>>424
さんくす、スマートに書けそうですね、他の人もさんくす、ただ考え中
>>425
今回はイベントで、ただデリゲート勉強するいいちゃんす
>>429
さんくす、ググったら実現したいことをピンポイントっぽい
>>430
さんくす、binding、さらにむずい、今までと違うアプローチっぽい

441 名前:デフォルトの名無しさん [2019/08/25(日) 13:39:47.35 ID:aNsJH+ura.net]
>>431
何言ってるのか理解するのに5分かかったw
ラムダ式の右辺(?)の評価方法をジェネリックの型パラメータを確定する場面で指定するとか
普通に無理筋でしょう

hoge(list, listItem => new[] { listItem.A, listItem.B });

hoge(list, listItem => (listItem.A, listItem.B));
と書けたところでたいして嬉しいと思えんけど

442 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 14:04:21.51 ID:UfI3Un4o0.net]
>>433
おお、new[]で推論してくれるの忘れてました
new[]で十分スマートですねこれで問題ないです、ありがとうございました

443 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 22:03:25.03 ID:4LqybIGY0.net]
Formのプログラムで普通に動作してたOpenFormDialogを使ってる箇所が突然フリーズしてしまいます。
一旦そうなるとWindows自体が不安定になり、他のプログラムで恐らくOpenFormDialogを使ってる所が全てフリーズしOSの再起動が必要になります。
どんな要因が考えられるでしょうか。

プログラムはかんたんなグラフィックエディタで矩形やテキストを移動したり変形する程度です

444 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 22:12:11.72 ID:hYfvTIib0.net]
OpenFormDialog? OpenFileDialogじゃなくて?
OpenFileDialogならフリーズの話はあるから検索して
騒がれたのもう結構前だからまだ残ってるともあんまり思えないけど

445 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 22:13:53.33 ID:hYfvTIib0.net]
あ、残ってるってのはフリーズするバグを残してる環境の話ね

446 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 00:35:03.80 ID:D54D8pf80.net]
>>436
OpenFileDialogでした
cymon.sysの件は見つけましたけど家のPCにはありませんでした

地道にバグを見つけます

447 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 01:40:22.77 ID:YZSrPKBs0.net]
List<Employee> のIDとList<int> の一致するEmployeeを取得したいです。

List<int>をforeach、その中でList<Employee>をFirstOrDefaultで探して
新たなList<Employee>にAddする方法はできました。

これのforeachを撲滅して簡潔に書きたいのですがいい方法はありますか?

448 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 01:54:35.76 ID:XYz1A7/c0.net]
var employees = new List<Employee>();
var ids = new List<int>();
・・・・
var hitEmployees = employees.Where(employee => ids.Where(id => id == employee.id).Any()).ToList();

449 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 05:09:56.54 ID:d+oJYvyp0.net]
employees.Join(ids, _emp => _emp.ID, _id => _id, (_emp, _id) => _emp)
joinはクエリ構文の方が読みやすいな
from emp in employees join id in ids on emp.ID equals id select emp



450 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 06:09:07.86 ID:LiZWIy1C0.net]
Find

451 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 07:20:31.54 ID:H4cvWJOz0.net]
employees.FindAll(emp => ids.Contains(emp.ID))

452 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 08:56:15.22 ID:WqA3OufOM.net]
EnumSetってEnumの値を2のベキにすればいいから存在しないの?

453 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 11:40:26.35 ID:Rhz6dR8od.net]
イベントハンドラのいなづまアイコンってどういう意味なの?
気になって開発が手につきません。

454 名前:デフォルトの名無しさん [2019/08/26(月) 12:01:50.23 ID:EHOEsFfWa.net]
地下鉄漫才かよw

455 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 16:00:24.81 ID:7fzFkpCMr.net]
execute
神がいかずちをもって手を下す

的な

456 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 22:32:00.17 ID:YZSrPKBs0.net]
>>440-443
どれもなるほど!と勉強になりました
ありがとうございます
今回はシンプルな>>443さんのでいきます!

457 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 07:54:15.38 ID:wbq0Lfqra.net]
おお、なるほど。LINQのクイズ集があれば面白そうだな。

458 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 08:59:40.07 ID:S6vHFDx3d.net]
443はlinqじゃないぞ
2.0の頃からあるListクラスのメソッドだけだ

459 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 10:18:31.48 ID:AUeyxvTx0.net]
>>450
ラムダ式が使えるようになったのはC#3.0から



460 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 11:47:29.33 ID:S6vHFDx3d.net]
>>451
そうそう。なのでデリゲート使って書く必要はあるけど

461 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 19:15:36.40 ID:4aKZbpn00.net]
次のようなことをしたいのですが、どうすればいいでしょうか。
async、awaitを使えばいいようにも思えたのですが、クラス内のループが止まらず・・・

1.ボタン押下でとある処理をするクラスのインスタンスを生成し、クラス内で処理を無限ループ
2.ボタン押下でクラス内のループを停止

462 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 19:21:08.99 ID:a3Zgv65M0.net]
>>453
ループさせているクラス内に止めるメソッド付けてボタン押したときにそれ呼び出せばいいだけでは
イベントメソッドは別のクラスでもできるから直にボタンのイベントに追加してもいいし

463 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 20:10:30.11 ID:2XS9VBdia.net]
CancellationTokenSourceを使うのが比較的妥当なやり方かな
2でボタンを押したらcancellationTokenSource.Cancel()
無限ループ側の処理では適宜cancellationToken.ThrowIfCancellationRequested()

464 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 20:56:45.60 ID:LqXN8ItS0.net]
低レベルな実装だと終了フラグの参照を渡しておくとか

465 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 21:11:30.63 ID:fYPVnhP50.net]
>>455
単純なループ処理でキャンセル例外が必要なければ
CancellationToken.IsCancellationRequestedをチェックするのでも良いね

466 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 21:12:50.98 ID:4aKZbpn00.net]
皆さん、ご回答ありがとうございます。

>>454
停止メソッドにより、ループ条件から外れるフラグを立てて
処理停止させるイメージでしょうか。

>>455
CancellationTokenSource初めて聞きました。
便利ですね!

>>456
すみません。フラグでの終了処理しか思いつきませんでした・・・
もう少しマシな実装になるとどうなるのでしょうか。
教えてもらえると助かります。

467 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 21:26:09.47 ID:4aKZbpn00.net]
>>457
そういった方法もあるのですね。ありがとうございます。

468 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 22:06:20.98 ID:GZd8Fc/Qp.net]
無限ループなんか組むな。

469 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 22:40:07.64 ID:4aKZbpn00.net]
すみません・・・
あるフォルダにファイルが保管されたときに
そのファイルを処理したくて監視に無限ループを使ってしまいました。
他に良い方法があれば、お教え願えないでしょうか。



470 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 22:43:30.90 ID:4WMOl80S0.net]
>>461
System.IO.FileSystemWatcher

471 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 22:46:14.03 ID:4WMOl80S0.net]
もしくは、win32ApiのFindFirstChangeNotification()か

472 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 22:46:46.91 ID:4aKZbpn00.net]
>>462
そんな便利なものまであるんですね!びっくりしました!
全然C#のこと知らなくて恥ずかしいです・・・
教えてくださってありがとうございました。

473 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 09:31:28.37 ID:jmHHdju80.net]
自分はC#といえば当たり前のようにWindowsFormでやってたけど
みんなは何使ってるの?

474 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 11:09:54.59 ID:xlt6w80MM.net]
>>465
特に必要なければwinform
というか、初期のブレンドが使い物にならなかったので、WPFやUWP?は必要になるまで覚えないことにした

475 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 11:18:52.44 ID:kf58t1t/0.net]
WinformからUWP APIを呼び出すことも出来るしな

476 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 12:01:00.80 ID:nq/8XfUOM.net]
WPFでやってるけど誰かにお勧めしたことはないしとてもお勧めできない

477 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 12:10:35.61 ID:biFO59Yua.net]
>>465
Winformなプロジェクトだが、XAMLでのレイアウトが好きだから自分の担当画面はWPF使ってる

478 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 12:29:45.46 ID:XsRrDAKXd.net]
>>465
ASP.NET Core

479 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 12:34:32.95 ID:in2U0t2Ud.net]
>>465
WinFormsやらWPFやらXamarin



480 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 14:05:53.46 ID:xlt6w80MM.net]
>>465
アンカーやドック追加してくれたのが嬉しすぎて、他に浮気してまで新たに覚える気にならないってのもあるかな

481 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 20:18:04.95 ID:h4zgSqGZd.net]
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

アクティブウィンドウのクライアント領域を取得するにはどうすればいいでしょうか?

上のメソッド使えば行けそうなんだけど、行き詰まってます。

482 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 20:23:25.50 ID:7/MPDbwD0.net]
C#関係ない

483 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 20:39:43.87 ID:j6ZvHlbE0.net]
>>473
それはアクティブになっているウインドウのハンドルを返すだけのもの
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getclientrect
RECTの構造体は自分で用意して上のURLではポインタが引数になっているけどC#なら
[DllImport("user32.dll")]
private static extern int GetClientRect(IntPtr hwnd, ref RECT Rect);
みたいに構造体をrefかoutで指定したらそこに戻ってくる

484 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 23:28:13.40 ID:1vTqziPj0.net]
c#楽しいね
直感ですぐGUIアプリ作れるからプログラミング覚えたいけど特に目標がないって人にはc#一択だと思う

485 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 23:50:51.61 ID:RWMmexzc0.net]
>>475
ほぼそのまんまのサンプルを見つけて問題はとりあえず解決しました。

https://ja.stackoverflow.com/questions/21328/c-processで指定した別プロセスのウインドウを-クライアント領域のみキャプチャしたい

アクティブウィンドウのクライアント領域の取得は、
c# + netframework ではできないのですか?

486 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 00:27:03.61 ID:yP1vALXb0.net]
できるよ
お前には一週間早い

487 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 01:19:09.27 ID:wYLP5dcN0.net]
次はListViewの要素の長方形を得たいとかかな
結局.netからは離れていきそう

488 名前:デフォルトの名無しさん [2019/08/29(木) 01:53:51.70 ID:KY//KYCr0.net]
TreeViewの表示を標準の
項目1
┗項目2
  ┣項目3
  ┗項目4

から、
項目1━項目2┳項目3
           ┗項目4

にするにはどうすればよいでしょうか?

489 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 01:59:31.63 ID:AZY1Uw460.net]
owner draw



490 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 02:11:15.91 ID:HoxlVuhE0.n ]
[ここ壊れてます]

491 名前:et mailto: 普通にカスタムコントロールを作った方が早そう []
[ここ壊れてます]

492 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 07:51:27.50 ID:JXiDsy0oa.net]
>>473
GetActiveWindow()って無かったっけ?

493 名前:デフォルトの名無しさん mailto:sage [2019/08/29(木) 07:52:24.70 ID:JXiDsy0oa.net]
↑ああ、早とちり

494 名前:デフォルトの名無しさん [2019/08/30(金) 21:10:43.61 ID:euEksp6k0.net]
ドラッグアンドドロップで拡張子を.txt→.jsonに変更するプログラムのコードをください

495 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 21:15:43.51 ID:a95S+czO0.net]
batでやったほうが早そうなレベルだけど
fileをrenameするだけでしょ?

496 名前:デフォルトの名無しさん [2019/08/30(金) 21:18:37.15 ID:euEksp6k0.net]
renameするだけですね
どうしてもC♯でやりたいんです

497 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 21:30:48.63 ID:m5yHWiCc0.net]
>>487
拡張子の書き換えは
System.IO.Path.ChangeExtension(filepath, extension)
ここはコードを代わりに書くスレじゃないのでキーワードはあるのだから後はググってください

498 名前:デフォルトの名無しさん [2019/08/30(金) 21:39:06.95 ID:euEksp6k0.net]
一日ググってもわからなかったので聞きに来ました

499 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:13:39.42 ID:LYP1s7Gj0.net]
誰が一日ググれば聞いていいって言ったんだよ
ひと月はググれ



500 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:15:07.21 ID:gOJh05ROp.net]
>>488
それだけじゃ変数領域にあるファイル名しかリネームされてない予感

501 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:16:45.05 ID:5knN0MFU0.net]
むしろググる以外のことをしろ
一日やったらわかったこととわからんとこぐらいあるだろ

502 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:17:38.29 ID:a95S+czO0.net]
どこがわからなかったのかくらい書いてくれないと説明できんよ
ドラッグアンドドロップの受け取り方?
拡張子の変え方?
コンソールアプリなの?デスクトップアプリなの?

503 名前:デフォルトの名無しさん [2019/08/30(金) 22:22:42.01 ID:euEksp6k0.net]
https://www.ipentec.com/document/csharp-accept-drag-and-drop-from-explorer
https://dobon.net/vb/dotnet/file/changeextension.html
ここの二つのサイトを参考にして組み合わせれないかと色々やってみたんですけどうまくいかないんですよね
それぞれ片方ずつならうまく動きます

504 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:27:14.34 ID:a95S+czO0.net]
上手く行かないとは何かを説明して
コンパイルできない?エラーが出る?例外が出る?
実はmoveできてるけど別のフォルダに作ってるとかないよね?

505 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:27:46.98 ID:Eq4lHDlT0.net]
答えが出てるから色々試そうぜ

あと1日試してやり方がわからないのなら
>>1にある
>■コードを貼る場合は↓を使いましょう。
>ideone.com/
>https://dotnetfiddle.net/
にコードを張ってここからどうやれば良いかを聞いてくれ

506 名前:デフォルトの名無しさん [2019/08/30(金) 22:47:12.10 ID:euEksp6k0.net]
ideone.com/4eJIcv
これで貼れてますか?フォームアプリケーションです。
ここの57行目のファイルのパスをドラッグアンドドロップして得たパスに変更したいんですけどうまくいかないんですよね

507 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 22:58:41.75 ID:m5yHWiCc0.net]
>>497
private void Form1_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
for (int i = 0; i < files.Length; i++)
{
string fileName = files[i];
textBox1.Text += fileName + "\r\n";
System.IO.File.Move(fileName, System.IO.Path.ChangeExtension(fileName, "bak"));
 }
}
これでいいでしょ
ボタンクリックでやりたいのならフィールドでファイルパス持たないと

508 名前:デフォルトの名無しさん [2019/08/30(金) 23:12:12.27 ID:euEksp6k0.net]
>>498
できました、ありがとうございます
こんな簡単だったんですね・・・・・・

509 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 23:59:42.45 ID:Nv4TyFgP0.net]
>>498
重箱の隅で本質とは関係ないけど、
"\r\n"はEnvironment.NewLineの方が良いな



510 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 00:15:27.52 ID:yACTwzu40.net]
テキストボックスのテキストも環境の影響受けるんか?

おれは環境によらず出力一定のほうが安心する

511 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 00:24:05.20 ID:8S6g8PTE0.net]
どちらかと言うと定義済みの定数としてだな

512 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 02:02:25.00 ID:XD/oUD8U0.net]
コンソールとGUIの改行が同じという保証なんて無いんだが

513 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 04:03:11.60 ID:5bIs7pBL0.net]
>>503
同意

514 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 08:13:13.94 ID:auI6O9iK0.net]
JSONを扱いたいのですが.NET標準機能では
JSON.NETにあるJsonPropertyのような変数名とは別の名前で
出力できるような機能は無いでしょうか?

515 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 08:26:54.85 ID:/xXRK3gd0.net]
>>505
DataContractJsonSerializer使って
[DataMember(Name="別の名前")]
とか?

516 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 08:38:53.92 ID:auI6O9iK0.net]
>>506
うぉぉぉ
できました。ありがとうございます!

517 名前:デフォルトの名無しさん [2019/08/31(土) 15:26:10.82 ID:pxkHJ9ge0.net]
クロームにURL開かせるプログラムって作れるのかな

518 名前:デフォルトの名無しさん [2019/08/31(土) 15:34:24.66 ID:pxkHJ9ge0.net]
標準ブラウザで開くのがありました

519 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 17:12:50.00 ID:3HNIz5om0.net]
引数にURLを入れて起動すればいいんじゃない?
やったことないけど



520 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 18:30:37.90 ID:OVCgKeDNa.net]
headlessでできるよー

521 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 18:34:41.41 ID:lSinYyRY0.net]
>>510
どんなブラウザでも、標準でそうなってる(べき)と思ってる。meも

522 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 20:59:16.96 ID:DOQSWUJb0.net]
start url
って叩きゃ標準ブラウザが立ち上がるでしょ
引数ってブラウザのexeパス調べてそこに渡すの?
OSが知ってんだからOSにぶん投げればいいだけじゃん

523 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 22:02:09.86 ID:3KJgwSNk0.net]
>>508
Seleniumだな、それこそ。

524 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 13:12:29.24 ID:x5YZ9uix0.net]
Span<T>をコレクションに貯める事って出来ないんでしょうか?
受け取ったbyte[]から一部のみを必要としていますが、startIndexとlengthを一々記録するのも面倒であるため、現状は新たにnew byte[length]を作りコピーをして貯めています
別にこれでも全く困っていませんが、あんまりスマートではない気がしているので元のbyte[]を.AsSpan(startIndex, length)したものをコレクションに貯められればスッキリするのですが

525 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 13:30:51.46 ID:DTXhuRLF0.net]
できないよ
array[3..7]とかでSliceするとか元の配列を使うならArraySegment<T>使うとか

526 名前:デフォルトの名無しさん [2019/09/02(月) 14:07:32.18 ID:/BuOMso5a.net]
へーSpanってそんな制約があるのか知らんかった
https://stackoverflow.com/questions/52484998/the-type-spanchar-may-not-be-used-as-a-type-argument

527 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 14:41:25.59 ID:ZSYwkq3t0.net]
>>508
例えば、Ruby, Selenium Webdriver なら、

下のファイルを、test.rb とすると、端末で、
ruby test.rb "ここにURL"
と入力すると、引数がARGV[0] に入ってくる

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new

options.add_argument('--headless')
options.add_argument('--disable-gpu')

driver = Selenium::WebDriver.for :chrome, options: options

driver.navigate.to ARGV[0] # URL

528 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 17:47:47.05 ID:btOIY8sya.net]
>>515
MemoryExtensions.AsMemory()を経由してSystem.Memory<T>を管理するのはどう?

529 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 22:24:59.33 ID:yMcQzedZ0.net]
>>518
C#で書かないならスレチ



530 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 00:14:45.15 ID:nBDYMOwL0.net]
なんで突然ruby?

531 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 00:20:55.08 ID:UWVASv0T0.net]
>>521
ソイツはいくつかのスレタイにRuby禁止といれることになった元凶だから、考えるだけ無駄よ

532 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 04:53:21.49 ID:uBbuO65f0.net]
これもう半分まつもとゆきひろだろ

533 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 07:44:05.39 ID:ZfMnDhcZ0.net]
Matzから分離した闇の半身か何か(ダークファンタジー感)

534 名前:デフォルトの名無しさん [2019/09/03(火) 15:02:01.60 ID:qa0OGce90.net]
zipファイルのパスワード総当たりのコードってどこかに落ちてたりしません?

535 名前:デフォルトの名無しさん [2019/09/03(火) 15:23:56.69 ID:gWEsYspAF.net]
ム板なんだし自分で書いても大した手間じゃないだろ

536 名前:デフォルトの名無しさん mailto:sage [2019/09/04(水) 23:01:10.22 ID:YAGCYgl00.net]
ラプラス使ったほうが早い

537 名前:デフォルトの名無しさん mailto:sage [2019/09/04(水) 23:19:14.03 ID:+3gE1skmF.net]
ラプラス変換関係ないだろ

538 名前:デフォルトの名無しさん mailto:sage [2019/09/04(水) 23:23:33.02 ID:YAGCYgl00.net]
フリーソフトなんだけど(´・ω・`)

539 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 08:24:49.80 ID:cdpeKhxuM.net]
ラブプラスに見えたし



540 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:39:28.85 ID:mWzCSlDu0.net]
頭がc
胴体がDelphi
尻尾がJava

これはなんという生き物か?

541 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:52:58.36 ID:IuZ8kmLDd.net]
メインフォームと5つボタンがあるサブフォームあります。

サブフォームで押されたボタンをメインフォームに渡す方法として、下記のようなことが書いてあります。

「サブフォームの呼び出し時にメインフォームのインスタンスをサブフォームの変数に渡すか、もしくは Ownerプロパティを設定し、サブフォームにメインフォームのインスタンスを伝える必要があります。」

これ循環参照にならないのですか?
owner プロパティならフレームワークでうまくやってくれそうですが、そうしないなら典型的な循環参照でメモリにいつまでも残るように見えます。

542 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:57:57.83 ID:IuZ8kmLDd.net]
>532のコードで気になった部分

public FormMain() {
InitializeComponent();
fs = new FormSub();
fs.formMain = this;
}

private void button1_Click(object sender, EventArgs e) {
fs.Show();
}

543 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 13:07:57.99 ID:/TG+lkXnd.net]
昔のVBとかじゃないから
参照カウント方式とかじゃないから
大丈夫だよ

544 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 15:05:44.19 ID:olW2Z8c3M.net]
>>533
循環になってないやん
相互参照になってるだけ

545 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 15:11:39.37 ID:MYIgyYNAM.net]
>>535
相互参照⊂循環参照

546 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 07:39:44.27 ID:ON7V4Cum0.net]
awaitの仕組みって面白いな
プログラムは逐次実行と思い込んでいたから最初戸惑ったけど
プログラムの可読性を上げつつ非同期が書ける仕組み

547 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:21:39.70 ID:5uKlWCRxp.net]
バカ、逆に非同期の仕組みが分かりにくい事になってて最悪だわ。
若い奴らはある種のおまじないとしか思って無いぞ。
だからサンプル通りに書いたら動いたで思考停止してるわ。

548 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:23:25.42 ID:5uKlWCRxp.net]
だったら最初から完全に隠蔽しちまえばいいのにそれも出来ない半端な言語だよな。

549 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:27:55.87 ID:RjtqJRZu0.net]
>>537
async/awaitはとてもいいよな



550 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:36:51.77 ID:dfZG2SkRd.net]
>>539
へー半端な言語が大増殖してるねよかったね

551 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:29:27.52 ID:TB1/9ae/0.net]
ものすごく細かく気にする価値のないであろう上で質問させてください。
下記のようなコードではColorを予め変数として保持していますが、ColorではなくSolidColorBrushごと変数として持っておいた方が良いと思うのですが違うんでしょうか?(Colorの各変数は下記のConvertメソッドでしか使われていません)

private Color redColor = Colors.Red;
private Color blueColor = Colors.Blue;

public object Convert(object value)
{
switch ((int)value)
{
case 0:
return new SolidColorBrush(redColor);
default:
return new SolidColorBrush(blueColor);
}
}

552 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:30:16.71 ID:I5nGSvp60.net]
Occam 呼んだ〜

553 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:38:31.81 ID:qBxw88Xh0.net]
Convert呼び出した側がOpacityとか勝手に変えたりすることがないことが明らかなら
SolidColorBrushで持っててもいいよ

554 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:43:03.96 ID:TB1/9ae/0.net]
>>544
上記のコードは色以外は初期化したいっていう意図だったんですね
理解出来ました、どうもありがとうございます。

555 名前:デフォルトの名無しさん [2019/09/06(金) 20:41:34.27 ID:QErA9RfTd.net]
return HttpResponseMessage {
StatusCode=HttpStatusCode.InternalServerError


これでクライアントにレスポンス返しても、クライアントで受け取ったレスポンスコードが200になるんだが、どうすりゃ良い?

556 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 23:59:27.95 ID:2XeZAy8C0.net]
short lo = 500;
short hi = -1;
int value = hi << 16 & lo;

上記のプログラムでvalueに期待する結果が格納されません。
valueの右辺へおかしいところありますか?

557 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 00:04:12.02 ID:1iyY1sdc0.net]
まず期待結果を教えろよ
脳内に格納したままで喋るな

558 名前:デフォルトの名無しさん [2019/09/07(土) 00:35:07.80 ID:lng4b11Wa.net]
ぶっ飛んでるねw

559 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 00:47:49.03 ID:lKqYze8d0.net]
>>547
なんとなく&(and)と|(or)を間違えてる気がするけど、期待値書いてくれなきゃ分からんねw



560 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:10:23.93 ID:ClfuNVBY0.net]
>>547
ビット演算?をしてる割には
unsignedじゃないのが気になった

561 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:21:40.06 ID:SOW3zbb30.net]
C派生のシフト演算子ってビット演算子よりも優先順位低いんじゃなかったか?
C#で入れ替わったのかもしれんが

562 名前:デフォルトの名無しさん [2019/09/07(土) 01:30:36.24 ID:spGdC07na.net]
型変換か?

563 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:31:47.20 ID:l9Sxm6Vo0.net]
>>552
docsに演算子の一覧と優先順位がある
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/

564 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:52:37.97 ID:lKqYze8d0.net]
>>552
逆だぞ
Cの時から

565 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:57:56.73 ID:7Z6eBjmW0.net]
?はもっと上げてほしい

566 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:58:53.26 ID:7Z6eBjmW0.net]
じゃなくて??

567 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 11:12:31.90 ID:53qID/ifa.net]
async/await、読みやすいし書きやすいけどな。

568 名前:デフォルトの名無しさん [2019/09/07(土) 11:14:11.92 ID:LlCffhcK0.net]
https://www.youtube.com/watch?v=O8ucIQA829w
Introduction into StockSharp training course

どうこれVisual Studioってこんなに速く作れるの?
自分で自動売買ソフト組めるってすごくね?

569 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 13:42:14.17 ID:mFi2C/Ml0.net]
クラスの継承について分からくなってしまったので教えて下さい。
以下のプログラムを実行すると、コメントの通り、False, True と表示されます。

[STAThread]
static void Main(string[] args)
{
  var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
  var folderItems = new Shell32.Shell().NameSpace(desktopPath).Items();
  Console.WriteLine(folderItems is Shell32.FolderItems2); // False と表示される
  Console.WriteLine(folderItems is Shell32.FolderItems3); // True と表示される
}

Shell32.FolderItems3 は Shell32.FolderItems2 を継承しているので
2つ目が True なら必ず1つ目も True になると思っていたのですが、
これはどのようなことが起こっているのでしょうか。

FolderItems2 object
https://docs.microsoft.com/ja-jp/windows/win32/shell/folderitems2-object

FolderItems3 object
https://docs.microsoft.com/ja-jp/windows/win32/shell/folderitems3-object

.Net Framework 4.7.2 でコンパイルし、Windows 10 Pro で実行しました。
よろしくお願いいたします。



570 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 13:57:18.69 ID:+ClizqJ4d.net]
下記 は子フォームから親フォームへのデータ引き渡しのサンプルです。
ShowDialog(); の戻り値を使ってないのですが、ここがよくわかりません。

static public List<object> ShowForm2(List<object> argObjs) {
using (Form2 subForm = new Form2(argObjs)) {
subForm.ShowDialog(); // 戻り値は?
return subForm.resultObjs;
}
}

現在はデータの受け渡しは ShowDialog(); で表示、DialogResult を受け取り、これで処理を分岐。
これだと呼び出し側が少し膨らむと思って探していたサンプルが上のやつです。

571 名前:デフォルトの名無しさん [2019/09/09(月) 14:01:51.48 ID:FLVXg6p/0.net]
>>560
type of

572 名前: []
[ここ壊れてます]

573 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 14:25:45.50 ID:wj5pBZXU0.net]
>>561
それだけじゃ何とも言えないけど
ダイアログがキャンセルされたかどうかもresultObjsに含んでる
またはキャンセルされたかどうかは重要ではない
のどっちかでDialogResultは不要と考えたんじゃね
あとはただのチェック忘れか

574 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 14:33:19.47 ID:+8Zg4WGY0.net]
showdialogはあくまでサブフォーム表示中に
処理を進めないためだけに使っていて
表示したサブフォームがOKもキャンセルもない作りなら
返り値を使う必要がないんだろう

例えばファイルの検索処理とその経過を表示するだけの
サブフォームだったりするんじゃないかな

575 名前:デフォルトの名無しさん [2019/09/09(月) 14:44:41.43 ID:y33/yVcMa.net]
>>560
FolderItems2とかFolderItems3はあくまでVSによって作られた
ラッパークラスなんだと思うけど、たぶんこのラッパークラスには
元のCOMの継承関係は反映されないんだろう。

知らないけど。

576 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 14:54:29.42 ID:mFi2C/Ml0.net]
>>562
レスどうもありがとうございます。
申し訳ないですが、おっしゃりたいことが理解できませんでした。

>>565
レスどうもありがとうございます。
>>560 で貼り付けた URL は不適切で、
本来は以下の URL を貼り付けるべきでした。
申し訳ないです。

FolderItems2 Interface
https://docs.microsoft.com/en-us/dotnet/api/shell32.folderitems2

FolderItems3 Interface
https://docs.microsoft.com/en-us/dotnet/api/shell32.folderitems3

この .Net の説明を見てもやはり継承関係はあるようですし、

if (folderItems is Shell32.FolderItems3 folderItems3)
{
  Shell32.FolderItems2 folderItems2 = folderItems3;
}

のようなコードもコンパイルエラーにならないので、
継承関係があることは間違いないと思います。
また何かお分かりのことがあれば教えていただけると嬉しく思います。
よろしくお願いいたします。

577 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 15:06:55.45 ID:wj5pBZXU0.net]
COMにおける継承はメンバを引き継ぐという意味であってキャスト可能かどうかは別の話だから
.NETのコード上で明示的または暗黙的にCOMオブジェクト(のラッパ)をキャストした場合
QueryInterfaceが呼び出されてそのインターフェイスに変換できるかどうかオブジェクト自身に問い合わせる
だから共通型システム的には問題ない暗黙的キャストでもその下のQueryInterfaceで拒否される可能性がある

578 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:12:21.94 ID:ko6k1+RqM.net]
正規表現を教えてください。
先頭一文字は大文字アルファベット、
次の一文字は大文字アルファベットかスペース、
残り五文字が数字、です。
文字数は多すぎても少なすぎてもダメてす。

579 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:34:55.30 ID:N7SL81rE0.net]
[A-Z][A-Z\s]\d{5}



580 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:51:19.13 ID:P/8qmdeQ0.net]
C#でdxfファイルを読み込んでどんなCADデータかなと表示するにはどんな方法がありますか?

581 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:51:40.30 ID:+ClizqJ4d.net]
>>563
戻り値使わないとエラーでビルドできないと思ったんですが、こんな書き方あるんですね。

582 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:58:03.26 ID:ko6k1+RqM.net]
>>569
ありがとうございます!
できました!!

583 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:58:22.06 ID:8qRxx3SUa.net]
>>570
Autodeskのサイトからviewerが落とせたと思うがそれ使うんじゃダメなのか?
C#を使って何か独自のことがしたいの?

584 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 20:38:09.86 ID:/GXaCKPOd.net]
>>570
自力でレンダリングしてるらしきサンプル見つけた
https://www.codeproject.com/Articles/156522/DXF-Import-NET-Read-and-View-AutoCAD-Format-Files

585 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 21:02:37.25 ID:gB0pdJ5j0.net]
>>570
結構大変。DWGならlibreDWGってライブラリーがある

586 名前:デフォルトの名無しさん mailto:sage [2019/09/10(火) 22:30:01.75 ID:/j9k/Fivd.net]
>>573
最終型は建築のキープランってものがあって、そこに無数の符号という記号が丸の中に書いてあるんだけどそこを色塗りをしたい。

>>574
ありがとうございます。
難解過ぎてゆっくり休みの日にでも読んでみます。

>>575
やっぱ大変そうですよね。調べてもなかなか...


C#スレはあったかいな。ありがとうございます!

587 名前:デフォルトの名無しさん mailto:sage [2019/09/11(水) 00:00:22.11 ID:1SzE9pLa0.net]
一般人「ウィンドウ」
キモオタ「フォームがーーー」

588 名前:デフォルトの名無しさん [2019/09/11(水) 18:58:32.68 ID:YXyi8nZ+0.net]
フォームってなに?泡?

589 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 08:36:47.62 ID:XbTCqLqm0.net]
c#は食わず嫌いだったけど使ってみたら案外良かった
使いやすいように改良してるんだな



590 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:25:52.65 ID:QIiZhm2T0.net]
コントロールのタイマーの質問なんですが
private void Timer1_Tick(object sender, EventArgs e)
{
  MyClass myClass = new MyClass(this);

  myClass.//クラスの処理いろいろ

}
こう書くと毎回クラスが初期化されてしまいます
タイマー内で同じクラスのインスタンスを使い続けたい場合どのように書けばいいのでしょか?

591 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:31:00.31 ID:AZGZd9Ny0.net]
myClassをメンバ変数にする

592 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:40:42.95 ID:2zGYYD27p.net]
myClassなんて再利用性が皆無なネーミングすんなよ。

593 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:45:28.48 ID:joMf8nOja.net]
>>582
説明のための命名だろうよ

594 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 12:10:59.94 ID:V+BKjeIEM.net]
発達はコンテキストが想像できないから…

595 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 13:44:13.80 ID:j3ZoG8EK0.net]
>>582
aho

596 名前:デフォルトの名無しさん [2019/09/12(木) 14:02:29.31 ID:0aQt/zFJa.net]
>>580
タイマーのイベントハンドラを消して、適当なタイミング(例えばFormのLoadイベントとか)で
private void Form1_Load(object sender, EventArgs e)
{
var count = 0;
timer1.Tick += (snd, ea) =>
{
Console.WriteLine($"count = {count++}");
};
}

でもこれだとイベントの購読解除ができないので注意
っていうか、ジョークだから真に受けないでw

597 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 20:25:20.03 ID:QIiZhm2T0.net]
>>581
レスサンクス、そもそも宣言しないってことですか
それもアリかも、今回はインスタンス1個で済みそうだし

>>586
レスサンクス、むむむ、どうなるん?

>>582
めっちゃわかりやすいし

598 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 14:33:13.49 ID:FohQxIv6d.net]
>>587
コンストラクタかTickイベント(初回のみ)でTimerのTagプロパティにMyClassインスタンスを設定
senderからTagに設定されているインスタンスを取得して利用するってやり方もある

1タイマー1MyClassって感じの設計ならこっちの方がいいかもね

599 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 16:09:57.39 ID:GqasltTgM.net]
再利用性のないクラスの名前に拘り過ぎるのは
効率的に無駄だなと感じる

ライブラリ用のクラスは拘るけどね



600 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:07:26.51 ID:zz4VRjti0.net]
>>588
レスサンクス
だけど考えても理解できませんでした

601 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:17:29.19 ID:GqasltTgM.net]
これでいいじゃない

private MyClass myClass = new MyClass(this);

private void Timer1_Tick(object sender, EventArgs e)
{

  myClass.//クラスの処理いろいろ

}

602 名前:デフォルトの名無しさん [2019/09/13(金) 17:23:20.15 ID:65eTAicb0.net]
マイコラスの嫁がかわいい

603 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:47:41.70 ID:FohQxIv6d.net]
>>590
コンストラクタで、
Timer1.Tag = new MyClass(this);

イベントで
var myClass = ((Timer)sender).Tag as MyClass;

コンストラクタで作ったインスタンスがTimer1のイベントで使えるようになる
これで理解出来そう?

604 名前:デフォルトの名無しさん [2019/09/13(金) 17:49:44.94 ID:XXPMNkq8a.net]
>>590
たぶんこう
var mc = (timer1.Tag ?? (timer1.Tag = new MyClass())) as MyClass;

でもこんなアホなことやったらあかんw

605 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:59:46.24 ID:FohQxIv6d.net]
捕捉でsenderの扱いに馴染みがなくて分かりずらいなら
var myClass = Timer1.Tag as MyClass;
って直接コントロールを見てもいいかな

10個のタイマーでそれぞれクラス作るとかだと、メンバに持つのが嫌になるからそういう時に便利

606 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 21:09:16.91 ID:zz4VRjti0.net]
>>591
サンクスです、やってみました
//キーワード 'this' は現在のコンテキストでは使用できません。
thisがなければいけるのですが、

>>593
サンクスです、コンストラクタってMyClassでしょか?
Timer1.Tag = new MyClass(this);  //thisが受け付けてもらえません
仕方ないのでButton1_Clickに置きました
var myClass = ((Timer)sender).Tag as MyClass;  //myClassがNullになります
var myClass = Timer1.Tag as MyClass;   //こっちもNullになります

>>594
サンクスです、うまく動きました
でも正直あまり理解できてません

注:理解するのに時間がかかります

607 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 21:48:16.79 ID:PFGdVlPv0.net]
windows form で背景色を白から青にジョジョにアニメーションで変化させるには?
今のところコードは下記です。

void timer_Tick(object sender, EventArgs e){
// 白 255,255,255 // 黒 0,0,0
var a = textBox1.BackColor.A;
var r = textBox1.BackColor.R;
var g = textBox1.BackColor.G;
var b = textBox1.BackColor.B;

if (a == 255) { a = 1; }
var a = a + 25;
if (a >= 255) { a = 255; }

var r = textBox1.BackColor.R - 25;
if ( r <= 0) { r = 0; }

var g = textBox1.BackColor.G - 25;
if ( g <= 0 ) { g = 0; }

var b = textBox1.BackColor.B + 25;
if (textBox1.BackColor.B >= 255) { b = 255; }

textBox1.BackColor = Color.FromArgb(a, r, g, b);

// 終了条件チェック、
// 終了処理
}

608 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 22:11:07.86 ID:YdWi/cYta.net]
>>597
int counter = 0;
void timer_Tick(object sender, EventArgs e)
{
counter++;
counter %= 256;
textBox1.BackColor = Color.FromArgb(255 - counter, 255 - counter, 255);
}

609 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 22:12:15.08 ID:Gf0j4OgCd.net]
>>596
>>580 でMyClassにthis を渡しているから皆thisを渡してインスタンスを作ってんだけどthisいらないの?
いらないならthisは消していいよ



610 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 22:27:35.64 ID:zz4VRjti0.net]
>>599
いやthisは欲しいです、Class内からtextboxコントロールのメソッド触りたいので
form1渡してます

611 名前:デフォルトの名無しさん [2019/09/13(金) 23:44:37.81 ID:aO4dryeFa.net]
>>597
やってみた
public partial class Form1 : Form
{
  private Stopwatch mStopwatch = new Stopwatch();

  public Form1()
  {
    InitializeComponent();
  }

  private Color BlendColor(Color a, Color b, double pos)
  {
    Func<int, int, int> blend = (i, j) =>
    {
      var x = Math.Round((1 - pos) * i + pos * j, 0);
      return Math.Min(255, (int)x);
    };

    var A = blend(a.A, b.A);
    var R = blend(a.R, b.R);
    var G = blend(a.G, b.G);
    var B = blend(a.B, b.B);
    return Color.FromArgb(A, R, G, B);
  }

612 名前:デフォルトの名無しさん [2019/09/13(金) 23:44:54.82 ID:aO4dryeFa.net]
  private void button1_Click(object sender, EventArgs e)
  {
    mStopwatch.Restart();
  }

  private void timer1_Tick(object sender, EventArgs e)
  {
    var timeout = 5d;
    var elapse = Math.Min(timeout, mStopwatch.ElapsedMilliseconds / 1000d);
    var pos = elapse / timeout;
    BackColor = BlendColor(Color.White, Color.Blue, pos);
  }
}

613 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 02:16:18.45 ID:BYSNLn3J0.net]
>>600
コンストラクタやフィールドだとthisって使えないんだっけ?
それならこれでいけるかな
Tagの方も同じ感じでいけるはず

private MyClass myClass;

private void Timer1_Tick(object sender, EventArgs e)
{
if(myClass = null)
{myClass = new MyClass(this);}

myClass.//クラスの処理いろいろ
}

614 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 09:11:10.12 ID:weYOKlpc0.net]
>>603
れすさんくすです
なるほど宣言と初期化をわけるのですね、うまく動きました

615 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 11:56:47.95 ID:vC+cN/7F0.net]
Action<T>は値型という解釈で良いのでしょうか?
var dic = new Dictionary<int, Action<float>>()という辞書に保持されているActionのメソッドを引いたり足したりしたいのですが、
下記のようにするとdicのvalueには反映されないようですが再度dicに追加してアップデートしないといけないということでしょうか?
var action = dic[1];
action += method; // action.GetInvocationList().Lengthを調べるとちゃんと足されてる一方、dic[1].GetInvocationList().Lengthは変化なし

616 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 12:17:37.64 ID:iAxlaW7xa.net]
デリゲートは参照型
action += method は文字通り action = action + method であり、結合後の新しいインスタンスが action に代入される
デリゲート同士の + は String と同様に言語仕様によって特別扱いされており、Delegate.Combine メソッドの呼び出しに変換される
ちなみにイベントに対する += は x.ev = x.ev + method ではなくプロパティと同様にxに対する特殊なメソッド呼び出しになる
作法的な話をすると、デリゲートのマルチキャストは歴史的経緯による遺物であり、イベントハンドラ以外には基本的に使わない方がいいよ

617 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 12:37:52.80 ID:vC+cN/7F0.net]
なるほど、action += methodは、action = new Action(action + method)的な形ということだったんですね
ありがとうございます

618 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 14:06:14.47 ID:nQc/7xFt0.net]
Windows form だとちょっとした色変えるだけのエフェクト書くの大変。

iPhone swift だと 下記みたいな 2行 でかけるのに。
UIView.animate(withDuration: 0.5, delay: 0.0, options:[]
, animations: { TextField.backgroundColor = .blue }
, completion : { _ in TextField.backgroundColor = .white } )

Form のクラスメソッドに色、透明度、位置、回転、大きさとかを変化させるアニメーション系のメソッド追加してほしいね。

619 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 16:27:56.54 ID:y7dkXYFS0.net]
>>608
そういう人はWPF使う方がええよ
mvvmにこだわらなければそんな差ないし



620 名前:デフォルトの名無しさん [2019/09/15(日) 11:17:21.32 ID:ZbgEJrYza.net]
今でも業務系のASPって、MVCよりWeb formsのほうが多い?

621 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 11:21:19.74 ID:0P7zcb1/0.net]
>>610
多いと言うか更改されずに腫れ物システムとして生き残ってるのが多いよ

622 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 11:23:22.76 ID:qUTb/lfg0.net]
>>610
ASPとASP.NETは違うよ

623 名前:デフォルトの名無しさん [2019/09/15(日) 14:39:22.86 ID:CYqvBFjrF.net]
ASP: Application Service Provider

624 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 17:44:41.18 ID:DjqXGTBC0.net]
>>612
aho

625 名前:デフォルトの名無しさん [2019/09/15(日) 17:46:02.32 ID:tc+PQ4bB0.net]
アスペルガー

626 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 18:48:25.55 ID:qUTb/lfg0.net]
>>614
お前がな

627 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 19:36:43.99 ID:50f2l1H40.net]
application hosting options

628 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 20:38:22.87 ID:IMDj4f3rd.net]
>>612
アプリケーションサービスプロバイダ(英語: Application Service Provider、ASP)とは、
アプリケーションソフト等のサービス(機能)をネットワーク経由で提供するプロバイダ(= provide 提供する 事業者・人・仕組み 等全般)のこと[1]。

広義にはこうした仕組みのソフトウェア提供形態やビジネスモデルまでも指す[1]。
https://ja.m.wikipedia.org/wiki/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%83%97%E3%83%AD%E3%83%90%E3%82%A4%E3%83%80

629 名前:デフォルトの名無しさん [2019/09/15(日) 22:04:55.99 ID:ZbgEJrYza.net]
>>610です
>>612
ごめんなさい。自分が端折ってしまったのがいけませんでした。ASP.NETです
>>611
やはりそんな感じなんですかね。意外とASP.NET関連の求人が多いので保守メインなのか開発メインなのか気になったもので



630 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 22:31:35.04 ID:007yvQzV0.net]
ACTIVE SELF PROTECTION の求人だったりして
https://activeselfprotection.com/

631 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 01:27:46.19 ID:2BSu07WM0.net]
Bitmapを返すdllがあります(C#で作成)
それをWinFormsで参照し、Bitmapを受け取りたいのですが、空の?Bitmapが返ってきます。
デバッガでdll側がきちんとBitmapをreturnしているところまでは確認できました。
ほかにどごを見直せばいいでしょうか

632 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 01:45:47.54 ID:2BSu07WM0.net]
>>621
dll側をよく確認したところ、記述ミスがありました。
スレ汚ししてしまってすみません。

633 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 10:01:49.86 ID:z/LnXMaR0.net]
Process.Start()
で既に起動済みの外部コンソールアプリにコマンドを渡して結果を受け取りたいんですけど
どうすればいいですか?

634 名前:デフォルトの名無しさん [2019/09/16(月) 10:55:23.20 ID:1SVMjj7z0.net]
>>623
起動時に繋いどかないと後からは無理
cammy.co.jp/technical/2017/05/16/c-%e6%a8%99%e6%ba%96%e5%87%ba%e5%8a%9b%e3%82%92%e8%87%aa%e5%88%86%e3%81%ae%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0%e3%81%ab%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%99/

635 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 11:17:36.58 ID:TvwShLRF0.net]
>>623
processをどう作ったか書かないと

636 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 12:31:59.14 ID:z/LnXMaR0.net]
>>625
普通にこんな感じです

Process prc=new Process();
ProcessStartInfo psInfo = new ProcessStartInfo();

psInfo.FileName = "hoge.exe";
psInfo.CreateNoWindow = true;
psInfo.UseShellExecute = false;

prc.StartInfo = psInfo;
prc.Start();

コンソールアプリはすぐに終了せずに待機してくれるタイプです

637 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 12:42:54.00 ID:yFJZVYWt0.net]
>>626
自分でプロセスを起動してるなら入出力をリダイレクトするだけ
psInfo.RedirectStandardOutput = true
psInfo.RedirectStandardInput = true;

起動後は
proc.StandardInput.WriteLine("hoge");
proc.StandardOutput.ReadToEnd();
proc.WaitForExit();

638 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:45:14.27 ID:4wOD4j6P0.net]
ポリモーフィズムに関しての質問なんですけど
よくある例えでdogクラスのオブジェクトもcatクラスのオブジェクトもまとめてanimalクラスの配列で扱えるみたいなのあるじゃないですか
でも例えばこの時catクラスでだけ定義されてるフィールドがあったとして、配列に格納した途端アクセスできなくなっちゃいませんか
privateとかpublicは置いといて、たとえば、bool isPrettyとか定義されてたとして、animals[0].isprettyは無理じゃないですか。親クラスから子クラスで独自に定義されてるもんは触れられないですよね
とりあえずまとめて親クラスで持っておいて使う時になったら子クラスの情報使いたいみたいなときなんかうまくやる方法ってないもんですかね。

639 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:49:22.91 ID:6boldAmf0.net]
C#的にはパターンマッチングで分岐すればそれは可能だが
親クラスが持っていない情報を子クラスが持っている時点でそのクラス設計は疑わしい
その例ならanimalクラスにvirtual bool IsPrettyを持たせるべき



640 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:50:41.39 ID:fvAMDErgd.net]
そもそも使うものをまとめておくのが親クラスというかインターフェースや抽象クラスの役目なので、持ってるかどうかもわからないisprettyを使いたいのが間違ってる。無理やりやるんならリフレクションで存在確認するしかないよ

641 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:51:12.83 ID:6boldAmf0.net]
親クラスが持っていない情報というのは言い過ぎだな
親クラスが持っていないpublicプロパティを子クラスが持っているのは怪しい設計

642 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:54:14.01 ID:fvAMDErgd.net]
例えばヒゲのプロパティは猫しか持ってないと思うけど、そういう場合は is か as で具象クラスの型を確認してキャストして取ることは出来るけど、それはなんか気持ち悪い気がする

643 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 19:11:59.16 ID:6boldAmf0.net]
全動物のうち猫しかヒゲを持ってないわけじゃあるまいし
Animal型にNullable型のヒゲプロパティを持たせてそれがnullかどうかで処理を分岐させればいいだけでは

Animalクラスがヒゲを持ってるのは唐突過ぎると思うならFaceプロパティでも挟めばいい

644 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 19:13:48.81 ID:189yfApBd.net]
>>628
親クラスを無駄なメンバーで膨らませるのはバッドパターン。
インターフェイスを使うべき。

IPrety InterFace を付けたなんらかの型のリストをループすればいい。

// IPrety InterFace で拡張した型ならなんでもループで回せる。
if myUnit.isPrety == true {
myUnit.doSomething();
}

645 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 20:02:19.06 ID:5qQz1pKl0.net]
>>628
ダウンキャストしなされ
as クラス名;でよろし

646 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 20:15:43.47 ID:4wOD4j6P0.net]
色々勉強になりました
こう共通のメソッドとフィールドがあるからくくりだして親にしようくらいの気持ちだったんですけどぐぐったらそういうのそもそもダメらしいですね
素直に各クラスで同じフィールド定義して継承関係全部なくそうと思います。

647 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 20:16:03.96 ID:mLXav9Fo0.net]
まあそれだったらanimalに純粋仮想メソッド作ってCatにだけ必要な処理書くほうがいいって考えはわかる

648 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 20:45:51.61 ID:gcZDzsnLa.net]
>>631
えー、そうなんか
それけっこう使ってるなぁ、、、

649 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 21:13:37.27 ID:XDhMjXUv0.net]
.NET Framework の Object クラスを全否定してるじゃんw



650 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 21:14:22.17 ID:D+I+Wj20M.net]
親クラスが持ってないプロパティを子クラスが持ってるって
.Netですらわんさかあるじゃないの

651 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 21:15:50.88 ID:D+I+Wj20M.net]
あ、かぶった
機能を追加するために継承して関数やプロパティを増やすのが
ごく普通の設計じゃね
子クラスの全プロパティを親が網羅してたら使いにくいわ

652 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 21:42:46.98 ID:hXcOzvgxa.net]
機能を追加するための継承は現代的なOOPではあまり積極的には行われないんだよ
現代的なOOPにおいては実装継承は本質的に悪であるとされ、明確なメリットがある場合を除いて基本的に避けるんだよ
端的に言えば、抽象クラスを定義して、明確に拡張ポイントとして用意されたメソッドのみをオーバーライドする、
という使い方が今時の唯一の実装継承の使い方であると理解しておけばマサカリを食らうことはない
機能を追加したいだけなら継承する必要は全くなくて、ただそれぞれのクラスを別個に使うか、包含すりゃいいだけだ

653 名前:デフォルトの名無しさん [2019/09/17(火) 21:44:46.02 ID:02KenGFka.net]
それほんとにその親いる?って感じの実装だったらabstractにするんじゃなくて?

654 名前:デフォルトの名無しさん [2019/09/17(火) 21:45:27.86 ID:02KenGFka.net]
あっ被った?

655 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 23:37:00.02 ID:PSgriU0H0.net]
>>641
.NETだとコントロールの大半がそうなっているなw
親の方のクラスでまとめて配列にして場合に応じてキャストして子のプロパティを取り出すとか実装したことはある

656 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 23:46:29.64 ID:e7oun/vJ0.net]
すみません、初歩的な質問なのですが、クラスやらメソッドやらメンバーやらにアクセシビリティを設定するのは、他の誰かが使用するライブラリーを作成することを想定しているからなのでしょうか?
できるならpublicだらけで作りたいのですがそれがどんな問題に繋がるのかわからずモヤモヤしてます。

657 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 23:59:21.95 ID:rQ8N7dRz0.net]
>>646
問題ない

658 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 00:04:42.53 ID:PFlVcPVS0.net]
>>645
ふーむダウンキャストも絶対やっちゃダメってわけでもないのか

659 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 00:12:27.01 ID:o3BZQkX70.net]
>>646
システムが巨大になったときにpublicばかりだと複雑過ぎて手に負えなくなる
巨大になる予定も無いし他人に開示する予定も無いなら好きに作れば良いよ



660 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 00:13:40.45 ID:MOtnHukC0.net]
>>647
>>649
ありがとうございます!

661 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 00:46:19.09 ID:XJgNYgHy0.net]
>>648
わざわざ言語仕様にダウンキャストがあるのはそれが有用だからで、使っていけないわけではないよ。下手な設計で濫用されるのが非難されるだけで、適切な使い方をする分には問題ない。
理由も説明せずに杓子定規に◯◯は使うななんて書いているサイトがあれば、おそらくその書き手もちゃんと分かってないと疑ってかかった方がいいくらい。

662 名前:デフォルトの名無しさん [2019/09/18(水) 01:18:05.53 ID:cuUyZOV2a.net]
>>650
普通に考えて問題だから真に受けたらあかんw

外からアクセスする必要がないメンバーがpublicになってるクラスは
滅多に使わない機能のボタンがてんこ盛りのリモコンみたいなもの。

使いたい機能を探すのに不必要な苦労するでしょ
インテリセンスに使いもしないメソッドやプロパティが100とか
表示されるようなクラス使いやすいと思うか?

663 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 02:24:45.00 ID:haPYpedoa.net]
使いやすさなんて結局はドキュメントの質や命名規約などの高レイヤーの話であって、アクセス制御自体はそれほど重要ではない
メンバをpublicにするということは、そのメンバが利用できることをクラス外に対して約束するということに他ならない
そして、それを後で変更しようとすればクラス外へ波及する破壊的変更となる
将来的な変更の余地を残すために、客に対して不必要な情報公開を避けるという判断は、コーディングに限らずIT業界のビジネスのあらゆるシーンにおいて非常によく行われる

664 名前:デフォルトの名無しさん [2019/09/18(水) 02:39:11.63 ID:cuUyZOV2a.net]
そういう議論は為にする議論ってやつだと思うよw

晒すメンバーの数だけ拘束されて自由が減るってのは論理的に

665 名前:はその通りだけど、
現実問題いらないメンバーに故意にアクセスするコードを書くことなんかまずない。
だっていらないんだからw

本質的に重要なのは見えるメンバーの数を減らして複雑性を下げ、生産性を上げること。
時間が一番貴重なんだから
[]
[ここ壊れてます]

666 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 07:50:17.10 ID:PFlVcPVS0.net]
何から何までそれこそループ変数までパブリックフィールドにしていろいろなメソッドで使い回すクラスと対峙しているのでなかなか響く話題
辛い

667 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 07:58:41.43 ID:5e31sw6sa.net]
>>655
全部書き換えてしまへ

668 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 08:07:10.60 ID:n4vg2Vie0.net]
Windowsでbluetooth BLEの心拍計とケイデンスセンサーから
データを取得したいんだけど
どういうコードを書くと取得できるかな?
わかる人いるだろうか

669 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 08:24:07.29 ID:o3BZQkX70.net]
デバイスのAPI仕様書読め



670 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 14:09:46.88 ID:uVuJujwEF.net]
Process.Startにディレクトリを渡すとエクスプローラで開いてくれるけど、同じことをスマホなどMTP接続されたデバイスのフォルダでやりたいのですが
エクスプローラでスマホのフォルダを開いた時のウインドウタイトル(PCデバイス名〜)を渡してもエラーになります。
ProcessでMTPのフォルダを開くことは出来るでしょうか?

671 名前:デフォルトの名無しさん [2019/09/18(水) 14:50:14.61 ID:9K+6bCRKa.net]
>>659
MTPってことはPCからはストレージに見えてるってこどだよね?
普通にそのパスを渡すだけじゃないの?

ドライブレターが不変じゃないのが困るってこと?

672 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 15:08:01.73 ID:n4vg2Vie0.net]
スマホの場合、標準のエクスプローラに相当するものがないから
ひらけないんじゃね?

673 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 15:11:26.73 ID:n4vg2Vie0.net]
ああごめん、スマホをデバイスとしてPCに刺してる場合ね

ファイル名を指定して実行でアドレスを入れて開けないなら
ファイルパスが認識できていないのかもしれない

エクスプローラのexeにパスを引数で渡して起動するよりないんじゃね

674 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 17:08:55.83 ID:8TRa6KIP0.net]
エクスプローラーはMTPを通常のフォルダと変わらないように見せかけてるだけ
自分でアクセスするにはそれ用のAPIを使う必要がある

675 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 00:42:07.12 ID:d/lXkOqta.net]
質問です
VisualStudioとかUnityってメモリ4GBのノートパソコンでも動きます?
それともゲーミングノート買った方が良い?

676 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 00:43:51.43 ID:bue4KA2uM.net]
動かなくは無いかな
重いかどうかはやるのが早いんじゃない?

速度に不満で長く続けられそうなら
新しいのを買えばいいんじゃないの

677 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 01:05:46.17 ID:d/lXkOqta.net]
>>665
ありがとうございます

678 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 01:08:28.00 ID:+/h2Zlffd.net]
そふとうぇあなど実態のないデジタルデータを売ってお金をだまし取るのは詐欺なのでは?

679 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 03:08:03.44 ID:VsuqkEyW0.net]
何を売ろうが騙し取れば詐欺だろw



680 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 07:20:07.81 ID:2k5+XP3O0.net]
文字列を検索して文字数と行数を同時に取得する方法はないでしょうか?

VisualStudioのフォルダ検索みたいにヒットした行の行数と内容を表示して
ダブルクリックで該当ファイルを表示→選択箇所へジャンプとかやりたいです

681 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 09:52:48.59 ID:AAQe7fcf0.net]
文字列探索の要件が判らないとエスパー回答になるな

C#ならではの方法としては、オブジェクトのハッシュコードを照合するという
方法もあるね

682 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 10:34:03.67 ID:2Fbpp9uL0.net]
文字数はstring.Lengthで良いのでは?
行数はそのstringをforして1charづつ改行charなら++して数えていくとか

683 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 12:14:01.52 ID:EhHD1H1Td.net]
File.ReadAllLineで全部とるか、メモリ上なら改行コードでsplitして配列の添字を取ればいいじゃない

684 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 12:29:35.89 ID:+/YZqQed0.net]
>>672
その場合、テキストボックスでフォーカスを当てるための文字数って地道にカウントしてくしかないっすよね?

685 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 12:31:08.07 ID:VB98Oc2p0.net]
>>673
基本的にそう
テキストエディタとかはそんな感じで実装してる

686 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 13:00:06.50 ID:cKzRnh020.net]
>>674
なるほど
地道にやってんすね

やってみた感じ
文字数から行数出した方が楽だったのと
検索しながらは検索文字列に改行コード入ると面倒だったので

@検索文字列のヒットした文字数を出す
A文字数に対する行数を出す

の順でやりました
ありがとう御座いました

687 名前:デフォルトの名無しさん [2019/09/19(木) 14:17:59.08 ID:R2S0qhpOa.net]
何言ってるのかよく分からんかったけど、

文字数 ⇒ 一致部分の最初の文字のインデックス
行数 ⇒ 一致部分の行の行番号

ってことかw

数え方の問題があるからだろうけど、Stringには一致箇所の数をカウントする
メソッドは存在しないんだね。

688 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 14:45:37.14 ID:6IKimtYb0.net]
検索一致箇所までの文字列を切り出して
改行でspritして要素数から行を得るというのはどうかな
折り返しは考慮されないけどね

あとtextboxなら折り返し込みで
文字インデックスから行に変換する
メソッドがあった気がする

689 名前:デフォルトの名無しさん [2019/09/19(木) 14:58:17.90 ID:R2S0qhpOa.net]
検索される文字列が巨大だった場合Splitはさすがに富豪的過ぎるでしょ。
RegexかString.IndexOfでベタにやった方が



690 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 15:15:08.89 ID:VB98Oc2p0.net]
文字数多いとsplitはパフォーマンス辛い可能性があるね
regexもそれなりに…
パーサー的なものなら頭から逐次処理するのが一番だったりするし

691 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 15:41:06.68 ID:6IKimtYb0.net]
ググったらreplaceを使ってlengthの差で求める方法があったけど
これも一時的にメモリ上で二重化されるから
巨大なログファイルとかだとあまりいい方法ではないな

IndexOfの検索結果を次の検索開始インデックスにしながら
カウントするのが一番楽で無駄がなさそうだ

692 名前:659 mailto:sage [2019/09/19(木) 21:16:22.29 ID:sYHr9xpc0.net]
自己解決
MTPデバイスへのショートカット(.lnk)をメモ帳で開くと見えるリンク先
(こんなの→"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_12d1&pid_1031&mi_00#7&22311cc4&0&0000#{6fa27828-a61a-4555-ba33-f28f495d4f31}")
をProcess->Start()にそのまま突っ込んだら、エクスプローラが起動してMTPデバイスを開いてくれました。
ちなみに、テキストの末尾に(〜5d4f31}\内部ストレージ\Android")というようにディレクトリを追加すれば、そのフォルダを開いてくれます。

693 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:06:22.05 ID:Z+Dr4fZe0.net]
private class Parameter
{
public DateTime setTime { get; set; }
public string Name { get; set; }
public int Ag

694 名前:e { get; set; }
public string address { get; set; }
public int sex { get; set; }
}
↑のParameterのListデータで
setTime,Name,Ageが重複している情報を取得と排除したいんですがループでチェックするのは時間がかかりすぎるので
簡単で早く処理できる方法はないでしょうか?
[]
[ここ壊れてます]

695 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:15:35.18 ID:JBznBYO/0.net]
Parameter.Equals() をオーバーライドして
用意した HashSet<Parameter> foreach で Add() を呼ぶ

696 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:15:52.99 ID:MWgaILTA0.net]
>>682
個々の要素参照するんだからループするしか無いんじゃないの
あらかじめどこか他にデータ持っているのならともかく
簡単にというのなら参照したデータをList<T>に入れていけばList<T>.Containsでチェックできる

697 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:17:07.07 ID:JBznBYO/0.net]
なんか色々おかしかった

↓正
Equals() をオーバーライドして
用意した HashSet<Parameter> に対して foreach で Add() すればよい

698 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:20:11.39 ID:H/0RNa6Fa.net]
>>682
普通のListで「全要素について、別の要素と重複があるか」をチェックしようとしたらO(N^2)になるから
効率よくしたいならHashSetを使うといい
ただEquals()とGetHashCode()を適切に(今回の場合、setTime, Name, Ageだけで決まるように)実装する必要がある

699 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:21:51.81 ID:JBznBYO/0.net]
>>686
HashSet の重複判定って GetHashCode() 絡んでるのかね?
名前的には関係ありそうだけど
仕様が見付からない…



700 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:32:56.51 ID:Z+Dr4fZe0.net]
まだ試してないけどHashSetってことはsetTime, Name, Ageだけのチェックにはならないのかな
setTime, Name, AgeがDBのキーになる予定なので無理そうな気が

701 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:33:33.46 ID:73yDKPmS0.net]
Reference Source で実装みればええやん
GetHashCode と ICompare 指定しなければ Default の Equals の両方やね

702 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:34:05.25 ID:H/0RNa6Fa.net]
>>687
Microsoft Docs見てきたが明言はされてないのか……ただ
https://docs.microsoft.com/en-us/dotnet/api/system.object.gethashcode ではDictionaryなどで使われるとあって
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1 ではDictionaryのKeyアクセスと同様のハイパフォーマンス集合操作を提供、とあるから
HashSetで扱う型についてもGetHashCode()の実装は必要なはず

703 名前:デフォルトの名無しさん [2019/09/20(金) 00:41:13.96 ID:WJxc7oYHa.net]
>>689
質問の感じから今現在自分で実装したものがあるんでしょ?それを載せたほうが微妙な解釈の違いに対しても最適解が出してもらえそうな気がするけど

704 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:57:02.51 ID:JBznBYO/0.net]
キーの重複は
GetHashCode() の一致 → Equals()
みたいだな

GetHashCode() は重複しにくいメンバの GetHashCode() で
Equals() で完全一致の判定をすれば大丈夫そう

705 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:58:18.71 ID:Z+Dr4fZe0.net]
あるサイトを参考にしてみたのが
private class Parameter
{
public DateTime setTime { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string address { get; set; }
public int sex { get; set; }
}


private class ParameterDistinct : IEqualityComparer<Parameter>
{
public bool Equals(Parameter i_lhs, Parameter i_rhs)
{
if (i_lhs.setTime == i_rhs.setTime && i_lhs.Name == i_rhs.Name && i_lhs.Age == i_rhs.Age)
{
return true;
}
return false;
}

public int GetHashCode(Parameter i_obj)
{
return i_obj.setTime.GetHashCode() ^ i_obj.Name.GetHashCode() ^ i_obj.Age;
}
}

706 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 01:02:47.93 ID:Z+Dr4fZe0.net]
//データ追加
var ParameterList = new List<Parameter>();

//重複排除
ParameterDistinct qualityComparer = new ParameterDistinct();
IEnumerable<Parameter> ParameterLister = ParameterList.Distinct(qualityComparer);

でやってみたんだけど重複がでたんだけど何かまずいだろうか
参考にしたところはDatetimeは使っていなかったので駄目なのかな

707 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 01:09:28.14 ID:73yDKPmS0.net]
DateTime をつめるときに DateTime.Now とか使ってると ミリ秒で

708 名前:差がでてるかもしれない。
DateTime を == で比較すると 内部的には DateTime.Tick 同士で比較するから
[]
[ここ壊れてます]

709 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 01:21:43.10 ID:Z+Dr4fZe0.net]
なるほどDateTime.Nowは使っているので調べてみます。
ありがとうございました!



710 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 01:31:14.65 ID:v9n6qqFa0.net]
なんで単なる取得でメモリ使うんだよ
unsafeかなんか付けて昔ながらの方法でやるのが一番速い

711 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 01:35:53.41 ID:JBznBYO/0.net]
ライブラリ作ってるわけでもないのにunsafeとか論外なんだが

その上unsafe付けてやることが2重ループでの完全一致検索とかじゃ
どうせHashSetのパフォーマンスに大敗する

712 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 02:27:15.79 ID:pTVI5tHY0.net]
NGID:JBznBYO/0

713 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 11:53:09.00 ID:URFVhEsV0.net]
git使わずに、自宅のデスクトップ環境とノートPCのプロジェクトファイル類を同期させたいです。

現在Onedrive使ってますが、binやobj配下まで同期されるのが残念な感じ。
binやobjの出力先はWPFプロジェクトなら変更できましたが、ASP.NET coreプロジェクトでどう変更するのか不明

VSTSで上記を実現または他の方法あったりしますか?
ちなみに現在はVS pro サブスクリプションに入ってます

714 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 12:00:15.35 ID:Ew/p9Snjp.net]
Microsoftの開発ソフト使ってんならOneDrive使えるだろ?

715 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 12:02:00.53 ID:Ew/p9Snjp.net]
最後にcleanすりゃいいだけだから。
もしくは同期ドライブ直接はコンパイルしないとかな。

716 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 12:02:42.34 ID:bfuJBtmYd.net]
svnを使う
onedrive以外の場所で開発してonedriveフォルダに必要なファイルを同期ツールとかでローカルコピーするようにする

なんでonedriveはokでgitがngなのかがわからんと提示しづらい

717 名前:デフォルトの名無しさん [2019/09/20(金) 12:48:37.25 ID:uLmjcKMSa.net]
OneDriveって特定のフォルダだけ同期しない設定にできないのか

6,7年前にオンラインストレージが流行った時には
タダで大容量で高機能のがいっぱいあったのになんだか退化してるよねw

718 名前:デフォルトの名無しさん [2019/09/20(金) 12:56:56.83 ID:uH7l3KIr0.net]
labelの文字列の一部を太文字にしたり色を変えたりといった表現をしたいのですが
何か良い方法はないでしょうか?
コントロールではなくメインプログラムのほうで操作できるようにしたいです
labelと同じ見た目ならなんでもよいです
textboxの様な感じではなくlabelのような感じが目標です

719 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 13:13:16.41 ID:WW0nVoDA0.net]
のような感じと言われてもどういうのがNGでどういうのがOKなのかよく分からんが
手軽なのはRichTextBoxを使うことで
そうでなければPaintイベントで全部自前描画ということになる



720 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 14:28:02.26 ID:9RWO75b+d.net]
>>700
ちと面倒だけど、ブランチとか使えるのが便利だから、サーバ立てるまでOneDriveのフォルダ上にgitのリポジトリ作ってた事がある。
OneDrive内の任意のフォルダの中でgit init --bareするだけ。
したら、そのフォルダをremoteとして登録出来る。
あとは任意のタイミングでpush/pullするだけ。

作業フォルダをOneDrive内に置いて自動的に同期もやったけど、objとかが共有される問題よりも、同時に開いて悲惨なことになる事があったので、今はしてない。
(競合したら「もとのファイル名-端末名」ってファイルが大量にできる)

721 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 15:01:20.41 ID:riKFjdTV0.net]
ああ、確かにリポジトリをonedriveに入れるのが一番スマートかも
昔dropboxにsvnリポジトリ作ってたことあるわ

722 名前:デフォルトの名無しさん [2019/09/20(金) 17:01:09.25 ID:9F0x+J+E0.net]
メモリ消費は税のようなもの
しょとくだけに
消費だけに

723 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 19:34:13.48 ID:dvP1e2Mn0.net]
環境はWindows formアプリです。
TableLayoutPanel と DataGridView の使い分け方がわかりません。
datasource property の有無だけ?

724 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 19:53:22.57 ID:+tHFIfxx0.net]
>>705
自分で描画するのはメソッド作るのも指定するのもめんどくさいよ
https://dobon.net/vb/dotnet/graphics/measurestring.html#section1
>>706の言う通りRichTextBoxをBorderStyle.Noneにして背景色を合わせた方が楽じゃないかな
どうしても文字以外を透過させたいとかならともかく
>>710
HTMLのテーブルとExcelの表が同じに見えるのならそうかもね

725 名前:デフォルトの名無しさん [2019/09/21(土) 10:00:25.29 ID:DmWWMvK20.net]
コンソールアプリが作れればいいやと思ってpaizaでシコシコ勉強してますが他にどんなことすればいいですか?
目標は外部のファイルを読み込んでコンバートするアプリを作ることです。

726 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 10:08:45.30 ID:ZhDsxJHf0.net]
外部のファイルを読み込んでコンバートするアプリを作ればよいのでは?
そんなに難しくないよ
何をどうコンバートするかにはよるかもしれないけど

727 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 11:05:31.91 ID:wLZyePcca.net]
プログラミング未経験者です
すいません、ちょっと趣旨から外れるかもしれませんが質問です

電気(強電)、計測(コンビナートとかのプラント計装)の知識ってC#で活かせますか?

C#の求人や書籍を検索すると、電気回路の制御ソフトとか計測器制御とかがヒットするので気になって質問させていただきました

728 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 11:05:33.11 ID:DmWWMvK20.net]
SQLもどき文をパース?して出力したいです

729 名前:デフォルトの名無しさん [2019/09/21(土) 11:42:35.85 ID:uzyGV4kra.net]
>>714
FAの制御系だったら測定器やPLCとの通信がメインになるからそれなりに知識あったほうがいいとは思うよ



730 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 12:00:01.02 ID:wLZyePcca.net]
>>716
ありがとうございますm(_ _)m

731 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 13:30:42.97 ID:ox/L2PXG0.net]
>>715
SQLの整形をしたいの?
SQLって方言が結構あるしパース(字句解析+構文解析)自体の難易度も初心者がやるものじゃ無いと思う

732 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 13:39:06.70 ID:cHmpI1M9M.net]
>>715
SQLのパーサーなんて出来合いのライブラリがいくらでもあるよ
自分でわざわざ使い物にならないゴミを作って時間をドブに捨てる必要はない

733 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 14:11:59.87 ID:gZFDeRYs0.net]
オライリーのlex & yacc がsqlのパースの
サンプルだったけど

C#は対応していないかと

734 名前:デフォルトの名無しさん [2019/09/21(土) 14:57:58.99 ID:8edEcM0R0.net]
すまんが、スレッドを指定して実行ってできないもんなの?
指定できればロックが必要な箇所が減っていい気がするんだけど・・・・どうなんだろう

735 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 15:03:52.53 ID:gZFDeRYs0.net]
スレッド起動しないかWaitしておけば、
良いんじゃね

736 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 15:21:35.32 ID:Ef6g+Zfma.net]
>>721
Producer-Consumerパターンを使って特定スレッドでだけ処理するのはどう?
BlockingCollection<T>使うと楽に実装できるよ

737 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 15:59:40.26 ID:3kDOCDXv0.net]
Dllimortで呼び出す関数の引数にはジェネリックは使えないのでしょうか?

738 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 17:32:33.11 ID:CRAyGleP0.net]
使えない

739 名前:デフォルトの名無しさん [2019/09/21(土) 17:41:38.79 ID:dMKiDHPTa.net]
>>724
どんな使い方を想定してるの?
っていうかそれ、呼び出されたアンマネージド関数側はどうしたら



740 名前:いいの?www []
[ここ壊れてます]

741 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 17:50:18.96 ID:GoVsp8loa.net]
>>726
.NETのジェネリックは実行時に特殊化されるから、技術的にはそんなに無茶な話ではないよ

742 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 17:57:47.91 ID:rw4WtgZd0.net]
まあどのみち今のところできないから、いんぽ関数自体はIntPtrで受け取って
Marshal.PtrToStructureとかでごにょごにょするジェネリック関数でラップする感じでやるしかないね
SystemParametersInfoとかでそういう欲求があること自体はわかる

743 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 17:59:11.73 ID:ox/L2PXG0.net]
>>727
それじゃ質問者に回答してやってくれ

744 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 18:12:58.46 ID:GoVsp8loa.net]
>>729
質問者を馬鹿にするほどには突飛な発想ではないということだよ
.NETのジェネリックがどのように実装されているかを知っていれば、できてもいいと考えてもおかしくはない

745 名前:デフォルトの名無しさん [2019/09/21(土) 18:32:15.65 ID:dMKiDHPTa.net]
十分突飛だと思いますけどね。

これ、アンマネージドに限らない。
マネージドだろうが、他のアセンブリで既に定義されてる
非ジェネリックなstaticメソッドをジェネリック化したいと言ってるのと同じ。

だから、呼ばれた側は何すりゃいいんだよw

746 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 18:43:55.34 ID:GoVsp8loa.net]
>>731
CのAPIだと、サイズが同一の異なる型を一緒に扱ったり、条件に応じてポインタの指す型の解釈を変えたりとか珍しくないでしょ

747 名前:デフォルトの名無しさん [2019/09/21(土) 18:44:55.69 ID:dMKiDHPTa.net]
>>732
そういうのは共用体とかオーバーロードで解決できるでしょ。
ジェネリックを使うって発想は意味不明だよ

748 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 18:46:58.39 ID:3kDOCDXv0.net]
>>726
具体的にはLPVOID引数で自己責任ながら参照型からref、outやintなどの値渡しまで色々な型のオーバーロードを作って実際にちゃんと機能しています
なので一々オーバーロードとそのラップだけで30行ほど使ってしまってる現状が無駄に思えてどうにか方法ないかなと

749 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 19:46:47.84 ID:rw4WtgZd0.net]
一例としてはこんな感じ

APIの想定される構造体がBlittableのみならマーシャリング不要なので
unmanaged制約にしてアドレス渡しの方が効率は良い

public static T GetSystemParametersInfo<T>(SPI uiAction, uint uiParam, SPIF fWinIni) where T : struct {
  T value;
  var buffer = Marshal.AllocCoTaskMem(Marshal.SizeOf<T>());
  SystemParametersInfo(uiAction, uiParam, buffer, fWinIni);
  value = Marshal.PtrToStructure<T>(buffer);
  Marshal.FreeCoTaskMem(buffer);
  return value;
}

まあぶっちゃけお行儀的にはオーバーロードだらだら並べる方が正解ではあるんだけどねw



750 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 19:58:38.68 ID:A1p2bytl0.net]
c# で必殺技みたいなメソッドがあったのですが思い出せません。どなたかご存知ないでしょうか?

751 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 20:03:15.85 ID:y68BphyG0.net]
>>736
リフレクション?

752 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 22:34:09.60 ID:rnFOOH9a0.net]
>>736
privateメソッドを外部から無理矢理呼び出すやつ?

753 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 22:42:59.80 ID:70YMyRx+a.net]
リフレクションならDynamicInvoke()がなんともかっこいいメソッド名
>>736のはおそらくはデストラクタあたりを想定してるんじゃないかと思うけど

754 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 23:13:56.71 ID:GoVsp8loa.net]
DangerousAddRefもなかなか

755 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 01:11:49.71 ID:YKAr5fZO0.net]
>>736
オーバーライド!!

756 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 01:26:33.02 ID:01VTDUEXM.net]
オーバーロード!!

757 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 01:39:55.72 ID:V8FjsYeid.net]
>>736
ラムダ式!

758 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 07:51:48.39 ID:Wx+hr3d10.net]
>>718
>>719
さんきう
とある製品のRDBMSのSQLに独自の書き方やら関数やら記法やらが混じってるからなんとかしたかったんだけどライブラリとやらを使えばいけるのかな。

759 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 08:33:40.66 ID:6LYYKR960.net]
1) githubで"sql parser"と検索
2) C#で絞り込む
3) 上から順に試す
4) 好みのが見つかったら改造を試みる

少なくとも1から作るよりは圧倒的に楽だし勉強にもなるよ



760 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 09:28:54.26 ID:p/RNYxc40.net]
>>726
dllってことは既にasm化されてるんだから型なんて関係なく受け取ったもんを問答無用でバイナリとして処理するだけだろ
C#はそういうのをコーディング段階で防いでるだけであって

761 名前:デフォルトの名無しさん [2019/09/22(日) 12:11:14.62 ID:PittLpUUa.net]
>>746
〜だろ
馬鹿ほどぞんざいで偉そうな口調なのは法則なのかねwww

762 名前:デフォルトの名無しさん [2019/09/22(日) 12:16:38.76 ID:PittLpUUa.net]
少なくともC#のジェネリックはstringとbyte[]を透過的に扱ったり、
longをint2つと透過的に扱ったりするための仕組みじゃありませんwww

だからそういうのは共用体やオーバーロードを使うんだってw

763 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 12:28:14.42 ID:GskCdwYSM.net]
端的に答えとけばいいんだよ
余計な講釈を垂れるな

764 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:36:43.63 ID:584djEVu0.net]
BitmapをBitmapDataにしたいのですが、使用されたパラメータが有効ではありませんと言われてしまいます。
ファイルから読み込んだbitmapは変換できるのですが、このようにコード上で作ったbitmapはダメです。
何がいけないのでしょうか?

Bitmap trimBmp = baseBmp.Clone(rect, baseBmp.PixelFormat);
BitmapData bitData = trimBmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

765 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:44:27.94 ID:6/LwH+kT0.net]
rectで切り出した後、その切り出した後のビットマップから
さらにrectで一部分のロックしようとしてるけど大丈夫? 全面じゃない?

766 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:53:39.23 ID:584djEVu0.net]
>>751
baseBMPからrectで切り抜いてますが、trimBMPにとってはrectは全面だと思うのですがダメなのですかね?

でも
Bitmap bmp = new Bitmap(100,100)
みたいな素画像でもやっぱりLockBitsできないです

767 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 23:53:45.92 ID:yl5BH+I+0.net]
>>752
>trimBMPにとってはrectは全面
ではなくbaseBmpのrectの範囲って自分で指定しているよね
BitmapData bitData = trimBmp.LockBits(new Rectangle(0, 0, trimBmp.Width, trimBmp.Height), ImageLockMode.ReadOnly, trimBmp.PixelFormat);
>Bitmap bmp = new Bitmap(100,100)
>みたいな素画像でもやっぱりLockBitsできないです
できる。そっちもちゃんと引数の指定してみて

768 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 01:34:07.15 ID:CAyWI0VB0.net]
private Point CalcPopupLoction(Form launcher, Form popupForm) {}

ボタン押したときに上部に表示する モーダルな popup フォーム の位置を計算するメソッドを書きました。

ボタンが左の方にあると、親フォームの左枠をはみ出さないように、popupForm は左揃えで表示。
真ん中へんにあると中央揃え、右端ならボタンとpopupForm を右揃えで表示する感じです。

1つ目の引数の良い名前が思い付きません。
主にボタンを想定してる引数です。
launcher (発射台)はどうもしっくりきません。
parent や baseForm はなんかおかしいのでやめました。

769 名前:デフォルトの名無しさん [2019/09/23(月) 03:14:26.31 ID:QdBzCxoka.net]
>>754
そもそもそんなメソッドいらんでしょ。

ポップアップがどこに表示されるべきかはボタンを持つFormが知っているんだから
そいつに聞く(そいつのプロパティーとして実装)のが一番



770 名前:デフォルトの名無しさん [2019/09/23(月) 03:28:32.57 ID:QdBzCxoka.net]
あー、右に揃える場合もあるのね。
じゃあボタン持ってるFormに

void ShowModalPopup(Form popup)
みたいなメソッドを持たせればいい

771 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 03:42:05.85 ID:ltbH9/U50.net]
こういう使い回しが効きそうなのはいちいちフォームに実装しないで拡張メソッドにでもした方が

772 名前:デフォルトの名無しさん [2019/09/23(月) 03:56:41.99 ID:QdBzCxoka.net]
本当はボタン持ってる方のFormに
interface IDialogOwner:IWin32Window
{
  HorizontalAlignment DialigHAlignment { get; }
  Rectangle Rectangle { get; }
}
みたいなのをかぶせて、Popupする方のFormでShowDialogをオーバーロードして
void ShowDialog(IDialogOwner owner)
みたいにするのがいいのかも。

酔っぱらってるんでよく分からなくなってきたw

773 名前:デフォルトの名無しさん [2019/09/23(月) 08:49:12.84 ID:l2jPGLgc0.net]
C#でawaitに対応していないメソッドをawaitで非同期実行できるようにする方法を教えてください.

以下のようにしてもActionが実行されませんでした.
private async static void SomeHandler()
{
Console.Write("Burn");

await new Task(new Action(() =>{
Console.Write("[Start]");
Thread.Sleep(2000);
Console.Write("[Completed]");
}));

Console.Write("End");
}

774 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 08:58:35.82 ID:ZRlL2jPD0.net]
https://docs.microsoft.com/ja-jp/dotnet/api/system.threading.tasks.task?view=netframework-4.8#creating-and-executing-a-task

775 名前:デフォルトの名無しさん [2019/09/23(月) 12:17:14.67 ID:3qdqqJ07F.net]
bitmapinfo とか
dibsection とか
bitmapinfoheader とか
勉強してみたら

776 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 14:47:11.75 ID:vpc5pW+6d.net]
>>759
TaskCompletionSourceだっけ?うろ覚えですまんが、jsのPromiseオブジェクト的に使える。

777 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 15:20:09.58 ID:LbTjUCX60.net]
taskをstartしてないだけだから...

778 名前:デフォルトの名無しさん [2019/09/23(月) 15:46:49.67 ID:s6/Kehza0.net]
>>763
ありがとうございます!

779 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 18:09:27.70 ID:7f5aVpAAd.net]
どういたしまして!



780 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 19:11:24.16 ID:24/7TZbh0.net]
ID:QdBzCxoka
何の話してんのこの人
>>754
変数名が思いつかないとかはこのスレじゃなく
クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1494147712/

781 名前:デフォルトの名無しさん [2019/09/23(月) 22:40:56.88 ID:6ZQTgZjHa.net]
>>766
交通整理バカw
設計が間違ってるのに名前付けて何の意味がある

782 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 22:48:38.96 ID:CAyWI0VB0.net]
>>766
レスありがとうございます。
そんなスレあるの知らなかった。

783 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 23:35:14.83 ID:CAyWI0VB0.net]
>>754
private Point CalcPopupLoction(Form launcher, Form popupForm) {}

上記は下部のボタンの位置に応じて、大きさのことなるpopupForm の表示位置を計算するメソッド

exportButton_Click 内で、
ShowDialog(); で表示する popupForm に戻り値を設定

https://i.imgur.com/ggjo4td.jpg

784 名前:デフォルトの名無しさん mailto:sage [2019/09/24(火) 00:01:07.45 ID:OEzHH54a0.net]
>>754
・Loctionて何
・ボタンの置いてあるオーナーウィンドウと対象のボタンを引数に取った方がいいと思う
・計算だけなら全部Rectangleでいいんじゃないの
Rectangle CalcPopupLocation(Rectangle Owner, Rectangle TargetButton, Rectangle Popup)

785 名前:デフォルトの名無しさん [2019/09/24(火) 00:03:53.21 ID:ftn8dtDua.net]
>>769
だからさ、そのメソッドをどこに書くおつもり?

ポップアップを左右どちらに寄せるべきかを知ってるのは特定のFormだけのはずなのに
その例のllauncherの型がFormってのは変じゃないか?

そもそも何で「左右どちらに寄せるべきかを知ってる」奴のメソッドとして実装しないの?
それなら引数で渡す必要ないと思うんだけど。

786 名前:デフォルトの名無しさん [2019/09/24(火) 00:09:30.85 ID:ftn8dtDua.net]
>>770
必要な情報は

(1) 左右どちらに揃えるか?(HorizontalAlignment)
(2) 揃える位置のx座標

だけだね

787 名前:デフォルトの名無しさん mailto:sage [2019/09/24(火) 11:39:03.69 ID:vbZsX/Wo0.net]
書き込みは、人を憎んでコードを憎まずのこころで行いましょう。

たとえクソコードであっても悪いのは書いた人だけです。
コードやプログラミング言語に罪は一切ありません。
コードの悪口はやめましょう。
クソコードの修正と言わず、リファクタリングといえばいいのです。

大量殺人犯や c# プログラマーの醜い心はリファクタリング不可能ですが、コードのリファクタリングはカンタンですよ。

https://www.google.co.jp/amp/s/anond.hatelabo.jp/touch/20180319181104%3fmode=amp

788 名前:デフォルトの名無しさん mailto:sage [2019/09/24(火) 12:11:17.28 ID:yrtqWHxIM.net]
性格の悪さもリファクタリングしてくれ

789 名前:デフォルトの名無しさん [2019/09/24(火) 14:58:01.43 ID:oiN+60axF.net]
性格はコードに滲み出るよ



790 名前:デフォルトの名無しさん mailto:sage [2019/09/24(火) 23:29:02.86 ID:OoYPx0Tk0.net]
性格は分からないけど姿勢みたいなものは見えると思ってる
こんなコピペばかりして少しはおかしいと思わないのかな?とかこんな古い書き方して言語の文法ざっとでもいいから一通り見たのかな?とか
いいコードを書こうとしてる人とそうでない人の差ってすごくよく分かる。本当に能力無くて頑張って頑張ってるのにひどいって場合もきっとあるんだろうけど

791 名前:デフォルトの名無しさん [2019/09/24(火) 23:44:57.44 ID:3clb0+hp0.net]
ようわからんけど動いてるからヨシ!

792 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 07:36:43.68 ID:apbfD+2I0.net]
式木がイケてるらしいですが使いどころが解りません
プロの皆さんはどこで使ってますか?

793 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 10:16:37.93 ID:HV92OfVjM.net]
>>778
使わない
高度なフレームワークを作るための機能であり、ドカタグラマには全く必要ないから忘れていいよ

794 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 22:57:19.53 ID:5YRgoX3y0.net]
>人を憎んでコードを憎まず

逆じゃないんかおい

795 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 23:01:24.46 ID:1MbrNFaz0.net]
自分より給料貰ってる先輩(笑)が
クソコードを産み落としていた場合は人もコードも憎む
というか蔑む

796 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 23:16:09.44 ID:5YRgoX3y0.net]
何をもってくそコードと言ってるのか

797 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 23:38:23.64 ID:1MbrNFaz0.net]
何を以ってクソコードかは難しいところだが具体例なら無数に挙げられるぞ

switchを使わず延々とif-else if分岐
if(flag) return ture; return false;
一行違うだけのメソッド大量生成
マジックナンバーだらけ
コレクションはほとんどList
かと思えば特にライブラリに必要とされているわけでもないobject[]
もちろんパターンマッチングなんて概念は存在しない
out代わりにrefを使う
boolではなくintをフラグとして使う
クラス内のあらゆる場所から明示されず書き換えられるフィールド
どう見ても親子関係にない継承
メソッド1個300行以上
これがさぞ大変な処理かと思えばリファクタリングしたら40行で書けた
1行に300文字以上
リソースでもFormsでもない普通のクラスが4000行

798 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 23:54:44.99 ID:NtFNmlTfp.net]
>>778
ドカタだけどlinqのwhereメソッドの引数を動的に生成するときに使った

ここ参考になるよ
https://www.atmarkit.co.jp/fdotnet/dotnettips/986dynamiclinq/dynamiclinq.html

799 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:03:29.50 ID:68XB546j0.net]
>>783
ぜんぜん許容範囲だな!
その程度でくそ呼ばわりされたらたまらん



800 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:08:48.21 ID:QoSQSwcY0.net]
>>783
>>switchを使わず延々とif-else if分岐
>>マジックナンバーだらけ
>>クラス内のあらゆる場所から明示されず書き換えられるフィールド
>>メソッド1個300行以上
>>リソースでもFormsでもない普通のクラスが4000行
今直面してるのにまさに当てはまっててもう

>>コレクションはほとんどList
こっちはListどころか配列しか使わないんだぜ。もう書き方が完全にC

801 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:09:16.61 ID:NU/jFtK40.net]
メソッド以外はどれも影響は大きくないし
多少大きくてもテストできればなんとかなる
ちょっとした文化の違い程度の話だ

802 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:10:34.86 ID:NU/jFtK40.net]
初心者が一見してくそ呼ばわりするコードはたぶんくそじゃない
わかるから細かい粗が目に付く

普遍的恐怖を知るべきだ



ぐちゃぐちゃな循環参照
テストできないメソッド

う そ っ ぱ ち の 名 前

803 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:15:27.94 ID:ThQ6mTfg0.net]
突然現れるlinqの長々としたクエリ式
せてめメソッド式にしてくれ

804 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:18:57.61 ID:NU/jFtK40.net]
しかしC#いつのまにやらパターンマッチまで入ってたんか…

805 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 00:28:52.23 ID:ZFJdpCv/0.net]
sqlを全て文字列結合で作ってるうえに500行以上あったときは後輩に丸投げした

806 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 03:16:32.66 ID:wZcpOMsUd.net]
>>780
バグやコードを憎んで、人を憎まず。

こんなこと言ってるプログラマーは意識高い系の偽善者のクズ。

807 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 11:30:46.50 ID:Av/VHz3vp.net]
あいつに任せた俺の責任だからって最初から頭数に入れていないから憎みもしない。必要なら全面書き直しもいとわない。

808 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 20:59:42.99 ID:7bLC7yvk0.net]
なんでListがいかんのか?

809 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 21:12:02.17 ID:aLxxu1ok0.net]
ビットで判定とるのがいかんのか?



810 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 21:18:55.30 ID:fUfQlO4W0.net]
7f63-aXvPからクソグラマーの臭いがする

811 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 21:21:22.68 ID:fUfQlO4W0.net]
>>794
時と場合を考えて最適なコレクションを検討しろ

>>795
特別な理由がないなら褒められないな

812 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 21:37:16.13 ID:aLxxu1ok0.net]
ZDDをboolの配列で評価するの?orz

813 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 21:40:05.70 ID:fUfQlO4W0.net]
>>798
特別な理由がないならと言ってるだろうが

814 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 22:03:13.49 ID:QoSQSwcY0.net]
windows formsの書き方についてなんですけど
メイン画面にタブがいっぱいあってそれを切り替えて……みたいなアプリなんです
んで中身見たらFormクラスが1万行オーバーで。画面一つだからって何もかも突っ込んでる感じなんです
画面というかフォーム一つで1クラスみたいなのが通常の書き方なんでしょうか

815 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 22:10:14.52 ID:Av/VHz3vp.net]
普通はブロックに分ける。

816 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 22:13:41.16 ID:fJKX2zi80.net]
>>800
タブ毎にユーザーコントロールを作ればスッキリはすると思うよ

817 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 22:23:35.32 ID:lGqB6oAG0.net]
>>800
「通常」はどうか知らないけど例えば
MDIアプリケーションを作成する
https://dobon.net/vb/dotnet/form/mdiapplication.html
こういう作り方もある
あと一つのフォームに普通のコードはともかくコントロール(InitializeComponentのなか)を多く詰め込みすぎると起動に時間がかかるようになる
現状で問題ないのならそこは気にすることは無いが

818 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 22:53:44.29 ID:d7SzDWCz0.net]
>>800
parcial class でタブごとにファイルわける。

819 名前:デフォルトの名無しさん mailto:sage [2019/09/26(木) 23:38:48.19 ID:QoSQSwcY0.net]
なるほど参考になりました。
今思えば既にタブごとに部分クラスわけしてファイル別になってたような気がしないでもない……となると実質一クラス10万行か。笑えない



820 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 06:43:42.33 ID:N2euUEC0M.net]
>>800
1000行超える時点でオブジェクト指向できてない証拠

821 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 08:33:35.75 ID:1dreLMG90.net]
フォーム以外で使わない処理を
わざわざ外部のファイルやクラスに作る必要なんてある?

822 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 08:42:46.73 ID:eAUqf5T9a.net]
>>807
それで可読性が高まるならやる意味はある

823 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 09:06:13.84 ID:ikgA/i06d.net]
C#は1ファイルに全部書けるので必要ないです

824 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 10:07:45.04 ID:NnPkuVhE0.net]
再利用しないならそれでいいんじゃね?

825 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 22:47:27.06 ID:uik+OEWH0.net]
お前を含めた全人類が未来永劫そのコードに手を加えない保証があるなら好きにすればいい

826 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 23:28:58.48 ID:MmWjZkvh0.net]
ググったらタブ大量にあるような場合>>802がクラス分割のためのメジャーな手法なのね

827 名前:デフォルトの名無しさん mailto:sage [2019/09/28(土) 08:43:54.27 ID:uN9Z5b+x0.net]
游ゴシックの英数文字をMeasureStringで取得した矩形を使ってDrawStringすると高さ不足で表示されない

矩形を使わなきゃ表示はできるから良いけどもやもやする

828 名前:デフォルトの名無しさん mailto:sage [2019/09/28(土) 10:37:47.08 ID:elJniuwU0.net]
フォント周りおかしいのはMS伝統では
ないだろうか?



829 名前:デフォルトの名無しさん [2019/09/28(土) 14:09:54.66 ID:51nJyp6ja.net]
そんなざっくりした話じゃ、どうせお前自身のコードのバグだろって
反応しか返ってこないと思うw



830 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 01:52:26.51 ID:sVRG+wNI0.net]
インターフェイスと抽象クラスってどう使い分ければ良いのでしょう?

ググってもよくわかりません。

831 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 02:47:00.08 ID:TNnn17Gh0.net]
インターフェースなら継承関係のない複数のクラスのように
振る舞うことができる

832 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 02:49:22.44 ID:HU0MDVmv0.net]
大雑把言えば
プロパティとフィールド(値)を保持するのがクラス
クラスのメソッド(挙動)を公開するのがインターフェイス

833 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 02:54:07.57 ID:TNnn17Gh0.net]
それが抽象クラスとなにが違うのだ?と彼は聞いているわけで

834 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 03:01:23.20 ID:HU0MDVmv0.net]
インターフェイスは値を持たないし
原則として挙動の実装も持たせない

835 名前:デフォルトの名無しさん [2019/09/29(日) 03:20:49.12 ID:m1n6jIU5a.net]
>>816
使い分けで悩む必要はないと思うよ。
インターフェイスで目的が達成できるならあえて抽象クラスを使う理由はないのだから。

たぶん使い分けが分からないのではなく、インターフェイスの使いどころが分からないだけじゃないのか。
よくわからなくてもとにかく実際コードを書いて使ってみることが重要。
別に難しい話じゃないので使ってるうちに自ずと分かる。たぶん

836 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 03:35:49.46 ID:TNnn17Gh0.net]
多重継承的なことがしたくなったらインターフェースを使う
くらいな感じでいいのかもね

837 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 07:08:46.93 ID:5VaVy3IA0.net]
私もよくわからないんですが、インターフェースって実装内容は問わないけどこの名称のメソッドは用意しなさいよってコトですかね?
インターフェースでメソッドを定義しても、継承したクラスがそのメソッド名に合ってない実装をしてしまったらと考えるとインターフェースのメリットがイマイチピンときません

838 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 07:26:53.36 ID:ehZkSMIn0.net]
疎結合

839 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 08:56:25.44 ID:qdFsd7WD0.net]
>>823
継承したクラスで変にオーバーライドされたら…
なんて気にしたら何も書けなくなるよw
それはオーバーライドした奴の責任だから気にしてもしょうがない



840 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 09:00:39.96 ID:TNnn17Gh0.net]
それって抽象メソッドでも同じ事じゃないの

841 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 11:47:55.74 ID:YvnTsZym0.net]
多態で使うんだよ
用意しなさいってのは発想が逆で、インターフェースに定義されているプロパティなりメソッドなりが実装されていることが保障されていると考える
実際の実装は気にせずに呼ぶ側はインターフェースのメソッドを呼べばいい

842 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 11:59:54.10 ID:J9ITXYeqp.net]
抽象クラスは重複の排除で使う、インターフェイスはテストする時の視点で必要

クラスAがクラスBの機能を利用する時に
クラスAはインターフェイスに対して実装しとけば
クラスBの変更に影響を受けないし、
テストする時にクラスBの代わりを作るのがインターフェイス部分だけになる
これがもしクラスAがクラスBの抽象クラスに対して実装すると、
クラスAをテストするときに抽象クラスの不要な部分まで要求されてしまう

また複数人開発においてもインターフェイスを利用すれば各個人が独立に作業しやすくなる

843 名前:デフォルトの名無しさん [2019/09/29(日) 12:01:49.30 ID:3s0zt66kF.net]
呼んだはずのメソッドが(インターフェースでは要求されてるのに)実装されてなかったら
コンパイルエラーじゃなくて実行時に例外吐くか
unknownmethod()みたいな呼び方してくれると便利

844 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 12:05:37.87 ID:INBbqatbr.net]
不便だろ

845 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 12:07:56.33 ID:wmQ9rxKs0.net]
クラスに由来しない振る舞いを定義するのがインターフェイスとも言えるね。

良く例示される「動物」クラスで考えると。
・「動物」は動くのだから「移動」メソッドに必然性がある
・だけど「移動」するのは動物だけではない
・いま「移動」と言うメソッドに着目して操作を行いたいとする
・「移動」は動物でも自動車でもロボットでも行う
・でも自動車もロボットも動物ではないのでいからそのメソッドの由来を「動物」クラスに求めるわけにはいかない
・加えて、動物や自動車やロボットに直系する(基底)クラスもない
・故に「移動」メソッドの由来を「動物」クラスにではなく「移動」インターフェイスに求めてみる
・・・的な。

846 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 12:08:06.40 ID:INBbqatbr.net]
実行時に例外吐くのはめちゃくちゃ恥ずかしい

コード書いたやつはバカですと言う証明
私はデバッグもできない馬鹿ですで表明してるようなもの

847 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 12:13:32.63 ID:INBbqatbr.net]
コンパイル時にエラー吐くならそこでデバッグできる

実行時エラーなら全ての場合でエラーがないことを実際に確認しなければならない

どちらが便利かわかるだろ

848 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 19:29:34.79 ID:TNnn17Gh0.net]
>>831
いい例えだね
俺も使わせてもらうわ

849 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 20:03:13.25 ID:sVRG+wNI0.net]
先日、マンガ村の運営者が著作権法違反の容疑で逮捕された。

c# プログラマもマンガ村と同様の共有システムgit等を利用し、マンガやソースをインターネットを通して共有している。
github など分散型のバージョン管理システムを利用している c#プログラマはマンガ村の管理者と同じ位置にいるといえる。単なる利用者ではない。

c# プログラマはマンガ村管理者と同一人物といえるので、著作権法違反の共同正犯として刑務所にぶち込むべき。



850 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 22:53:02.75 ID:1CaVkali0.net]
c#のインターフェイスにはプロパティも宣言できるよね
あれは実質的にはフィールドと同じ様な感覚で使えてしまう

851 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 23:37:43.33 ID:uMWzDoEma.net]
だって>>831のような解釈は時代遅れだし特にC#(というかMS系)では一般的ではないからな
今時は「動物」という一般的実在だろうが「移動できる」という抽象的性質だろうが区別せず、
実装を限定したくない場合は原則常にインターフェイスを使うのが一般的だ
特にMSの場合は顕著で、ほぼ全クラスの全メソッドをインターフェイスに定義するというスタイルを取ることが多いし、またそれを推奨してもいる

852 名前:デフォルトの名無しさん [2019/09/29(日) 23:56:27.42 ID:8QPFQcOxa.net]
ほんとかよそれwwwww

853 名前:デフォルトの名無しさん mailto:sage [2019/09/29(日) 23:59:46.39 ID:k4CvVXqN0.net]
>>837
初心者スレで珍妙な独自理論を一般的だなんて教えるのはやめれ

854 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 00:22:33.73 ID:LVz3OUV70.net]
今年始めた初心者だが
クラスが大カテゴリ
メソッドが小カテゴリ
インターフェースが小カテゴリらの存在を保証する中カテゴリ
このくらいの認識しかなかったわ

855 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 00:32:45.02 ID:C9eDYcBn0.net]
宣教師と見た
次にスクリプト言語を薦めて来るぞ

856 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 00:57:12.69 ID:PJtB8DfJ0.net]
831 だけど

857 名前:B

複数のクラスインスタンスの動的読み込みとか始めるとそんな感じになることもあるよ。
プラグインとかの識別に便利だし。
そうだとしても、たぶん 831 の1行目と矛盾してないでしょ。

ただ初心者相手の説明にこんなこと言いだしたら収拾がつかなくなるし、
全メソッドをってのは、まあ頑張ってな、と返すしかないけど。
[]
[ここ壊れてます]

858 名前:デフォルトの名無しさん [2019/09/30(月) 01:48:44.79 ID:dOfJdIlZ0.net]
すまんが、エラーメッセージにあるカッコ内の行番号らしきものってさあ
片方は間違ってる行っぽいけど、もう片方は一体何なんだぜ?

859 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 02:02:42.92 ID:zBUNKmmLa.net]
>>843
その行の何文字目かって意味
例えばファイル先頭に「int a = "";」と書いたら(1,5,1,6)でエラーが出るけど
これは「1行目5文字目〜1行目6文字目」の箇所でエラーになっていることを表している



860 名前:デフォルトの名無しさん [2019/09/30(月) 02:09:52.87 ID:dOfJdIlZ0.net]
>>844
ありがとう!何文字目かなんて全然わかんなかったよ

861 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:08:24.00 ID:fD1lXHN30.net]
質問いいですか?

862 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:10:26.75 ID:ws0x1Tjj0.net]
>>846
駄目です

863 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:17:51.94 ID:nNBu0V63d.net]
>>847
その返しはこのスレではいかんだろ(笑)

864 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:41:05.60 ID:bmAzH1750.net]
トイレ行ってきていいですか?

865 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:55:42.37 ID:BmNMZ9TsM.net]
もう居るだろう

866 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 09:29:49.98 ID:fD1lXHN30.net]
では質問しますね
Timerコンポーネントで
Timer1.Interval = 5000;とすると、プログラム起動後5秒後に初めてTimer1_Tickが
実行されますよね、これを起動時に1度実行したいのですがどうしたらいのでしょうか

Form1_Loadに書けばいいような気がしますが引数がわからない

867 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 09:31:40.04 ID:Q4pocwaT0.net]
忘れたけどTimerってTimers.TimerもThreading.Timerも大体どんな種類の奴でも最初のディレイタイム指定できなかったっけ?

868 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 09:58:04.89 ID:fD1lXHN30.net]
>>852
レスサンクスです
Delayでぐぐってみましたが、プログラムを遅延させるほうのDelayばかりヒットして
なかなか見つかりません、Timerのプロパティにそういうなのがあればいいんですが

869 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 10:05:34.65 ID:g7w6SBZq0.net]
>>853
処理を関数化しておいて、コンストラクタから呼んだらいいんじゃね?
別にタイマーから呼ばなくてもいい



870 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 10:13:21.52 ID:e45pyL0lM.net]
>>851
最初100で、中で則5000書き換えじゃあかんかったっけ

871 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 10:40:02.13 ID:fD1lXHN30.net]
>>854
サンクスです
Timer1_Tickの中の処理をゴソっと別にうつすんですか、確かにうまくいきそうですね

>>855
さんくすです
Timer1.Interval = 100;からTimer1.Interval = 5000;に変更ですか
これもうまくいきそうですね、厳密な秒数は必要じゃないですし

872 名前:デフォルトの名無しさん [2019/09/30(月) 10:47:03.32 ID:ZcJV4ZEKa.net]
>>851
どんな方法使ってもいいけど後で読んだ時に何をやってるか
分かりやすいのが一番だね

public Form1()
{
  InitializeComponent();
  Form1.Load += (sender, e) => OnEvery5Seconds();
  Timer1.Tick += (sender, e) => OnEvery5Seconds();
}

void OnEvery5Seconds()
{
.....
}

こうやった場合、FormのLoadイベントより前にOnEvery5Secondsが呼ばれる可能性が
あることは注意する必要がある。(実際にはないと思うけど)

873 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 11:16:30.25 ID:fD1lXHN30.net]
>>857
れすさんくすです
なるほど、こんな書き方もできるのですね、うまくつかえばすっきりまとまりそうです

874 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 23:02:09.82 ID:S0uOX3sP0.net]
>>852
流れから推測するとたぶんWindows.Forms.Timerクラスだね

875 名前:デフォルトの名無しさん [2019/10/02(水) 01:49:10.77 ID:4PgWnh+40.net]
非同期メソッドでちょっとだけ同期処理するのにはどうすれはいいのですか?

async Task ABCasync(){
ABCasyncの呼び出し元には、終わるまで待っていてもらいたい処理();
//ここでtaskで呼び出し元に何かを返せたりするのかしら?
ABCasyncの呼び出し元には、待っていてもらう必要のない処理();
}

876 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 02:14:39.18 ID:mDEdylW50.net]
強引に実装することは可能だがメソッド分割すべき

877 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 07:28:12.15 ID:YugGu4Uj0.net]
クラスは知識
メソッドは機能
という認識は事のほか難しいんけ?

878 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 08:07:26.42 ID:Vm3TcWW10.net]
>>862
そういう一般的でもない訳のわからない解釈を出されても、普通の人には理解できないかおかしな理解のまま突き進むことになるだろう

879 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 08:15:53.12 ID:gR9x9lAq0.net]
クラスは学校とかのクラスって認識でいい



880 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:07:45.90 ID:9X+f8gXkr.net]
ゲームのクラスの方がわかりやすい気がする

戦士 魔法使い 僧侶 盗賊

それぞれできることが違う

881 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:18:19.95 ID:VgxhRvTXp.net]
あはは、まあ、学校のクラスだと対抗戦が出来るくらいに似たり寄ったりだから意味が分からないよな。

882 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:59:15.15 ID:8UOZigmra.net]
逆に、同一のクラスの異なるインスタンスなんてのもできないしね。

883 名前:デフォルトの名無しさん [2019/10/02(水) 12:12:09.33 ID:VOEDuxVKM.net]
>>865
じゃぁ男女別は?
どっちのクラスが上位なの?
それとも同格で、男戦士 女戦士ってなるの?

半魚人タイプとか4足系の戦士は?

884 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 12:26:49.61 ID:9X+f8gXkr.net]
出来ることが変わらないなら基本変えなくていいよ
設計次第だけど

質問の内容の男戦士と女戦士で何が違うのかはっきりしない
力などの属性値(プロパティ)だけが違うなら分ける必要はないわな
半漁人でも4足系の戦士でも数値しかかわらないなら同じ

コードが共通になるなら基本的に分けなくてもいい

885 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 19:59:53.93 ID:dZRRj/1Z0.net]
強引に何かに例えるよりコード書いてみた方がいいよ

886 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 20:20:25.32 ID:IV023jBj0.net]
C#はじめて最初の日に読み飛ばすところで議論しても不毛だよな
>>870に賛成

887 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 00:57:21.26 ID:z1GHd6rla.net]
質問です
工場とかインフラの制御ソフトモドキを成果物としてWindowsアプリケーションの形式でC#で作りたいんですが、この2冊終わった後にWindowsアプリケーション開発の本買うなら何が良いですか?
また、本が時間の無駄だとしたらどこのサイトを参照すれば良いですか?
上記の件よろしくお願いしますm(_ _)m

1冊目 なるほどなっとくC#入門
2冊目 C#プログラミングのイディオム/定石&パターン

888 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:02:05.17 ID:t45ZyD0e0.net]
そりゃ一番はMicrosoftのチュートリアルでしょ
https://docs.microsoft.com/ja-jp/visualstudio/ide/step-1-create-a-windows-forms-application-project?view=vs-2019

889 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:16:35.63 ID:z1GHd6rla.net]
>>873
ありがとうございますm(_ _)m



890 名前:デフォルトの名無しさん [2019/10/03(木) 01:19:35.07 ID:pRlPv1jza.net]
>>872
FormならGUIの作り方は必用なことをググって調べながら実際に作ってみるのが一番。
本は1冊以上は読むだけたぶん時間の無駄。

何かを制御するなら、それが大企業の製品で.NET用のライブラリが用意されているのでない限り
たぶんアンマネージドの知識が必要になる。
これは多分本はないので自分でググって調べる

あと多分非同期処理は必須。
最初.NET1.x時代の生のThreadとか使う記事に軽く目を通して、
その後は今時のTPLや非同期メソッドの記事を読めばいい。
本もあるけどたぶんweb上の記事で十分

891 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:26:24.07 ID:wBmuAStK0.net]
非同期メソッドの実行自体は慣れたけど
win10のアップデート強制再起動時に
非同期処理中のタスクをきちんと終了させる方法がわからん

突然書き込み中のファイルがぶっ壊れそうで怖いわ

892 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:35:18.06 ID:z1GHd6rla.net]
>>875
ありがとうございますm(_ _)m

893 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:39:57.58 ID:dygVDi5Yd.net]
>>875
工場の制御ってRS-232CとかPLCとかGPIBとかやろ
別にアンマネージド必要ないだろ

894 名前:デフォルトの名無しさん [2019/10/03(木) 01:45:45.89 ID:pRlPv1jza.net]
>>878
そうかもしれないけど拡張ボードの型式でライブラリはアンマネージドdllだけかもしれない。
USB接続でアンマネージドdllの可能性もある
何とも言えない

895 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 15:11:12.65 ID:xDvwVpv4p.net]
マネージドなドライバーが無いなら使わないって選択をだな。

896 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:33:07.86 ID:65+5RZIm0.net]
UI操作とawaitを使った非同期メソッドをまとめたasyncメソッドを別スレッドから呼び出すにはどうすればいいですか?

897 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:36:08.92 ID:XDm3DYNpd.net]
>>881
??何が聞きたいの?

898 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:42:35.24 ID:65+5RZIm0.net]
>>882
すみませんでした。
例えばこういう感じのメソッドを別スレッドから呼び出す方法を教えてください。

async Task DoSome()
{
label1.Text="処理中...";
await DoLong();
label1.Text="完了";
}

899 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 20:27:59.44 ID:AKImZpfb0.net]
正直設計を考え直した方がいいけど
メインスレッドで動作してる間に
TaskScheduler.FromCurrentSynchronizationContext()
でTaskScheduler確保しておいて、その"別スレッド"内で
new Task(() => DoSome()).RunSynchronously(taskScheduler)
する



900 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 20:48:28.97 ID:Cd3mzBuJ0.net]
こうじゃダメなの?
Invoke((MethodInvoker)(async () =>DoSome()));

901 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 22:23:35.99 ID:Y5r0apvPr.net]
呪文化しただけにも見える

902 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 00:31:32.74 ID:hyuh0V300.net]
メソッド側を修正する必要があるけど、
こういうことでは?

別スレッドからのUI操作
https://qiita.com/mounntainn/items/8a2b4f1cf47bd02657f3

903 名前:デフォルトの名無しさん [2019/10/04(金) 01:26:24.02 ID:oVLixzTMa.net]
>>883
やっぱりそういうのは非UIスレッドからも呼び出せるようにする、ではなく、
逆に普通にUIスレッド専用のメソッドとして提供して、
もし必要ならXMLコメントとかで「UIスレッド以外からの呼び出し禁止」って
明示するのが筋なような気がするw

904 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 09:42:07.42 ID:7JHQ1IR60.net]
>>884
>>888
filesystemwatcherのハンドラから呼び出すと別スレッドからの呼び出し扱いになってしまいます。

905 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 09:50:12.44 ID:K3mQ1Iatp.net]
まあその用途ならやっぱコントロールのInvokeの中で呼べばいいだけの話しだな
DoLongの中でさらに入り組んでるとデッドロックしそうだけど

906 名前:デフォルトの名無しさん [2019/10/04(金) 14:31:48.61 ID:RxmXvWZXa.net]
こんなの考えてみたが、あんまり便利でもないなw
private bool TryOnUIThread<T>(EventHandler<T> eh, object sender, T e) where T:EventArgs
{
  if (!InvokeRequired) return false;
  Invoke((Action)(() => eh(sender, e)));
  return true;
}

private void FileSystemWatcher_Changed(object sender, FileSystemEventArgs e)
{
  if (TryOnUIThread(FileSystemWatcher_Changed, sender, e)) return;
  var t = DoSome();  
}

907 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 15:21:51.76 ID:5G6hsRzp0.net]
FileSystemWatcherはSynchronizingObject持ってんじゃん
設定しとけば勝手にBeginInvokeでイベントハンドラ呼んでくれるよ

908 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:15:38.99 ID:hjSAU91p0.net]
質問なんですが
設定ってどこにどうやって保存してますか?
.configが今ならベストなんでしょうが、保存先が
C:\Documents and Settings\UserName\Local Settings\Application Data\
になり、.iniのように、アプリをコピーで2つの設定が使えるようになりません

.configはファイルの場所が遠くて変更しにくい、iniは古くてC#で扱いにくい
どうしてますか?

909 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:23:45.47 ID:BObIlSOA0.net]
>>893
インストールするアプリはユーザーデータフォルダのどっかに保存しないと駄目じゃん
どこでも置けるやつはexeと同じ階層に設定ファイルあったほうが使いやすいじゃん
ってだけしか気にしたことない



910 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:30:58.10 ID:hjSAU91p0.net]
>>894
れすさんくすです
確かにそのとおりだとおもいます

インストーラーではなく、ZIPとかで配布で、ちいさなアプリで、主にシングルユーザーで
ってなると.iniになるんでしょうか?

911 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:31:02.26 ID:elsuYLim0.net]
>>893
設定を保存するクラスを作って、xamlかjsonにシリアライズ
アプリのコピーで使い分けるなら、保存場所はアプリのexeと同じフォルダー

912 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:34:16.80 ID:BObIlSOA0.net]
>>896
xmlとjsonなんて編集できるツールあるの?
パンピーにインデント壊さないでねなんて無理よ

913 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:43:34.43 ID:elsuYLim0.net]
>>897
元の質問に設定ファイルを手動で編集したいなんて書いてないが

914 名前:デフォルトの名無しさん [2019/10/05(土) 10:47:20.84 ID:xk/GxZ7j0.net]
jsonもxmlもインデント関係ないから自由にさせろ
強制したいならyaml使え

915 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 12:25:09.61 ID:8Jk2Tveb0.net]
>>897
インデントわろた

916 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 12:42:35.73 ID:sqkLDT76d.net]
>>897
インデントwwww

917 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 15:47:01.45 ID:BObIlSOA0.net]
インデントっていうかカッコの対応?
でもその一点でxmlとjsonっておよびじゃ無くない?
これらを使うなら設定ツールが必要になると思う

918 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 16:03:44.47 ID:8Jk2Tveb0.net]
よく出てこれたな

919 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 16:30:09.26 ID:BObIlSOA0.net]
>>903
何度でも言えるよ
xmlとjsonは設定ツールがないと使えないゴミ



920 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 16:44:26.62 ID:LN1PiSPK0.net]
設定画面ぐらい作れよ

921 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:02:10.69 ID:8Jk2Tveb0.net]
>>904
よおインデント

922 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:07:55.98 ID:hjSAU91p0.net]
>>896
れすさんくす
結構ハードなことやってるんだね、一度クラス作ったら一緒か

923 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:16:21.03 ID:q6cvuv6U0.net]
>>906
よおインシデント

924 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:17:03.15 ID:JDr+zhso0.net]
>>907
今どきならjson.netを使うだけ
ググればわかるけど呆れるほどかんたんだよ

925 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 18:01:24.61 ID:vEDwovccd.net]
インポテンツ

926 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 18:06:22.26 ID:PVJcrjgV0.net]
初心者スレやからね

927 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:34:08.92 ID:hjSAU91p0.net]
>>909
さんくす、ライブラリが公開されてるのか
みんなこれ使ってるの?

928 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:36:45.83 ID:1kVSHcIG0.net]
令和の時代の新規プロジェクトでiniファイルはありえんだろw

929 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:38:02.29 ID:1kVSHcIG0.net]
>>912
今のところデファクトスタンダードなライブラリだね



930 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:39:42.31 ID:BObIlSOA0.net]
>>913
設定ファイルをユーザにどうして欲しいの?

931 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:46:18.14 ID:1kVSHcIG0.net]
>>915
サンプルのjsonを添付してここを変更しろとドキュメント付けとけば問題ない
インデントが変わっても問題ないし

932 名前:デフォルトの名無しさん [2019/10/05(土) 19:51:52.36 ID:kB6gz2T/F.net]
>>913
www6.uniovi.es/cscene/CS3/
values.c

933 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:56:00.01 ID:8wZmV3QG0.net]
>>912
俺はDataContractJsonSerializerだな
これなら標準ライブラリだからインストール不要

934 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:57:33.02 ID:BObIlSOA0.net]
>>916
jsonはカッコの対応で死ぬわ

っていうかxmlもjsonもiniファイル駆逐できるほど性能よくねーじゃん
っていうか用途が違うものを強引に適用しようとしてない?
設定ファイルに書いたコメントも消えちゃうしね

935 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:01:44.88 ID:BObIlSOA0.net]
iniファイルを時代遅れだと主張するなら
xmlやjsonで吐き出して設定ツールぐらい用意しろってことかな?
それなら理解できるけど
xmlとjsonのテキスト編集はキツイ

936 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:08:26.65 ID:1O88xYRBd.net]
ユーザーがやることはjsonの値をちょい変更するくらいなのになんでカッコ対応が問題になるんだよ
ユーザーがカッコを書く必要なんてないのに

937 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:11:42.09 ID:BObIlSOA0.net]
>>921
いや、だからそれどこよ?
ってのを見つけるのも結構骨が折れる作業よ

だから、コメントをjsonファイルに書いておくだろ?
ところが次のアプリの書き込みで消えてるんだなw

938 名前:デフォルトの名無しさん [2019/10/05(土) 20:13:16.91 ID:jRdA7zB80.net]
話はよーわからんが、JSONに慣れれない人もそれがあんたの能力なんだから
しょうがないんじゃない

939 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:13:46.83 ID:WowcC4IHr.net]
>>922
ちゃんとしたエディターかIDE使えば?
VScode使えば対応簡単だけど
まさかメモ帳でやってんの?



940 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:16:05.57 ID:BObIlSOA0.net]
そもそもバグったときに凶悪であることは認めるだろ?
俺らだってxmlやjsonファイルでユーザーが編集したおかしな箇所を
プログラムでピンポイントで指摘できない
このファイルは完璧でないと読めない
そんなモノをユーザーに触らせるような運用は間違っている

客がいいって言うならいいけど

941 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:16:19.70 ID:WowcC4IHr.net]
vscodeとかtsとかnode.jsとか設定はjsonだけど
それで大問題にはなってない
みんな使いこなしてる
何故君だけ使えない?

iniファイルなんて実際死んでるよ?

942 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:16:43.74 ID:BObIlSOA0.net]
>>924
それを客に言うの?
趣味ならいいけど

943 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:17:55.69 ID:WowcC4IHr.net]
>>927
客がなんでjsonファイルいじって中にコメント書くのかが分からん
お前がいつまでボケ続けるのか興味があるが…

944 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:18:25.25 ID:BObIlSOA0.net]
>>928
え?開発者向けなん?

945 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:19:04.85 ID:r/LR5Bg3d.net]
iniファイルとかWin16の時代の化石だろ

946 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:19:40.75 ID:WowcC4IHr.net]
本当にいつまでボケ続けるのか
実務に携わってないんだろうなってのはわかる
空転を本人が気づいてない

947 名前:デフォルトの名無しさん [2019/10/05(土) 20:20:51.17 ID:jRdA7zB80.net]
よく出てくくる、一本道コードのVisual Basicおじさんでしょ

948 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:21:03.98 ID:BObIlSOA0.net]
はっきりさせておくけど

・設定ファイルをテキスト編集でユーザに触らせたい
→xmlやjsonは向かないんじゃない?

・設定ファイルをユーザに触らせない
→なんでもいいんじゃない?

ってことな

949 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:22:45.53 ID:BObIlSOA0.net]
あともう一つ

・ユーザは開発者である
→なんでもいいんじゃない

って感じな



950 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:24:09.45 ID:WowcC4IHr.net]
・設定ファイルをテキスト編集でユーザに触らせたい

の時点で間違ってる
バックアップすら取るかどうかわからんやつらに編集させんな馬鹿

951 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:24:53.35 ID:hjSAU91p0.net]
>>914
なるほど、これはもうjson.netいれるしかないですね

>>918
MS謹製のJson、これはかなりとっつきやすそうさんくす

952 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:25:02.19 ID:BObIlSOA0.net]
>>935
じゃあ、俺と君の意見は一致してるね

953 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:25:51.75 ID:WowcC4IHr.net]
ボケた会社の〜ボケた開発者が〜ボケた客にボケたことをさせて〜

メンテナンス費用だけとるつもりですか〜

死ね糞ゴミ!

954 名前:デフォルトの名無しさん [2019/10/05(土) 20:28:30.38 ID:jRdA7zB80.net]
でも、初心者なのに仕事を取ってくる勇気は大したもんだよね

955 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:38:04.30 ID:8wZmV3QG0.net]
>>933
俺なら
>・設定ファイルをテキスト編集でユーザに触らせたい
→そんな仕様にはしない
なぜならあらゆるフォーマットに対応する実装とテストなんてしたくないし
そもそも設定をテキスト編集するアプリとか使いにくい

>・設定ファイルをユーザに触らせない
→xmlにする
なぜなら実装が簡単だし、開発者(俺)ならテキスト編集できるから

956 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:51:43.64 ID:RYV31rLj0.net]
レガシーコードってなんかかっこいいから、どんどん増やすべき。
伝説の武器みたいなものでしょう。

957 名前:デフォルトの名無しさん [2019/10/05(土) 21:28:22.83 ID:Apziqq2fa.net]
>>936
2chだとやたらとJSON推しの人が多いけど、.NET標準のシリアライザは他にもいろいろあるよw
JSONに固執する必要がないなら他を検討した方がいいと思うけど

958 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:40:37.42 ID:kmFdI7ZBM.net]
MSがJSON推しだからね

959 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:42:52.25 ID:mrk3SroR0.net]
JSONは連想配列に順序の保証がない
デバッグで差分比較するとかができない



960 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:45:37.47 ID:ZEfzfdRr0.net]
連想配列に順序ってそんな重要なんか

961 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:50:21.48 ID:SzWcISg6d.net]
>>942
.NET標準でjson以外にほかにいろいろシリアイザがあるって、XML以外何かある?

962 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:54:42.26 ID:hjSAU91p0.net]
>>942
なるべくネット上に解説とかサンプル多いと楽かなっと
多数派に流されるお

963 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 22:05:26.81 ID:VWTAP42j0.net]
json schema用意すればvscodeで補完効くし、間違いも指摘してくれるし、普通json使うわ

964 名前:デフォルトの名無しさん [2019/10/05(土) 22:54:13.79 ID:Apziqq2fa.net]
DataContractJsonSerializer、使ったことなかったが調べた感じ
一通りの機能はあるし、バージョントーレラントみたいだし、別にこれでもいいねw

バージョントーレラントじゃないと思ってたが、勘違いだったみたいだ。

965 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 23:34:01.62 ID:1i4Kj4Snd.net]
トーレラントって何かググってみたけど中華鍋しか出てこない

966 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 01:39:32.41 ID:z+z4mE1D0.net]
確かにJsonはコメントが書けないか
コメント用の文字列メンバを予め確保すれば良いのかな

967 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 01:49:26.58 ID:DPash9Py0.net]
jsonのシリアライザ/デシリアライザは送受同じライブラリを使わないと、割とめんどい。
DateTimeの扱いとか。

あとライブラリによってはpublicクラスじゃないとダメとか変な制限があるものも・・

DataContractJsonSerializerは変換遅いし、いちいち[DataContract]や[DataMember]などのアノテーションがめんどい

968 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 02:10:45.36 ID:uOvq13Pn0.net]
以前REST APIを作ったときはVisual Studioがjson.netを利用するコードを自動生成してたけど、今はDataContractJsonSerializer化されてるのかな?

969 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 07:22:38.42 ID:DbrcOQgy0.net]
>>953
System.Text.Json



970 名前:デフォルトの名無しさん [2019/10/06(日) 11:26:53.05 ID:yc9LKsYB0.net]
>>939
software.aufheben.info/kouza/kouza_socket.html

>936
cjson

971 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:18:55.28 ID:jjEkd1/A0.net]
windows formsアプリについての相談なんですけれど、ロジックと見た目を分けろって聞くじゃないですか。なのでそうしようと思ったんです

例えばユーザーコントロールを作って、そこに何かしらの処理を行うボタンを配置したとします
それで自分が考えたのは、計算をするクラスをユーザーコントロールクラスの内部クラスとして作る、ユーザーコントロールクラスのフィールドとしてその計算するクラスのインスタンスを持たせる
でボタンが押されるイベントで計算をするクラスのオブジェクト.calculate()みたいにする

設計としてはこんな感じでも大丈夫ですかね?アプリを作る時に内部のコードはこう実装するみたいなことを教えてくれる本が無くてどう設計していけばいいのかわからないんです

972 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:29:48.44 ID:ofI4YMfJM.net]
右も左もわからないうちから俺俺アーキテクチャとか考えないで

MVCやMVVMでも勉強したらいいと思うよ

それから最強のアーキテクチャを考えるのでも遅くない

973 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:31:03.82 ID:U/2g+4lB0.net]
>>956
>ロジックと見た目を分けろ
windows formsアプリじゃなくWPFやった方がいいんじゃない?
windows formsでそんな組み方するの逆にめんどくさい

974 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 13:48:38.81 ID:wAV7A9/e0.net]
>>955
cjsonはわかりやすいのかな、ちょっとしらべてみるさんくす

975 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 13:52:51.65 ID:44yIwJmG0.net]
>>956
そんなことしなくて良い
画面アプリなんて使い捨て上等

サーバーサイドと画面(クライアント)を分けろって話で
一つのアプリでそんなことやっても無意味

976 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 14:51:46.94 ID:BLgAYnXt0.net]
そんな訳は(規模にもよるけど)当然無い。

977 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 15:03:12.76 ID:Ih3UpniZ0.net]
「既存メソッドの処理なんですが?ちょっと時間かかっちゃうんですよねー
プログレスバーとかつかないですかね?
処理の進行状況も表示して」

こんな簡単な要望ですら
そいつはケツまくって逃げ出すよ
花京院の魂を10000個ぐらい

978 名前:かけてもいい絶対だ

処理と表示は一見関係ないように見えて実は密接に関係していて
絶対に切り離せない

不可能なことを可能だと言う技術者を信用してはならない

何年もやっていてこの程度の因果関係もわからんような雑魚から
教えを請いてはならない
[]
[ここ壊れてます]

979 名前:デフォルトの名無しさん [2019/10/06(日) 15:33:01.89 ID:ZrFisUz2a.net]
>>956
何でユーザーコントロールの話になるのかよく分からんけど、

>ユーザーコントロールクラスの内部クラスとして作る
この部分は変だけど(内部クラスにする必然性がない)、その後の部分はそういう認識でいいと思うよ。

FormでもUserControlでも、基本的に書いていいのは上に乗ってる
コントロールを操作するコードとイベントハンドラだけ。



980 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 18:11:15.25 ID:SEX7i46w0.net]
>>962
C#にはIProgress<T>というクラスもタスクも横断的に使える便利なIFがあるから
あんたが思っているようなことはない

つか、偉そうなのにこれ知らないのか?

981 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 18:45:20.34 ID:pgF6GacOr.net]
自分は頭が悪すぎてIProgress<T>のどこが便利なのかわからないので
違う仕組みでやってる

982 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:21:15.12 ID:Ih3UpniZ0.net]
>>964
はぁ?
既存の何も考えずに作ったメソッド(内部)のプログレスバー(表示)を分離したまま実装できないだろってのが俺のレスの主旨なんだけど
理解した上で反論しようとしてんの?
Mr.ドン・キホーテ?

983 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:26:16.12 ID:SEX7i46w0.net]
>>966
いや、簡単に実装できるよ
君が知らないだけで

984 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:36:10.31 ID:Ih3UpniZ0.net]
>>967
あっそ、絶対無理なのにバカだなお前
テメーはさっさと技術者やめて詐欺師に看板替えろ

985 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:38:07.20 ID:fpn8B7qc0.net]
昔はイベントハンドラで実装してたな
いまならObservablePropertyあたりでやるんかねRxとかどうも上手く使えてる気がしない

986 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:43:10.12 ID:fpn8B7qc0.net]
>>968
いやできるだろう

987 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:53:20.87 ID:SEX7i46w0.net]
>>969
確かにmvvmだとReactiveProperyを上位に伝搬するのが楽だし俺もそうやっている
でもFormsの話のようだからIProgress<T>を出しました

988 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:02:50.65 ID:dGqjDCnwr.net]
FormsだとしてもIProgressは不便だと思うよ

989 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:07:52.17 ID:DbrcOQgy0.net]
>>972
なぜ?



990 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:18:09.12 ID:LuDxacSca.net]
ID:Ih3UpniZ0って昨日iniファイル以外認めないって主張してた御仁か
15〜20年くらい前のスキルしかもちあわせてない人でしょ
技術的なキャッチアップも人間性の向上も怠って年齢だけ重ねてる人だからこういう物言いしかできないんだろう

こういう人のいうことは表向きだけはいはいって聞いたふりして全部無視して問題ないよ

991 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:27:29.93 ID:dGqjDCnwr.net]
ほっとくとイベントの参照が残ってるのでひとりでに消えなくなってしまう

992 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:39:48.56 ID:fpn8B7qc0.net]
>>975
backgroundworkerを自前で作らずにformに貼って、イベントもデザイナから作るといいよ

993 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:40:18.92 ID:DbrcOQgy0.net]
>>975
ソース

994 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 23:21:15.76 ID:zXgX+PCrr.net]
ソースもくそもみんなそう

995 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 23:28:20.92 ID:zXgX+PCrr.net]
c# メモリリーク イベントハンドラ

996 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 00:20:35.80 ID:ilJKwzD30.net]
だからIProgressでメモリーリークするソース出せってば

997 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 07:55:39.68 ID:PXpMNqVGd.net]
IProgressはインターフェースなんだからそれ自体がリークってのはおかしいでしょ。使い方が悪いだけでは…?

998 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 08:49:33.99 ID:jeQW+1qp0.net]
オッペケは自殺して転生して自分の頭のバグ直してこいやボケ

999 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 18:13:25.65 ID:jsaaj6Lxr.net]
インターフェイスでメモリリークするわけがないはその通り

ただ単純なイベントハンドラベースだとうっかりメモリリークさせやすい
コンポジションなどで保持したままで寿命が違うと特にそう

c++だとメモリリークしやすいが使い方が悪い!ちゃんとつかえ!
という話で済まないので進化し続けてる

そのProgressというけど偽りでProgressと言う動作と何の関係もない
実際はどこからも使われないく自分で使うコードを書くだけなのでProgressである必要もない
どこが便利で使ってるのかさっぱりわからない



1000 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 18:17:14.49 ID:jsaaj6Lxr.net]
見返すとめちゃくちゃだけどIpregressは別にProgressに高度に特化されてないので
使う意味は薄いのではないか?
nさんがどう思うか知らないけど

1001 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 19:14:35.69 ID:ilJKwzD30.net]
ここまで具体的なコードは無し

1002 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 20:06:05.04 ID:GbsEPSwo0.net]
>処理と表示は一見関係ないように見えて実は密接に関係していて
>絶対に切り離せない

ちゃんと考えて設計してもそうなるなら、絶望的にセンスがないわ
おまえに不可能なことが技術的に不可能なこととは違うよ

1003 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 20:18:37.37 ID:9eyAES450.net]
次スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.5ch.net/test/read.cgi/tech/1570446977/
ワッチョイ無しは
ふらっと C#,C♯,C#(初心者用) Part141
https://mevius.5ch.net/test/read.cgi/tech/1544838367/

1004 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 21:20:35.04 ID:jsaaj6Lxr.net]
>>985
理解できないなら無理にレスしなくてもよい

1005 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 21:45:53.70 ID:/mGKDAACa.net]
>>987


1006 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:15:03.54 ID:QEMDFqtE0.net]
>>987


1007 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:16:20.26 ID:ilJKwzD30.net]
>>988
はよ

1008 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:40:26.54 ID:H1QHa3mL0.net]
>>986
バカだろ
物理的に不可能だろ
既存処理にプログレスバー付けてみろよ

1009 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:42:41.65 ID:d+4AHn7d0.net]
IProgressというか、その実体のProgres<T>クラスは、普通に使えばメモリーリークなんか起こらないんだよな
イベントじゃなくてActionデリゲート使ってメンバ変数など使わずにローカル変数で定義して
処理を実行するたびにインスタンス作ればいいだけ
ラムダ使えない人はご愁傷さまとしか言えません



1010 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:50:14.57 ID:jsaaj6Lxr.net]
>>993
外から複数のハンドラ指定して実行したい場合どうすんの?
Actionにどうやって渡す?

1011 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:52:08.75 ID:jsaaj6Lxr.net]
それと
> 普通に使えばメモリーリークなんか起こらないんだよな



> イベントじゃなくてActionデリゲート使ってメンバ変数など使わずにローカル変数で定義して
> 処理を実行するたびにインスタンス作ればいいだけ

は矛盾してるよね?

1012 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:53:10.67 ID:s9APxj2Ed.net]
>>994
複数のアクションを実行するアクションを渡す

1013 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:59:52.41 ID:d+4AHn7d0.net]
>>995
サンプルぐぐっても、イベント使ったりクラスのメンバ変数にして使い回すって方が邪道じゃないかな?

1014 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 23:21:18.60 ID:cpqLM3c60.net]
>>986
多分切り離すとか分離するの意味を根本から間違えて捉えてるんだと思うので無駄だよ。関心の分離の基本がわかってない

1015 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 02:47:43.58 ID:mpcY/05P0.net]


1016 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 02:47:58.78 ID:mpcY/05P0.net]


次スレ

ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.2ch.net/test/read.cgi/tech/1570446977/

1017 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 84日 11時間 11分 35秒

1018 名前:1002 [Over 1000 Thread.net]
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

1019 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています








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

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

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