暇つぶし2chat TECH
- 暇つぶし2ch702:デフォルトの名無しさん
19/09/20 00:34:05.25 H/0RNa6Fa.net
>>687
Microsoft Docs見てきたが明言はされてないのか……ただ
URLリンク(docs.microsoft.com) ではDictionaryなどで使われるとあって
URLリンク(docs.microsoft.com) ではDictionaryのKeyアクセスと同様のハイパフォーマンス集合操作を提供、とあるから
HashSetで扱う型についてもGetHashCode()の実装は必要なはず

703:デフォルトの名無しさん
19/09/20 00:41:13.96 WJxc7oYHa.net
>>689
質問の感じから今現在自分で実装したものがあるんでしょ?それを載せたほうが微妙な解釈の違いに対しても最適解が出してもらえそうな気がするけど

704:デフォルトの名無しさん
19/09/20 00:57:02.51 JBznBYO/0.net
キーの重複は
GetHashCode() の一致 → Equals()
みたいだな
GetHashCode() は重複しにくいメンバの GetHashCode() で
Equals() で完全一致の判定をすれば大丈夫そう

705:デフォルトの名無しさん
19/09/20 00:58:18.71 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:デフォルトの名無しさん
19/09/20 01:02:47.93 Z+Dr4fZe0.net
//データ追加
var ParameterList = new List<Parameter>();
//重複排除
ParameterDistinct qualityComparer = new ParameterDistinct();
IEnumerable<Parameter> ParameterLister = ParameterList.Distinct(qualityComparer);
でやってみたんだけど重複がでたんだけど何かまずいだろうか
参考にしたところはDatetimeは使っていなかったので駄目なのかな

707:デフォルトの名無しさん
19/09/20 01:09:28.14 73yDKPmS0.net
DateTime をつめるときに DateTime.Now とか使ってると ミリ秒で


708:差がでてるかもしれない。 DateTime を == で比較すると 内部的には DateTime.Tick 同士で比較するから



709:デフォルトの名無しさん
19/09/20 01:21:43.10 Z+Dr4fZe0.net
なるほどDateTime.Nowは使っているので調べてみます。
ありがとうございました!

710:デフォルトの名無しさん
19/09/20 01:31:14.65 v9n6qqFa0.net
なんで単なる取得でメモリ使うんだよ
unsafeかなんか付けて昔ながらの方法でやるのが一番速い

711:デフォルトの名無しさん
19/09/20 01:35:53.41 JBznBYO/0.net
ライブラリ作ってるわけでもないのにunsafeとか論外なんだが
その上unsafe付けてやることが2重ループでの完全一致検索とかじゃ
どうせHashSetのパフォーマンスに大敗する

712:デフォルトの名無しさん
19/09/20 02:27:15.79 pTVI5tHY0.net
NGID:JBznBYO/0

713:デフォルトの名無しさん
19/09/20 11:53:09.00 URFVhEsV0.net
git使わずに、自宅のデスクトップ環境とノートPCのプロジェクトファイル類を同期させたいです。
現在Onedrive使ってますが、binやobj配下まで同期されるのが残念な感じ。
binやobjの出力先はWPFプロジェクトなら変更できましたが、ASP.NET coreプロジェクトでどう変更するのか不明
VSTSで上記を実現または他の方法あったりしますか?
ちなみに現在はVS pro サブスクリプションに入ってます

714:デフォルトの名無しさん
19/09/20 12:00:15.35 Ew/p9Snjp.net
Microsoftの開発ソフト使ってんならOneDrive使えるだろ?

715:デフォルトの名無しさん
19/09/20 12:02:00.53 Ew/p9Snjp.net
最後にcleanすりゃいいだけだから。
もしくは同期ドライブ直接はコンパイルしないとかな。

716:デフォルトの名無しさん
19/09/20 12:02:42.34 bfuJBtmYd.net
svnを使う
onedrive以外の場所で開発してonedriveフォルダに必要なファイルを同期ツールとかでローカルコピーするようにする
なんでonedriveはokでgitがngなのかがわからんと提示しづらい

717:デフォルトの名無しさん
19/09/20 12:48:37.25 uLmjcKMSa.net
OneDriveって特定のフォルダだけ同期しない設定にできないのか
6,7年前にオンラインストレージが流行った時には
タダで大容量で高機能のがいっぱいあったのになんだか退化してるよねw

718:デフォルトの名無しさん
19/09/20 12:56:56.83 uH7l3KIr0.net
labelの文字列の一部を太文字にしたり色を変えたりといった表現をしたいのですが
何か良い方法はないでしょうか?
コントロールではなくメインプログラムのほうで操作できるようにしたいです
labelと同じ見た目ならなんでもよいです
textboxの様な感じではなくlabelのような感じが目標です

719:デフォルトの名無しさん
19/09/20 13:13:16.41 WW0nVoDA0.net
のような感じと言われてもどういうのがNGでどういうのがOKなのかよく分からんが
手軽なのはRichTextBoxを使うことで
そうでなければPaintイベントで全部自前描画ということになる

720:デフォルトの名無しさん
19/09/20 14:28:02.26 9RWO75b+d.net
>>700
ちと面倒だけど、ブランチとか使えるのが便利だから、サーバ立てるまでOneDriveのフォルダ上にgitのリポジトリ作ってた事がある。
OneDrive内の任意のフォルダの中でgit init --bareするだけ。
したら、そのフォルダをremoteとして登録出来る。
あとは任意のタイミングでpush/pullするだけ。
作業フォルダをOneDrive内に置いて自動的に同期もやったけど、objとかが共有される問題よりも、同時に開いて悲惨なことになる事があったので、今はしてない。
(競合したら「もとのファイル名-端末名」ってファイルが大量にできる)

721:デフォルトの名無しさん
19/09/20 15:01:20.41 riKFjdTV0.net
ああ、確かにリポジトリをonedriveに入れるのが一番スマートかも
昔dropboxにsvnリポジトリ作ってたことあるわ

722:デフォルトの名無しさん
19/09/20 17:01:09.25 9F0x+J+E0.net
メモリ消費は税のようなもの
しょとくだけに
消費だけに

723:デフォルトの名無しさん
19/09/20 19:34:13.48 dvP1e2Mn0.net
環境はWindows formアプリです。
TableLayoutPanel と DataGridView の使い分け方がわかりません。
datasource property の有無だけ?

724:デフォルトの名無しさん
19/09/20 19:53:22.57 +tHFIfxx0.net
>>705
自分で描画するのはメソッド作るのも指定するのもめんどくさいよ
URLリンク(dobon.net)
>>706の言う通りRichTextBoxをBorderStyle.Noneにして背景色を合わせた方が楽じゃないかな
どうしても文字以外を透過させたいとかならともかく
>>710
HTMLのテーブルとExcelの表が同じに見えるのならそうかもね

725:デフォルトの名無しさん
19/09/21 10:00:25.29 DmWWMvK20.net
コンソールアプリが作れればいいやと思ってpaizaでシコシコ勉強してますが他にどんなことすればいいですか?
目標は外部のファイルを読み込んでコンバートするアプリを作ることです。

726:デフォルトの名無しさん
19/09/21 10:08:45.30 ZhDsxJHf0.net
外部のファイルを読み込んでコンバートするアプリを作ればよいのでは?
そんなに難しくないよ
何をどうコンバートするかにはよるかもしれないけど

727:デフォルトの名無しさん
19/09/21 11:05:31.91 wLZyePcca.net
プログラミング未経験者です
すいません、ちょっと趣旨から外れるかもしれませんが質問です
電気(強電)、計測(コンビナートとかのプラント計装)の知識ってC#で活かせますか?
C#の求人や書籍を検索すると、電気回路の制御ソフトとか計測器制御とかがヒットするので気になって質問させていただきました

728:デフォルトの名無しさん
19/09/21 11:05:33.11 DmWWMvK20.net
SQLもどき文をパース?して出力したいです

729:デフォルトの名無しさん
19/09/21 11:42:35.85 uzyGV4kra.net
>>714
FAの制御系だったら測定器やPLCとの通信がメインになるからそれなりに知識あったほうがいいとは思うよ

730:デフォルトの名無しさん
19/09/21 12:00:01.02 wLZyePcca.net
>>716
ありがとうございますm(_ _)m

731:デフォルトの名無しさん
19/09/21 13:30:42.97 ox/L2PXG0.net
>>715
SQLの整形をしたいの?
SQLって方言が結構あるしパース(字句解析+構文解析)自体の難易度も初心者がやるものじゃ無いと思う

732:デフォルトの名無しさん
19/09/21 13:39:06.70 cHmpI1M9M.net
>>715
SQLのパーサーなんて出来合いのライブラリがいくらでもあるよ
自分でわざわざ使い物にならないゴミを作って時間をドブに捨てる必要はない

733:デフォルトの名無しさん
19/09/21 14:11:59.87 gZFDeRYs0.net
オライリーのlex & yacc がsqlのパースの
サンプルだったけど
C#は対応していないかと

734:デフォルトの名無しさん
19/09/21 14:57:58.99 8edEcM0R0.net
すまんが、スレッドを指定して実行ってできないもんなの?
指定できればロックが必要な箇所が減っていい気がするんだけど・・・・どうなんだろう

735:デフォルトの名無しさん
19/09/21 15:03:52.53 gZFDeRYs0.net
スレッド起動しないかWaitしておけば、
良いんじゃね

736:デフォルトの名無しさん
19/09/21 15:21:35.32 Ef6g+Zfma.net
>>721
Producer-Consumerパターンを使って特定スレッドでだけ処理するのはどう?
BlockingCollection<T>使うと楽に実装できるよ

737:デフォルトの名無しさん
19/09/21 15:59:40.26 3kDOCDXv0.net
Dllimortで呼び出す関数の引数にはジェネリックは使えないのでしょうか?

738:デフォルトの名無しさん
19/09/21 17:32:33.11 CRAyGleP0.net
使えない

739:デフォルトの名無しさん
19/09/21 17:41:38.79 dMKiDHPTa.net
>>724
どんな使い方を想定してるの?
っていうかそれ、呼び出されたアンマネージド関数側はどうしたら


740:いいの?www



741:デフォルトの名無しさん
19/09/21 17:50:18.96 GoVsp8loa.net
>>726
.NETのジェネリックは実行時に特殊化されるから、技術的にはそんなに無茶な話ではないよ

742:デフォルトの名無しさん
19/09/21 17:57:47.91 rw4WtgZd0.net
まあどのみち今のところできないから、いんぽ関数自体はIntPtrで受け取って
Marshal.PtrToStructureとかでごにょごにょするジェネリック関数でラップする感じでやるしかないね
SystemParametersInfoとかでそういう欲求があること自体はわかる

743:デフォルトの名無しさん
19/09/21 17:59:11.73 ox/L2PXG0.net
>>727
それじゃ質問者に回答してやってくれ

744:デフォルトの名無しさん
19/09/21 18:12:58.46 GoVsp8loa.net
>>729
質問者を馬鹿にするほどには突飛な発想ではないということだよ
.NETのジェネリックがどのように実装されているかを知っていれば、できてもいいと考えてもおかしくはない

745:デフォルトの名無しさん
19/09/21 18:32:15.65 dMKiDHPTa.net
十分突飛だと思いますけどね。
これ、アンマネージドに限らない。
マネージドだろうが、他のアセンブリで既に定義されてる
非ジェネリックなstaticメソッドをジェネリック化したいと言ってるのと同じ。
だから、呼ばれた側は何すりゃいいんだよw

746:デフォルトの名無しさん
19/09/21 18:43:55.34 GoVsp8loa.net
>>731
CのAPIだと、サイズが同一の異なる型を一緒に扱ったり、条件に応じてポインタの指す型の解釈を変えたりとか珍しくないでしょ

747:デフォルトの名無しさん
19/09/21 18:44:55.69 dMKiDHPTa.net
>>732
そういうのは共用体とかオーバーロードで解決できるでしょ。
ジェネリックを使うって発想は意味不明だよ

748:デフォルトの名無しさん
19/09/21 18:46:58.39 3kDOCDXv0.net
>>726
具体的にはLPVOID引数で自己責任ながら参照型からref、outやintなどの値渡しまで色々な型のオーバーロードを作って実際にちゃんと機能しています
なので一々オーバーロードとそのラップだけで30行ほど使ってしまってる現状が無駄に思えてどうにか方法ないかなと

749:デフォルトの名無しさん
19/09/21 19:46:47.84 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:デフォルトの名無しさん
19/09/21 19:58:38.68 A1p2bytl0.net
c# で必殺技みたいなメソッドがあったのですが思い出せません。どなたかご存知ないでしょうか?

751:デフォルトの名無しさん
19/09/21 20:03:15.85 y68BphyG0.net
>>736
リフレクション?

752:デフォルトの名無しさん
19/09/21 22:34:09.60 rnFOOH9a0.net
>>736
privateメソッドを外部から無理矢理呼び出すやつ?

753:デフォルトの名無しさん
19/09/21 22:42:59.80 70YMyRx+a.net
リフレクションならDynamicInvoke()がなんともかっこいいメソッド名
>>736のはおそらくはデストラクタあたりを想定してるんじゃないかと思うけど

754:デフォルトの名無しさん
19/09/21 23:13:56.71 GoVsp8loa.net
DangerousAddRefもなかなか

755:デフォルトの名無しさん
19/09/22 01:11:49.71 YKAr5fZO0.net
>>736
オーバーライド!!

756:デフォルトの名無しさん
19/09/22 01:26:33.02 01VTDUEXM.net
オーバーロード!!

757:デフォルトの名無しさん
19/09/22 01:39:55.72 V8FjsYeid.net
>>736
ラムダ式!

758:デフォルトの名無しさん
19/09/22 07:51:48.39 Wx+hr3d10.net
>>718
>>719
さんきう
とある製品のRDBMSのSQLに独自の書き方やら関数やら記法やらが混じってるからなんとかしたかったんだけどライブラリとやらを使えばいけるのかな。

759:デフォルトの名無しさん
19/09/22 08:33:40.66 6LYYKR960.net
1) githubで"sql parser"と検索
2) C#で絞り込む
3) 上から順に試す
4) 好みのが見つかったら改造を試みる
少なくとも1から作るよりは圧倒的に楽だし勉強にもなるよ

760:デフォルトの名無しさん
19/09/22 09:28:54.26 p/RNYxc40.net
>>726
dllってことは既にasm化されてるんだから型なんて関係なく受け取ったもんを問答無用でバイナリとして処理するだけだろ
C#はそういうのをコーディング段階で防いでるだけであって

761:デフォルトの名無しさん
19/09/22 12:11:14.62 PittLpUUa.net
>>746
~だろ
馬鹿ほどぞんざいで偉そうな口調なのは法則なのかねwww

762:デフォルトの名無しさん
19/09/22 12:16:38.76 PittLpUUa.net
少なくともC#のジェネリックはstringとbyte[]を透過的に扱ったり、
longをint2つと透過的に扱ったりするための仕組みじゃありませんwww
だからそういうのは共用体やオーバーロードを使うんだってw

763:デフォルトの名無しさん
19/09/22 12:28:14.42 GskCdwYSM.net
端的に答えとけばいいんだよ
余計な講釈を垂れるな

764:デフォルトの名無しさん
19/09/22 22:36:43.63 584djEVu0.net
BitmapをBitmapDataにしたいのですが、使用されたパラメータが有効ではありませんと言われてしまいます。
ファイルから読み込んだbitmapは変換できるのですが、このようにコード上で作ったbitmapはダメです。
何がいけないのでしょうか?
Bitmap trimBmp = baseBmp.Clone(rect, baseBmp.PixelFormat);
BitmapData bitData = trimBmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

765:デフォルトの名無しさん
19/09/22 22:44:27.94 6/LwH+kT0.net
rectで切り出した後、その切り出した後のビットマップから
さらにrectで一部分のロックしようとしてるけど大丈夫? 全面じゃない?

766:デフォルトの名無しさん
19/09/22 22:53:39.23 584djEVu0.net
>>751
baseBMPからrectで切り抜いてますが、trimBMPにとってはrectは全面だと思うのですがダメなのですかね?
でも
Bitmap bmp = new Bitmap(100,100)
みたいな素画像でもやっぱりLockBitsできないです

767:デフォルトの名無しさん
19/09/22 23:53:45.92 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:デフォルトの名無しさん
19/09/23 01:34:07.15 CAyWI0VB0.net
private Point CalcPopupLoction(Form launcher, Form popupForm) {}
ボタン押したときに上部に表示する モーダルな popup フォーム の位置を計算するメソッドを書きました。
ボタンが左の方にあると、親フォームの左枠をはみ出さないように、popupForm は左揃えで表示。
真ん中へんにあると中央揃え、右端ならボタンとpopupForm を右揃えで表示する感じです。
1つ目の引数の良い名前が思い付きません。
主にボタンを想定してる引数です。
launcher (発射台)はどうもしっくりきません。
parent や baseForm はなんかおかしいのでやめました。

769:デフォルトの名無しさん
19/09/23 03:14:26.31 QdBzCxoka.net
>>754
そもそもそんなメソッドいらんでしょ。
ポップアップがどこに表示されるべきかはボタンを持つFormが知っているんだから
そいつに聞く(そいつのプロパティーとして実装)のが一番

770:デフォルトの名無しさん
19/09/23 03:28:32.57 QdBzCxoka.net
あー、右に揃える場合もあるのね。
じゃあボタン持ってるFormに
void ShowModalPopup(Form popup)
みたいなメソッドを持たせればいい

771:デフォルトの名無しさん
19/09/23 03:42:05.85 ltbH9/U50.net
こういう使い回しが効きそうなのはいちいちフォームに実装しないで拡張メソッドにでもした方が

772:デフォルトの名無しさん
19/09/23 03:56:41.99 QdBzCxoka.net
本当はボタン持ってる方のFormに
interface IDialogOwner:IWin32Window
{
  HorizontalAlignment DialigHAlignment { get; }
  Rectangle Rectangle { get; }
}
みたいなのをかぶせて、Popupする方のFormでShowDialogをオーバーロードして
void ShowDialog(IDialogOwner owner)
みたいにするのがいいのかも。
酔っぱらってるんでよく分からなくなってきたw

773:デフォルトの名無しさん
19/09/23 08:49:12.84 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:デフォルトの名無しさん
19/09/23 08:58:35.82 ZRlL2jPD0.net
URLリンク(docs.microsoft.com)

775:デフォルトの名無しさん
19/09/23 12:17:14.67 3qdqqJ07F.net
bitmapinfo とか
dibsection とか
bitmapinfoheader とか
勉強してみたら

776:デフォルトの名無しさん
19/09/23 14:47:11.75 vpc5pW+6d.net
>>759
TaskCompletionSourceだっけ?うろ覚えですまんが、jsのPromiseオブジェクト的に使える。

777:デフォルトの名無しさん
19/09/23 15:20:09.58 LbTjUCX60.net
taskをstartしてないだけだから...

778:デフォルトの名無しさん
19/09/23 15:46:49.67 s6/Kehza0.net
>>763
ありがとうございます!

779:デフォルトの名無しさん
19/09/23 18:09:27.70 7f5aVpAAd.net
どういたしまして!

780:デフォルトの名無しさん
19/09/23 19:11:24.16 24/7TZbh0.net
ID:QdBzCxoka
何の話してんのこの人
>>754
変数名が思いつかないとかはこのスレじゃなく
クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
スレリンク(tech板)

781:デフォルトの名無しさん
19/09/23 22:40:56.88 6ZQTgZjHa.net
>>766
交通整理バカw
設計が間違ってるのに名前付けて何の意味がある

782:デフォルトの名無しさん
19/09/23 22:48:38.96 CAyWI0VB0.net
>>766
レスありがとうございます。
そんなスレあるの知らなかった。

783:デフォルトの名無しさん
19/09/23 23:35:14.83 CAyWI0VB0.net
>>754
private Point CalcPopupLoction(Form launcher, Form popupForm) {}
上記は下部のボタンの位置に応じて、大きさのことなるpopupForm の表示位置を計算するメソッド
exportButton_Click 内で、
ShowDialog(); で表示する popupForm に戻り値を設定
URLリンク(i.imgur.com)

784:デフォルトの名無しさん
19/09/24 00:01:07.45 OEzHH54a0.net
>>754
・Loctionて何
・ボタンの置いてあるオーナーウィンドウと対象のボタンを引数に取った方がいいと思う
・計算だけなら全部Rectangleでいいんじゃないの
Rectangle CalcPopupLocation(Rectangle Owner, Rectangle TargetButton, Rectangle Popup)

785:デフォルトの名無しさん
19/09/24 00:03:53.21 ftn8dtDua.net
>>769
だからさ、そのメソッドをどこに書くおつもり?
ポップアップを左右どちらに寄せるべきかを知ってるのは特定のFormだけのはずなのに
その例のllauncherの型がFormってのは変じゃないか?
そもそも何で「左右どちらに寄せるべきかを知ってる」奴のメソッドとして実装しないの?
それなら引数で渡す必要ないと思うんだけど。

786:デフォルトの名無しさん
19/09/24 00:09:30.85 ftn8dtDua.net
>>770
必要な情報は
(1) 左右どちらに揃えるか?(HorizontalAlignment)
(2) 揃える位置のx座標
だけだね

787:デフォルトの名無しさん
19/09/24 11:39:03.69 vbZsX/Wo0.net
書き込みは、人を憎んでコードを憎まずのこころで行いましょう。
たとえクソコードであっても悪いのは書いた人だけです。
コードやプログラミング言語に罪は一切ありません。
コードの悪口はやめましょう。
クソコードの修正と言わず、リファクタリングといえばいいのです。
大量殺人犯や c# プログラマーの醜い心はリファクタリング不可能ですが、コードのリファクタリングはカンタンですよ。
URLリンク(www.google.co.jp)

788:デフォルトの名無しさん
19/09/24 12:11:17.28 yrtqWHxIM.net
性格の悪さもリファクタリングしてくれ

789:デフォルトの名無しさん
19/09/24 14:58:01.43 oiN+60axF.net
性格はコードに滲み出るよ

790:デフォルトの名無しさん
19/09/24 23:29:02.86 OoYPx0Tk0.net
性格は分からないけど姿勢みたいなものは見えると思ってる
こんなコピペばかりして少しはおかしいと思わないのかな?とかこんな古い書き方して言語の文法ざっとでもいいから一通り見たのかな?とか
いいコードを書こうとしてる人とそうでない人の差ってすごくよく分かる。本当に能力無くて頑張って頑張ってるのにひどいって場合もきっとあるんだろうけど

791:デフォルトの名無しさん
19/09/24 23:44:57.44 3clb0+hp0.net
ようわからんけど動いてるからヨシ!

792:デフォルトの名無しさん
19/09/25 07:36:43.68 apbfD+2I0.net
式木がイケてるらしいですが使いどころが解りません
プロの皆さんはどこで使ってますか?

793:デフォルトの名無しさん
19/09/25 10:16:37.93 HV92OfVjM.net
>>778
使わない
高度なフレームワークを作るための機能であり、ドカタグラマには全く必要ないから忘れていいよ

794:デフォルトの名無しさん
19/09/25 22:57:19.53 5YRgoX3y0.net
>人を憎んでコードを憎まず
逆じゃないんかおい

795:デフォルトの名無しさん
19/09/25 23:01:24.46 1MbrNFaz0.net
自分より給料貰ってる先輩(笑)が
クソコードを産み落としていた場合は人もコードも憎む
というか蔑む

796:デフォルトの名無しさん
19/09/25 23:16:09.44 5YRgoX3y0.net
何をもってくそコードと言ってるのか

797:デフォルトの名無しさん
19/09/25 23:38:23.64 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:デフォルトの名無しさん
19/09/25 23:54:44.99 NtFNmlTfp.net
>>778
ドカタだけどlinqのwhereメソッドの引数を動的に生成するときに使った
ここ参考になるよ
URLリンク(www.atmarkit.co.jp)

799:デフォルトの名無しさん
19/09/26 00:03:29.50 68XB546j0.net
>>783
ぜんぜん許容範囲だな!
その程度でくそ呼ばわりされたらたまらん

800:デフォルトの名無しさん
19/09/26 00:08:48.21 QoSQSwcY0.net
>>783
>>switchを使わず延々とif-else if分岐
>>マジックナンバーだらけ
>>クラス内のあらゆる場所から明示されず書き換えられるフィールド
>>メソッド1個300行以上
>>リソースでもFormsでもない普通のクラスが4000行
今直面してるのにまさに当てはまっててもう
>>コレクションはほとんどList
こっちはListどころか配列しか使わないんだぜ。もう書き方が完全にC

801:デフォルトの名無しさん
19/09/26 00:09:16.61 NU/jFtK40.net
メソッド以外はどれも影響は大きくないし
多少大きくてもテストできればなんとかなる
ちょっとした文化の違い程度の話だ

802:デフォルトの名無しさん
19/09/26 00:10:34.86 NU/jFtK40.net
初心者が一見してくそ呼ばわりするコードはたぶんくそじゃない
わかるから細かい粗が目に付く
普遍的恐怖を知るべきだ

ぐちゃぐちゃな循環参照
テストできないメソッド
う そ っ ぱ ち の 名 前

803:デフォルトの名無しさん
19/09/26 00:15:27.94 ThQ6mTfg0.net
突然現れるlinqの長々としたクエリ式
せてめメソッド式にしてくれ

804:デフォルトの名無しさん
19/09/26 00:18:57.61 NU/jFtK40.net
しかしC#いつのまにやらパターンマッチまで入ってたんか…

805:デフォルトの名無しさん
19/09/26 00:28:52.23 ZFJdpCv/0.net
sqlを全て文字列結合で作ってるうえに500行以上あったときは後輩に丸投げした

806:デフォルトの名無しさん
19/09/26 03:16:32.66 wZcpOMsUd.net
>>780
バグやコードを憎んで、人を憎まず。
こんなこと言ってるプログラマーは意識高い系の偽善者のクズ。

807:デフォルトの名無しさん
19/09/26 11:30:46.50 Av/VHz3vp.net
あいつに任せた俺の責任だからって最初から頭数に入れていないから憎みもしない。必要なら全面書き直しもいとわない。

808:デフォルトの名無しさん
19/09/26 20:59:42.99 7bLC7yvk0.net
なんでListがいかんのか?

809:デフォルトの名無しさん
19/09/26 21:12:02.17 aLxxu1ok0.net
ビットで判定とるのがいかんのか?

810:デフォルトの名無しさん
19/09/26 21:18:55.30 fUfQlO4W0.net
7f63-aXvPからクソグラマーの臭いがする

811:デフォルトの名無しさん
19/09/26 21:21:22.68 fUfQlO4W0.net
>>794
時と場合を考えて最適なコレクションを検討しろ
>>795
特別な理由がないなら褒められないな

812:デフォルトの名無しさん
19/09/26 21:37:16.13 aLxxu1ok0.net
ZDDをboolの配列で評価するの?orz

813:デフォルトの名無しさん
19/09/26 21:40:05.70 fUfQlO4W0.net
>>798
特別な理由がないならと言ってるだろうが

814:デフォルトの名無しさん
19/09/26 22:03:13.49 QoSQSwcY0.net
windows formsの書き方についてなんですけど
メイン画面にタブがいっぱいあってそれを切り替えて……みたいなアプリなんです
んで中身見たらFormクラスが1万行オーバーで。画面一つだからって何もかも突っ込んでる感じなんです
画面というかフォーム一つで1クラスみたいなのが通常の書き方なんでしょうか

815:デフォルトの名無しさん
19/09/26 22:10:14.52 Av/VHz3vp.net
普通はブロックに分ける。

816:デフォルトの名無しさん
19/09/26 22:13:41.16 fJKX2zi80.net
>>800
タブ毎にユーザーコントロールを作ればスッキリはすると思うよ

817:デフォルトの名無しさん
19/09/26 22:23:35.32 lGqB6oAG0.net
>>800
「通常」はどうか知らないけど例えば
MDIアプリケーションを作成する
URLリンク(dobon.net)
こういう作り方もある
あと一つのフォームに普通のコードはともかくコントロール(InitializeComponentのなか)を多く詰め込みすぎると起動に時間がかかるようになる
現状で問題ないのならそこは気にすることは無いが

818:デフォルトの名無しさん
19/09/26 22:53:44.29 d7SzDWCz0.net
>>800
parcial class でタブごとにファイルわける。

819:デフォルトの名無しさん
19/09/26 23:38:48.19 QoSQSwcY0.net
なるほど参考になりました。
今思えば既にタブごとに部分クラスわけしてファイル別になってたような気がしないでもない……となると実質一クラス10万行か。笑えない

820:デフォルトの名無しさん
19/09/27 06:43:42.33 N2euUEC0M.net
>>800
1000行超える時点でオブジェクト指向できてない証拠

821:デフォルトの名無しさん
19/09/27 08:33:35.75 1dreLMG90.net
フォーム以外で使わない処理を
わざわざ外部のファイルやクラスに作る必要なんてある?

822:デフォルトの名無しさん
19/09/27 08:42:46.73 eAUqf5T9a.net
>>807
それで可読性が高まるならやる意味はある

823:デフォルトの名無しさん
19/09/27 09:06:13.84 ikgA/i06d.net
C#は1ファイルに全部書けるので必要ないです

824:デフォルトの名無しさん
19/09/27 10:07:45.04 NnPkuVhE0.net
再利用しないならそれでいいんじゃね?

825:デフォルトの名無しさん
19/09/27 22:47:27.06 uik+OEWH0.net
お前を含めた全人類が未来永劫そのコードに手を加えない保証があるなら好きにすればいい

826:デフォルトの名無しさん
19/09/27 23:28:58.48 MmWjZkvh0.net
ググったらタブ大量にあるような場合>>802がクラス分割のためのメジャーな手法なのね

827:デフォルトの名無しさん
19/09/28 08:43:54.27 uN9Z5b+x0.net
游ゴシックの英数文字をMeasureStringで取得した矩形を使ってDrawStringすると高さ不足で表示されない
矩形を使わなきゃ表示はできるから良いけどもやもやする

828:デフォルトの名無しさん
19/09/28 10:37:47.08 elJniuwU0.net
フォント周りおかしいのはMS伝統では
ないだろうか?


829:デフォルトの名無しさん
19/09/28 14:09:54.66 51nJyp6ja.net
そんなざっくりした話じゃ、どうせお前自身のコードのバグだろって
反応しか返ってこないと思うw

830:デフォルトの名無しさん
19/09/29 01:52:26.51 sVRG+wNI0.net
インターフェイスと抽象クラスってどう使い分ければ良いのでしょう?
ググってもよくわかりません。

831:デフォルトの名無しさん
19/09/29 02:47:00.08 TNnn17Gh0.net
インターフェースなら継承関係のない複数のクラスのように
振る舞うことができる

832:デフォルトの名無しさん
19/09/29 02:49:22.44 HU0MDVmv0.net
大雑把言えば
プロパティとフィールド(値)を保持するのがクラス
クラスのメソッド(挙動)を公開するのがインターフェイス

833:デフォルトの名無しさん
19/09/29 02:54:07.57 TNnn17Gh0.net
それが抽象クラスとなにが違うのだ?と彼は聞いているわけで

834:デフォルトの名無しさん
19/09/29 03:01:23.20 HU0MDVmv0.net
インターフェイスは値を持たないし
原則として挙動の実装も持たせない

835:デフォルトの名無しさん
19/09/29 03:20:49.12 m1n6jIU5a.net
>>816
使い分けで悩む必要はないと思うよ。
インターフェイスで目的が達成できるならあえて抽象クラスを使う理由はないのだから。
たぶん使い分けが分からないのではなく、インターフェイスの使いどころが分からないだけじゃないのか。
よくわからなくてもとにかく実際コードを書いて使ってみることが重要。
別に難しい話じゃないので使ってるうちに自ずと分かる。たぶん

836:デフォルトの名無しさん
19/09/29 03:35:49.46 TNnn17Gh0.net
多重継承的なことがしたくなったらインターフェースを使う
くらいな感じでいいのかもね

837:デフォルトの名無しさん
19/09/29 07:08:46.93 5VaVy3IA0.net
私もよくわからないんですが、インターフェースって実装内容は問わないけどこの名称のメソッドは用意しなさいよってコトですかね?
インターフェースでメソッドを定義しても、継承したクラスがそのメソッド名に合ってない実装をしてしまったらと考えるとインターフェースのメリットがイマイチピンときません

838:デフォルトの名無しさん
19/09/29 07:26:53.36 ehZkSMIn0.net
疎結合

839:デフォルトの名無しさん
19/09/29 08:56:25.44 qdFsd7WD0.net
>>823
継承したクラスで変にオーバーライドされたら…
なんて気にしたら何も書けなくなるよw
それはオーバーライドした奴の責任だから気にしてもしょうがない

840:デフォルトの名無しさん
19/09/29 09:00:39.96 TNnn17Gh0.net
それって抽象メソッドでも同じ事じゃないの

841:デフォルトの名無しさん
19/09/29 11:47:55.74 YvnTsZym0.net
多態で使うんだよ
用意しなさいってのは発想が逆で、インターフェースに定義されているプロパティなりメソッドなりが実装されていることが保障されていると考える
実際の実装は気にせずに呼ぶ側はインターフェースのメソッドを呼べばいい

842:デフォルトの名無しさん
19/09/29 11:59:54.10 J9ITXYeqp.net
抽象クラスは重複の排除で使う、インターフェイスはテストする時の視点で必要
クラスAがクラスBの機能を利用する時に
クラスAはインターフェイスに対して実装しとけば
クラスBの変更に影響を受けないし、
テストする時にクラスBの代わりを作るのがインターフェイス部分だけになる
これがもしクラスAがクラスBの抽象クラスに対して実装すると、
クラスAをテストするときに抽象クラスの不要な部分まで要求されてしまう
また複数人開発においてもインターフェイスを利用すれば各個人が独立に作業しやすくなる

843:デフォルトの名無しさん
19/09/29 12:01:49.30 3s0zt66kF.net
呼んだはずのメソッドが(インターフェースでは要求されてるのに)実装されてなかったら
コンパイルエラーじゃなくて実行時に例外吐くか
unknownmethod()みたいな呼び方してくれると便利

844:デフォルトの名無しさん
19/09/29 12:05:37.87 INBbqatbr.net
不便だろ

845:デフォルトの名無しさん
19/09/29 12:07:56.33 wmQ9rxKs0.net
クラスに由来しない振る舞いを定義するのがインターフェイスとも言えるね。
良く例示される「動物」クラスで考えると。
・「動物」は動くのだから「移動」メソッドに必然性がある
・だけど「移動」するのは動物だけではない
・いま「移動」と言うメソッドに着目して操作を行いたいとする
・「移動」は動物でも自動車でもロボットでも行う
・でも自動車もロボットも動物ではないのでいからそのメソッドの由来を「動物」クラスに求めるわけにはいかない
・加えて、動物や自動車やロボットに直系する(基底)クラスもない
・故に「移動」メソッドの由来を「動物」クラスにではなく「移動」インターフェイスに求めてみる
・・・的な。

846:デフォルトの名無しさん
19/09/29 12:08:06.40 INBbqatbr.net
実行時に例外吐くのはめちゃくちゃ恥ずかしい
コード書いたやつはバカですと言う証明
私はデバッグもできない馬鹿ですで表明してるようなもの

847:デフォルトの名無しさん
19/09/29 12:13:32.63 INBbqatbr.net
コンパイル時にエラー吐くならそこでデバッグできる
実行時エラーなら全ての場合でエラーがないことを実際に確認しなければならない
どちらが便利かわかるだろ

848:デフォルトの名無しさん
19/09/29 19:29:34.79 TNnn17Gh0.net
>>831
いい例えだね
俺も使わせてもらうわ

849:デフォルトの名無しさん
19/09/29 20:03:13.25 sVRG+wNI0.net
先日、マンガ村の運営者が著作権法違反の容疑で逮捕された。
c# プログラマもマンガ村と同様の共有システムgit等を利用し、マンガやソースをインターネットを通して共有している。
github など分散型のバージョン管理システムを利用している c#プログラマはマンガ村の管理者と同じ位置にいるといえる。単なる利用者ではない。
c# プログラマはマンガ村管理者と同一人物といえるので、著作権法違反の共同正犯として刑務所にぶち込むべき。

850:デフォルトの名無しさん
19/09/29 22:53:02.75 1CaVkali0.net
c#のインターフェイスにはプロパティも宣言できるよね
あれは実質的にはフィールドと同じ様な感覚で使えてしまう

851:デフォルトの名無しさん
19/09/29 23:37:43.33 uMWzDoEma.net
だって>>831のような解釈は時代遅れだし特にC#(というかMS系)では一般的ではないからな
今時は「動物」という一般的実在だろうが「移動できる」という抽象的性質だろうが区別せず、
実装を限定したくない場合は原則常にインターフェイスを使うのが一般的だ
特にMSの場合は顕著で、ほぼ全クラスの全メソッドをインターフェイスに定義するというスタイルを取ることが多いし、またそれを推奨してもいる

852:デフォルトの名無しさん
19/09/29 23:56:27.42 8QPFQcOxa.net
ほんとかよそれwwwww

853:デフォルトの名無しさん
19/09/29 23:59:46.39 k4CvVXqN0.net
>>837
初心者スレで珍妙な独自理論を一般的だなんて教えるのはやめれ

854:デフォルトの名無しさん
19/09/30 00:22:33.73 LVz3OUV70.net
今年始めた初心者だが
クラスが大カテゴリ
メソッドが小カテゴリ
インターフェースが小カテゴリらの存在を保証する中カテゴリ
このくらいの認識しかなかったわ

855:デフォルトの名無しさん
19/09/30 00:32:45.02 C9eDYcBn0.net
宣教師と見た
次にスクリプト言語を薦めて来るぞ

856:デフォルトの名無しさん
19/09/30 00:57:12.69 PJtB8DfJ0.net
831 だけど�


857:B 複数のクラスインスタンスの動的読み込みとか始めるとそんな感じになることもあるよ。 プラグインとかの識別に便利だし。 そうだとしても、たぶん 831 の1行目と矛盾してないでしょ。 ただ初心者相手の説明にこんなこと言いだしたら収拾がつかなくなるし、 全メソッドをってのは、まあ頑張ってな、と返すしかないけど。



858:デフォルトの名無しさん
19/09/30 01:48:44.79 dOfJdIlZ0.net
すまんが、エラーメッセージにあるカッコ内の行番号らしきものってさあ
片方は間違ってる行っぽいけど、もう片方は一体何なんだぜ?

859:デフォルトの名無しさん
19/09/30 02:02:42.92 zBUNKmmLa.net
>>843
その行の何文字目かって意味
例えばファイル先頭に「int a = "";」と書いたら(1,5,1,6)でエラーが出るけど
これは「1行目5文字目~1行目6文字目」の箇所でエラーになっていることを表している

860:デフォルトの名無しさん
19/09/30 02:09:52.87 dOfJdIlZ0.net
>>844
ありがとう!何文字目かなんて全然わかんなかったよ

861:デフォルトの名無しさん
19/09/30 08:08:24.00 fD1lXHN30.net
質問いいですか?

862:デフォルトの名無しさん
19/09/30 08:10:26.75 ws0x1Tjj0.net
>>846
駄目です

863:デフォルトの名無しさん
19/09/30 08:17:51.94 nNBu0V63d.net
>>847
その返しはこのスレではいかんだろ(笑)

864:デフォルトの名無しさん
19/09/30 08:41:05.60 bmAzH1750.net
トイレ行ってきていいですか?

865:デフォルトの名無しさん
19/09/30 08:55:42.37 BmNMZ9TsM.net
もう居るだろう

866:デフォルトの名無しさん
19/09/30 09:29:49.98 fD1lXHN30.net
では質問しますね
Timerコンポーネントで
Timer1.Interval = 5000;とすると、プログラム起動後5秒後に初めてTimer1_Tickが
実行されますよね、これを起動時に1度実行したいのですがどうしたらいのでしょうか
Form1_Loadに書けばいいような気がしますが引数がわからない

867:デフォルトの名無しさん
19/09/30 09:31:40.04 Q4pocwaT0.net
忘れたけどTimerってTimers.TimerもThreading.Timerも大体どんな種類の奴でも最初のディレイタイム指定できなかったっけ?

868:デフォルトの名無しさん
19/09/30 09:58:04.89 fD1lXHN30.net
>>852
レスサンクスです
Delayでぐぐってみましたが、プログラムを遅延させるほうのDelayばかりヒットして
なかなか見つかりません、Timerのプロパティにそういうなのがあればいいんですが

869:デフォルトの名無しさん
19/09/30 10:05:34.65 g7w6SBZq0.net
>>853
処理を関数化しておいて、コンストラクタから呼んだらいいんじゃね?
別にタイマーから呼ばなくてもいい

870:デフォルトの名無しさん
19/09/30 10:13:21.52 e45pyL0lM.net
>>851
最初100で、中で則5000書き換えじゃあかんかったっけ

871:デフォルトの名無しさん
19/09/30 10:40:02.13 fD1lXHN30.net
>>854
サンクスです
Timer1_Tickの中の処理をゴソっと別にうつすんですか、確かにうまくいきそうですね
>>855
さんくすです
Timer1.Interval = 100;からTimer1.Interval = 5000;に変更ですか
これもうまくいきそうですね、厳密な秒数は必要じゃないですし

872:デフォルトの名無しさん
19/09/30 10:47:03.32 ZcJV4ZEKa.net
>>851
どんな方法使ってもいいけど後で読んだ時に何をやってるか
分かりやすいのが一番だね
public Form1()
{
  InitializeComponent();
  Form1.Load += (sender, e) => OnEvery5Seconds();
  Timer1.Tick += (sender, e) => OnEvery5Seconds();
}
void OnEvery5Seconds()
{
.....
}
こうやった場合、FormのLoadイベントより前にOnEvery5Secondsが呼ばれる可能性が
あることは注意する必要がある。(実際にはないと思うけど)

873:デフォルトの名無しさん
19/09/30 11:16:30.25 fD1lXHN30.net
>>857
れすさんくすです
なるほど、こんな書き方もできるのですね、うまくつかえばすっきりまとまりそうです

874:デフォルトの名無しさん
19/09/30 23:02:09.82 S0uOX3sP0.net
>>852
流れから推測するとたぶんWindows.Forms.Timerクラスだね

875:デフォルトの名無しさん
19/10/02 01:49:10.77 4PgWnh+40.net
非同期メソッドでちょっとだけ同期処理するのにはどうすれはいいのですか?
async Task ABCasync(){
ABCasyncの呼び出し元には、終わるまで待っていてもらいたい処理();
//ここでtaskで呼び出し元に何かを返せたりするのかしら?
ABCasyncの呼び出し元には、待っていてもらう必要のない処理();
}

876:デフォルトの名無しさん
19/10/02 02:14:39.18 mDEdylW50.net
強引に実装することは可能だがメソッド分割すべき

877:デフォルトの名無しさん
19/10/02 07:28:12.15 YugGu4Uj0.net
クラスは知識
メソッドは機能
という認識は事のほか難しいんけ?

878:デフォルトの名無しさん
19/10/02 08:07:26.42 Vm3TcWW10.net
>>862
そういう一般的でもない訳のわからない解釈を出されても、普通の人には理解できないかおかしな理解のまま突き進むことになるだろう

879:デフォルトの名無しさん
19/10/02 08:15:53.12 gR9x9lAq0.net
クラスは学校とかのクラスって認識でいい

880:デフォルトの名無しさん
19/10/02 11:07:45.90 9X+f8gXkr.net
ゲームのクラスの方がわかりやすい気がする
戦士 魔法使い 僧侶 盗賊
それぞれできることが違う

881:デフォルトの名無しさん
19/10/02 11:18:19.95 VgxhRvTXp.net
あはは、まあ、学校のクラスだと対抗戦が出来るくらいに似たり寄ったりだから意味が分からないよな。

882:デフォルトの名無しさん
19/10/02 11:59:15.15 8UOZigmra.net
逆に、同一のクラスの異なるインスタンスなんてのもできないしね。

883:デフォルトの名無しさん
19/10/02 12:12:09.33 VOEDuxVKM.net
>>865
じゃぁ男女別は?
どっちのクラスが上位なの?
それとも同格で、男戦士 女戦士ってなるの?
半魚人タイプとか4足系の戦士は?

884:デフォルトの名無しさん
19/10/02 12:26:49.61 9X+f8gXkr.net
出来ることが変わらないなら基本変えなくていいよ
設計次第だけど
質問の内容の男戦士と女戦士で何が違うのかはっきりしない
力などの属性値(プロパティ)だけが違うなら分ける必要はないわな
半漁人でも4足系の戦士でも数値しかかわらないなら同じ
コードが共通になるなら基本的に分けなくてもいい

885:デフォルトの名無しさん
19/10/02 19:59:53.93 dZRRj/1Z0.net
強引に何かに例えるよりコード書いてみた方がいいよ

886:デフォルトの名無しさん
19/10/02 20:20:25.32 IV023jBj0.net
C#はじめて最初の日に読み飛ばすところで議論しても不毛だよな
>>870に賛成

887:デフォルトの名無しさん
19/10/03 00:57:21.26 z1GHd6rla.net
質問です
工場とかインフラの制御ソフトモドキを成果物としてWindowsアプリケーションの形式でC#で作りたいんですが、この2冊終わった後にWindowsアプリケーション開発の本買うなら何が良いですか?
また、本が時間の無駄だとしたらどこのサイトを参照すれば良いですか?
上記の件よろしくお願いしますm(_ _)m
1冊目 なるほどなっとくC#入門
2冊目 C#プログラミングのイディオム/定石&パターン

888:デフォルトの名無しさん
19/10/03 01:02:05.17 t45ZyD0e0.net
そりゃ一番はMicrosoftのチュートリアルでしょ
URLリンク(docs.microsoft.com)

889:デフォルトの名無しさん
19/10/03 01:16:35.63 z1GHd6rla.net
>>873
ありがとうございますm(_ _)m

890:デフォルトの名無しさん
19/10/03 01:19:35.07 pRlPv1jza.net
>>872
FormならGUIの作り方は必用なことをググって調べながら実際に作ってみるのが一番。
本は1冊以上は読むだけたぶん時間の無駄。
何かを制御するなら、それが大企業の製品で.NET用のライブラリが用意されているのでない限り
たぶんアンマネージドの知識が必要になる。
これは多分本はないので自分でググって調べる
あと多分非同期処理は必須。
最初.NET1.x時代の生のThreadとか使う記事に軽く目を通して、
その後は今時のTPLや非同期メソッドの記事を読めばいい。
本もあるけどたぶんweb上の記事で十分

891:デフォルトの名無しさん
19/10/03 01:26:24.07 wBmuAStK0.net
非同期メソッドの実行自体は慣れたけど
win10のアップデート強制再起動時に
非同期処理中のタスクをきちんと終了させる方法がわからん
突然書き込み中のファイルがぶっ壊れそうで怖いわ

892:デフォルトの名無しさん
19/10/03 01:35:18.06 z1GHd6rla.net
>>875
ありがとうございますm(_ _)m

893:デフォルトの名無しさん
19/10/03 01:39:57.58 dygVDi5Yd.net
>>875
工場の制御ってRS-232CとかPLCとかGPIBとかやろ
別にアンマネージド必要ないだろ

894:デフォルトの名無しさん
19/10/03 01:45:45.89 pRlPv1jza.net
>>878
そうかもしれないけど拡張ボードの型式でライブラリはアンマネージドdllだけかもしれない。
USB接続でアンマネージドdllの可能性もある
何とも言えない

895:デフォルトの名無しさん
19/10/03 15:11:12.65 xDvwVpv4p.net
マネージドなドライバーが無いなら使わないって選択をだな。

896:デフォルトの名無しさん
19/10/03 18:33:07.86 65+5RZIm0.net
UI操作とawaitを使った非同期メソッドをまとめたasyncメソッドを別スレッドから呼び出すにはどうすればいいですか?

897:デフォルトの名無しさん
19/10/03 18:36:08.92 XDm3DYNpd.net
>>881
??何が聞きたいの?

898:デフォルトの名無しさん
19/10/03 18:42:35.24 65+5RZIm0.net
>>882
すみませんでした。
例えばこういう感じのメソッドを別スレッドから呼び出す方法を教えてください。
async Task DoSome()
{
label1.Text="処理中...";
await DoLong();
label1.Text="完了";
}

899:デフォルトの名無しさん
19/10/03 20:27:59.44 AKImZpfb0.net
正直設計を考え直した方がいいけど
メインスレッドで動作してる間に
TaskScheduler.FromCurrentSynchronizationContext()
でTaskScheduler確保しておいて、その"別スレッド"内で
new Task(() => DoSome()).RunSynchronously(taskScheduler)
する

900:デフォルトの名無しさん
19/10/03 20:48:28.97 Cd3mzBuJ0.net
こうじゃダメなの?
Invoke((MethodInvoker)(async () =>DoSome()));

901:デフォルトの名無しさん
19/10/03 22:23:35.99 Y5r0apvPr.net
呪文化しただけにも見える

902:デフォルトの名無しさん
19/10/04 00:31:32.74 hyuh0V300.net
メソッド側を修正する必要があるけど、
こういうことでは?
別スレッドからのUI操作
URLリンク(qiita.com)

903:デフォルトの名無しさん
19/10/04 01:26:24.02 oVLixzTMa.net
>>883
やっぱりそういうのは非UIスレッドからも呼び出せるようにする、ではなく、
逆に普通にUIスレッド専用のメソッドとして提供して、
もし必要ならXMLコメントとかで「UIスレッド以外からの呼び出し禁止」って
明示するのが筋なような気がするw

904:デフォルトの名無しさん
19/10/04 09:42:07.42 7JHQ1IR60.net
>>884
>>888
filesystemwatcherのハンドラから呼び出すと別スレッドからの呼び出し扱いになってしまいます。

905:デフォルトの名無しさん
19/10/04 09:50:12.44 K3mQ1Iatp.net
まあその用途ならやっぱコントロールのInvokeの中で呼べばいいだけの話しだな
DoLongの中でさらに入り組んでるとデッドロックしそうだけど

906:デフォルトの名無しさん
19/10/04 14:31:48.61 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:デフォルトの名無しさん
19/10/04 15:21:51.76 5G6hsRzp0.net
FileSystemWatcherはSynchronizingObject持ってんじゃん
設定しとけば勝手にBeginInvokeでイベントハンドラ呼んでくれるよ

908:デフォルトの名無しさん
19/10/05 10:15:38.99 hjSAU91p0.net
質問なんですが
設定ってどこにどうやって保存してますか?
.configが今ならベストなんでしょうが、保存先が
C:\Documents and Settings\UserName\Local Settings\Application Data\
になり、.iniのように、アプリをコピーで2つの設定が使えるようになりません
.configはファイルの場所が遠くて変更しにくい、iniは古くてC#で扱いにくい
どうしてますか?

909:デフォルトの名無しさん
19/10/05 10:23:45.47 BObIlSOA0.net
>>893
インストールするアプリはユーザーデータフォルダのどっかに保存しないと駄目じゃん
どこでも置けるやつはexeと同じ階層に設定ファイルあったほうが使いやすいじゃん
ってだけしか気にしたことない

910:デフォルトの名無しさん
19/10/05 10:30:58.10 hjSAU91p0.net
>>894
れすさんくすです
確かにそのとおりだとおもいます
インストーラーではなく、ZIPとかで配布で、ちいさなアプリで、主にシングルユーザーで
ってなると.iniになるんでしょうか?

911:デフォルトの名無しさん
19/10/05 10:31:02.26 elsuYLim0.net
>>893
設定を保存するクラスを作って、xamlかjsonにシリアライズ
アプリのコピーで使い分けるなら、保存場所はアプリのexeと同じフォルダー

912:デフォルトの名無しさん
19/10/05 10:34:16.80 BObIlSOA0.net
>>896
xmlとjsonなんて編集できるツールあるの?
パンピーにインデント壊さないでねなんて無理よ

913:デフォルトの名無しさん
19/10/05 10:43:34.43 elsuYLim0.net
>>897
元の質問に設定ファイルを手動で編集したいなんて書いてないが

914:デフォルトの名無しさん
19/10/05 10:47:20.84 xk/GxZ7j0.net
jsonもxmlもインデント関係ないから自由にさせろ
強制したいならyaml使え

915:デフォルトの名無しさん
19/10/05 12:25:09.61 8Jk2Tveb0.net
>>897
インデントわろた

916:デフォルトの名無しさん
19/10/05 12:42:35.73 sqkLDT76d.net
>>897
インデントwwww

917:デフォルトの名無しさん
19/10/05 15:47:01.45 BObIlSOA0.net
インデントっていうかカッコの対応?
でもその一点でxmlとjsonっておよびじゃ無くない?
これらを使うなら設定ツールが必要になると思う

918:デフォルトの名無しさん
19/10/05 16:03:44.47 8Jk2Tveb0.net
よく出てこれたな

919:デフォルトの名無しさん
19/10/05 16:30:09.26 BObIlSOA0.net
>>903
何度でも言えるよ
xmlとjsonは設定ツールがないと使えないゴミ

920:デフォルトの名無しさん
19/10/05 16:44:26.62 LN1PiSPK0.net
設定画面ぐらい作れよ

921:デフォルトの名無しさん
19/10/05 17:02:10.69 8Jk2Tveb0.net
>>904
よおインデント

922:デフォルトの名無しさん
19/10/05 17:07:55.98 hjSAU91p0.net
>>896
れすさんくす
結構ハードなことやってるんだね、一度クラス作ったら一緒か

923:デフォルトの名無しさん
19/10/05 17:16:21.03 q6cvuv6U0.net
>>906
よおインシデント

924:デフォルトの名無しさん
19/10/05 17:17:03.15 JDr+zhso0.net
>>907
今どきならjson.netを使うだけ
ググればわかるけど呆れるほどかんたんだよ

925:デフォルトの名無しさん
19/10/05 18:01:24.61 vEDwovccd.net
インポテンツ

926:デフォルトの名無しさん
19/10/05 18:06:22.26 PVJcrjgV0.net
初心者スレやからね

927:デフォルトの名無しさん
19/10/05 19:34:08.92 hjSAU91p0.net
>>909
さんくす、ライブラリが公開されてるのか
みんなこれ使ってるの?

928:デフォルトの名無しさん
19/10/05 19:36:45.83 1kVSHcIG0.net
令和の時代の新規プロジェクトでiniファイルはありえんだろw

929:デフォルトの名無しさん
19/10/05 19:38:02.29 1kVSHcIG0.net
>>912
今のところデファクトスタンダードなライブラリだね

930:デフォルトの名無しさん
19/10/05 19:39:42.31 BObIlSOA0.net
>>913
設定ファイルをユーザにどうして欲しいの?

931:デフォルトの名無しさん
19/10/05 19:46:18.14 1kVSHcIG0.net
>>915
サンプルのjsonを添付してここを変更しろとドキュメント付けとけば問題ない
インデントが変わっても問題ないし

932:デフォルトの名無しさん
19/10/05 19:51:52.36 kB6gz2T/F.net
>>913
URLリンク(www6.uniovi.es)
values.c

933:デフォルトの名無しさん
19/10/05 19:56:00.01 8wZmV3QG0.net
>>912
俺はDataContractJsonSerializerだな
これなら標準ライブラリだからインストール不要

934:デフォルトの名無しさん
19/10/05 19:57:33.02 BObIlSOA0.net
>>916
jsonはカッコの対応で死ぬわ
っていうかxmlもjsonもiniファイル駆逐できるほど性能よくねーじゃん
っていうか用途が違うものを強引に適用しようとしてない?
設定ファイルに書いたコメントも消えちゃうしね

935:デフォルトの名無しさん
19/10/05 20:01:44.88 BObIlSOA0.net
iniファイルを時代遅れだと主張するなら
xmlやjsonで吐き出して設定ツールぐらい用意しろってことかな?
それなら理解できるけど
xmlとjsonのテキスト編集はキツイ

936:デフォルトの名無しさん
19/10/05 20:08:26.65 1O88xYRBd.net
ユーザーがやることはjsonの値をちょい変更するくらいなのになんでカッコ対応が問題になるんだよ
ユーザーがカッコを書く必要なんてないのに

937:デフォルトの名無しさん
19/10/05 20:11:42.09 BObIlSOA0.net
>>921
いや、だからそれどこよ?
ってのを見つけるのも結構骨が折れる作業よ
だから、コメントをjsonファイルに書いておくだろ?
ところが次のアプリの書き込みで消えてるんだなw

938:デフォルトの名無しさん
19/10/05 20:13:16.91 jRdA7zB80.net
話はよーわからんが、JSONに慣れれない人もそれがあんたの能力なんだから
しょうがないんじゃない

939:デフォルトの名無しさん
19/10/05 20:13:46.83 WowcC4IHr.net
>>922
ちゃんとしたエディターかIDE使えば?
VScode使えば対応簡単だけど
まさかメモ帳でやってんの?

940:デフォルトの名無しさん
19/10/05 20:16:05.57 BObIlSOA0.net
そもそもバグったときに凶悪であることは認めるだろ?
俺らだってxmlやjsonファイルでユーザーが編集したおかしな箇所を
プログラムでピンポイントで指摘できない
このファイルは完璧でないと読めない
そんなモノをユーザーに触らせるような運用は間違っている
客がいいって言うならいいけど

941:デフォルトの名無しさん
19/10/05 20:16:19.70 WowcC4IHr.net
vscodeとかtsとかnode.jsとか設定はjsonだけど
それで大問題にはなってない
みんな使いこなしてる
何故君だけ使えない?
iniファイルなんて実際死んでるよ?

942:デフォルトの名無しさん
19/10/05 20:16:43.74 BObIlSOA0.net
>>924
それを客に言うの?
趣味ならいいけど

943:デフォルトの名無しさん
19/10/05 20:17:55.69 WowcC4IHr.net
>>927
客がなんでjsonファイルいじって中にコメント書くのかが分からん
お前がいつまでボケ続けるのか興味があるが…

944:デフォルトの名無しさん
19/10/05 20:18:25.25 BObIlSOA0.net
>>928
え?開発者向けなん?

945:デフォルトの名無しさん
19/10/05 20:19:04.85 r/LR5Bg3d.net
iniファイルとかWin16の時代の化石だろ

946:デフォルトの名無しさん
19/10/05 20:19:40.75 WowcC4IHr.net
本当にいつまでボケ続けるのか
実務に携わってないんだろうなってのはわかる
空転を本人が気づいてない

947:デフォルトの名無しさん
19/10/05 20:20:51.17 jRdA7zB80.net
よく出てくくる、一本道コードのVisual Basicおじさんでしょ

948:デフォルトの名無しさん
19/10/05 20:21:03.98 BObIlSOA0.net
はっきりさせておくけど
・設定ファイルをテキスト編集でユーザに触らせたい
→xmlやjsonは向かないんじゃない?
・設定ファイルをユーザに触らせない
→なんでもいいんじゃない?
ってことな

949:デフォルトの名無しさん
19/10/05 20:22:45.53 BObIlSOA0.net
あともう一つ
・ユーザは開発者である
→なんでもいいんじゃない
って感じな

950:デフォルトの名無しさん
19/10/05 20:24:09.45 WowcC4IHr.net
・設定ファイルをテキスト編集でユーザに触らせたい
の時点で間違ってる
バックアップすら取るかどうかわからんやつらに編集させんな馬鹿

951:デフォルトの名無しさん
19/10/05 20:24:53.35 hjSAU91p0.net
>>914
なるほど、これはもうjson.netいれるしかないですね
>>918
MS謹製のJson、これはかなりとっつきやすそうさんくす

952:デフォルトの名無しさん
19/10/05 20:25:02.19 BObIlSOA0.net
>>935
じゃあ、俺と君の意見は一致してるね

953:デフォルトの名無しさん
19/10/05 20:25:51.75 WowcC4IHr.net
ボケた会社の~ボケた開発者が~ボケた客にボケたことをさせて~
メンテナンス費用だけとるつもりですか~
死ね糞ゴミ!

954:デフォルトの名無しさん
19/10/05 20:28:30.38 jRdA7zB80.net
でも、初心者なのに仕事を取ってくる勇気は大したもんだよね

955:デフォルトの名無しさん
19/10/05 20:38:04.30 8wZmV3QG0.net
>>933
俺なら
>・設定ファイルをテキスト編集でユーザに触らせたい
→そんな仕様にはしない
なぜならあらゆるフォーマットに対応する実装とテストなんてしたくないし
そもそも設定をテキスト編集するアプリとか使いにくい
>・設定ファイルをユーザに触らせない
→xmlにする
なぜなら実装が簡単だし、開発者(俺)ならテキスト編集できるから

956:デフォルトの名無しさん
19/10/05 20:51:43.64 RYV31rLj0.net
レガシーコードってなんかかっこいいから、どんどん増やすべき。
伝説の武器みたいなものでしょう。

957:デフォルトの名無しさん
19/10/05 21:28:22.83 Apziqq2fa.net
>>936
2chだとやたらとJSON推しの人が多いけど、.NET標準のシリアライザは他にもいろいろあるよw
JSONに固執する必要がないなら他を検討した方がいいと思うけど

958:デフォルトの名無しさん
19/10/05 21:40:37.42 kmFdI7ZBM.net
MSがJSON推しだからね

959:デフォルトの名無しさん
19/10/05 21:42:52.25 mrk3SroR0.net
JSONは連想配列に順序の保証がない
デバッグで差分比較するとかができない

960:デフォルトの名無しさん
19/10/05 21:45:37.47 ZEfzfdRr0.net
連想配列に順序ってそんな重要なんか

961:デフォルトの名無しさん
19/10/05 21:50:21.48 SzWcISg6d.net
>>942
.NET標準でjson以外にほかにいろいろシリアイザがあるって、XML以外何かある?

962:デフォルトの名無しさん
19/10/05 21:54:42.26 hjSAU91p0.net
>>942
なるべくネット上に解説とかサンプル多いと楽かなっと
多数派に流されるお

963:デフォルトの名無しさん
19/10/05 22:05:26.81 VWTAP42j0.net
json schema用意すればvscodeで補完効くし、間違いも指摘してくれるし、普通json使うわ

964:デフォルトの名無しさん
19/10/05 22:54:13.79 Apziqq2fa.net
DataContractJsonSerializer、使ったことなかったが調べた感じ
一通りの機能はあるし、バージョントーレラントみたいだし、別にこれでもいいねw
バージョントーレラントじゃないと思ってたが、勘違いだったみたいだ。

965:デフォルトの名無しさん
19/10/05 23:34:01.62 1i4Kj4Snd.net
トーレラントって何かググってみたけど中華鍋しか出てこない

966:デフォルトの名無しさん
19/10/06 01:39:32.41 z+z4mE1D0.net
確かにJsonはコメントが書けないか
コメント用の文字列メンバを予め確保すれば良いのかな

967:デフォルトの名無しさん
19/10/06 01:49:26.58 DPash9Py0.net
jsonのシリアライザ/デシリアライザは送受同じライブラリを使わないと、割とめんどい。
DateTimeの扱いとか。
あとライブラリによってはpublicクラスじゃないとダメとか変な制限があるものも・・
DataContractJsonSerializerは変換遅いし、いちいち[DataContract]や[DataMember]などのアノテーションがめんどい

968:デフォルトの名無しさん
19/10/06 02:10:45.36 uOvq13Pn0.net
以前REST APIを作ったときはVisual Studioがjson.netを利用するコードを自動生成してたけど、今はDataContractJsonSerializer化されてるのかな?

969:デフォルトの名無しさん
19/10/06 07:22:38.42 DbrcOQgy0.net
>>953
System.Text.Json

970:デフォルトの名無しさん
19/10/06 11:26:53.05 yc9LKsYB0.net
>>939
URLリンク(software.aufheben.info)
>936
cjson

971:デフォルトの名無しさん
19/10/06 12:18:55.28 jjEkd1/A0.net
windows formsアプリについての相談なんですけれど、ロジックと見た目を分けろって聞くじゃないですか。なのでそうしようと思ったんです
例えばユーザーコントロールを作って、そこに何かしらの処理を行うボタンを配置したとします
それで自分が考えたのは、計算をするクラスをユーザーコントロールクラスの内部クラスとして作る、ユーザーコントロールクラスのフィールドとしてその計算するクラスのインスタンスを持たせる
でボタンが押されるイベントで計算をするクラスのオブジェクト.calculate()みたいにする
設計としてはこんな感じでも大丈夫ですかね?アプリを作る時に内部のコードはこう実装するみたいなことを教えてくれる本が無くてどう設計していけばいいのかわからないんです

972:デフォルトの名無しさん
19/10/06 12:29:48.44 ofI4YMfJM.net
右も左もわからないうちから俺俺アーキテクチャとか考えないで
MVCやMVVMでも勉強したらいいと思うよ
それから最強のアーキテクチャを考えるのでも遅くない

973:デフォルトの名無しさん
19/10/06 12:31:03.82 U/2g+4lB0.net
>>956
>ロジックと見た目を分けろ
windows formsアプリじゃなくWPFやった方がいいんじゃない?
windows formsでそんな組み方するの逆にめんどくさい

974:デフォルトの名無しさん
19/10/06 13:48:38.81 wAV7A9/e0.net
>>955
cjsonはわかりやすいのかな、ちょっとしらべてみるさんくす

975:デフォルトの名無しさん
19/10/06 13:52:51.65 44yIwJmG0.net
>>956
そんなことしなくて良い
画面アプリなんて使い捨て上等
サーバーサイドと画面(クライアント)を分けろって話で
一つのアプリでそんなことやっても無意味

976:デフォルトの名無しさん
19/10/06 14:51:46.94 BLgAYnXt0.net
そんな訳は(規模にもよるけど)当然無い。

977:デフォルトの名無しさん
19/10/06 15:03:12.76 Ih3UpniZ0.net
「既存メソッドの処理なんですが?ちょっと時間かかっちゃうんですよねー
プログレスバーとかつかないですかね?
処理の進行状況も表示して」
こんな簡単な要望ですら
そいつはケツまくって逃げ出すよ
花京院の魂を10000個ぐらい


978:かけてもいい絶対だ 処理と表示は一見関係ないように見えて実は密接に関係していて 絶対に切り離せない 不可能なことを可能だと言う技術者を信用してはならない 何年もやっていてこの程度の因果関係もわからんような雑魚から 教えを請いてはならない



979:デフォルトの名無しさん
19/10/06 15:33:01.89 ZrFisUz2a.net
>>956
何でユーザーコントロールの話になるのかよく分からんけど、
>ユーザーコントロールクラスの内部クラスとして作る
この部分は変だけど(内部クラスにする必然性がない)、その後の部分はそういう認識でいいと思うよ。
FormでもUserControlでも、基本的に書いていいのは上に乗ってる
コントロールを操作するコードとイベントハンドラだけ。

980:デフォルトの名無しさん
19/10/06 18:11:15.25 SEX7i46w0.net
>>962
C#にはIProgress<T>というクラスもタスクも横断的に使える便利なIFがあるから
あんたが思っているようなことはない
つか、偉そうなのにこれ知らないのか?

981:デフォルトの名無しさん
19/10/06 18:45:20.34 pgF6GacOr.net
自分は頭が悪すぎてIProgress<T>のどこが便利なのかわからないので
違う仕組みでやってる

982:デフォルトの名無しさん
19/10/06 19:21:15.12 Ih3UpniZ0.net
>>964
はぁ?
既存の何も考えずに作ったメソッド(内部)のプログレスバー(表示)を分離したまま実装できないだろってのが俺のレスの主旨なんだけど
理解した上で反論しようとしてんの?
Mr.ドン・キホーテ?

983:デフォルトの名無しさん
19/10/06 19:26:16.12 SEX7i46w0.net
>>966
いや、簡単に実装できるよ
君が知らないだけで

984:デフォルトの名無しさん
19/10/06 19:36:10.31 Ih3UpniZ0.net
>>967
あっそ、絶対無理なのにバカだなお前
テメーはさっさと技術者やめて詐欺師に看板替えろ

985:デフォルトの名無しさん
19/10/06 19:38:07.20 fpn8B7qc0.net
昔はイベントハンドラで実装してたな
いまならObservablePropertyあたりでやるんかねRxとかどうも上手く使えてる気がしない

986:デフォルトの名無しさん
19/10/06 19:43:10.12 fpn8B7qc0.net
>>968
いやできるだろう

987:デフォルトの名無しさん
19/10/06 19:53:20.87 SEX7i46w0.net
>>969
確かにmvvmだとReactiveProperyを上位に伝搬するのが楽だし俺もそうやっている
でもFormsの話のようだからIProgress<T>を出しました

988:デフォルトの名無しさん
19/10/06 20:02:50.65 dGqjDCnwr.net
FormsだとしてもIProgressは不便だと思うよ

989:デフォルトの名無しさん
19/10/06 20:07:52.17 DbrcOQgy0.net
>>972
なぜ?

990:デフォルトの名無しさん
19/10/06 20:18:09.12 LuDxacSca.net
ID:Ih3UpniZ0って昨日iniファイル以外認めないって主張してた御仁か
15~20年くらい前のスキルしかもちあわせてない人でしょ
技術的なキャッチアップも人間性の向上も怠って年齢だけ重ねてる人だからこういう物言いしかできないんだろう
こういう人のいうことは表向きだけはいはいって聞いたふりして全部無視して問題ないよ

991:デフォルトの名無しさん
19/10/06 20:27:29.93 dGqjDCnwr.net
ほっとくとイベントの参照が残ってるのでひとりでに消えなくなってしまう

992:デフォルトの名無しさん
19/10/06 20:39:48.56 fpn8B7qc0.net
>>975
backgroundworkerを自前で作らずにformに貼って、イベントもデザイナから作るといいよ

993:デフォルトの名無しさん
19/10/06 20:40:18.92 DbrcOQgy0.net
>>975
ソース

994:デフォルトの名無しさん
19/10/06 23:21:15.76 zXgX+PCrr.net
ソースもくそもみんなそう

995:デフォルトの名無しさん
19/10/06 23:28:20.92 zXgX+PCrr.net
c# メモリリーク イベントハンドラ

996:デフォルトの名無しさん
19/10/07 00:20:35.80 ilJKwzD30.net
だからIProgressでメモリーリークするソース出せってば

997:デフォルトの名無しさん
19/10/07 07:55:39.68 PXpMNqVGd.net
IProgressはインターフェースなんだからそれ自体がリークってのはおかしいでしょ。使い方が悪いだけでは…?

998:デフォルトの名無しさん
19/10/07 08:49:33.99 jeQW+1qp0.net
オッペケは自殺して転生して自分の頭のバグ直してこいやボケ

999:デフォルトの名無しさん
19/10/07 18:13:25.65 jsaaj6Lxr.net
インターフェイスでメモリリークするわけがないはその通り
ただ単純なイベントハンドラベースだとうっかりメモリリークさせやすい
コンポジションなどで保持したままで寿命が違うと特にそう
c++だとメモリリークしやすいが使い方が悪い!ちゃんとつかえ!
という話で済まないので進化し続けてる
そのProgressというけど偽りでProgressと言う動作と何の関係もない
実際はどこからも使われないく自分で使うコードを書くだけなのでProgressである必要もない
どこが便利で使ってるのかさっぱりわからない

1000:デフォルトの名無しさん
19/10/07 18:17:14.49 jsaaj6Lxr.net
見返すとめちゃくちゃだけどIpregressは別にProgressに高度に特化されてないので
使う意味は薄いのではないか?
nさんがどう思うか知らないけど

1001:デフォルトの名無しさん
19/10/07 19:14:35.69 ilJKwzD30.net
ここまで具体的なコードは無し

1002:デフォルトの名無しさん
19/10/07 20:06:05.04 GbsEPSwo0.net
>処理と表示は一見関係ないように見えて実は密接に関係していて
>絶対に切り離せない
ちゃんと考えて設計してもそうなるなら、絶望的にセンスがないわ
おまえに不可能なことが技術的に不可能なこととは違うよ

1003:デフォルトの名無しさん
19/10/07 20:18:37.37 9eyAES450.net
次スレ
ふらっと C#,C♯,C#(初心者用) Part145
スレリンク(tech板)
ワッチョイ無しは
ふらっと C#,C♯,C#(初心者用) Part141
スレリンク(tech板)

1004:デフォルトの名無しさん
19/10/07 21:20:35.04 jsaaj6Lxr.net
>>985
理解できないなら無理にレスしなくてもよい

1005:デフォルトの名無しさん
19/10/07 21:45:53.70 /mGKDAACa.net
>>987


1006:デフォルトの名無しさん
19/10/07 22:15:03.54 QEMDFqtE0.net
>>987


1007:デフォルトの名無しさん
19/10/07 22:16:20.26 ilJKwzD30.net
>>988
はよ

1008:デフォルトの名無しさん
19/10/07 22:40:26.54 H1QHa3mL0.net
>>986
バカだろ
物理的に不可能だろ
既存処理にプログレスバー付けてみろよ

1009:デフォルトの名無しさん
19/10/07 22:42:41.65 d+4AHn7d0.net
IProgressというか、その実体のProgres<T>クラスは、普通に使えばメモリーリークなんか起こらないんだよな
イベントじゃなくてActionデリゲート使ってメンバ変数など使わずにローカル変数で定義して
処理を実行するたびにインスタンス作ればいいだけ
ラムダ使えない人はご愁傷さまとしか言えません

1010:デフォルトの名無しさん
19/10/07 22:50:14.57 jsaaj6Lxr.net
>>993
外から複数のハンドラ指定して実行したい場合どうすんの?
Actionにどうやって渡す?

1011:デフォルトの名無しさん
19/10/07 22:52:08.75 jsaaj6Lxr.net
それと
> 普通に使えばメモリーリークなんか起こらないんだよな

> イベントじゃなくてActionデリゲート使ってメンバ変数など使わずにローカル変数で定義して
> 処理を実行するたびにインスタンス作ればいいだけ
は矛盾してるよね?

1012:デフォルトの名無しさん
19/10/07 22:53:10.67 s9APxj2Ed.net
>>994
複数のアクションを実行するアクションを渡す

1013:デフォルトの名無しさん
19/10/07 22:59:52.41 d+4AHn7d0.net
>>995
サンプルぐぐっても、イベント使ったりクラスのメンバ変数にして使い回すって方が邪道じゃないかな?

1014:デフォルトの名無しさん
19/10/07 23:21:18.60 cpqLM3c60.net
>>986
多分切り離すとか分離するの意味を根本から間違えて捉えてるんだと思うので無駄だよ。関心の分離の基本がわかってない

1015:デフォルトの名無しさん
19/10/09 02:47:43.58 mpcY/05P0.net


1016:デフォルトの名無しさん
19/10/09 02:47:58.78 mpcY/05P0.net

次スレ
ふらっと C#,C♯,C#(初心者用) Part145
URLリンク(mevius.2ch.net)

1017:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 84日 11時間 11分 35秒

1018:1002
Over 1000 Thread.net
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

──────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
──────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
URLリンク(premium.5ch.net)
▼ 浪人ログインはこちら ▼
URLリンク(login.5ch.net)

1019:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch