[表示 : 全て 最新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

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