!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part144
https://mevius.5ch.net/test/read.cgi/tech/1563258983/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
ふらっと C#,C♯,C#(初心者用) Part145
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 1e7b-qjLW)
2019/10/07(月) 20:16:17.93ID:9eyAES4502デフォルトの名無しさん (ワッチョイ 6917-G1PU)
2019/10/07(月) 20:48:30.84ID:mLA0yK1I0 乙
3デフォルトの名無しさん (ワッチョイ 2a01-oCTO)
2019/10/07(月) 23:08:42.11ID:4esZ9KBu0 c# windowsフォームにファイルをドラッグ&ドロップしたらファイルのパスを取得みたいなコードはネットにありますし、そのままビルドしたら正常に動作しましたので良いのですが、
ファイルをドラッグした瞬間にパスを取得することは出来ますか?
ファイルをドラッグした瞬間にパスを取得することは出来ますか?
4デフォルトの名無しさん (ワッチョイ 5942-jw9j)
2019/10/07(月) 23:10:15.53ID:WkkYpHG50 はい
5デフォルトの名無しさん (ワッチョイ b501-acgG)
2019/10/07(月) 23:12:19.73ID:QEMDFqtE0 うん
6デフォルトの名無しさん (アウアウウー Sa21-qxT7)
2019/10/07(月) 23:36:38.52ID:/mGKDAACa >>3
普通にやると一番早く取得できるのはDragEnterやDragOverイベントかな
もしドラッグを始めた瞬間に取得したいのなら
全プロセスに対してOle32.dllのDoDragDrop呼び出しをフックして
プロセス間通信でパスを通知、とすれば出来るのかもしれないけど初心者がすることではなさそう
普通にやると一番早く取得できるのはDragEnterやDragOverイベントかな
もしドラッグを始めた瞬間に取得したいのなら
全プロセスに対してOle32.dllのDoDragDrop呼び出しをフックして
プロセス間通信でパスを通知、とすれば出来るのかもしれないけど初心者がすることではなさそう
7デフォルトの名無しさん (ワッチョイ 3db0-FJ4P)
2019/10/08(火) 10:56:30.06ID:2mFIneqB0 質問失礼します
textboxに入力を終えて確定したことを知り自動的に
フォーカスをtextboxから別の決まったコントロール(buttonとか)に移動したいのですが
フォーカス移動のコードをどこにどう書いたらいいのか分かりません
textboxに入力を終えて確定したことを知り自動的に
フォーカスをtextboxから別の決まったコントロール(buttonとか)に移動したいのですが
フォーカス移動のコードをどこにどう書いたらいいのか分かりません
8デフォルトの名無しさん (アウアウウー Sa21-5zAY)
2019/10/08(火) 12:49:06.43ID:8dDmccAua >>7
ケースバイケースでは?
同じ機能のTextBoxが一つしかなく、他で使いまわす予定もないなら
Formに書けば十分。
複数使いたかったり汎用的で他で使いまわしたいなら
(a) TextBoxを継承してそこに書く
(b) UseControlにTextBoxとButtonをペアで配置してUseControlにフォーカス移動のコードを書く
このいずれか。
ケースバイケースでは?
同じ機能のTextBoxが一つしかなく、他で使いまわす予定もないなら
Formに書けば十分。
複数使いたかったり汎用的で他で使いまわしたいなら
(a) TextBoxを継承してそこに書く
(b) UseControlにTextBoxとButtonをペアで配置してUseControlにフォーカス移動のコードを書く
このいずれか。
9デフォルトの名無しさん (ワッチョイ 3db0-FJ4P)
2019/10/08(火) 13:32:25.44ID:2mFIneqB010デフォルトの名無しさん (ワッチョイ 3db0-FJ4P)
2019/10/08(火) 13:36:59.57ID:2mFIneqB0 あ、それはTextプロパティが変化したかどうかを見ればいいのか?
でもそれじゃイベントハンドラがどうしたらいいのか分からない
Textの変更を始めたというイベントハンドラって取得できるんですかね?
でもそれじゃイベントハンドラがどうしたらいいのか分からない
Textの変更を始めたというイベントハンドラって取得できるんですかね?
11デフォルトの名無しさん (ワッチョイ 3db0-FJ4P)
2019/10/08(火) 13:52:29.59ID:2mFIneqB0 それも駄目か
やっぱり何らかの方法で変更が終了して
リターンを押して確定したことを取得しないといけないよね?
やっぱり何らかの方法で変更が終了して
リターンを押して確定したことを取得しないといけないよね?
12デフォルトの名無しさん (ワッチョイ 3db0-FJ4P)
2019/10/08(火) 14:15:27.36ID:2mFIneqB0 わかった _TextChangedか!
ありがとうございました
ありがとうございました
13デフォルトの名無しさん (ワッチョイ 25de-ogEr)
2019/10/08(火) 17:51:14.93ID:Ibd7T+CL0 昔だったらkillforcusなんだけど
c#はなんだろう?
c#はなんだろう?
14デフォルトの名無しさん (ワッチョイ 25de-ogEr)
2019/10/08(火) 17:55:02.19ID:Ibd7T+CL0 あった多分これで検索すれば
c# textbox validated event
c# textbox validated event
15デフォルトの名無しさん (ワッチョイ 6a24-G1PU)
2019/10/09(水) 07:55:59.19ID:/K0h5hCH0 WPFアプリにてタスクバープレビューの右上の閉じるボタンから閉じた時のイベントを取得することは出来ないのでしょうか?
上記の方法で閉じると一見終了されたように見えてもプロセスは残ってしまうため、メインウィンドウの閉じるボタンを押したときに呼ばれる後処理メソッドを呼ばせたいのですが
上記の方法で閉じると一見終了されたように見えてもプロセスは残ってしまうため、メインウィンドウの閉じるボタンを押したときに呼ばれる後処理メソッドを呼ばせたいのですが
16デフォルトの名無しさん (ワッチョイ b67c-qxT7)
2019/10/09(水) 08:46:37.34ID:zdauYmXS0 こっちの環境では普通にClosedイベント発生してるし特殊な終わり方はしてないようだが…
17デフォルトの名無しさん (ワッチョイ 7dda-G1PU)
2019/10/09(水) 08:50:50.65ID:Y6sBp1G90 どういう方法で閉じようと、ClosingやClosedは経由するよな
18デフォルトの名無しさん (ワッチョイ 7dda-EMGa)
2019/10/09(水) 16:30:31.60ID:31sFMC5w0 C# + Oracleで自社内向け業務アプリ作ることになったんだけど、..net coreでなく、net frameworkのWinFormsでいいよね?
ユーザーはせいぜい1200人程度なんだけど、.net coreランタイム入れる手間を考えたくない。
WinFormsって結構大きなデメリットになったりする?
ユーザーはせいぜい1200人程度なんだけど、.net coreランタイム入れる手間を考えたくない。
WinFormsって結構大きなデメリットになったりする?
19デフォルトの名無しさん (ワッチョイ 2af9-aAvj)
2019/10/09(水) 16:45:47.71ID:KnJFPOSX0 Formで複数のNumericUpDownを使ってます
値の変化はValueChangedイベントを使用してます
あるNumericUpDownを変化すると別のも連動します
値を変える場合一時的にイベントハンドラを無効にしてます
今は-=で無効にしてますが他にイベントハンドラを無効にする方法はありますか?
値の変化はValueChangedイベントを使用してます
あるNumericUpDownを変化すると別のも連動します
値を変える場合一時的にイベントハンドラを無効にしてます
今は-=で無効にしてますが他にイベントハンドラを無効にする方法はありますか?
20デフォルトの名無しさん (スププ Sd0a-reJN)
2019/10/09(水) 16:47:28.10ID:faTZyW/Hd 勘違いしてるみたいだけど.NET coreはインストール不要(自己完結型)でビルドできるよ
21デフォルトの名無しさん (ワッチョイ 6a2f-2rUB)
2019/10/09(水) 20:11:01.90ID:bRqP1Lm30 CoreってGUI作れるようになったん?
22デフォルトの名無しさん (ワッチョイ a52c-JO9p)
2019/10/09(水) 20:29:41.44ID:BQgggoCY0 core調べてみたら便利そうだな
調べるうちにだんだんUWPとWPFの違いが分からんようになった
WPFでUWPのコントロール使えるなら、UWPは制限きついだけか?
調べるうちにだんだんUWPとWPFの違いが分からんようになった
WPFでUWPのコントロール使えるなら、UWPは制限きついだけか?
23デフォルトの名無しさん (ドコグロ MM12-6eFW)
2019/10/09(水) 20:36:12.50ID:mYLA6NTyM Win限定なら作れる
でも現実にはある程度のユーザー数のある業務アプリなら.NET Framework の方が遥かに配布は楽だよ
ClickOnceが使えるからね
.NET CoreはSCDができるのはいいけど、配布や更新に関して良くも悪くも単なるexeができる以上のサポートは何もない
ヘタにzipで配っちゃったら後で地獄を見ることになる
でも現実にはある程度のユーザー数のある業務アプリなら.NET Framework の方が遥かに配布は楽だよ
ClickOnceが使えるからね
.NET CoreはSCDができるのはいいけど、配布や更新に関して良くも悪くも単なるexeができる以上のサポートは何もない
ヘタにzipで配っちゃったら後で地獄を見ることになる
24デフォルトの名無しさん (ドコグロ MM12-6eFW)
2019/10/09(水) 20:42:22.99ID:mYLA6NTyM あと、今から業務アプリを新規に作るんならそもそもクライアントアプリではなくWebにすべきだ
Webなら配布の心配なんか最初から要らないし、.NET開発におけるメインストリームだから情報も豊富だし将来性もある
Webなら配布の心配なんか最初から要らないし、.NET開発におけるメインストリームだから情報も豊富だし将来性もある
25デフォルトの名無しさん (ワッチョイ 6aad-y84I)
2019/10/09(水) 21:05:50.95ID:DtVKrlfY0 >>23
MSIX
MSIX
26デフォルトの名無しさん (ワッチョイ 9fad-PFG7)
2019/10/10(木) 01:06:13.89ID:8ioradGx0 >>19
フラグ使ってイベントハンドラの入り口でreturn
フラグ使ってイベントハンドラの入り口でreturn
27デフォルトの名無しさん (ワッチョイ 9701-UsEV)
2019/10/10(木) 11:00:47.70ID:EXU1k5cj0 質問なんですが
DataGridViewでテーブルを表示させてるんですが、中のデータを変更してもDataGridViewが更新できません
class Person
{
public int ID;
public string Name;
}
class PersonList
{
public List<Person> Data { get; }
public PersonList()
{
new Person { ID = 1, Name = "tanaka" };
new Person { ID = 2, Name = "kimura" };
}
}
PersonList personList = new PersonList();
DataGridView1.DataSource = personList.Data;
今は無理やりデータソースを一度Nullにして消して再読み込みしていまうs
private void Button1_Click(object sender, EventArgs e)
{
DataGridView1.DataSource = null;
DataGridView1.DataSource = personList.Data;
}
これでは画面が一度消えてちらついたり、セル幅がリセットされたり、いまいちです
DataGridViewの再読み込み再描画でうまい方法あるでしょうか?
DataGridViewでテーブルを表示させてるんですが、中のデータを変更してもDataGridViewが更新できません
class Person
{
public int ID;
public string Name;
}
class PersonList
{
public List<Person> Data { get; }
public PersonList()
{
new Person { ID = 1, Name = "tanaka" };
new Person { ID = 2, Name = "kimura" };
}
}
PersonList personList = new PersonList();
DataGridView1.DataSource = personList.Data;
今は無理やりデータソースを一度Nullにして消して再読み込みしていまうs
private void Button1_Click(object sender, EventArgs e)
{
DataGridView1.DataSource = null;
DataGridView1.DataSource = personList.Data;
}
これでは画面が一度消えてちらついたり、セル幅がリセットされたり、いまいちです
DataGridViewの再読み込み再描画でうまい方法あるでしょうか?
28デフォルトの名無しさん (ワッチョイ 7f7c-AFDN)
2019/10/10(木) 11:06:31.69ID:dY7xsk310 PersonにはINotifyPropertyChangedを実装して
各プロパティのsetでPropertyChangedイベントを発生させる
要素の追加削除に対応するならList<T>の代わりにBindingList<T>を使う
各プロパティのsetでPropertyChangedイベントを発生させる
要素の追加削除に対応するならList<T>の代わりにBindingList<T>を使う
29デフォルトの名無しさん (ワッチョイ 9701-UsEV)
2019/10/10(木) 16:37:05.29ID:EXU1k5cj030デフォルトの名無しさん (ワントンキン MM7f-IJsX)
2019/10/10(木) 19:37:58.48ID:+cMNiUZhM ASP.NET(VS2013) でWebアプリを作っています。
データベースから取得したデータをGridViewにBindしています。
特定のカラムを編集したくて OnDataBound イベントにて以下のようにしてTextBoxを追加しました。
foreach (GridViewRow rw in GridView1.Rows)
{
TextBox txt = new TextBox();
txt.Text = rw.Cells[2].Text;
rw.Cells[2].Controls.Add(txt);
}
この後、TextBoxの値を取得したいのですが、
foreach (GridViewRow rw in GridView1.Rows)
{
TextBox txt = (TextBox)rw.Cells[2].Controls[0];
xx = txt.Text;
}
ではうまくいきません。Controlsがないようです。
どうすればTextBoxの値を取得できるでしょうか。
データベースから取得したデータをGridViewにBindしています。
特定のカラムを編集したくて OnDataBound イベントにて以下のようにしてTextBoxを追加しました。
foreach (GridViewRow rw in GridView1.Rows)
{
TextBox txt = new TextBox();
txt.Text = rw.Cells[2].Text;
rw.Cells[2].Controls.Add(txt);
}
この後、TextBoxの値を取得したいのですが、
foreach (GridViewRow rw in GridView1.Rows)
{
TextBox txt = (TextBox)rw.Cells[2].Controls[0];
xx = txt.Text;
}
ではうまくいきません。Controlsがないようです。
どうすればTextBoxの値を取得できるでしょうか。
31デフォルトの名無しさん (ワイーワ2 FFdf-1wBF)
2019/10/10(木) 19:39:53.55ID:i+8+28k+F ・extBox txt = (TextBox)(rw.Cells[2]).Controls[0];
32デフォルトの名無しさん (ワントンキン MM7f-IJsX)
2019/10/10(木) 20:08:53.90ID:aBdkLcoOM33デフォルトの名無しさん (ワッチョイ ffa7-NJTS)
2019/10/10(木) 21:29:45.48ID:kk1CdJ+b0 ProcessクラスにはDispose()があるようですが、
var processes = Process.GetProcesses();
とした時点で上記のProcess[]内のProcessたちを全てDispose()しないとメモリリークなどしてしまうのでしょうか?
それとも実際にハンドルなどを参照したものだけDispose()すれば良いのでしょうか?
var processes = Process.GetProcesses();
とした時点で上記のProcess[]内のProcessたちを全てDispose()しないとメモリリークなどしてしまうのでしょうか?
それとも実際にハンドルなどを参照したものだけDispose()すれば良いのでしょうか?
34デフォルトの名無しさん (アウアウウー Sa5b-AFDN)
2019/10/10(木) 21:39:45.74ID:afa4sCIxa >>33
https://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/Process.cs,1554
ReferenceSourceを見ると
GetProcessesByName()が内部でGetProcesses()を使っていて、それの戻り値配列に使わない場合はDispose()しているから
GetProcesses()を直接呼び出している場合でも戻り値配列の各ProcessをDispose()したほうが良さそう
GC管理下にあるからDisposeを呼び忘れていても、ファイナライザが呼び出されて少なくともメモリーは回収されるとは思う
https://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/Process.cs,1554
ReferenceSourceを見ると
GetProcessesByName()が内部でGetProcesses()を使っていて、それの戻り値配列に使わない場合はDispose()しているから
GetProcesses()を直接呼び出している場合でも戻り値配列の各ProcessをDispose()したほうが良さそう
GC管理下にあるからDisposeを呼び忘れていても、ファイナライザが呼び出されて少なくともメモリーは回収されるとは思う
35デフォルトの名無しさん (ワッチョイ ffa7-NJTS)
2019/10/10(木) 21:49:47.76ID:kk1CdJ+b036デフォルトの名無しさん (ワッチョイ 976e-qVzB)
2019/10/10(木) 21:51:48.13ID:IMCrZqO+0 クラスA内にインスタンスメソッドBがあったとして、長くなってしまったから一部をメソッドCとして外に出すとします
このCはBから呼び出される以外どこからも参照されません。本当にちょっと分離するためだけに分けているのです
このときCの修飾子はどうするのがいいのでしょうか。publicは論外として、ただ単にprivateでいいんですかね
staticとかつけた方がいいですか?クラス内で変な使われ方するのを防いだ方がいいかなとか思ったのですが
このCはBから呼び出される以外どこからも参照されません。本当にちょっと分離するためだけに分けているのです
このときCの修飾子はどうするのがいいのでしょうか。publicは論外として、ただ単にprivateでいいんですかね
staticとかつけた方がいいですか?クラス内で変な使われ方するのを防いだ方がいいかなとか思ったのですが
37デフォルトの名無しさん (ワッチョイ 7717-NJTS)
2019/10/10(木) 22:11:44.95ID:IquandTc0 そのソースを自分しか触らないのであればprivateでいいと思う
自分で作っているんだから変な使われ方をされることもないだろ?
もし他の開発者が触る可能性があるんならローカル関数を使えばOK
自分で作っているんだから変な使われ方をされることもないだろ?
もし他の開発者が触る可能性があるんならローカル関数を使えばOK
38デフォルトの名無しさん (ワッチョイ 9fad-vnAR)
2019/10/10(木) 22:18:06.84ID:BXM3vcse0 privateにしてコメントに注意書きしておけばいいと思うが
メソッド名の頭にアンダースコアつけるとか
DoSomethingFromBOnly()みたいな名前にしておくとか
メソッド名の頭にアンダースコアつけるとか
DoSomethingFromBOnly()みたいな名前にしておくとか
39デフォルトの名無しさん (ワッチョイ f761-GP3X)
2019/10/10(木) 22:21:13.96ID:hT7PmE+00 全部public
クラスAを継承したクラスA2で
メソッドBをちょっと変えた
メソッドB2を作りたいときに
メソッドCを呼べない欠陥クラス
クラスAを継承したクラスA2で
メソッドBをちょっと変えた
メソッドB2を作りたいときに
メソッドCを呼べない欠陥クラス
40デフォルトの名無しさん (アウアウウー Sa5b-YqqQ)
2019/10/10(木) 22:26:58.12ID:PsSxAeUca >>36
普通にprivateにすればOK。
誤用されるリスクは分割したメソッドに固有の問題じゃない。
それは命名と抽象化が不適切ならどのメソッドにも起こりうる。
だから分割したら誤用されるんじゃないか、って発想はかなり変だ。
staticはインスタンスメンバーを使わないなら付けるべきだが、付けたからって
誤用されるリスクが減るわけじゃない。
ローカル関数は、
(1) 分割したメソッドを何度も呼び出す。
(2) その時に必ず同じ変数を引数として渡す(それが冗長に感じる)
こういうケースじゃなきゃ積極的に使う理由はない気がする。
普通にprivateにすればOK。
誤用されるリスクは分割したメソッドに固有の問題じゃない。
それは命名と抽象化が不適切ならどのメソッドにも起こりうる。
だから分割したら誤用されるんじゃないか、って発想はかなり変だ。
staticはインスタンスメンバーを使わないなら付けるべきだが、付けたからって
誤用されるリスクが減るわけじゃない。
ローカル関数は、
(1) 分割したメソッドを何度も呼び出す。
(2) その時に必ず同じ変数を引数として渡す(それが冗長に感じる)
こういうケースじゃなきゃ積極的に使う理由はない気がする。
41デフォルトの名無しさん (ワッチョイ 9f79-NJTS)
2019/10/10(木) 23:44:04.64ID:a+kHg1ZD0 メソッドBからしか正常に動作しないメソッドCという構図ならそもそも設計が怪しい
メソッドB以外から使われることがないだろうくらいの感じなら
万一使われても別に困らないしprivateで問題ない
メソッドB以外から使われることがないだろうくらいの感じなら
万一使われても別に困らないしprivateで問題ない
42デフォルトの名無しさん (アウアウウー Sa5b-Cvo3)
2019/10/10(木) 23:49:12.95ID:+/bzkuJ6a ローカル関数を使いたがる奴は総じてレベルが低いね
43デフォルトの名無しさん (ワッチョイ 1f2d-epSy)
2019/10/10(木) 23:51:17.44ID:mQn3Hgbj0 グローバルおじさんが来たな
44デフォルトの名無しさん (ワッチョイ f761-GP3X)
2019/10/10(木) 23:56:49.95ID:hT7PmE+0045デフォルトの名無しさん (ワッチョイ 1f2d-epSy)
2019/10/10(木) 23:58:46.54ID:mQn3Hgbj0 >>44
でもまあ拡張性に優れてないのは元からっぽいから、分けて書くことに始まった問題じゃないじゃん?
でもまあ拡張性に優れてないのは元からっぽいから、分けて書くことに始まった問題じゃないじゃん?
46デフォルトの名無しさん (ワッチョイ 9f79-NJTS)
2019/10/11(金) 00:18:02.53ID:f+9us5CU0 全部publicおじさんなんかどう見ても荒らしなんだからNGに放り込んどけ
47デフォルトの名無しさん (ワッチョイ f761-GP3X)
2019/10/11(金) 00:18:46.89ID:vfhfRP3v0 >>39のケースを解決しようととりあえずprotectedにすればいいと思うだろ?
ところがメソッドB2の処理の途中に
クラスXの処理を絡ませなければならないことになった
しかし、クラスA2はクラスXを呼び出すと循環参照になってしまうためそれができない
なのでクラスEにメソッドB3を作成することになった
ときにメソッドCはprivateでは呼び出すことができない
ここまで解決しようとするとメソッドCはpublicにしておくしかない
そしてこれはよくあることだ
ところがメソッドB2の処理の途中に
クラスXの処理を絡ませなければならないことになった
しかし、クラスA2はクラスXを呼び出すと循環参照になってしまうためそれができない
なのでクラスEにメソッドB3を作成することになった
ときにメソッドCはprivateでは呼び出すことができない
ここまで解決しようとするとメソッドCはpublicにしておくしかない
そしてこれはよくあることだ
48デフォルトの名無しさん (ワッチョイ 9fa5-8cCB)
2019/10/11(金) 00:26:16.32ID:i87v0bN60 全部virtualだろ普通
49デフォルトの名無しさん (ワッチョイ 17da-IE9o)
2019/10/11(金) 06:13:02.24ID:YbeJbbo90 皆さんは、Windowsノートパソコンで開発されてるのでしょうか?
それともsurface?MacBook Pro?iPad Pro?
プログラミング用にMacBookをすすめるサイトをよく見ますがC#ではやはりWindows機?
個人的にはThinkPadかなと思ってますが
皆さんはどんなもんですか
それともsurface?MacBook Pro?iPad Pro?
プログラミング用にMacBookをすすめるサイトをよく見ますがC#ではやはりWindows機?
個人的にはThinkPadかなと思ってますが
皆さんはどんなもんですか
50デフォルトの名無しさん (ワッチョイ 5763-a9Gg)
2019/10/11(金) 06:47:08.88ID:MFeQoEVg0 デスクトップだけど
51デフォルトの名無しさん (ドコグロ MM9b-Kkga)
2019/10/11(金) 07:23:14.81ID:e5VBdiYBM >>47
> そしてこれはよくあることだ
ねーよ
よくあるとしたらお前の設計力が無さすぎ
そもそも
> メソッドBをちょっと変えた
> メソッドB2を作りたいときに
の時にBからB2をコピペして改変する時点でアホ丸出し
> そしてこれはよくあることだ
ねーよ
よくあるとしたらお前の設計力が無さすぎ
そもそも
> メソッドBをちょっと変えた
> メソッドB2を作りたいときに
の時にBからB2をコピペして改変する時点でアホ丸出し
52デフォルトの名無しさん (ワッチョイ f761-GP3X)
2019/10/11(金) 07:54:18.02ID:vfhfRP3v053デフォルトの名無しさん (ドコグロ MM9b-Kkga)
2019/10/11(金) 08:18:01.09ID:e5VBdiYBM >>52
アホすぎる…
クラスAをベースクラスにして変更部分をvirtualで差し替えてA1(これが今までのA)とA2を作る
変更部分にCを呼ぶコードがあるならCはクラスA1にだけあればいい
変更部分にCを呼ぶコードがないならCはクラスAに置いとけばいい
アホすぎる…
クラスAをベースクラスにして変更部分をvirtualで差し替えてA1(これが今までのA)とA2を作る
変更部分にCを呼ぶコードがあるならCはクラスA1にだけあればいい
変更部分にCを呼ぶコードがないならCはクラスAに置いとけばいい
54デフォルトの名無しさん (ワッチョイ f761-GP3X)
2019/10/11(金) 08:20:42.62ID:vfhfRP3v055デフォルトの名無しさん (アウアウウー Sa5b-IE9o)
2019/10/11(金) 08:24:45.95ID:blacN5wca >>50
うぅ・・
うぅ・・
56デフォルトの名無しさん (ワッチョイ ffa7-NJTS)
2019/10/11(金) 08:43:13.37ID:Q3FyvZZg0 今開発中のもので初めて例外を補足しない強制終了が起こったのですが、原因としては唯一のunsafeであるstackallocだと思われます
var stack = count <= 20 ? stackalloc ulong[count] : new ulong[count];
動的なサイズですが上記のように一応サイズ制限はしていたのですが、ulong[20](160byte)程度でもスタックオーバーフローは起こり得るんでしょうか?
var stack = count <= 20 ? stackalloc ulong[count] : new ulong[count];
動的なサイズですが上記のように一応サイズ制限はしていたのですが、ulong[20](160byte)程度でもスタックオーバーフローは起こり得るんでしょうか?
57デフォルトの名無しさん (ドコグロ MM9b-Kkga)
2019/10/11(金) 08:56:19.70ID:e5VBdiYBM58デフォルトの名無しさん (ワンミングク MM7f-IJsX)
2019/10/11(金) 08:56:32.12ID:01d3zJlsM >>30です。
何かヒント頂けないでしょうか。
何かヒント頂けないでしょうか。
59デフォルトの名無しさん (ワッチョイ 1788-3EhD)
2019/10/11(金) 09:01:19.07ID:w9BsPIYw0 >>56
残りスタックが少なければ起こりうると思うけど例外吐いてないなら別の要因じゃないかと思う
残りスタックが少なければ起こりうると思うけど例外吐いてないなら別の要因じゃないかと思う
60デフォルトの名無しさん (ワッチョイ 7f7c-AFDN)
2019/10/11(金) 09:06:03.62ID:Nij9ynML0 >>56
イベントログを見てStackOverflowExceptionであることは確認した?
イベントログを見てStackOverflowExceptionであることは確認した?
61デフォルトの名無しさん (ドコグロ MM8b-Cvo3)
2019/10/11(金) 09:46:04.72ID:ZRjHQIQqM62デフォルトの名無しさん (アウアウウー Sa5b-AFDN)
2019/10/11(金) 10:32:44.13ID:4B4iU4j0a >>61
https://ufcpp.net/study/csharp/resource/span/#safe-stackalloc
C#7.2から出来るようになった
stackallocもnewも暗黙的にSpan<T>へ変換される
https://ufcpp.net/study/csharp/resource/span/#safe-stackalloc
C#7.2から出来るようになった
stackallocもnewも暗黙的にSpan<T>へ変換される
63デフォルトの名無しさん (ワッチョイ d7de-GP3X)
2019/10/11(金) 11:58:36.03ID:y81cSpJS064デフォルトの名無しさん (ドコグロ MM9b-Kkga)
2019/10/11(金) 12:32:45.04ID:e5VBdiYBM65デフォルトの名無しさん (ワッチョイ f7de-GP3X)
2019/10/11(金) 12:59:48.32ID:47sbrrFf0 >>64
え?継承元のprivateって呼べないよね?
え?継承元のprivateって呼べないよね?
66デフォルトの名無しさん (アウアウクー MMcb-t9WR)
2019/10/11(金) 13:49:55.26ID:R9rR1P0/M 古いコードを見ているのですが
if (false) {// なにか処理}
がたっくさんあるんです。
到達できないコードが検出されましたって大量に出て当たり前だよ!って
仮に何か意味があるとしたらどんな理由が考えられるでしょうか
全部消せと思うのですが何かわたしの知らないテクニックだったらまずいですし
if (false) {// なにか処理}
がたっくさんあるんです。
到達できないコードが検出されましたって大量に出て当たり前だよ!って
仮に何か意味があるとしたらどんな理由が考えられるでしょうか
全部消せと思うのですが何かわたしの知らないテクニックだったらまずいですし
67デフォルトの名無しさん (ワッチョイ 5701-Jxu8)
2019/10/11(金) 13:49:59.05ID:V+fiNkQ50 C#なら出来るでしょう
68デフォルトの名無しさん (ワッチョイ 17da-dMdZ)
2019/10/11(金) 13:51:26.84ID:IXdSVzcC0 テスト用なんじゃね
必要なくなったからfalseにしているだけでは
必要なくなったからfalseにしているだけでは
69デフォルトの名無しさん (ワッチョイ 1788-3EhD)
2019/10/11(金) 14:01:31.76ID:w9BsPIYw0 テストとかデバッグ用の処理じゃないかな
#if falseにすれば警告は除去できると思う
#if falseにすれば警告は除去できると思う
70デフォルトの名無しさん (ドコグロ MM2b-Kkga)
2019/10/11(金) 14:50:33.17ID:Y/pxrYXGM71デフォルトの名無しさん (ワッチョイ f7de-GP3X)
2019/10/11(金) 16:11:04.13ID:RwnMXNoM072デフォルトの名無しさん (ワッチョイ 9701-UsEV)
2019/10/11(金) 16:55:31.32ID:BNgoH63S0 Properties.Settings.Defaultについて教えてください
DataGridViewのセル幅の設定を保存したいのですが、いい方法はあるでしょうか?
セルが20個ほど並んでるのですが、Settings.SettingsにはInt[]の配列が選べないし
プロパティバインディングも項目がありません、たくさんのIntを保存するにはどうしたらよいでしょか?
DataGridViewのセル幅の設定を保存したいのですが、いい方法はあるでしょうか?
セルが20個ほど並んでるのですが、Settings.SettingsにはInt[]の配列が選べないし
プロパティバインディングも項目がありません、たくさんのIntを保存するにはどうしたらよいでしょか?
73デフォルトの名無しさん (アウアウウー Sa5b-YqqQ)
2019/10/11(金) 16:55:34.98ID:Qe/y/ERba >>66
謎だねw
#ifディレクティブやコメントアウトを選択しなかった理由は
IDEでシンボル検索した時に引っかかるようにしたかったから、とかも考えられるけど、
まあ多分単純に書いた人がアホなだけだろうw
仮にそうう理由があるとしてもfalseなんてリテラルをそのまま書くのは意味が分からん
謎だねw
#ifディレクティブやコメントアウトを選択しなかった理由は
IDEでシンボル検索した時に引っかかるようにしたかったから、とかも考えられるけど、
まあ多分単純に書いた人がアホなだけだろうw
仮にそうう理由があるとしてもfalseなんてリテラルをそのまま書くのは意味が分からん
74デフォルトの名無しさん (ワッチョイ 5701-Jxu8)
2019/10/11(金) 17:05:59.65ID:V+fiNkQ50 Java屋に呪いをかけられた。
75デフォルトの名無しさん (ワッチョイ 7f7c-AFDN)
2019/10/11(金) 17:10:57.43ID:Nij9ynML0 >>72
カンマ区切りの文字列にでもするとか
カンマ区切りの文字列にでもするとか
76デフォルトの名無しさん (ワッチョイ 9f42-NJTS)
2019/10/11(金) 17:48:11.14ID:6fhPxX7E0 json.netで文字列にして保存とか・・・そこまでやるならってのはナシで
77デフォルトの名無しさん (ドコグロ MM2b-Kkga)
2019/10/11(金) 17:58:14.17ID:Y/pxrYXGM78デフォルトの名無しさん (スププ Sdbf-d6eQ)
2019/10/11(金) 18:18:20.39ID:8nYO+EkJd 質問した人はもはや興味なくなってそう
79デフォルトの名無しさん (ワッチョイ 9701-UsEV)
2019/10/11(金) 19:16:25.09ID:BNgoH63S080デフォルトの名無しさん (ワッチョイ 5701-Jxu8)
2019/10/11(金) 19:54:41.57ID:V+fiNkQ50 splitで配列化出来るでしょ?
81デフォルトの名無しさん (ワッチョイ 7f7c-AFDN)
2019/10/11(金) 19:57:20.55ID:Nij9ynML0 挙動が怪しいって言われてもコメントしようがない
82デフォルトの名無しさん (オッペケ Srcb-8cCB)
2019/10/11(金) 19:59:39.92ID:NbTMQOfEr カンマが全角半角交じりなのかもね
83デフォルトの名無しさん (ワッチョイ 9701-UsEV)
2019/10/11(金) 20:21:50.98ID:BNgoH63S0 >>80
さんくす
数字カンマで区切ってsplitですか、簡単にできそうですね
>>81
保存する種類をsystem.collections.specialized.stringcollectionとゆう文字列のコレクションを使って
.addと.clearでいろいろやってるうちにwidthが0になったりと
Properties.Settings.Default.cellwidth = new System.Collections.Specialized.StringCollection();
for (int i = 0; i < DataGridView1.ColumnCount; i++)
{
Properties.Settings.Default.cellwidth.Add(DataGridView1.Columns[i].Width.ToString());
}
こんなんです、これは捨てます
さんくす
数字カンマで区切ってsplitですか、簡単にできそうですね
>>81
保存する種類をsystem.collections.specialized.stringcollectionとゆう文字列のコレクションを使って
.addと.clearでいろいろやってるうちにwidthが0になったりと
Properties.Settings.Default.cellwidth = new System.Collections.Specialized.StringCollection();
for (int i = 0; i < DataGridView1.ColumnCount; i++)
{
Properties.Settings.Default.cellwidth.Add(DataGridView1.Columns[i].Width.ToString());
}
こんなんです、これは捨てます
84デフォルトの名無しさん (ワッチョイ 1788-3EhD)
2019/10/11(金) 20:36:41.64ID:w9BsPIYw0 string.Join(",", array)で保存
array=text.Split(",").ToArray()で復元
スマホで書いたからミスってたらごめん
array=text.Split(",").ToArray()で復元
スマホで書いたからミスってたらごめん
85デフォルトの名無しさん (アウアウエー Sadf-P4H7)
2019/10/11(金) 20:37:39.82ID:NJkU4MQ7a >>49
非光沢液晶のパソコンでプログラミングすることをすすめます。
非光沢液晶のパソコンでプログラミングすることをすすめます。
86デフォルトの名無しさん (ワッチョイ 9701-UsEV)
2019/10/11(金) 20:48:12.25ID:BNgoH63S087デフォルトの名無しさん (ワッチョイ 9f01-XBGY)
2019/10/11(金) 21:11:40.42ID:LwZAFcHp088デフォルトの名無しさん (ワッチョイ 9f01-XBGY)
2019/10/11(金) 21:37:31.10ID:LwZAFcHp089デフォルトの名無しさん (ワッチョイ 9fba-hyGP)
2019/10/11(金) 21:55:04.78ID:Obz6LqVu0 不要な循環参照は避けるに越したことはないが
絶対に回避しないといけないものではないしな
設計的に妥当かどうか
絶対に回避しないといけないものではないしな
設計的に妥当かどうか
90デフォルトの名無しさん (ワッチョイ 9701-UsEV)
2019/10/11(金) 22:06:26.29ID:BNgoH63S09136 (ワッチョイ 976e-qVzB)
2019/10/11(金) 22:30:13.36ID:SS1U2hzP0 遅くなりましたがありがとうございました。とりあえずprivateでやってみようと思います。
しかし恥ずかしながらローカル関数って初めて知りました……こんなんあったのか
しかし恥ずかしながらローカル関数って初めて知りました……こんなんあったのか
92デフォルトの名無しさん (ブーイモ MMbf-dMdZ)
2019/10/11(金) 23:40:49.38ID:AHeGNijQM なんとローカルクラスもあったりするぞ
93デフォルトの名無しさん (ワッチョイ 9f79-NJTS)
2019/10/12(土) 03:22:40.33ID:wdaAvj3T0 ローカルクラスとか初めて聞いたんだが
Javaか何かと間違えてないか?
Javaか何かと間違えてないか?
94デフォルトの名無しさん (ワッチョイ 9fba-hyGP)
2019/10/12(土) 03:39:46.40ID:GmlLfjiE0 内部クラスつまりクラス内クラスのことかもな
ローカルクラスとは言わないけどな
ローカルクラスとは言わないけどな
95デフォルトの名無しさん (ワッチョイ ff1b-7XqI)
2019/10/12(土) 08:19:37.23ID:2OGp7+/U0 匿名クラスのことだろ
LinQの関数の戻りとかでたまに使う
LinQの関数の戻りとかでたまに使う
96デフォルトの名無しさん (ワッチョイ ff1b-7XqI)
2019/10/12(土) 08:24:48.13ID:2OGp7+/U0 var hoge = new { Name = "Masashi", Hage = true };
こんな感じで宣言出來ると思う
こんな感じで宣言出來ると思う
97デフォルトの名無しさん (ワッチョイ 7717-NJTS)
2019/10/12(土) 11:24:29.87ID:tnbTUN6u0 class hoge {
class fuga {}
class moge {}
}
こういうやつ
呼び方は知らん
class fuga {}
class moge {}
}
こういうやつ
呼び方は知らん
98デフォルトの名無しさん (ワッチョイ 9fad-0kc9)
2019/10/12(土) 11:25:43.31ID:V3SUioeZ0 ローカルクラスwww
99デフォルトの名無しさん (ワッチョイ 97ad-Gs6/)
2019/10/12(土) 11:45:16.39ID:vesGJIfT0 Java 用語だったのか。 < ローカルクラス
クラス内だけじゃなくてメソッド内でも作れるみたいだけど。
匿名クラスは無名クラスだと思ってた自分。
この流れでしょうもないことを聞いてみる。
static なメンバ変数の修飾子というか、
static でないメンバ変数の this.[変数名] の this に当たるようなのってなにかないですか。
[クラス名].[変数名] で ok なのだけど、[クラス名] の部分を固定でやる方法ないかなと。
クラス内だけじゃなくてメソッド内でも作れるみたいだけど。
匿名クラスは無名クラスだと思ってた自分。
この流れでしょうもないことを聞いてみる。
static なメンバ変数の修飾子というか、
static でないメンバ変数の this.[変数名] の this に当たるようなのってなにかないですか。
[クラス名].[変数名] で ok なのだけど、[クラス名] の部分を固定でやる方法ないかなと。
100デフォルトの名無しさん (ワッチョイ 177b-1wBF)
2019/10/12(土) 11:59:16.22ID:XFT6PVwJ0 >>99
エイリアスとかこういう話?
using ディレクティブ
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-directive
エイリアスとかこういう話?
using ディレクティブ
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-directive
101デフォルトの名無しさん (ワッチョイ 9ff9-MuM5)
2019/10/12(土) 13:15:47.71ID:4Z7PGm8S0102デフォルトの名無しさん (ワッチョイ 9701-UsEV)
2019/10/13(日) 08:38:04.22ID:LP1yPe2h0 for(int i = 0; DataGridView1.Columns.Count > i; i++)
{
DataGridView1.Columns[i].MinimumWidth = 20;
}
これってもっと簡単に書けませんか?
{
DataGridView1.Columns[i].MinimumWidth = 20;
}
これってもっと簡単に書けませんか?
103デフォルトの名無しさん (ワッチョイ 9fba-hyGP)
2019/10/13(日) 08:43:29.30ID:vtlUUDcx0 重複するコードを削っていくのがコツ
104デフォルトの名無しさん (ワッチョイ 9fba-hyGP)
2019/10/13(日) 08:45:05.27ID:vtlUUDcx0 コード変えていいならLINQとかもあり
105デフォルトの名無しさん (ワッチョイ 976e-qVzB)
2019/10/13(日) 09:09:50.77ID:d8Y4MxQw0 全回しするときは基本的にforeachを使う
ただlinqのforeachを使ってよいのかはよくわからん。パフォーマンス悪いと聞くし
ただlinqのforeachを使ってよいのかはよくわからん。パフォーマンス悪いと聞くし
106デフォルトの名無しさん (ワッチョイ ff1b-7XqI)
2019/10/13(日) 09:18:59.05ID:MGaULTRj0 LinqにForEachはない
あれはリストのメソッドだよ
あれはリストのメソッドだよ
107デフォルトの名無しさん (ワッチョイ 9701-UsEV)
2019/10/13(日) 09:22:18.96ID:LP1yPe2h0108デフォルトの名無しさん (アウアウイー Sacb-FzDa)
2019/10/13(日) 09:33:52.48ID:f3TGJJSYa ん?
for (var c in DataGridView1.Columns) { c.MinimumWidth=20; }
よりも短く描きたいってこと?
for (var c in DataGridView1.Columns) { c.MinimumWidth=20; }
よりも短く描きたいってこと?
109デフォルトの名無しさん (ワッチョイ f761-GP3X)
2019/10/13(日) 09:47:34.60ID:OAJhlsQO0 そんなんどうでもいいから動くモノ作れよ初心者
110デフォルトの名無しさん (ワッチョイ 9701-UsEV)
2019/10/13(日) 11:07:58.19ID:LP1yPe2h0111デフォルトの名無しさん (ブーイモ MMfb-7uLQ)
2019/10/13(日) 11:40:17.68ID:OktAHnGcM >>108
foreach
foreach
112デフォルトの名無しさん (ワッチョイ ff1b-7XqI)
2019/10/13(日) 11:45:00.17ID:MGaULTRj0 >>110
var をDataGridColumn に変えれば出る
var をDataGridColumn に変えれば出る
113デフォルトの名無しさん (アウアウイー Sacb-FzDa)
2019/10/13(日) 11:55:56.33ID:f3TGJJSYa えーそんなわけないでしょと思って確認したら
ColumnsのDataGridViewColumnCollectionは非ジェネリクスのIListしか実装してないのか・・・
DataGridViewってVS2005以前の書き方で実装されてるのね
となると、かっこ悪いけどキャストをかませて
for (var c in DataGridView1.Columns) { (c as DataGridViewColumn).MinimumWidth=20; }
と書くくらいしかないか、>>103のとおりDataGridView.Columnsを変数にするくらいしかなさそう
ColumnsのDataGridViewColumnCollectionは非ジェネリクスのIListしか実装してないのか・・・
DataGridViewってVS2005以前の書き方で実装されてるのね
となると、かっこ悪いけどキャストをかませて
for (var c in DataGridView1.Columns) { (c as DataGridViewColumn).MinimumWidth=20; }
と書くくらいしかないか、>>103のとおりDataGridView.Columnsを変数にするくらいしかなさそう
114デフォルトの名無しさん (アウアウイー Sacb-FzDa)
2019/10/13(日) 11:57:39.01ID:f3TGJJSYa あ、forじゃなくてforeachか
ちゃんとIDEなりVSCodeなり立ち上げて書かなきゃだめね、失礼
ちゃんとIDEなりVSCodeなり立ち上げて書かなきゃだめね、失礼
115デフォルトの名無しさん (ワッチョイ 9701-Wib4)
2019/10/13(日) 12:28:10.86ID:Fykc0AcJ0 抽象クラスとインターフェースの使い分けのコツを具体例で教えて下さい!
116デフォルトの名無しさん (ブーイモ MMfb-4N8v)
2019/10/13(日) 12:37:21.72ID:mgqzqij/M 昔の人は言いました「習うより慣れろ」
117デフォルトの名無しさん (ワッチョイ f761-NJTS)
2019/10/13(日) 12:37:30.46ID:f2RSEbKl0 そんなんどうでもいいから動くモノ作れよ初心者
118デフォルトの名無しさん (アウアウウー Sa5b-Cvo3)
2019/10/13(日) 12:43:25.13ID:2Iz5cpana >>116
使い分ける必要はない
常にインターフェイスを使う、でいいよ
抽象クラスはインターフェイスを使った上で、どうしても実装の大部分が重複してしまうような場合に稀に使うことがある、という程度のもの
全く使わなくても問題はない
使い分ける必要はない
常にインターフェイスを使う、でいいよ
抽象クラスはインターフェイスを使った上で、どうしても実装の大部分が重複してしまうような場合に稀に使うことがある、という程度のもの
全く使わなくても問題はない
119デフォルトの名無しさん (ワッチョイ 97ad-Gs6/)
2019/10/13(日) 12:58:41.62ID:BB7naElC0 >>100
所属クラスを示す汎用のエイリアスのようなものがないかなーと。
でも using static ディレクティブ自体を知らなかったので勉強になりました。これを定義すれば結果として同じ事出来るし。
ありがとう。
所属クラスを示す汎用のエイリアスのようなものがないかなーと。
でも using static ディレクティブ自体を知らなかったので勉強になりました。これを定義すれば結果として同じ事出来るし。
ありがとう。
120デフォルトの名無しさん (ブーイモ MMfb-4N8v)
2019/10/13(日) 13:02:36.16ID:mgqzqij/M 昔の人は言いました「100人のプログラマーがいたら100通りのオブジェクト指向がある」
121デフォルトの名無しさん (ワッチョイ 9701-UsEV)
2019/10/13(日) 13:29:52.94ID:LP1yPe2h0122デフォルトの名無しさん (ワッチョイ 1763-pvAI)
2019/10/13(日) 14:00:31.12ID:2cfG7zlA0 8からデフォルト実装も入るからますます使いどころが
123デフォルトの名無しさん (ワッチョイ ff7c-NJTS)
2019/10/13(日) 18:12:47.60ID:0yCAsIX/0 WinFormsで、フォーカスが当たってない時でもキー入力を取る方法ってありますか?
124デフォルトの名無しさん (ワッチョイ f77b-l+7E)
2019/10/13(日) 18:19:19.83ID:jypX7pQ50125デフォルトの名無しさん (アウアウウー Sa5b-djnn)
2019/10/15(火) 07:52:01.52ID:AMNrrJ6ya >>123
key入力をグローバルHook
key入力をグローバルHook
126デフォルトの名無しさん (ササクッテロル Spcb-W2Tq)
2019/10/15(火) 11:19:35.89ID:m0jqn6iGp アプリ自体にフォーカス当たって無くてもいいの?
127デフォルトの名無しさん (ワッチョイ 17da-M8NH)
2019/10/15(火) 11:24:15.06ID:pr9WFxZa0 イインダヨ
128デフォルトの名無しさん (ササクッテロル Spcb-W2Tq)
2019/10/15(火) 11:28:33.47ID:m0jqn6iGp ああ、パスワードスキミングするならむしろそうじゃないと都合悪いかw
129デフォルトの名無しさん (ブーイモ MMcf-M8NH)
2019/10/15(火) 11:50:04.39ID:+5Q+C2RJM 必死でない頭絞って
やっと浮かんだ用途がそれなのか?
残念な人だこと…
やっと浮かんだ用途がそれなのか?
残念な人だこと…
130デフォルトの名無しさん (ワッチョイ f738-hyGP)
2019/10/15(火) 14:23:13.71ID:fSd1Dwex0 この手の質問に対する定番の回答やぞ
131デフォルトの名無しさん (ワッチョイ 7745-/roT)
2019/10/15(火) 20:41:28.27ID:5pSAXFzm0 1ヶ月位VBAを触って今日Visual Studio Express 2017をインストールしました
せっかくならVBAの癖が着く前に…と思ったのですが、VBAで書いたプログラムに互換性は無いでしょうか?
せっかくならVBAの癖が着く前に…と思ったのですが、VBAで書いたプログラムに互換性は無いでしょうか?
132デフォルトの名無しさん (アウアウウー Sa5b-YqqQ)
2019/10/15(火) 20:52:55.04ID:Hz78fwHza >>131
ここ、C#のスレだよw
VBAは20年前に死亡宣告されたVB6の親戚。
今のVisual Studioに入ってるVisual Basicとは似てるけど別物。
もちろんC#とは似ても似つかない
ここ、C#のスレだよw
VBAは20年前に死亡宣告されたVB6の親戚。
今のVisual Studioに入ってるVisual Basicとは似てるけど別物。
もちろんC#とは似ても似つかない
133デフォルトの名無しさん (ワッチョイ 7717-NJTS)
2019/10/15(火) 20:54:38.84ID:E2P2T6Cd0134デフォルトの名無しさん (ワッチョイ 7745-/roT)
2019/10/15(火) 21:03:51.96ID:5pSAXFzm0135デフォルトの名無しさん (ワッチョイ f7da-Jxu8)
2019/10/15(火) 21:13:12.98ID:E/67JFVJ0 SharpDevelop入れて、C#→vbかな
136デフォルトの名無しさん (ワッチョイ ff7b-v59O)
2019/10/15(火) 21:15:31.52ID:n+UvEGVJ0 >>134
質問の内容が変わっているよね
VBAで作ったものはVB.Netに手直し程度で動かせるようになるものができる場合もあるけどC#は書き方も完全に別物
ここで聞くより自分のPCで動かしてみたほうが早い
質問の内容が変わっているよね
VBAで作ったものはVB.Netに手直し程度で動かせるようになるものができる場合もあるけどC#は書き方も完全に別物
ここで聞くより自分のPCで動かしてみたほうが早い
137デフォルトの名無しさん (ワッチョイ 9fad-0kc9)
2019/10/15(火) 21:15:48.41ID:h8W4Pu510 >>135
そこはVisual Studio Codeやろ…
そこはVisual Studio Codeやろ…
138デフォルトの名無しさん (アウアウウー Sa5b-YqqQ)
2019/10/15(火) 21:16:06.96ID:Hz78fwHza139デフォルトの名無しさん (ワッチョイ 972d-epSy)
2019/10/15(火) 21:20:18.71ID:zMbku3w90 用語と名付けルールについていくつか教えてください
まず、class Asdf{}の入れた物(Asdf asdf; でいうasdf)は、何と呼べばいいんですか?変数でいいのでしょうか?
また、Asdfの入ったものを自動プロパティで宣言したい場合、一文字めを大文字にすべきなのでしょうか?
Asdf Asdf{get; set;}なのか、Asdf asdf{get; set;}なのかどちらが正しいのでしょうか
まず、class Asdf{}の入れた物(Asdf asdf; でいうasdf)は、何と呼べばいいんですか?変数でいいのでしょうか?
また、Asdfの入ったものを自動プロパティで宣言したい場合、一文字めを大文字にすべきなのでしょうか?
Asdf Asdf{get; set;}なのか、Asdf asdf{get; set;}なのかどちらが正しいのでしょうか
140デフォルトの名無しさん (アウアウウー Sa5b-AFDN)
2019/10/15(火) 21:23:27.13ID:NTOFWHv0a141デフォルトの名無しさん (ワッチョイ 7745-/roT)
2019/10/15(火) 21:25:58.88ID:5pSAXFzm0142デフォルトの名無しさん (ワッチョイ 972d-epSy)
2019/10/15(火) 22:44:41.51ID:zMbku3w90143デフォルトの名無しさん (ワッチョイ 1663-GUq/)
2019/10/17(木) 01:03:06.25ID:GTpPRCCe0 Pythonでは文字列をコマンドとして実行するのにevalとexecの2つあるみたいですが
C#で文字列をコマンドとして実行するには、eval以外の関数はありますか?
C#で文字列をコマンドとして実行するには、eval以外の関数はありますか?
144デフォルトの名無しさん (ワッチョイ 23da-CXe6)
2019/10/17(木) 01:25:51.67ID:lbhPCdA40 あるよ
145デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
2019/10/17(木) 09:37:45.19ID:ewN8FeZ7F subprocess.popen
subprocess.call
subprocess.call_hogehoge
もっとあるぞ
subprocess.call
subprocess.call_hogehoge
もっとあるぞ
146デフォルトの名無しさん (ワッチョイ 5fda-+VEO)
2019/10/17(木) 11:49:09.47ID:qkwcuRdz0 フォーム間でのデータの受け渡しを行うクールな方法を教えて下さい。
今は以下の2通りの方法ででやっています。
@互いの公開プロパティ(public get / private set)を参照しあう。
(互いに相手フォームへの参照を通じて取得するので疎結合になり切れていない)
Aデータ保持用クラスを作って、そのインスタンスを参照する。
(データ保持用クラスが増えまくって、だんだん管理困難になりそう)
今は以下の2通りの方法ででやっています。
@互いの公開プロパティ(public get / private set)を参照しあう。
(互いに相手フォームへの参照を通じて取得するので疎結合になり切れていない)
Aデータ保持用クラスを作って、そのインスタンスを参照する。
(データ保持用クラスが増えまくって、だんだん管理困難になりそう)
147デフォルトの名無しさん (ワッチョイ 23da-CXe6)
2019/10/17(木) 12:12:42.76ID:lbhPCdA40 MQで結合
148デフォルトの名無しさん (ワッチョイ d201-4js2)
2019/10/17(木) 12:32:44.65ID:tq7j3RVK0 MVCのM
149デフォルトの名無しさん (ワッチョイ 9242-S3Tg)
2019/10/17(木) 12:38:06.93ID:p0JdpBwB0 WpfやUWPなどではDIコンテナってものを使うのが流行りだが、WindowsFormsでも存在するそうだ
こっちは使ったことがないからお薦めはわからんがググって探してみるといい
まあクールってことならWindowsForms捨てるのも一つだね
こっちは使ったことがないからお薦めはわからんがググって探してみるといい
まあクールってことならWindowsForms捨てるのも一つだね
150デフォルトの名無しさん (ドコグロ MMea-tIsl)
2019/10/17(木) 13:00:04.85ID:gr44XWYWM >>146
DB
DB
151デフォルトの名無しさん (ドコグロ MMea-tIsl)
2019/10/17(木) 13:34:04.59ID:gr44XWYWM >>149
WPFやUWP自体がほぼ全くと言っていいほど使われていないのに流行りも何も
DIコンテナは主にWebで利用されるもので、デスクトップアプリではあまり使われないよ
アプリの起動を遅くする原因になりやすいし、エンドユーザーにバイナリを直接配布するタイプのアプリではそもそも実装を差し替えたいというニーズ自体が稀だからね
WPFやUWP自体がほぼ全くと言っていいほど使われていないのに流行りも何も
DIコンテナは主にWebで利用されるもので、デスクトップアプリではあまり使われないよ
アプリの起動を遅くする原因になりやすいし、エンドユーザーにバイナリを直接配布するタイプのアプリではそもそも実装を差し替えたいというニーズ自体が稀だからね
152デフォルトの名無しさん (ブーイモ MM5b-ggu7)
2019/10/17(木) 15:08:30.20ID:LDYcAoDdM DIコンテナはこの場合関係ないのでは?
結局素直にAでやるのがいいと思う
結局素直にAでやるのがいいと思う
153デフォルトの名無しさん (ワッチョイ e338-m7UD)
2019/10/17(木) 15:44:16.62ID:U3fOiqzQ0 >>146
クールな方法というか堅実・定石な方法
フォーム間のデータのやり取りならA
相手のフォームに依存するとテスト時や改修時に困るでしょ
原則として相手の画面やクラスの事は知らないに越したことは無い
その設計でもデータ保持用クラスの管理が大変になることは無い
管理が大変になる場合は設計がおかしい
画面遷移の組合せ数分クラス作るとかアホなことすれば大変だろうけど
クールな方法というか堅実・定石な方法
フォーム間のデータのやり取りならA
相手のフォームに依存するとテスト時や改修時に困るでしょ
原則として相手の画面やクラスの事は知らないに越したことは無い
その設計でもデータ保持用クラスの管理が大変になることは無い
管理が大変になる場合は設計がおかしい
画面遷移の組合せ数分クラス作るとかアホなことすれば大変だろうけど
154デフォルトの名無しさん (ワッチョイ 16a7-S3Tg)
2019/10/17(木) 17:38:31.11ID:xrf7PluH0 wpfのCheckBoxについてですが、Contentに文字を設定するとその文字の表示範囲もチェックオンオフの感知範囲になってしまいます
これを無効にして純粋にチェックボックスの□のみをクリック範囲にすることはできないのでしょうか?
CheckBoxのContentに文字を設定するのではなく、横にTextBlockを置くなどしないと無理でしょうか?
これを無効にして純粋にチェックボックスの□のみをクリック範囲にすることはできないのでしょうか?
CheckBoxのContentに文字を設定するのではなく、横にTextBlockを置くなどしないと無理でしょうか?
155デフォルトの名無しさん (ワッチョイ c67c-ptFq)
2019/10/17(木) 17:46:05.82ID:Cw+SiV+E0 うん
156デフォルトの名無しさん (ワッチョイ 5fda-S3Tg)
2019/10/17(木) 17:47:00.63ID:LBezDrpM0 >>154
手段としてはその通りだと思う。
しかし、あのちっさいチェックボックスに正確にマウスを当てないと反応しないってのは、
使い勝手からするとどうかと思う。誤クリックが多いというなら、そもそもの配置場所が悪い
手段としてはその通りだと思う。
しかし、あのちっさいチェックボックスに正確にマウスを当てないと反応しないってのは、
使い勝手からするとどうかと思う。誤クリックが多いというなら、そもそもの配置場所が悪い
157デフォルトの名無しさん (アウアウウー Sa43-ptFq)
2019/10/17(木) 17:49:21.17ID:f5CxH478a >>154
PreviewMouseDownイベントを追加して
e.OriginalSourceからVisualTreeHelper.GetParent()でVisualTreeを親方向にたどっていき
途中に"checkBoxBorder"というNameのBorderがあればe.Handled=true;で無効化出来るかもしれない
出来るかもしれないが一般的にCheckBoxはテキスト部分をクリックしてもオンオフ出来るものだから
その一般的な挙動を逸脱するよっぽどの理由がなければ止めておいたほうがいい
PreviewMouseDownイベントを追加して
e.OriginalSourceからVisualTreeHelper.GetParent()でVisualTreeを親方向にたどっていき
途中に"checkBoxBorder"というNameのBorderがあればe.Handled=true;で無効化出来るかもしれない
出来るかもしれないが一般的にCheckBoxはテキスト部分をクリックしてもオンオフ出来るものだから
その一般的な挙動を逸脱するよっぽどの理由がなければ止めておいたほうがいい
158デフォルトの名無しさん (ワッチョイ 16a7-S3Tg)
2019/10/17(木) 18:14:20.41ID:xrf7PluH0 >>156>157
ありがとうございます
具体的にはListBox内にCheckBoxを配置しており、チェックとは別にListBoxから選択時に多少のインフォメーションを表示するといった形にしたいためContentも含めると誤クリックが発生してしまいます
とりあえずは文字とCheckBoxは分離する方向でやってみたいと思います
ありがとうございます
具体的にはListBox内にCheckBoxを配置しており、チェックとは別にListBoxから選択時に多少のインフォメーションを表示するといった形にしたいためContentも含めると誤クリックが発生してしまいます
とりあえずは文字とCheckBoxは分離する方向でやってみたいと思います
159デフォルトの名無しさん (ワッチョイ f345-UkKt)
2019/10/17(木) 19:36:38.52ID:ukHDmGyB0 先日C#を始めたものです
Hello Worldを記述出来ました
エクセル等のオフィスソフトに対応している初心者向けのサイトは無いでしょうか?
よろしくお願いします
Hello Worldを記述出来ました
エクセル等のオフィスソフトに対応している初心者向けのサイトは無いでしょうか?
よろしくお願いします
160デフォルトの名無しさん (スプッッ Sd52-WW7A)
2019/10/17(木) 19:50:38.49ID:fD4z5OoEd C#てオフィスを使って処理したいってこと?
161デフォルトの名無しさん (ワッチョイ f345-UkKt)
2019/10/17(木) 20:50:59.23ID:ukHDmGyB0 C#を使ってエクセル等を操作したいと思っています
162デフォルトの名無しさん (ワッチョイ 9f7b-836U)
2019/10/17(木) 20:53:46.00ID:35zh2Zdy0 >>161
Microsoft Visual C# .NET から Microsoft Excel を自動化する方法
https://docs.microsoft.com/ja-jp/office/troubleshoot/office-developer/automate-excel-from-visual-c
こういう意図でC#を使う人は少ないと思うからそういうサイトもあまりないのでは
Microsoft Visual C# .NET から Microsoft Excel を自動化する方法
https://docs.microsoft.com/ja-jp/office/troubleshoot/office-developer/automate-excel-from-visual-c
こういう意図でC#を使う人は少ないと思うからそういうサイトもあまりないのでは
163デフォルトの名無しさん (ワッチョイ 4b63-kO6L)
2019/10/17(木) 20:54:08.32ID:U+7e/yzz0164デフォルトの名無しさん (ワッチョイ d201-4js2)
2019/10/17(木) 21:33:04.59ID:tq7j3RVK0165デフォルトの名無しさん (ワッチョイ 12ad-bx3M)
2019/10/17(木) 22:09:06.50ID:o4qw9kXC0166デフォルトの名無しさん (ワッチョイ e338-m7UD)
2019/10/17(木) 23:15:21.70ID:U3fOiqzQ0 Closed便利よね
バグ踏んだら面倒だけど
バグ踏んだら面倒だけど
167デフォルトの名無しさん (ワッチョイ 1ee9-1jLk)
2019/10/17(木) 23:18:37.31ID:fKr8aC1m0 プロパティで、StringをDateTimeのようにnull許容できるようにしたいのですが、可能でしょうか?
public DateTime? test1 { get; set; } ← 可
public String? test2 { get; set; } ← 不可
DapperでDB操作してるのですが、DBゆえにnullがあるのでどうしたものかと
public DateTime? test1 { get; set; } ← 可
public String? test2 { get; set; } ← 不可
DapperでDB操作してるのですが、DBゆえにnullがあるのでどうしたものかと
168デフォルトの名無しさん (アウアウイー Sa87-sprL)
2019/10/17(木) 23:30:47.28ID:+xa644SFa C#8.0の新しい文法を使う意図だったら「#nullable enable」のディレクティブをつけないとnull許容参照型にならないよ
そうでなければ、stringは参照型だから?をつけずとも普通にnull許容
そうでなければ、stringは参照型だから?をつけずとも普通にnull許容
169デフォルトの名無しさん (ワッチョイ f345-UkKt)
2019/10/18(金) 00:25:33.50ID:C4vTbpVj0170デフォルトの名無しさん (ワッチョイ f345-UkKt)
2019/10/18(金) 00:26:47.30ID:C4vTbpVj0171デフォルトの名無しさん (ワッチョイ 92ad-Do0t)
2019/10/18(金) 04:48:07.86ID:7fyCEFV70 >>162
帳票作成でC#使うなんてよくある話だろ
帳票作成でC#使うなんてよくある話だろ
172デフォルトの名無しさん (ワッチョイ 2701-g+uJ)
2019/10/18(金) 17:37:44.07ID:P+E8yzNh0173デフォルトの名無しさん (ドコグロ MMea-VRky)
2019/10/18(金) 20:34:45.07ID:L2N4rS5+M >>171
帳票作成でC#を使うこととC#でExcelを操作することはかなり違うけどな
帳票作成でC#を使うこととC#でExcelを操作することはかなり違うけどな
174デフォルトの名無しさん (ワッチョイ 92ad-6T9y)
2019/10/18(金) 20:43:02.28ID:7fyCEFV70175デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/18(金) 21:35:27.82ID:1VxWd/yq0176デフォルトの名無しさん (ワッチョイ 16b4-ARNK)
2019/10/18(金) 21:44:11.74ID:nML+rjlo0 データを取得したんですが
第三正規系までできません。
こちらのデータを第三正規系にお願いします。
第一正規系はやりました。
https://i.imgur.com/RruyoYQ.png
おすし名,おすしID,店舗ID,価格,データ取得日時,店舗名,おすし説明,色,分類,大きさ
まぐろ赤身,MGR-0000,KRA,120,2019/10/18,くら寿司,さっぱりうまい。上出来,鮮やか,赤身,小さい
まぐろ赤身,MGR-0001,SSR,110,2019/10/18,スシロー,こってりうまい。おすすめ,濃い,赤身,大きい
まぐろ赤身,MGR-0002,HMZ,90,2019/10/18,はま寿司,まずい。食えたもんじゃない,汚い,赤身,小さい
まぐろ赤身(漬け),MGRZ-0000,KRA,140,2019/10/18,くら寿司,漬け。さっぱりうまい。上出来,鮮やか,漬け,大きい
まぐろ赤身(漬け),MGRZ-0001,SSR,130,2019/10/18,スシロー,漬け。こってりうまい。おすすめ,濃い,漬け,大きい
まぐろ赤身(漬け),MGRZ-0001,HMZ,100,2019/10/18,はま寿司,漬け。まずい。食えたもんじゃない,汚い,漬け,小さい
第三正規系までできません。
こちらのデータを第三正規系にお願いします。
第一正規系はやりました。
https://i.imgur.com/RruyoYQ.png
おすし名,おすしID,店舗ID,価格,データ取得日時,店舗名,おすし説明,色,分類,大きさ
まぐろ赤身,MGR-0000,KRA,120,2019/10/18,くら寿司,さっぱりうまい。上出来,鮮やか,赤身,小さい
まぐろ赤身,MGR-0001,SSR,110,2019/10/18,スシロー,こってりうまい。おすすめ,濃い,赤身,大きい
まぐろ赤身,MGR-0002,HMZ,90,2019/10/18,はま寿司,まずい。食えたもんじゃない,汚い,赤身,小さい
まぐろ赤身(漬け),MGRZ-0000,KRA,140,2019/10/18,くら寿司,漬け。さっぱりうまい。上出来,鮮やか,漬け,大きい
まぐろ赤身(漬け),MGRZ-0001,SSR,130,2019/10/18,スシロー,漬け。こってりうまい。おすすめ,濃い,漬け,大きい
まぐろ赤身(漬け),MGRZ-0001,HMZ,100,2019/10/18,はま寿司,漬け。まずい。食えたもんじゃない,汚い,漬け,小さい
177デフォルトの名無しさん (ワッチョイ 92ad-6T9y)
2019/10/18(金) 21:51:06.59ID:7fyCEFV70178デフォルトの名無しさん (アウアウウー Sa43-gDzD)
2019/10/18(金) 22:22:58.75ID:bjYJELO9a >>176
このスレのタイトルを3回声に出して読んでみようか
このスレのタイトルを3回声に出して読んでみようか
179デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/18(金) 22:51:19.49ID:1VxWd/yq0180デフォルトの名無しさん (ワッチョイ f722-5TrY)
2019/10/18(金) 22:55:16.71ID:esIPpiBW0 心底くだらない喧嘩だな
181デフォルトの名無しさん (ワッチョイ 23da-CXe6)
2019/10/18(金) 23:23:01.26ID:j4uMIQLH0 禿同
182デフォルトの名無しさん (ワッチョイ 92ad-6T9y)
2019/10/19(土) 01:23:21.24ID:yK8AYG0c0 >>179
頭大丈夫?
頭大丈夫?
183デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/19(土) 06:44:10.57ID:a0xT/TLW0 >>182
鸚鵡返ししかできないならROMってりゃいいのに…w
鸚鵡返ししかできないならROMってりゃいいのに…w
184デフォルトの名無しさん (スフッ Sd32-5TrY)
2019/10/19(土) 06:45:15.42ID:fpN8ACwhd >>183
しつこい
しつこい
185デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/19(土) 08:06:58.91ID:a0xT/TLW0186デフォルトの名無しさん (ワッチョイ 92ad-6T9y)
2019/10/19(土) 09:10:08.70ID:yK8AYG0c0 >>183
まだいたのかw
まだいたのかw
187デフォルトの名無しさん (ワッチョイ e30c-S3Tg)
2019/10/19(土) 09:47:58.33ID:mgwE5Z4r0 どこもかしこもマウントレスバトルばかり
なぜひとはあらそってしまうのか…sigh…
なぜひとはあらそってしまうのか…sigh…
188デフォルトの名無しさん (ワッチョイ 0361-TZFe)
2019/10/19(土) 09:51:09.39ID:g+81+wWe0 しかも、内容が思いっきりくだらない
マウントを取るためだけにレスをしたとしか思えないくだらなさ
マウントを取るためだけにレスをしたとしか思えないくだらなさ
189デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/19(土) 10:37:10.93ID:a0xT/TLW0190デフォルトの名無しさん (ワッチョイ 2f77-I7PP)
2019/10/19(土) 17:32:49.19ID:WQwZNfDO0 C#は見かけ上は一見C++に似たような顔で欺いたVBだな。
191デフォルトの名無しさん (ワッチョイ 7f2d-BO72)
2019/10/19(土) 18:32:57.19ID:BH051H7O0 すまんが、インターフェイスとオートプロパティーとがよくわから人だけどさあ
interface IPerson{string Name();}
class Person : IPerson {public string Name{get=>"Taro";}}
これじゃなんでIPerson.Name();を実装したことにならないの?正しくはどうすればよかんべえ?
interface IPerson{string Name();}
class Person : IPerson {public string Name{get=>"Taro";}}
これじゃなんでIPerson.Name();を実装したことにならないの?正しくはどうすればよかんべえ?
192デフォルトの名無しさん (ワッチョイ 7f2d-BO72)
2019/10/19(土) 18:36:03.37ID:BH051H7O0 自分で気づいて今インターフェイスをstring Name{get;}にしてみたらできた
すまん、191のは無視してくれ・・・・
すまん、191のは無視してくれ・・・・
193デフォルトの名無しさん (ワッチョイ 1279-S3Tg)
2019/10/19(土) 18:39:04.57ID:qmet2mEe0 インターフェイスがメソッドで実装がクラスだからダメ
194デフォルトの名無しさん (ワッチョイ 1279-S3Tg)
2019/10/19(土) 18:39:28.35ID:qmet2mEe0 ×実装がクラス
○実装がプロパティ
○実装がプロパティ
195デフォルトの名無しさん (ワッチョイ e334-V+wO)
2019/10/21(月) 20:48:34.93ID:Q380rRZI0 ListViewをLargeImageListとして使って、かつ画像は非同期的に読み込んで反映させていきたいんだけど、
ImageListを変更しても画像が差し変わらない。アイテムを選択したりすると変わる。
差し替え後に強制的に反映させるにはListViewをRefleshするしかない?
ImageListを変更しても画像が差し変わらない。アイテムを選択したりすると変わる。
差し替え後に強制的に反映させるにはListViewをRefleshするしかない?
196デフォルトの名無しさん (ワッチョイ 5fda-S3Tg)
2019/10/21(月) 22:28:12.71ID:WYoX45rO0 ListViewItemのVMにINotifyPropertyChanged実装しとらんのか?
197デフォルトの名無しさん (ワッチョイ 4bda-PVzv)
2019/10/21(月) 22:36:01.36ID:gFaZXUyV0 RichTextBox.Textプロパティに数MBの文字列をセットすると
5秒くらいフォームがフリーズするので
Task/async/await的なコードを試したのですが
別スレッドからコントロールにはアクセスできないと怒られ
それではとInvokeメソッドを使ってみるも
今度はアクセスで怒られない代わりにまたフリーズ。
上手いこと非同期でTextプロパティにセットする
方法はありますかね。
5秒くらいフォームがフリーズするので
Task/async/await的なコードを試したのですが
別スレッドからコントロールにはアクセスできないと怒られ
それではとInvokeメソッドを使ってみるも
今度はアクセスで怒られない代わりにまたフリーズ。
上手いこと非同期でTextプロパティにセットする
方法はありますかね。
198デフォルトの名無しさん (ワッチョイ 167b-836U)
2019/10/21(月) 22:46:01.22ID:/X8txQrc0 >>197
数MBの文字列程度でフリーズした経験はないけど、その環境でフリーズするのなら非同期にしても解決はしないよ
Invoke使おうがその文字列の処理にそれだけかかるのだからどうしようもない
非同期にするのは処理中にキャンセルするとか他のGUIからの入力処理をする目的じゃないと
数MBの文字列程度でフリーズした経験はないけど、その環境でフリーズするのなら非同期にしても解決はしないよ
Invoke使おうがその文字列の処理にそれだけかかるのだからどうしようもない
非同期にするのは処理中にキャンセルするとか他のGUIからの入力処理をする目的じゃないと
199デフォルトの名無しさん (ワッチョイ 4bda-PVzv)
2019/10/21(月) 23:04:39.69ID:gFaZXUyV0 ありがとうございます
そういう回答がいただけただけでも助かります
違った角度からの解決策を考えます
そういう回答がいただけただけでも助かります
違った角度からの解決策を考えます
200デフォルトの名無しさん (アウアウウー Sa43-WFp/)
2019/10/21(月) 23:10:37.27ID:VNGEIVP2a201デフォルトの名無しさん (ワッチョイ d201-4js2)
2019/10/22(火) 00:05:51.56ID:QfoZv31s0 >>197
WPF?
WPF?
202デフォルトの名無しさん (ワッチョイ 1242-S3Tg)
2019/10/22(火) 10:07:09.79ID:YHA3BCJ70 事情が許されるなら、俺ならRTFをHTML変換してブラウザコントロールで表示させるけどね
203デフォルトの名無しさん (ワッチョイ 5fda-+VEO)
2019/10/22(火) 13:25:27.23ID:K+KsF9ms0 試してなくて妄想だけけど、SuspendLayout/ResumeLayoutとか?
204デフォルトの名無しさん (アウアウウー Sa43-WFp/)
2019/10/22(火) 14:13:07.80ID:d9ySxcs9a UIスレッド自体が輻輳してるんだからそんなことしても無意味w
別のプロセスか別のUIスレッドで動作させるか、
あるいは小分けにしてちょっとずつ更新するしかないと思うよ。
別のプロセスか別のUIスレッドで動作させるか、
あるいは小分けにしてちょっとずつ更新するしかないと思うよ。
205デフォルトの名無しさん (ワッチョイ 16a7-S3Tg)
2019/10/22(火) 19:15:02.64ID:ZcCp4/Eg0 クラス継承の意義がイマイチ分かりません
継承したいクラスをフィールドに持たせ、共通して呼び出したいものはインターフェースとして定義するではダメなのでしょうか?
単にその両者をいっぺんにやるためにあるという理解で良いんでしょうか?
継承したいクラスをフィールドに持たせ、共通して呼び出したいものはインターフェースとして定義するではダメなのでしょうか?
単にその両者をいっぺんにやるためにあるという理解で良いんでしょうか?
206デフォルトの名無しさん (ドコグロ MM33-tIsl)
2019/10/22(火) 19:40:35.35ID:i9vhc7D5M207デフォルトの名無しさん (ワッチョイ 6fda-yyNh)
2019/10/22(火) 20:13:37.49ID:N0Z1aA+u0 継承が悪ってww
208デフォルトの名無しさん (アウアウウー Sa43-WFp/)
2019/10/22(火) 20:19:18.17ID:d9ySxcs9a アポロ13って映画に「何のために作られたかではなく、何に使えるかが重要」って台詞が出てくるけど、
意義とか考えるのは(重要だとは思うけど)後回しにして、どういう使い方ができるかに
注視した方がいいよw
あと、オブジェクト指向関係で教条主義的なことを言う奴の話は眉に唾して聞いた方がいいw
これほんと
意義とか考えるのは(重要だとは思うけど)後回しにして、どういう使い方ができるかに
注視した方がいいよw
あと、オブジェクト指向関係で教条主義的なことを言う奴の話は眉に唾して聞いた方がいいw
これほんと
209デフォルトの名無しさん (ワッチョイ f317-S3Tg)
2019/10/22(火) 20:23:35.17ID:r8U+7Z6M0 .NET Framework は悪の塊だったのか
210デフォルトの名無しさん (スフッ Sd32-5TrY)
2019/10/22(火) 21:06:42.53ID:CFL/N7o/d >>206
継承が悪ワロタ
継承が悪ワロタ
211デフォルトの名無しさん (ワッチョイ 126a-hatC)
2019/10/22(火) 21:09:14.91ID:V41RXtJo0 >>209
悪の帝国Microsoft製だししょうがないなw
悪の帝国Microsoft製だししょうがないなw
212デフォルトの名無しさん (ワッチョイ 23da-CXe6)
2019/10/22(火) 21:18:38.74ID:mNMm3WnU0 あ〜熊の力〜身に付けた〜
正義のヒーロー
正義のヒーロー
213デフォルトの名無しさん (ワッチョイ b35f-1jLk)
2019/10/22(火) 21:22:00.43ID:5xlDZDfD0 毛深いヒーローだな
214デフォルトの名無しさん (ワッチョイ 1279-S3Tg)
2019/10/22(火) 21:25:50.97ID:EpnXDCZ50 Windows上でVisual Studioを立ち上げて.Netアプリ開発をする以上
お前も悪の帝国の軍門に下って生きるしかないのだ
お前も悪の帝国の軍門に下って生きるしかないのだ
215デフォルトの名無しさん (ワッチョイ d201-4js2)
2019/10/22(火) 22:38:30.26ID:QfoZv31s0 >>205
例えばフレームワークが用意してるControllerクラスを継承して20個くらい個別のコントローラーを作る場合と
個別のコントローラーにControllerクラスを持たせて呼び出しを委譲できるようにする場合
前者はカスタマイズしたい部分だけ書けばいいけど
後者はControllerの機能を呼び出すためにはすべてのクラスに委譲メソッドを用意する必要がある
Controllerのメソッドを20個呼び出したいなら20x20で400個委譲メソッド定義をしないといけないしテストもしないといけない
自動生成することも可能だけどそれを考慮しても必要になる労力とコンポジションで得られる柔軟性が見合わない
それぞれメリット・デメリットあるからそれを判断して使い分けるのが良いと思う
例えばフレームワークが用意してるControllerクラスを継承して20個くらい個別のコントローラーを作る場合と
個別のコントローラーにControllerクラスを持たせて呼び出しを委譲できるようにする場合
前者はカスタマイズしたい部分だけ書けばいいけど
後者はControllerの機能を呼び出すためにはすべてのクラスに委譲メソッドを用意する必要がある
Controllerのメソッドを20個呼び出したいなら20x20で400個委譲メソッド定義をしないといけないしテストもしないといけない
自動生成することも可能だけどそれを考慮しても必要になる労力とコンポジションで得られる柔軟性が見合わない
それぞれメリット・デメリットあるからそれを判断して使い分けるのが良いと思う
216デフォルトの名無しさん (ワッチョイ 161b-7/n2)
2019/10/22(火) 23:18:54.36ID:HqQPrhiP0 正しいと思うけど、継承のメリットを論じている段階でその例はたぶん通じない。ちんぷんかんぷんだと思うよ
217デフォルトの名無しさん (ワッチョイ 37a7-DpHV)
2019/10/22(火) 23:34:28.25ID:bvw0XH6G0 そういえばc#になってから継承なんて使った覚えがないな
218デフォルトの名無しさん (アウアウイー Sa87-sprL)
2019/10/22(火) 23:58:38.64ID:R7p1RKV4a 継承を使うとしても、KeyedCollectionみたいな用意されたabstractクラスの具象を書くくらいかな
クラシックなWinForms/WebFormsと格闘するなら継承ありきなんだろうけど
クラシックなWinForms/WebFormsと格闘するなら継承ありきなんだろうけど
219デフォルトの名無しさん (ワッチョイ f722-5TrY)
2019/10/23(水) 00:02:52.61ID:rbcKcx270 >>217
Formクラスの継承しないの?
Formクラスの継承しないの?
220デフォルトの名無しさん (ワッチョイ d62d-BO72)
2019/10/23(水) 01:24:57.24ID:m9ZvUGV10 List型からカンマ区切りの文字列にしたいのですが、先頭や最後にカンマがくっついて欲しくありません
こう言う場合ってどう書くのですか?
string s = "";
int i = 0;
foreach(var l in data){
if(i == 0) i = 1;
else s += ",";
s += l.ToString();
}
自分なりにも書いてみたのですがなんか素人感が半端ないです
どうか正しいかっこいい書き方を教えてください、お願いします
こう言う場合ってどう書くのですか?
string s = "";
int i = 0;
foreach(var l in data){
if(i == 0) i = 1;
else s += ",";
s += l.ToString();
}
自分なりにも書いてみたのですがなんか素人感が半端ないです
どうか正しいかっこいい書き方を教えてください、お願いします
221デフォルトの名無しさん (ワッチョイ 5fda-S3Tg)
2019/10/23(水) 01:45:41.03ID:r6mLYpNF0 var s = string.Join(",", data);
222デフォルトの名無しさん (ワッチョイ 670c-2cJs)
2019/10/23(水) 08:41:29.15ID:cIthmx8S0 Goは>>205のような考えで継承廃止したんじゃなかったっけ?
コーディングコスト削減メリットよりも階層複雑化によるデメリットの方が大きいから、やるならインターフェースでやれって考え方だったと思う
天下のグーグルがそう言ってるからには継承が悪という考えもあながち全否定は出来ない
コーディングコスト削減メリットよりも階層複雑化によるデメリットの方が大きいから、やるならインターフェースでやれって考え方だったと思う
天下のグーグルがそう言ってるからには継承が悪という考えもあながち全否定は出来ない
223デフォルトの名無しさん (アウアウクー MM87-Uddt)
2019/10/23(水) 08:46:57.96ID:tuL+TD2TM var s = (data.FirstOrDefault() ?? "").ToString()
foreach(var l in data.Skip(1))
s += "," + l
var s = ""
foreach(var l in data)
s += "," + l
s = s.SubString(1)
foreach(var l in data.Skip(1))
s += "," + l
var s = ""
foreach(var l in data)
s += "," + l
s = s.SubString(1)
224デフォルトの名無しさん (アウアウウー Sa43-tIsl)
2019/10/23(水) 09:10:24.37ID:9MFdyPJfa225デフォルトの名無しさん (ワッチョイ 23da-a8RP)
2019/10/23(水) 09:26:46.08ID:s4ZmhUIr0 null許容型に属性のrangeが有効か否かを調べたいんだけど、msdnを見ても書かれてない
こういうときってどうやって調べるの??
こういうときってどうやって調べるの??
226デフォルトの名無しさん (ワッチョイ c67c-ptFq)
2019/10/23(水) 09:57:02.37ID:N3BHKY3G0 Rangeということは「最小値と最大値」の範囲内かどうかなわけで
nullが範囲外なのは自明だからそもそも意味がなくね?
nullは特別に範囲内ってのなら「最小値と最大値」であるRangeじゃなくて他の方法で表現せざるを得ないよね
nullが範囲外なのは自明だからそもそも意味がなくね?
nullは特別に範囲内ってのなら「最小値と最大値」であるRangeじゃなくて他の方法で表現せざるを得ないよね
227デフォルトの名無しさん (ワッチョイ 23da-a8RP)
2019/10/23(水) 10:43:58.06ID:s4ZmhUIr0 >>226
単純にnull許容型にrangeの属性を付与できるか否かってだけが知りたい
それを調べようとしてもmsdnに記載が見つからないって話
これはtestが0-100になるように有効だろうけど
[range(0,100)]
int test
このrangeは有効なのか?って話
int?にはrangeは無効で101とか入れれますよーとかはないよねって調べたい
[range(0,100)]
int? test
単純にnull許容型にrangeの属性を付与できるか否かってだけが知りたい
それを調べようとしてもmsdnに記載が見つからないって話
これはtestが0-100になるように有効だろうけど
[range(0,100)]
int test
このrangeは有効なのか?って話
int?にはrangeは無効で101とか入れれますよーとかはないよねって調べたい
[range(0,100)]
int? test
228デフォルトの名無しさん (ワッチョイ b35f-5xvm)
2019/10/23(水) 11:17:48.75ID:V6w3FSpA0229デフォルトの名無しさん (ワッチョイ 137d-S3Tg)
2019/10/23(水) 11:52:11.96ID:mg9LIwfN0 ASPについて質問です
MVCにできてWebFormsじゃできないことってどんなのがありますか?
MVCにできてWebFormsじゃできないことってどんなのがありますか?
230デフォルトの名無しさん (オッペケ Sr47-g1So)
2019/10/23(水) 12:06:02.89ID:uTmD95wkr231デフォルトの名無しさん (ササクッテロ Sp47-sRNv)
2019/10/23(水) 12:08:21.81ID:ixA2IUmYp おまえには出来ないって基準だと思うよ。
232デフォルトの名無しさん (ワッチョイ e338-m7UD)
2019/10/23(水) 12:24:26.05ID:rCWJ/rTC0 原理的に出来ないことは無いが大変さが違う
それこそMVCで組みづらいとか
EFとの相性とか
WebAPI作りたいとか
他言語や環境と混ぜづらいとか
つぶしが効かないとか
まあ新規でWebFormsはやめとけと
それこそMVCで組みづらいとか
EFとの相性とか
WebAPI作りたいとか
他言語や環境と混ぜづらいとか
つぶしが効かないとか
まあ新規でWebFormsはやめとけと
233デフォルトの名無しさん (アウアウウー Sa43-tIsl)
2019/10/23(水) 12:39:33.45ID:9MFdyPJfa234デフォルトの名無しさん (ワッチョイ d201-4js2)
2019/10/23(水) 12:51:59.22ID:s8yqv2t40 >>227
Required属性とnon-nullable型の関係を確認すればいいと思う
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/models/validation#required-attribute
Required属性とnon-nullable型の関係を確認すればいいと思う
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/models/validation#required-attribute
235デフォルトの名無しさん (ワッチョイ d62d-BO72)
2019/10/23(水) 13:28:03.53ID:m9ZvUGV10236デフォルトの名無しさん (ワッチョイ 137d-S3Tg)
2019/10/23(水) 13:33:09.12ID:mg9LIwfN0 >>233
あざます
あざます
237デフォルトの名無しさん (ワッチョイ 16a7-S3Tg)
2019/10/23(水) 21:40:38.12ID:F0j44unH0 System.Collections.ConcurrentにConcurrentListはないようですが、スレッドセーフなListはSyncronizedCollectionを使っておけということなんでしょうか?
238デフォルトの名無しさん (ドコグロ MM2f-tIsl)
2019/10/23(水) 22:41:24.14ID:MpJkuZYiM >>237
ConcurrentListが無いのは、Listは外部ロックを使わない並行処理との相性が悪いからだろう
追加と参照のみならいいが、削除や途中への挿入があるとインデックスがほとんど意味を持たなくなってしまう
インデックスが指してる要素が他のスレッドによる変更の影響で突然コロコロ変わったら使い物にならないのは容易に想像できるだろ?
SynchronizedCollectionを使うとかそういう話じゃなくて、Listインターフェイスの設計が本質的に並行処理と相容れないんだよ
ConcurrentListが無いのは、Listは外部ロックを使わない並行処理との相性が悪いからだろう
追加と参照のみならいいが、削除や途中への挿入があるとインデックスがほとんど意味を持たなくなってしまう
インデックスが指してる要素が他のスレッドによる変更の影響で突然コロコロ変わったら使い物にならないのは容易に想像できるだろ?
SynchronizedCollectionを使うとかそういう話じゃなくて、Listインターフェイスの設計が本質的に並行処理と相容れないんだよ
239デフォルトの名無しさん (ワッチョイ 638a-mjLV)
2019/10/24(木) 08:41:52.53ID:vvI6h2Gc0 あるソフト使ってて、これ使いたいなって機能があるんだけど、なんて検索かけたらいいのか分からないので知っている人いたら教えてください。
WindowsフォームアプリでVisualStudio2015で開発しています。
[欲しい機能]
例えばWindow内が横3段に分かれいるとすると
------------△---------------
みたいに境界が表示されててそこをクリックすると部分的に隠したり、表示させたりできる機能
今作ってるアプリが監視系で画面上に常駐するので、出来るだけWindow内の邪魔なボタンとかは隠しておきたいのでこの機能が欲しいです。
知ってる方いたらよろしくお願いします。
WindowsフォームアプリでVisualStudio2015で開発しています。
[欲しい機能]
例えばWindow内が横3段に分かれいるとすると
------------△---------------
みたいに境界が表示されててそこをクリックすると部分的に隠したり、表示させたりできる機能
今作ってるアプリが監視系で画面上に常駐するので、出来るだけWindow内の邪魔なボタンとかは隠しておきたいのでこの機能が欲しいです。
知ってる方いたらよろしくお願いします。
240デフォルトの名無しさん (ドコグロ MMdf-3qLD)
2019/10/24(木) 09:07:13.70ID:1uX6E7L9M241デフォルトの名無しさん (ワッチョイ 2333-CZSH)
2019/10/24(木) 09:13:17.80ID:EafWDMiv0 >>239
折りたたみできるpanel とかそんな感じ?
折りたたみできるpanel とかそんな感じ?
242デフォルトの名無しさん (ドコグロ MM87-20LG)
2019/10/24(木) 09:20:52.19ID:/Cd29/CTM243デフォルトの名無しさん (ドコグロ MMdf-3qLD)
2019/10/24(木) 09:51:08.72ID:1uX6E7L9M244デフォルトの名無しさん (ドコグロ MM87-20LG)
2019/10/24(木) 10:07:31.16ID:/Cd29/CTM >>243
シングルスレッドでの同期処理ならプログラマが意図しないタイミングで変更が加えられる可能性は少ないだろう
そもそも途中挿入しないならConcurrentBagでいいよね
自分で答え出てるじゃん
シングルスレッドでの同期処理ならプログラマが意図しないタイミングで変更が加えられる可能性は少ないだろう
そもそも途中挿入しないならConcurrentBagでいいよね
自分で答え出てるじゃん
245デフォルトの名無しさん (ドコグロ MMdf-3qLD)
2019/10/24(木) 10:16:49.04ID:1uX6E7L9M 本質を理解できない馬鹿に説明しても無駄なことがよくわかるなw
246デフォルトの名無しさん (ドコグロ MM87-20LG)
2019/10/24(木) 10:31:37.86ID:/Cd29/CTM 同意するわw
247デフォルトの名無しさん (ワッチョイ ff01-E1XV)
2019/10/24(木) 10:50:43.90ID:8vd5prrh0 >>239
SplitContainer
SplitContainer
248デフォルトの名無しさん (アウアウウー Sa27-AEvr)
2019/10/24(木) 10:58:17.20ID:xs21harXa >>239
XPの時代のエクスプローラーのタスクパネルみたいなUIだと思うけど
たぶん標準では存在しない
折り畳みできるコンテナを自分で作れば、それを別のPanelの中に入れ子にして
AnchorとDockをうまく設定すれば似たようなことは一応できると思う。
PanelじゃなくてFlowLayoutPanelを使ってもいいかもしれないが、
たぶんかえって使いづらくなりそう
XPの時代のエクスプローラーのタスクパネルみたいなUIだと思うけど
たぶん標準では存在しない
折り畳みできるコンテナを自分で作れば、それを別のPanelの中に入れ子にして
AnchorとDockをうまく設定すれば似たようなことは一応できると思う。
PanelじゃなくてFlowLayoutPanelを使ってもいいかもしれないが、
たぶんかえって使いづらくなりそう
249デフォルトの名無しさん (ワッチョイ d38d-mjLV)
2019/10/24(木) 10:58:42.47ID:ey5VOEQr0 >>241
そうそう折りたたみって言葉がしっくりきます。
試しに「折りたたみ panel」あたりで検索したらやりたい事が出来そうなサイトが見つけられました。
SplitContainerとクリックイベントを使ってどうにか出来そうです。
また、境界部分にも三角形△などの目印を付けるやり方が載ってるサイトも見つかりました。
いいヒントになりました、ありがとうございます^^
そうそう折りたたみって言葉がしっくりきます。
試しに「折りたたみ panel」あたりで検索したらやりたい事が出来そうなサイトが見つけられました。
SplitContainerとクリックイベントを使ってどうにか出来そうです。
また、境界部分にも三角形△などの目印を付けるやり方が載ってるサイトも見つかりました。
いいヒントになりました、ありがとうございます^^
250デフォルトの名無しさん (ワッチョイ d38d-mjLV)
2019/10/24(木) 10:59:35.93ID:mB9UhJoj0251デフォルトの名無しさん (ワイーワ2 FFdf-Tlcr)
2019/10/24(木) 11:57:49.13ID:ABhN6CSmF252デフォルトの名無しさん (ワッチョイ e36e-cmPQ)
2019/10/24(木) 21:14:55.46ID:00cf/jHw0 頭に0個の参照って表示されてる関数が無数にあるんですが、これ要するに全く使われてないってことですよね
全部消してしまいたい……と思ったのですが実行する中でその関数が呼び出されるような可能性ってあったりするんでしょうか
全部消してしまいたい……と思ったのですが実行する中でその関数が呼び出されるような可能性ってあったりするんでしょうか
253デフォルトの名無しさん (オッペケ Sr47-byFX)
2019/10/24(木) 21:35:06.52ID:VqWeglU2r リフレクションとかで呼べば参照カウントされないんじゃない
254デフォルトの名無しさん (ワッチョイ ff6a-CZSH)
2019/10/24(木) 21:45:06.56ID:B+sGouls0 なんかのライブラリとかで、publicで公開してるやつとかか?
255デフォルトの名無しさん (ワッチョイ 3342-roNU)
2019/10/24(木) 22:06:02.66ID:Eph2jaDU0 複数のパネルをドラッグドロップできるようにしたんだけど
マウスが別のパネルに重なったときにパネルがいれかわってしまうんだけど
これを防ぐにはどうしたらいい?
マウスが別のパネルに重なったときにパネルがいれかわってしまうんだけど
これを防ぐにはどうしたらいい?
256デフォルトの名無しさん (ワッチョイ b37b-pWYb)
2019/10/24(木) 22:14:48.43ID:yaJ1dO+n0257デフォルトの名無しさん (ワッチョイ ffa7-ldkf)
2019/10/24(木) 22:17:00.79ID:WLXJ5XGy0258デフォルトの名無しさん (ワッチョイ b37b-pWYb)
2019/10/24(木) 23:01:06.74ID:yaJ1dO+n0 マウスがパネルに触れた時点でフォーカス変わったりしているとかだろ
最低限の動きするミニマムコード使って検証する方がここで聞くより解決しやすいと思うがね
そこでわからなかったらそのミニマムコード出してまた質問したらここの人も答えやすい
最低限の動きするミニマムコード使って検証する方がここで聞くより解決しやすいと思うがね
そこでわからなかったらそのミニマムコード出してまた質問したらここの人も答えやすい
259デフォルトの名無しさん (ワッチョイ e36e-cmPQ)
2019/10/24(木) 23:02:09.24ID:00cf/jHw0261デフォルトの名無しさん (ワッチョイ cf2d-KmKR)
2019/10/25(金) 22:28:16.88ID:7rgagi6Z0 List<(string, int)> list;があった場合、listの中からlist.item2が最大の要素(string, int)を得るにはどうすればいいのですか?
var l = list.Max(x=>x.Item2);みたいにしたいのですが、int型が帰ってきてしまいます
var l = list.Max(x=>x.Item2);みたいにしたいのですが、int型が帰ってきてしまいます
262デフォルトの名無しさん (ワッチョイ 6f8c-xChX)
2019/10/25(金) 23:07:56.88ID:GWerdevt0 OrderByDescending.FirstOrDefault
263デフォルトの名無しさん (アウアウウー Sa27-wnNP)
2019/10/25(金) 23:14:44.18ID:5pdqBhsBa >>262だと計算量のオーダーが増える
先に Max で最大のItem2 (maxItem2)を求めておいて list.First(x => x.Item2 == maxItem2) のほうがマシ
先に Max で最大のItem2 (maxItem2)を求めておいて list.First(x => x.Item2 == maxItem2) のほうがマシ
264デフォルトの名無しさん (ワッチョイ ffa7-ldkf)
2019/10/25(金) 23:23:22.26ID:6061P7ry0 何度も呼ぶときウゼーから関数にしろよ
265デフォルトの名無しさん (アウアウウー Sa27-wnNP)
2019/10/25(金) 23:42:07.16ID:5pdqBhsBa 経験上、こういう汎用的すぎるユーティリティ関数を自作して多用するのはお勧めしない
個人開発ならいいけど、多人数での開発になると新しいメンバーとの間で記述方法に差異を有む原因になり、結果的に負債化していくんだよ
ダサくてもこういうのは毎回ベタに書いたほうがいい
個人開発ならいいけど、多人数での開発になると新しいメンバーとの間で記述方法に差異を有む原因になり、結果的に負債化していくんだよ
ダサくてもこういうのは毎回ベタに書いたほうがいい
266デフォルトの名無しさん (ワッチョイ ff01-E1XV)
2019/10/25(金) 23:48:20.10ID:FLPxIKHC0 最大値持ってるタプルが複数あったら?
267デフォルトの名無しさん (スププ Sd1f-RYcx)
2019/10/25(金) 23:50:57.19ID:j4bjfcPpd >>266
逆にどうして欲しいの?
逆にどうして欲しいの?
268デフォルトの名無しさん (ワッチョイ ff01-E1XV)
2019/10/26(土) 00:25:28.36ID:ZMkO6rZZ0 >>267
知らんがな
知らんがな
269デフォルトの名無しさん (ワッチョイ cf2d-KmKR)
2019/10/26(土) 00:58:09.61ID:rff7tW+R0270デフォルトの名無しさん (ワッチョイ 6fde-ldkf)
2019/10/26(土) 12:56:29.17ID:D4rlG2Pr0271デフォルトの名無しさん (ワッチョイ ff79-mjLV)
2019/10/26(土) 13:18:11.26ID:sfokePbj0 素直に
int max = list.Max(tuple => tuple.Item2);
var maxValueItems = list.Where(tuple => tuple.Item2 == max);
でいいじゃん
int に重複がない前提なら Dictionary 化した方が捗る
int max = list.Max(tuple => tuple.Item2);
var maxValueItems = list.Where(tuple => tuple.Item2 == max);
でいいじゃん
int に重複がない前提なら Dictionary 化した方が捗る
272デフォルトの名無しさん (ワッチョイ 737d-mjLV)
2019/10/26(土) 14:40:36.29ID:+20I9h0L0 なんかいいロガー知らない?
3つのテキストに警告・注意・情報がそれぞれ安全に吐けるロガー
3つのテキストに警告・注意・情報がそれぞれ安全に吐けるロガー
273デフォルトの名無しさん (スップ Sd1f-daWW)
2019/10/26(土) 17:56:57.99ID:sACMcUDLd nlog
274デフォルトの名無しさん (ドコグロ MMa7-wnNP)
2019/10/26(土) 18:00:30.69ID:8i+xjfAMM275デフォルトの名無しさん (ワッチョイ c354-qX8c)
2019/10/27(日) 06:36:34.10ID:xM0noxLs0 >>261
list.Aggregate( (result, next) => result.Item2 > next.Item2 ? result : next );
O(n) で一度しか走査しない。
ただし、複数該当しても 1 つしか返さないし、Aggregate メソッドは LINQ to Entities 非対応。
list.Aggregate( (result, next) => result.Item2 > next.Item2 ? result : next );
O(n) で一度しか走査しない。
ただし、複数該当しても 1 つしか返さないし、Aggregate メソッドは LINQ to Entities 非対応。
276デフォルトの名無しさん (オイコラミネオ MM87-xJ/E)
2019/10/27(日) 10:39:45.76ID:5GZQ4gBgM 質問はこっちでいいんかな?
webviewってWebBrowserのGetElementのような事ってできないんですかね?
テキストに入力したりボタン押したりしたいんですけど、検索してもなかなか見つからないんです
誰か教えてください!
webviewってWebBrowserのGetElementのような事ってできないんですかね?
テキストに入力したりボタン押したりしたいんですけど、検索してもなかなか見つからないんです
誰か教えてください!
277デフォルトの名無しさん (オッペケ Sr47-roNU)
2019/10/27(日) 11:48:23.64ID:wTKueZfvr c# web 自動ログイン当たりでいっぱい記事が出てくるんじゃないの?
278デフォルトの名無しさん (ワッチョイ 23da-Qz2P)
2019/10/27(日) 11:58:52.66ID:4R5ODGS40279デフォルトの名無しさん (アウアウイー Sa47-eGmw)
2019/10/27(日) 12:18:06.59ID:X9y8gFH7a WebBrowserのHtmlElementみたいなオブジェクトは用意されてない
webView.InvokeScriptAsync("実行したい処理をすべてJavaScriptで記述")
みたいな書き方で地道にやるしかないんんじゃ
webView.InvokeScriptAsync("実行したい処理をすべてJavaScriptで記述")
みたいな書き方で地道にやるしかないんんじゃ
280デフォルトの名無しさん (アウアウウー Sa27-wnNP)
2019/10/27(日) 12:19:39.05ID:16xcb+hDa GUIに組み込む必要が無いんならSelenium使えば
281デフォルトの名無しさん (ワッチョイ 23da-Qz2P)
2019/10/27(日) 13:12:11.70ID:4R5ODGS40282デフォルトの名無しさん (オイコラミネオ MM87-xJ/E)
2019/10/27(日) 13:46:09.61ID:5GZQ4gBgM なるほど、JavaScript書けば操作できるわけですね
やってみます!
ありがとうございます
>>281
WebBrowserだと、なぜかjQuery使ってるサイトでエラー出るんですよね
レジストリ加えてie11で動くようにはしてるんですけどjQueryで引っかかるんです
でWebViewでと思って質問した次第なんです
やってみます!
ありがとうございます
>>281
WebBrowserだと、なぜかjQuery使ってるサイトでエラー出るんですよね
レジストリ加えてie11で動くようにはしてるんですけどjQueryで引っかかるんです
でWebViewでと思って質問した次第なんです
283デフォルトの名無しさん (ワッチョイ 23da-Qz2P)
2019/10/27(日) 13:49:25.37ID:4R5ODGS40 ああごめん、webviewか
webbrowserと勘違いしてたわスマン
webbrowserと勘違いしてたわスマン
284デフォルトの名無しさん (ワッチョイ cf2d-KmKR)
2019/10/27(日) 15:37:26.99ID:gq/FPXPl0285デフォルトの名無しさん (ワッチョイ 8301-MFF+)
2019/10/27(日) 16:55:40.03ID:wqPA/VYQ0 RDBは集合論を基にしてるから違う部分も多いよね
286デフォルトの名無しさん (ワッチョイ cfe3-mjLV)
2019/10/28(月) 00:02:42.79ID:v/KXS9HC0 >>284
これよりクエリ式のLINQはもっと酷いと思う
これよりクエリ式のLINQはもっと酷いと思う
287デフォルトの名無しさん (ワッチョイ 737d-mjLV)
2019/10/28(月) 12:34:46.66ID:YtBichaU0 ASP初心者だけど
がっつり学べるオススメの本とかありますか?
がっつり学べるオススメの本とかありますか?
288デフォルトの名無しさん (ドコグロ MM1f-wnNP)
2019/10/28(月) 12:39:56.10ID:7cJN6Sp0M ASP.NET Coreのことなら日本語のまともな本はない
Classic ASP.NETやMVCのことなら.NET5で廃止されるから今から始めるのはお勧めできない
Classic ASP.NETやMVCのことなら.NET5で廃止されるから今から始めるのはお勧めできない
289デフォルトの名無しさん (オッペケ Sr47-IeFk)
2019/10/28(月) 12:49:21.49ID:QZbVsCgAr coreなら「プログラミングASP.NET Core」一択でしょ。
290デフォルトの名無しさん (ワッチョイ 737d-mjLV)
2019/10/28(月) 13:00:58.66ID:YtBichaU0291デフォルトの名無しさん (オッペケ Sr47-roNU)
2019/10/28(月) 19:48:32.67ID:m1OgNht9r そもそもがASP.NET Coreなんか学んでどうすんの?と思うおじさんであった…
292デフォルトの名無しさん (スププ Sd1f-RYcx)
2019/10/28(月) 23:37:11.76ID:ivkrvCvud >>291
それを使ってるプロジェクトにアサインされたら仕方ないだろ
それを使ってるプロジェクトにアサインされたら仕方ないだろ
293デフォルトの名無しさん (ワッチョイ cfe3-mjLV)
2019/10/29(火) 00:09:10.29ID:KPb5GGNr0 ASP.NET Coreは.NET縛りでWebアプリケーション作れ言われたら一番マシな選択肢じゃないのか
294デフォルトの名無しさん (ワッチョイ e3da-mjLV)
2019/10/29(火) 00:36:14.21ID:dJZjQrr+0 linux+nginx+ケストレル+asp.net coe+ef+postgresql
もはやデフォルトスタンダード()だろ
最安でシステムができる
もはやデフォルトスタンダード()だろ
最安でシステムができる
295デフォルトの名無しさん (ドコグロ MMdf-3qLD)
2019/10/29(火) 06:46:27.32ID:QfXeXsOvM >>294 + Visual Code が一番安定
296デフォルトの名無しさん (ワッチョイ ff42-mjLV)
2019/10/29(火) 08:27:45.10ID:Epxsajcc0 デフォルトスタンダード
なんだろう?
なんだろう?
297デフォルトの名無しさん (オッペケ Sr47-A5aQ)
2019/10/29(火) 11:13:54.66ID:RhfnzEGer ぶっちゃけC#の未来ってどうなの?
来年の.NET 5でクロスプラットフォーム化が加速するようだが
来年の.NET 5でクロスプラットフォーム化が加速するようだが
298デフォルトの名無しさん (アウアウエー Sadf-EE17)
2019/10/29(火) 11:42:47.50ID:xrysW0K8a VSありきの言語ってイメージしかない
299デフォルトの名無しさん (アウアウウー Sa27-AEvr)
2019/10/29(火) 12:03:29.65ID:xV/7zc0Da クロスプラットフォーム化だのcoreだのは将来投資あるいは保険みたいなものじゃないの?
本気でそっちの方にいく将来像を持っているわけではないと思う。
UWPもぜんぜん普及しないし、
建前はともかく実態的には.NET Frameworkと一心同体という状態が
今後も続くんじゃないのかな
知らんけど
本気でそっちの方にいく将来像を持っているわけではないと思う。
UWPもぜんぜん普及しないし、
建前はともかく実態的には.NET Frameworkと一心同体という状態が
今後も続くんじゃないのかな
知らんけど
300デフォルトの名無しさん (オイコラミネオ MM87-xChX)
2019/10/29(火) 12:25:51.30ID:88a8kq8wM 最早coreのほうがmsにとっては主軸だよ
microsoftはwindowsよりazureの方に重きをおいてるし
microsoftはwindowsよりazureの方に重きをおいてるし
301デフォルトの名無しさん (ワッチョイ c322-RYcx)
2019/10/29(火) 12:52:07.86ID:MOVznBn90 仕事でiPhoneやAndroid開発するときはC#使うことが多くなってきた
302デフォルトの名無しさん (ワッチョイ 8301-Ryc9)
2019/10/29(火) 13:37:45.92ID:4pCfui+V0 人脈が出来たのかね?
303デフォルトの名無しさん (オッペケ Sr47-roNU)
2019/10/29(火) 19:08:56.52ID:YCAuRgWur ,net coreを主軸にしたばかりにMSの製品が沈没していく未来しか見えない
304デフォルトの名無しさん (スププ Sd1f-RYcx)
2019/10/29(火) 19:23:30.70ID:EZlHupH7d 米国国防省の案件、Azureに決定したね
305デフォルトの名無しさん (ドコグロ MMdf-wnNP)
2019/10/29(火) 19:27:34.78ID:fnWDg3A7M 米国だと内製が主流だから、受託じゃ怖くて使えないようなものも自己責任で比較的カジュアルに使える開発現場が多いんだよ
.NETの先端は、もはやOSS利用にいちいち申請が必要だったりするようなジャップ企業には縁のないものになってしまった
.NETの先端は、もはやOSS利用にいちいち申請が必要だったりするようなジャップ企業には縁のないものになってしまった
306デフォルトの名無しさん (ドコグロ MMdf-wnNP)
2019/10/29(火) 19:31:53.69ID:fnWDg3A7M307デフォルトの名無しさん (オッペケ Sr47-roNU)
2019/10/29(火) 19:35:59.47ID:YCAuRgWur 魂をささげてはないけどほぼC#しか使ってない
異常に効率が悪いが仕方ない
どうしても必要ならpythonやTS(JS)使うけど
異常に効率が悪いが仕方ない
どうしても必要ならpythonやTS(JS)使うけど
308デフォルトの名無しさん (スププ Sd1f-RYcx)
2019/10/29(火) 19:53:14.69ID:Ey119aTKd >>306
俺はAWSよりAzureを選択した国防省の判断の方が信用できると思うわ
俺はAWSよりAzureを選択した国防省の判断の方が信用できると思うわ
309デフォルトの名無しさん (ドコグロ MMdf-wnNP)
2019/10/29(火) 20:01:15.15ID:fnWDg3A7M >>308
MSはちゃんとアメリカに税金払ってるし、クラウドプロバイダによるOSSタダ乗り問題に対する姿勢などについてもMSは比較的真摯であり、そういう意味では確かに信用できる
しかしAWS, Azure両方を実業務において一年以上使った上で、サービスとしてはあらゆる面においてAWSの方が遥かに上だ
MSはちゃんとアメリカに税金払ってるし、クラウドプロバイダによるOSSタダ乗り問題に対する姿勢などについてもMSは比較的真摯であり、そういう意味では確かに信用できる
しかしAWS, Azure両方を実業務において一年以上使った上で、サービスとしてはあらゆる面においてAWSの方が遥かに上だ
310デフォルトの名無しさん (オッペケ Sr47-roNU)
2019/10/29(火) 20:03:06.68ID:YCAuRgWur サービスとして新しいものが作られてるのはAWSという感じがする
ポリシーが一貫してる気もする
ポリシーが一貫してる気もする
311デフォルトの名無しさん (ドコグロ MMdf-wnNP)
2019/10/29(火) 20:16:08.34ID:fnWDg3A7M >>310
AWSは一貫性が高いし、一度作ったサービスは責任を持って継続的に統合し続けるよね
Azureは思いつきのように低品質で他サービスともロクに統合されていないサービスを出してすぐに廃止したり「v2」が出てリプレースされるケースが多い
本当に馬鹿らしくなる
AWSは一貫性が高いし、一度作ったサービスは責任を持って継続的に統合し続けるよね
Azureは思いつきのように低品質で他サービスともロクに統合されていないサービスを出してすぐに廃止したり「v2」が出てリプレースされるケースが多い
本当に馬鹿らしくなる
312デフォルトの名無しさん (オイコラミネオ MM87-xJ/E)
2019/10/29(火) 21:30:28.45ID:K5Mf7W6aM313デフォルトの名無しさん (ワッチョイ ff5e-JFKv)
2019/10/29(火) 21:44:45.41ID:X/vnAmwN0 俺もXamarin使ってるけど、起動時だけちょっとモタつく印象かな。
Android。
Android。
314デフォルトの名無しさん (オッペケ Sr47-A5aQ)
2019/10/29(火) 21:46:56.72ID:RhfnzEGer C#ってTwitterでの検索が困難だな
#が無視されてしまう
#が無視されてしまう
315デフォルトの名無しさん (ワッチョイ f317-mjLV)
2019/10/29(火) 22:57:33.41ID:JauTHN340 yahooのリアルタイム検索ならC#でも検索可能
316デフォルトの名無しさん (ワッチョイ 737d-mjLV)
2019/10/30(水) 01:02:29.23ID:8axnQjcP0 デザインパターンって何見て知ればいいんですか?
おすすめの本とかありますか
おすすめの本とかありますか
317デフォルトの名無しさん (ワッチョイ 3342-roNU)
2019/10/30(水) 01:09:01.92ID:eibhOM1C0 formをスクロールバーでちょっと下にスクロールしてから
パネルを追加するとLocationのポイントが下にずれてしまいます
panel.Location = new Point(30, 60)
これがスクロールした画面を基準にしたポイントになるので
yの60がずれてしまいます
これを防ぐにはどうすればいいでしょうか
パネルを追加するとLocationのポイントが下にずれてしまいます
panel.Location = new Point(30, 60)
これがスクロールした画面を基準にしたポイントになるので
yの60がずれてしまいます
これを防ぐにはどうすればいいでしょうか
318デフォルトの名無しさん (ワッチョイ 8301-Ryc9)
2019/10/30(水) 01:23:32.15ID:R3qwPM+Q0 >>316
GOF
GOF
319デフォルトの名無しさん (ワッチョイ 3342-roNU)
2019/10/30(水) 01:27:43.91ID:eibhOM1C0 自己解決しました
一旦this.Autoscroll=false;
にしてから描写がおわってからtrueにすればいけました
もし他にいい方法あったら教えて下さい
一旦this.Autoscroll=false;
にしてから描写がおわってからtrueにすればいけました
もし他にいい方法あったら教えて下さい
320デフォルトの名無しさん (ワッチョイ ff7d-mjLV)
2019/10/30(水) 16:54:56.13ID:B18oTG+D0 ワイPG、ASP案件にアサインされ無事WebFormsで強行することに成功する
いきなりCSHTMLとか言われてもわからん
いきなりCSHTMLとか言われてもわからん
321デフォルトの名無しさん (ワッチョイ ff01-E1XV)
2019/10/30(水) 17:38:01.28ID:wxyKPRO+0 view engineは選べるやろ
つっても1日もあれば理解できる内容だから
既存のviewを使い回すわけじゃなければ素直にRazor使ったほうが楽
つっても1日もあれば理解できる内容だから
既存のviewを使い回すわけじゃなければ素直にRazor使ったほうが楽
322デフォルトの名無しさん (ワッチョイ ff7d-mjLV)
2019/10/30(水) 17:58:18.14ID:B18oTG+D0323デフォルトの名無しさん (ドコグロ MMdf-wnNP)
2019/10/30(水) 18:10:55.61ID:rIzUEbvfM Razor自体は何も難しくないがHTMLやJavaScriptの経験が必須だぞ
324デフォルトの名無しさん (ワッチョイ ff7d-mjLV)
2019/10/30(水) 18:13:54.26ID:B18oTG+D0325デフォルトの名無しさん (ワッチョイ ff01-E1XV)
2019/10/30(水) 20:38:29.06ID:wxyKPRO+0326デフォルトの名無しさん (ワッチョイ 6fda-UUC+)
2019/10/30(水) 23:28:43.02ID:RGy19TUC0 >>85
じゃあマックはダメですね
じゃあマックはダメですね
327デフォルトの名無しさん (ワッチョイ 6b01-VuYh)
2019/10/31(木) 08:29:06.57ID:CJAalL950 質問なんですが
ゴミ箱に送る方法で簡単な方法ないの?VisualBasicを参照するしかないの?
C#使ってる人はゴミ箱に移動するって使わないのだろうか?
ゴミ箱に送る方法で簡単な方法ないの?VisualBasicを参照するしかないの?
C#使ってる人はゴミ箱に移動するって使わないのだろうか?
328デフォルトの名無しさん (スップ Sd8a-ORrh)
2019/10/31(木) 08:43:39.37ID:xsQI7t5kd 使わないね
利用したいケースも思い浮かばない
そもそもファイル削除は極力しない
利用したいケースも思い浮かばない
そもそもファイル削除は極力しない
329デフォルトの名無しさん (ブーイモ MM27-ANgw)
2019/10/31(木) 09:20:44.08ID:SMoJlzw2M OSが勝手にやるもんだろ
330デフォルトの名無しさん (アウアウウー Sa2f-xbEI)
2019/10/31(木) 09:43:24.92ID:4PHfFAnra そもそもC#の用途として、今時デスクトップアプリを作ってる人自体が絶滅危惧種だろう
WebアプリやUnityゲームでゴミ箱が必要だと思う?
WebアプリやUnityゲームでゴミ箱が必要だと思う?
331デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/10/31(木) 09:47:58.08ID:JXLI+jKB0 >>327
shell32.dll
shell32.dll
332デフォルトの名無しさん (ブーイモ MM27-w9lH)
2019/10/31(木) 10:41:56.01ID:OU1pcY6zM winformなんだけど
ひたすら流れてくるログを表示してくれる
フォームに埋め込めるコンソールウインドウみたいな
コントロールってないだろうか
折り返しとか最大保持行数とか設定できるやつ
ひたすら流れてくるログを表示してくれる
フォームに埋め込めるコンソールウインドウみたいな
コントロールってないだろうか
折り返しとか最大保持行数とか設定できるやつ
333デフォルトの名無しさん (ワッチョイ c322-GD6V)
2019/10/31(木) 12:06:11.16ID:XKICkbS40 >>327
そのVBのアセンブリは.NET Frameworkに標準で入ってるもんなんだから十分簡単な方法では
そのVBのアセンブリは.NET Frameworkに標準で入ってるもんなんだから十分簡単な方法では
334デフォルトの名無しさん (ワッチョイ 06de-kTP4)
2019/10/31(木) 12:26:42.29ID:0MmH5OlL0 ファイラー作ってる人は
ゴミ箱に入ってもらわないと困るかもな
エクスプローラーのゴミ箱からもとに戻す
その一点だな
ゴミ箱に入ってもらわないと困るかもな
エクスプローラーのゴミ箱からもとに戻す
その一点だな
335デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/10/31(木) 12:28:32.03ID:mFefkbxQa >>332
ないと思うけど、そんなのTextBoxでもRichTextBoxでも
新しい行を追加する時に既に「行数 ≧ 最大値」だったら
先に先頭行削除してから追加するだけと違うの?
何も難しくない気が
ないと思うけど、そんなのTextBoxでもRichTextBoxでも
新しい行を追加する時に既に「行数 ≧ 最大値」だったら
先に先頭行削除してから追加するだけと違うの?
何も難しくない気が
336デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/10/31(木) 13:06:24.26ID:JXLI+jKB0337デフォルトの名無しさん (ワッチョイ 4e7c-a7m8)
2019/10/31(木) 13:19:49.51ID:XLWT8Z580 リスト系はリスト系で1行目の途中から2行目の途中まで選択してコピーとかできなくなったり
338デフォルトの名無しさん (ワッチョイ 6f5f-qQ6b)
2019/10/31(木) 13:21:02.81ID:OjoTTwqB0 >>335
行数が増えると速度的に破綻する
行数が増えると速度的に破綻する
339デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/10/31(木) 13:37:40.30ID:mFefkbxQa340デフォルトの名無しさん (ブーイモ MM4f-DYHY)
2019/10/31(木) 14:29:54.26ID:k6XhP2jxM queueでどうにかならんの?
341デフォルトの名無しさん (ワッチョイ def2-EUGY)
2019/10/31(木) 18:31:07.11ID:3D7UQPAc0 中入れ中出し法
342デフォルトの名無しさん (ドコグロ MM0b-xbEI)
2019/10/31(木) 19:15:16.89ID:i5H6Qw2zM >>340
お前は問題を履き違えている
Stringのコピーなんか人間の体感スケールで見ればそれ自体は大したコストではない
問題は、Stringの再作成時にテキストボックスの内容全体を更新しなければならないこと
お前は問題を履き違えている
Stringのコピーなんか人間の体感スケールで見ればそれ自体は大したコストではない
問題は、Stringの再作成時にテキストボックスの内容全体を更新しなければならないこと
343デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/10/31(木) 19:39:52.83ID:mFefkbxQa いや、速度がどうとか言う人がいたんで、
逐次的な表示更新が間に合わないなら
最新n件をキューにためておいてUIの都合でおっとり更新したらいいんじゃないか、
って言いたかったのでは?
逐次的な表示更新が間に合わないなら
最新n件をキューにためておいてUIの都合でおっとり更新したらいいんじゃないか、
って言いたかったのでは?
344デフォルトの名無しさん (ブーイモ MM27-w9lH)
2019/10/31(木) 20:04:31.91ID:UUndQwtgM なんかいろいろすいません
テキスト系のコントロールだと全書き換えになって遅いし
List系だと折り返しがしづらいしで
表示だけに特化したコントロールはないかなと思ってました
表示と同時にログはファイルにも記録しているので
ドバッと来て追いきれない時はファイルでじっくり見ます
画面はあくまで気になるログが出ていないか
確認する程度のものです
テキスト系のコントロールだと全書き換えになって遅いし
List系だと折り返しがしづらいしで
表示だけに特化したコントロールはないかなと思ってました
表示と同時にログはファイルにも記録しているので
ドバッと来て追いきれない時はファイルでじっくり見ます
画面はあくまで気になるログが出ていないか
確認する程度のものです
345デフォルトの名無しさん (ワッチョイ af17-qV4/)
2019/10/31(木) 20:17:16.88ID:K3Up5Amy0 「c# log viewer」とかでググって出てきた奴を片っ端から試す
もし満足できるものが無かったら自分でコントロール作った方が手っ取り早いと思う
ログのパースが不要なら簡単にできるでしょ
もし満足できるものが無かったら自分でコントロール作った方が手っ取り早いと思う
ログのパースが不要なら簡単にできるでしょ
346デフォルトの名無しさん (ワッチョイ de7b-wZJI)
2019/10/31(木) 20:26:45.13ID:6sTRo/Hz0347デフォルトの名無しさん (ブーイモ MM27-w9lH)
2019/10/31(木) 21:03:08.53ID:mKy6l2+6M いやテキストは遅いしチラつくし…
コンソール見たいなログ表示ってやっぱり
作るしかないのかな
コンソール見たいなログ表示ってやっぱり
作るしかないのかな
348デフォルトの名無しさん (ワッチョイ de7b-wZJI)
2019/10/31(木) 21:12:56.64ID:6sTRo/Hz0349デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/10/31(木) 21:26:17.79ID:JXLI+jKB0350デフォルトの名無しさん (ブーイモ MM27-w9lH)
2019/10/31(木) 22:10:23.48ID:SVC1VZx2M351デフォルトの名無しさん (ワッチョイ 6b01-VuYh)
2019/10/31(木) 22:11:15.94ID:CJAalL950352デフォルトの名無しさん (ワッチョイ 4aa7-kTP4)
2019/10/31(木) 22:22:14.18ID:Ipg5PEVm0353デフォルトの名無しさん (ワッチョイ 4a2c-a7m8)
2019/10/31(木) 22:22:50.88ID:lmTBdfUq0 クロスプラットフォームというお題目に従えば
ゴミ箱はOS依存な機能であって基本的なことというわけでもないし…
ゴミ箱はOS依存な機能であって基本的なことというわけでもないし…
354デフォルトの名無しさん (ワッチョイ 4aa7-kTP4)
2019/10/31(木) 22:26:35.09ID:Ipg5PEVm0 ちなみにループの中なんかでラベルの表示を変えたいときは
label1.Update();
みたいにやらんと表示してくんないよ
そういうのはおk?
label1.Update();
みたいにやらんと表示してくんないよ
そういうのはおk?
355デフォルトの名無しさん (ブーイモ MM27-w9lH)
2019/10/31(木) 22:31:55.44ID:6PvVhxXlM >>352
何日も回しているとパンクしてしまう
何日も回しているとパンクしてしまう
356デフォルトの名無しさん (ブーイモ MM27-w9lH)
2019/10/31(木) 22:48:12.69ID:QvaaIFldM >>349
試してみたよ
ログを追加したときに最新行を表示してくれる機能がなかった
中身は結局RitchTextBoxみたいだね
ログはどんどん溜まっていく一方で、古いログを消す機能は実装されてないみたいだった
なかなかこれってものはないもんだなぁ…
試してみたよ
ログを追加したときに最新行を表示してくれる機能がなかった
中身は結局RitchTextBoxみたいだね
ログはどんどん溜まっていく一方で、古いログを消す機能は実装されてないみたいだった
なかなかこれってものはないもんだなぁ…
357デフォルトの名無しさん (ワッチョイ de7b-wZJI)
2019/10/31(木) 22:52:53.11ID:6sTRo/Hz0 >>350
ScrollToCaret使わなくても組み替えて最新の行をAppendTextで出力するだけでいい
そもそもスクロールしない行数にしたらいい。80行にしてあるのは「この程度では遅くならない」例のためだけ
>スクロールバーが激しく上下に移動して
表示が早いからだよねそれ
ScrollToCaret使わなくても組み替えて最新の行をAppendTextで出力するだけでいい
そもそもスクロールしない行数にしたらいい。80行にしてあるのは「この程度では遅くならない」例のためだけ
>スクロールバーが激しく上下に移動して
表示が早いからだよねそれ
358デフォルトの名無しさん (ワッチョイ 4aa7-kTP4)
2019/10/31(木) 23:04:24.71ID:Ipg5PEVm0 >>355
パンクの原因は?
パンクの原因は?
359デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/10/31(木) 23:07:55.77ID:mFefkbxQa 何を既に試して、その上でどういう要件が満たせないから困ってるのか、
最初から書いて欲しいよね
後出しで「それだとこういう不満がある」とか言われてもみんな気分悪くなるだけじゃないの
最初から書いて欲しいよね
後出しで「それだとこういう不満がある」とか言われてもみんな気分悪くなるだけじゃないの
360デフォルトの名無しさん (ワッチョイ 4aa7-kTP4)
2019/10/31(木) 23:18:32.99ID:Ipg5PEVm0 結局、ログがどうあったらいいかよくわかってないんだろ
そもそも「誰が」「どう使う」ためのログなのか?わかってなきゃ
この世に存在しない無敵のログ表示を求めて彷徨い歩くだけだ
そもそも「誰が」「どう使う」ためのログなのか?わかってなきゃ
この世に存在しない無敵のログ表示を求めて彷徨い歩くだけだ
361デフォルトの名無しさん (ワッチョイ b301-QvCK)
2019/10/31(木) 23:25:23.01ID:IK0T1jez0 WinTailでええやん
362デフォルトの名無しさん (ブーイモ MM27-w9lH)
2019/10/31(木) 23:48:40.87ID:IinI+zAtM 最初に言った通りコンソールウインドウみたいなのが欲しいんだよね
最新のログが一番下に表示されて、勝手にスクロールしていくような
ログが延々と流れてくるので保持行数は200行程度として
できるだけ軽いのが欲しいんだ
最新のログが一番下に表示されて、勝手にスクロールしていくような
ログが延々と流れてくるので保持行数は200行程度として
できるだけ軽いのが欲しいんだ
363デフォルトの名無しさん (ワッチョイ 6763-ORrh)
2019/10/31(木) 23:52:18.30ID:MkAQwKar0 200行程度ただのtextboxで十分では?
200万行の打ち間違い?それか1行数万文字あるの?
200万行の打ち間違い?それか1行数万文字あるの?
364デフォルトの名無しさん (ワッチョイ 0be7-0B+f)
2019/11/01(金) 01:18:38.34ID:IqjPKLBG0 TextBoxに1行100文字のn行の文字列を設定し、最下行を表示させるのにかかった時間
(@Ryzen 3700X)
2行:2[msec]
20行:4[msec]
200行:8[msec]
2,000行:60[msec]
20,000行:563[msec]
200,000行:5,624[msec]
2000,000行:測定不能(OutOfMemoryException)
備考
TextBoxに1万行設定した場合、設定にかかる時間はそんなでもないが、TextBoxを変形させる(ウィンドウサイズ変更に追従させる等)のに時間がかかる
5万行になるとまともに変形しない
(@Ryzen 3700X)
2行:2[msec]
20行:4[msec]
200行:8[msec]
2,000行:60[msec]
20,000行:563[msec]
200,000行:5,624[msec]
2000,000行:測定不能(OutOfMemoryException)
備考
TextBoxに1万行設定した場合、設定にかかる時間はそんなでもないが、TextBoxを変形させる(ウィンドウサイズ変更に追従させる等)のに時間がかかる
5万行になるとまともに変形しない
365デフォルトの名無しさん (アウアウエー Sac2-DYHY)
2019/11/01(金) 01:36:53.37ID:QWL8+9O3a 視認するデバッグコンソール程度で重いも軽いもないと思うが
骨董品レベルのPC使ってるのか?
リアルタイムで見るログならログレベルで絞ればいいのでは?
骨董品レベルのPC使ってるのか?
リアルタイムで見るログならログレベルで絞ればいいのでは?
366デフォルトの名無しさん (ワッチョイ caad-o2oR)
2019/11/01(金) 10:42:20.61ID:SS2XtcMO0 直近200行のリングバッファを表示するだけではダメなのか
2000,000行保持してまさか目視するわけじゃないよな
200行以前はファイルにでも吐いておけば
2000,000行保持してまさか目視するわけじゃないよな
200行以前はファイルにでも吐いておけば
367デフォルトの名無しさん (ワッチョイ 7b88-ORrh)
2019/11/01(金) 11:16:41.01ID:nKOXVm3I0 200行程度List<string>で保持して更新あるたびにaddとremoveして都度Textboxを更新でなんの問題も無いと思う
気になるならListをQueueにでもすればいい
ごちゃごちゃさせる程でもない単純な要件なんだから実装もそれに倣えばいい
気になるならListをQueueにでもすればいい
ごちゃごちゃさせる程でもない単純な要件なんだから実装もそれに倣えばいい
368デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/01(金) 12:45:55.78ID:zrbJp7o30 >>350
Double Bufferingでもチラつきが激しいなら
再描画を一旦停止してTextBox更新してから再開
https://dobon.net/vb/dotnet/control/beginupdate.html
>>358
AppendText使いつつ最大行数を超えた古いログ削除できる?
Double Bufferingでもチラつきが激しいなら
再描画を一旦停止してTextBox更新してから再開
https://dobon.net/vb/dotnet/control/beginupdate.html
>>358
AppendText使いつつ最大行数を超えた古いログ削除できる?
369デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/11/01(金) 18:49:44.29ID:oc3Xlll7a >>332の件、ちょっと気になったのでTextBoxで試してみた
(a) SelectedTextを空文字で上書きして先頭の行を削除、
その後AppendTextで新しいログを追記
(b) Linesを一旦List<string>にコピーして先頭行の削除と
新しいログの追加を行った後、Linesに書き戻しキャレットを末尾に
移動しScrollToCaret
(a)の方法でやると確かにスクロールバーがプルプルするw
(b)の方法ならそれはほとんど起こらない(完全ではないみたいだが)
(a)の方法でも、先頭行を削る時に一気に10行とか削れば
そこまで気にならない印象
(a) SelectedTextを空文字で上書きして先頭の行を削除、
その後AppendTextで新しいログを追記
(b) Linesを一旦List<string>にコピーして先頭行の削除と
新しいログの追加を行った後、Linesに書き戻しキャレットを末尾に
移動しScrollToCaret
(a)の方法でやると確かにスクロールバーがプルプルするw
(b)の方法ならそれはほとんど起こらない(完全ではないみたいだが)
(a)の方法でも、先頭行を削る時に一気に10行とか削れば
そこまで気にならない印象
370デフォルトの名無しさん (ワッチョイ de7b-wZJI)
2019/11/01(金) 20:09:54.53ID:BUUWKxub0 そもそも高速でログを流すのでなければ表示の切り替えはそんな目立たないと思うんだけど
>>369
(a) を参考に空文字で上書きするときにTextBoxからFocusを外してスクロールバーが動かないようにできないかと思ったけどうまくできなかったw
削除時にスクロール位置動かなければうまくいきそうだけど手段が他にすぐ思いつかない
他に思い付いたやり方は3つ
・AllocConsole()使ってコンソール画面を表示してそこにログを流す
コンソール画面閉じるとプロセスも閉じるのでその対策が必要
・348にRichTextBoxを2つ用意して交互にバックグラウンドでスクロールさせた後に表示する
・348で最新のログを一番上に追加していく
>>369
(a) を参考に空文字で上書きするときにTextBoxからFocusを外してスクロールバーが動かないようにできないかと思ったけどうまくできなかったw
削除時にスクロール位置動かなければうまくいきそうだけど手段が他にすぐ思いつかない
他に思い付いたやり方は3つ
・AllocConsole()使ってコンソール画面を表示してそこにログを流す
コンソール画面閉じるとプロセスも閉じるのでその対策が必要
・348にRichTextBoxを2つ用意して交互にバックグラウンドでスクロールさせた後に表示する
・348で最新のログを一番上に追加していく
371デフォルトの名無しさん (ワッチョイ 6bda-w9lH)
2019/11/02(土) 00:15:28.48ID:vBXbME0O0 そうなんだよ
意外と難しいんだよね
意外と難しいんだよね
372デフォルトの名無しさん (ワッチョイ 6763-ORrh)
2019/11/02(土) 01:17:56.03ID:gWk8WKKS0 いや、難しくしてるのは意味のない要件だって
細部まで詳細に思惑通りに動くコントロールが要求されるなら1から全部作るしか無い
TextBox等のすでに提供されてるコントロールを使うならそれに則った要件に変えればいいだけ
内部の動作ログを画面上に出してほしい要件はちょいちょいあるけど、俺個人はいつも上部を最新にするかスクロールさせないかの仕様を取る
何なら画面のチラツキなんて目を瞑ることもあるし最新行への追従をさせないこともある
楽に実装したいからそういうコントロール使ってるんだもん
どうしても要件変えられないなら低レベルAPI使って描画制御からやりゃほとんど対応できる
対応しただけのコストに見合うメリットがあるかは知らん
クライアントの強い要望とか言われたらするしか無いだろうけど
細部まで詳細に思惑通りに動くコントロールが要求されるなら1から全部作るしか無い
TextBox等のすでに提供されてるコントロールを使うならそれに則った要件に変えればいいだけ
内部の動作ログを画面上に出してほしい要件はちょいちょいあるけど、俺個人はいつも上部を最新にするかスクロールさせないかの仕様を取る
何なら画面のチラツキなんて目を瞑ることもあるし最新行への追従をさせないこともある
楽に実装したいからそういうコントロール使ってるんだもん
どうしても要件変えられないなら低レベルAPI使って描画制御からやりゃほとんど対応できる
対応しただけのコストに見合うメリットがあるかは知らん
クライアントの強い要望とか言われたらするしか無いだろうけど
373デフォルトの名無しさん (ワッチョイ 6710-Dc2t)
2019/11/02(土) 07:08:12.27ID:Cj9wzs8u0374デフォルトの名無しさん (ワッチョイ 0bad-Cnwx)
2019/11/02(土) 11:38:27.23ID:NJrq0tm30 そういえば昔、グリッドだかリストコントロール+それとは別のコントロールとして縦スクロールバーをつけて
擬似的にスクロール可能な全行表示コントロールを作ったことあった。
実際としてはグリッド・リストに一部のデータを表示しているだけってヤツね。
経験としては割に合わないからやめといた方がいいと思う。
擬似的にスクロール可能な全行表示コントロールを作ったことあった。
実際としてはグリッド・リストに一部のデータを表示しているだけってヤツね。
経験としては割に合わないからやめといた方がいいと思う。
375デフォルトの名無しさん (ワッチョイ 4f7f-DbiX)
2019/11/02(土) 18:26:30.67ID:qC4ArJrD0 zedgraph以外で使いやすいグラフ描画ライブラリをご存知ないでしょうか。
376デフォルトの名無しさん (ワッチョイ af17-qV4/)
2019/11/02(土) 18:34:46.73ID:mWOhcCZL0 何が良くて何が悪いのか、それがわからないと提案できないぞ
377デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/02(土) 18:59:15.75ID:t8MMHk4t0 >>350
>>348の試してみたけど
新しいTextを設定する時に描画を停止してやれば普通に使える
描画を一旦停止させる方法は>>368のリンク
private void texroll(string st)
{
roll.Add(st);
if (roll.Count > 300) roll.RemoveRange(0, 100);
using (new SuspendRedraw<RichTextBox>(log))
{
log.Text = string.Join("\n", roll.ToArray());
}
log.SelectionStart = log.Text.Length;
log.Focus();
log.ScrollToCaret();
Application.DoEvents();
}
>>348の試してみたけど
新しいTextを設定する時に描画を停止してやれば普通に使える
描画を一旦停止させる方法は>>368のリンク
private void texroll(string st)
{
roll.Add(st);
if (roll.Count > 300) roll.RemoveRange(0, 100);
using (new SuspendRedraw<RichTextBox>(log))
{
log.Text = string.Join("\n", roll.ToArray());
}
log.SelectionStart = log.Text.Length;
log.Focus();
log.ScrollToCaret();
Application.DoEvents();
}
378デフォルトの名無しさん (オッペケ Sr03-aDcy)
2019/11/02(土) 19:24:06.82ID:FxhpmPNyr もうimage上じゃなくpictureboxに直接描画したほうがよくないかなw
379デフォルトの名無しさん (ブーイモ MM4f-DbiX)
2019/11/02(土) 19:58:05.88ID:tC3aEWNnM 開発終了してるからかな
380デフォルトの名無しさん (ワッチョイ c322-GD6V)
2019/11/02(土) 20:07:37.11ID:OgO2q3L50 >>379
imageが?
imageが?
381デフォルトの名無しさん (ワッチョイ ff42-aDcy)
2019/11/02(土) 20:51:31.59ID:hxKOcIYY0382デフォルトの名無しさん (ブーイモ MM27-xSsB)
2019/11/02(土) 21:24:35.05ID:fQnnj5XsM >>377
DoEventsは無くしたいな
DoEventsは無くしたいな
383デフォルトの名無しさん (ワッチョイ ded8-8pfq)
2019/11/03(日) 23:16:11.35ID:b9fr0VVV0 関数ポインタの配列的なことをマネージコードでやるにはどうすればいいの?
384デフォルトの名無しさん (ワッチョイ 5f38-VZ3I)
2019/11/03(日) 23:24:57.20ID:85zZlWEV0 FuncやらActionを配列で持つとかとか
385デフォルトの名無しさん (ブーイモ MMea-W7VG)
2019/11/03(日) 23:53:36.44ID:alptGm0wM 普通に足せない?
386デフォルトの名無しさん (アウアウウー Sa2f-xbEI)
2019/11/04(月) 00:33:22.52ID:B36l93jfa イベントハンドラ以外にマルチキャストを使うのはお勧めしない
古臭い黴の生えた機能だよ
古臭い黴の生えた機能だよ
387デフォルトの名無しさん (ワッチョイ 67d8-8pfq)
2019/11/04(月) 14:50:52.31ID:ZZvILvvT0 >>383,384,385
arrayから取り出して実行するところのコーディングが分かりません
void(*ptf[n])(void);
ptf[0] = func1;
ptf[1] = func2;
ptf[2] = func3;
...
(*ptf[i])();
こういうのをメゾットでやるには、マネージコードではどうすればいいんだろう?
arrayから取り出して実行するところのコーディングが分かりません
void(*ptf[n])(void);
ptf[0] = func1;
ptf[1] = func2;
ptf[2] = func3;
...
(*ptf[i])();
こういうのをメゾットでやるには、マネージコードではどうすればいいんだろう?
388デフォルトの名無しさん (ワッチョイ 1b63-zSOU)
2019/11/04(月) 14:59:46.62ID:l0Xu1LFS0389デフォルトの名無しさん (ワッチョイ 6f5f-qQ6b)
2019/11/04(月) 15:03:14.57ID:NxU2aGbZ0 >>387
var funcs = new Action[] { Func1, Func2, Func3 };
funcs[ 0 ]();
とか
var func = funcs[ 1 ];
func();
var funcs = new Action[] { Func1, Func2, Func3 };
funcs[ 0 ]();
とか
var func = funcs[ 1 ];
func();
390デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/04(月) 15:03:42.47ID:KBcuTkU10 C#で関数を値として受け渡すためにはデリゲートっていう型を使う
391デフォルトの名無しさん (JP 0H4f-pjCs)
2019/11/04(月) 17:43:23.21ID:zS6JGUgFH マネージコードってなんや?
392デフォルトの名無しさん (ドコグロ MM02-xbEI)
2019/11/04(月) 17:47:38.02ID:hOMB8BsXM >>391
「マネージコード」は「馬鹿でもわかる」と読み替えればだいたい間違いない
「マネージコード」は「馬鹿でもわかる」と読み替えればだいたい間違いない
393デフォルトの名無しさん (ワッチョイ 6bda-tz1I)
2019/11/04(月) 19:02:59.97ID:v9WRziqL0 palallelで同じbyte[]を読み書きしてみたら
思ったより処理が早くないんだけど
排他処理とかで重くなっていたりとかある?
思ったより処理が早くないんだけど
排他処理とかで重くなっていたりとかある?
394デフォルトの名無しさん (ワッチョイ ca79-qV4/)
2019/11/04(月) 19:05:28.08ID:95x+Uktm0 何でも非同期にしたら速くなるわけではない
理由は排他制御とかTaskの生成コストとか色々
高速化するにはうまくやる必要がある
理由は排他制御とかTaskの生成コストとか色々
高速化するにはうまくやる必要がある
395デフォルトの名無しさん (ワッチョイ 6761-cRjf)
2019/11/04(月) 19:32:49.51ID:kKuYGgew0 スレッドプール使うといっても生成コストは結構高いので一瞬で終わる処理だと逆効果
396デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/04(月) 23:18:45.02ID:KBcuTkU10 Parallelは処理の分割とかスレッドプールの管理はしてくれるけど
排他制御はしてくれんやろ?
排他制御はしてくれんやろ?
397デフォルトの名無しさん (ワッチョイ 6bda-tz1I)
2019/11/04(月) 23:49:11.75ID:v9WRziqL0 やっぱそうか…単純に単純に処理が重いんだね
見直してみますありがとう
見直してみますありがとう
398デフォルトの名無しさん (ワッチョイ ce0d-+mOG)
2019/11/05(火) 00:36:50.60ID:bHrgVvs60 structをpublicにしても各メンバーは一括でpublic扱いにならないのなんでなん?親分がpublicなら子分も暗黙的にpublicやろがいと思いまして。
399デフォルトの名無しさん (ブーイモ MM27-W7VG)
2019/11/05(火) 00:37:22.81ID:+pU68px4M せやな
400デフォルトの名無しさん (ワッチョイ 4aa7-kTP4)
2019/11/05(火) 01:08:31.06ID:OkDX2sfL0 >>398
誰に対するpublicなのか勘違いしてね?
誰に対するpublicなのか勘違いしてね?
401デフォルトの名無しさん (ワッチョイ ff61-bJgw)
2019/11/05(火) 05:42:15.86ID:jgE+3/q30 >>398
全部publicつけるように習慣づけとけばいいよ。
全部publicつけるように習慣づけとけばいいよ。
402デフォルトの名無しさん (ワッチョイ ea52-LcJH)
2019/11/05(火) 06:23:16.40ID:Qdu0k3JA0 >>398
お前の親が知人にお前のことを紹介するとき、お前の机の中のエロ本やパソコン内のエロ画像フォルダを勝手に公開されたら困るだろ
お前の親が知人にお前のことを紹介するとき、お前の机の中のエロ本やパソコン内のエロ画像フォルダを勝手に公開されたら困るだろ
403デフォルトの名無しさん (JP 0H4f-pjCs)
2019/11/05(火) 06:42:35.89ID:NkD1Ww44H >>396
lookするだけちゃうの?
lookするだけちゃうの?
404デフォルトの名無しさん (ブーイモ MMea-LRXq)
2019/11/05(火) 07:41:50.89ID:Dk7Gl9zXM 見て!
405デフォルトの名無しさん (ワッチョイ 5f38-VZ3I)
2019/11/05(火) 10:36:58.27ID:mW5ea4am0 >>402
この説明したことあるわw
この説明したことあるわw
406デフォルトの名無しさん (ワッチョイ 6bda-tz1I)
2019/11/05(火) 14:36:36.98ID:5/2Yewwy0 WPF始めたばかりでThumbを使ってドラッグでコントロールを移動をしたかったんだけど
これってそもそも中にラベルやボタンを置けない仕様なのかな…?
とりあえずtemplateを使って無理矢理borderとbuttonを置いてみたけど
今度はborderからはDragStartedもDragDeltaもThumbに届くのに、buttonからは届かない
Thumbってどういう風に使うものなんですかね…
ウインドウのタイトルバー的な感じに置くものなのでしょうか
これってそもそも中にラベルやボタンを置けない仕様なのかな…?
とりあえずtemplateを使って無理矢理borderとbuttonを置いてみたけど
今度はborderからはDragStartedもDragDeltaもThumbに届くのに、buttonからは届かない
Thumbってどういう風に使うものなんですかね…
ウインドウのタイトルバー的な感じに置くものなのでしょうか
407デフォルトの名無しさん (ワッチョイ 4e7c-a7m8)
2019/11/05(火) 14:46:13.23ID:F/FN86RY0 他のUI要素の部品として使われることを想定してるもんだからね
408デフォルトの名無しさん (ワッチョイ 6bda-tz1I)
2019/11/05(火) 14:55:03.31ID:5/2Yewwy0 例えばラベルにThumbの機能を持たせようとするとどうしたらいいんだろう?
thumbのテンプレートにラベルを置いたとして、ラベルのテキストやbackgroundプロパティを
tumbのプロパティとして定義することはできるのかな…?
thumbのテンプレートにラベルを置いたとして、ラベルのテキストやbackgroundプロパティを
tumbのプロパティとして定義することはできるのかな…?
409デフォルトの名無しさん (ワッチョイ 4e7c-a7m8)
2019/11/05(火) 15:07:10.27ID:F/FN86RY0 Thumbの機能ってのはよく分からんが、「ラベルにThumbの機能を持たせる」のに
Thumbにラベルの機能持たせるとか主客転倒してるように思える
Thumbにラベルの機能持たせるとか主客転倒してるように思える
410デフォルトの名無しさん (ワッチョイ 4e7c-a7m8)
2019/11/05(火) 15:12:25.39ID:F/FN86RY0 基本的にThumbってのは「マウスのドラッグで操作する」ことを表すもので
そのドラッグにどう意味づけするかはThumbではなくてThumbを持っている要素が決めるもの
スクロールバーならドラッグをスクロールとして扱うし
スライダーなら値の増減を表す
そのドラッグにどう意味づけするかはThumbではなくてThumbを持っている要素が決めるもの
スクロールバーならドラッグをスクロールとして扱うし
スライダーなら値の増減を表す
411デフォルトの名無しさん (ワッチョイ 6bda-tz1I)
2019/11/05(火) 15:29:08.42ID:5/2Yewwy0 もしかして俺の理解がおかしいのかな
普通のウインドウみたいにタイトルバーをドラッグしてコントロールを動かしたい場合って
<dockpanel>
<thumb>
<label>
みたいにするものなのかな、それとも
<dockpanel>
<label>
<thumb>
が正しい?
本当は
<thumb>
<dockpanel>
<label>
みたいにしてdockpanelのボタンとか以外の場所は
ドラッグ移動可能にしたいのだけど…
普通のウインドウみたいにタイトルバーをドラッグしてコントロールを動かしたい場合って
<dockpanel>
<thumb>
<label>
みたいにするものなのかな、それとも
<dockpanel>
<label>
<thumb>
が正しい?
本当は
<thumb>
<dockpanel>
<label>
みたいにしてdockpanelのボタンとか以外の場所は
ドラッグ移動可能にしたいのだけど…
412デフォルトの名無しさん (ブーイモ MM76-W7VG)
2019/11/05(火) 15:50:59.23ID:Ai05n3QGM DTD見ろ
413デフォルトの名無しさん (ワッチョイ 4e7c-a7m8)
2019/11/05(火) 15:58:11.06ID:F/FN86RY0 正直全然説明が理解できんが
DockPanelをルートとしたウィンドウ内ウィンドウ的なのが存在してて
それのタイトルバー的なのをマウスで掴んで動かしたいってことでいいのか
まあThumbの出番は無いだろうな
DockPanelをルートとしたウィンドウ内ウィンドウ的なのが存在してて
それのタイトルバー的なのをマウスで掴んで動かしたいってことでいいのか
まあThumbの出番は無いだろうな
414デフォルトの名無しさん (ブーイモ MM27-tz1I)
2019/11/05(火) 16:02:31.08ID:E+44QmotM415デフォルトの名無しさん (ワッチョイ 4e7c-a7m8)
2019/11/05(火) 16:27:06.76ID:F/FN86RY0 ドラッグできる部分をBorderとかで定義して
そいつのMouseLeftButtonDown/MouseMove/MouseLeftButtonUpイベントでDockPanelを動かすコードを書く
そいつのMouseLeftButtonDown/MouseMove/MouseLeftButtonUpイベントでDockPanelを動かすコードを書く
416デフォルトの名無しさん (ワッチョイ 0b6e-ANgw)
2019/11/05(火) 19:01:21.35ID:R3NaIBm20 public class Person
{
string name;
int age;
public read()
{
// ファイルを読み込んでnameとageに入れる
}}
こんなクラスがあるとします。1クラスに1役割ということでここからPersonクラスとPersonReaderクラスに分けることを考えます。
そのときPersonReaderは以下の2種類ってどちらがベターでしょうか
public class PersonReader
{
private Person person;
public PersonReader(Person person)
{
this.person = person;
}
public read()
{
// ファイルを読み込む処理
person = 〜
}}
Public class PersonReader
{
public Read(Person person)
{
// ファイルを読み込む処理
person = 〜
}}
readに引数無いほうがきれいな気がするんですけど、readerにもオブジェクトの参照持たせるのは不味いような気もします。
よろしくおねがいします
{
string name;
int age;
public read()
{
// ファイルを読み込んでnameとageに入れる
}}
こんなクラスがあるとします。1クラスに1役割ということでここからPersonクラスとPersonReaderクラスに分けることを考えます。
そのときPersonReaderは以下の2種類ってどちらがベターでしょうか
public class PersonReader
{
private Person person;
public PersonReader(Person person)
{
this.person = person;
}
public read()
{
// ファイルを読み込む処理
person = 〜
}}
Public class PersonReader
{
public Read(Person person)
{
// ファイルを読み込む処理
person = 〜
}}
readに引数無いほうがきれいな気がするんですけど、readerにもオブジェクトの参照持たせるのは不味いような気もします。
よろしくおねがいします
417デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/11/05(火) 19:19:02.37ID:Ra2VTEEXa >>416
あんまり教条主義的に考えない方がいいのでは?
特に事情がない限り
// ○○ファイを読み込んでこのインスタンスのフィールドとプロパティーを更新する
public void Load(string path)
{
....
}
とか、
// 〇〇ファイルから新しいインスタンスを作成
public static Person FromFile(string path)
{
....
}
こんなの方が使いやすいのでは?
あんまり教条主義的に考えない方がいいのでは?
特に事情がない限り
// ○○ファイを読み込んでこのインスタンスのフィールドとプロパティーを更新する
public void Load(string path)
{
....
}
とか、
// 〇〇ファイルから新しいインスタンスを作成
public static Person FromFile(string path)
{
....
}
こんなの方が使いやすいのでは?
418デフォルトの名無しさん (ワッチョイ 1bda-rLHV)
2019/11/05(火) 19:19:34.94ID:6X5avhuH0 win32apiをc#から呼ぶのは色々大変です
少し調べたらVanara.PInvokeのnugetがありました
日本語の記事が余り無いようですがどんなもんなんでしょうか?
少し調べたらVanara.PInvokeのnugetがありました
日本語の記事が余り無いようですがどんなもんなんでしょうか?
419デフォルトの名無しさん (ワッチョイ 3a2d-DXXI)
2019/11/05(火) 20:06:06.04ID:HWawPKHc0420デフォルトの名無しさん (ワッチョイ 0b6e-ANgw)
2019/11/05(火) 21:59:36.96ID:R3NaIBm20 >>417
あーまぁ今回の例だとそうかもしれないですね。
ただ実際の開発だとxmlを読み込むんですけどちょっと処理が膨大で。読み込む先、今回で言うところのPersonクラスも相当でかいので分けないといかんだろと
あーまぁ今回の例だとそうかもしれないですね。
ただ実際の開発だとxmlを読み込むんですけどちょっと処理が膨大で。読み込む先、今回で言うところのPersonクラスも相当でかいので分けないといかんだろと
421デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/05(火) 22:21:14.48ID:rzC/SdAh0 >>416
正直どっちも勘弁してって感じ
インスタンス生成の責務をファクトリに割り当てる頻出パターンなので
ファクトリやファクトリメソッドのキーワードでググればいいと思う
ファクトリクラスはusing Personしても参照を持つ必要はない
正直どっちも勘弁してって感じ
インスタンス生成の責務をファクトリに割り当てる頻出パターンなので
ファクトリやファクトリメソッドのキーワードでググればいいと思う
ファクトリクラスはusing Personしても参照を持つ必要はない
422デフォルトの名無しさん (ワッチョイ 0363-ORrh)
2019/11/05(火) 22:43:58.63ID:hT1YfL4n0 >>420
personは分解できないの?
そんな巨大ならpersonを分解して
xml読み込んでパースした情報を保持するやつ
パースした情報からpersonの部品を作るやつ
personの部品からpersonを作るやつ
みたいに段階踏むかなぁ
personは分解できないの?
そんな巨大ならpersonを分解して
xml読み込んでパースした情報を保持するやつ
パースした情報からpersonの部品を作るやつ
personの部品からpersonを作るやつ
みたいに段階踏むかなぁ
423デフォルトの名無しさん (ワッチョイ 0363-ORrh)
2019/11/05(火) 22:45:42.68ID:hT1YfL4n0 nugetなんて誰でもリリースできるんだから著名じゃないライブラリの良し悪しは中々情報は得にくいだろうね。
頑張って元言語の記事読むしかないんじゃない?
頑張って元言語の記事読むしかないんじゃない?
424デフォルトの名無しさん (ワッチョイ ca7d-qV4/)
2019/11/05(火) 22:48:54.04ID:dsMkwNKQ0 まじかよ
nugetはどっかの技術検査受けて
認められたのだけがnugetにリリースされてるんだと勝手に思ってた
nugetはどっかの技術検査受けて
認められたのだけがnugetにリリースされてるんだと勝手に思ってた
425デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/11/05(火) 23:00:27.36ID:Ra2VTEEXa >>420
どうしても分ける前提なわけね。
まあPersonReader がPersonのインスタンスを持つのは普通に変だよねやっぱり。
どこにも必然性がない。
PersonReader が状態を持つ必要がなければstaticクラスのstaticメソッドでいいはず
どうでもいいけど、
// ファイルを読み込む処理
person = 〜
じゃなくて、例えば
// ファイルを読み込む処理
person.Hoge = 〜;
person.Hage = 〜;
person.Piyo = 〜;
...
だよね多分?
どうしても分ける前提なわけね。
まあPersonReader がPersonのインスタンスを持つのは普通に変だよねやっぱり。
どこにも必然性がない。
PersonReader が状態を持つ必要がなければstaticクラスのstaticメソッドでいいはず
どうでもいいけど、
// ファイルを読み込む処理
person = 〜
じゃなくて、例えば
// ファイルを読み込む処理
person.Hoge = 〜;
person.Hage = 〜;
person.Piyo = 〜;
...
だよね多分?
426デフォルトの名無しさん (アウアウイー Sa43-4Sz2)
2019/11/05(火) 23:15:11.57ID:Uakp03G7a 最近のVisualStudioなら暮らすライブラリのプロジェクトで[ビルド(B)]-[パッケージ(P)]をクリックするだけで
nuget登録用のnupkgが出来上がるよ
あとはnugetにログインしてWeb上から適当に情報入力して登録すればすぐ反映される
悪意のあるパッケージとかどうやって識別してrejectしてるのか正直不思議
それとも表沙汰になってないだけでnpmみたいな汚染が日常的に起こってるのか
さすがにストアアプリよりははるかにマシだけどNuGetも玉石混合、というかゴミパッケージのほうが多いと思うよ
nuget登録用のnupkgが出来上がるよ
あとはnugetにログインしてWeb上から適当に情報入力して登録すればすぐ反映される
悪意のあるパッケージとかどうやって識別してrejectしてるのか正直不思議
それとも表沙汰になってないだけでnpmみたいな汚染が日常的に起こってるのか
さすがにストアアプリよりははるかにマシだけどNuGetも玉石混合、というかゴミパッケージのほうが多いと思うよ
427デフォルトの名無しさん (ワッチョイ cbda-qV4/)
2019/11/05(火) 23:24:58.96ID:2pF9vl9I0 「玉石混交」な
428デフォルトの名無しさん (アウアウエー Sac2-Y4hk)
2019/11/05(火) 23:32:45.78ID:mzMh853Ma attributeって結構使うもん?
429デフォルトの名無しさん (ワッチョイ 6f5f-qQ6b)
2019/11/05(火) 23:43:07.83ID:UYy2SJn60 >>428
自分で作ることは滅多にないけど、標準で用意されてるのは時々使う
FlagsAttributeやDllImportAttributeなんかは比較的良く使われているのではないだろうか
使わない人は全然使わないだろうけど
自分で作ることは滅多にないけど、標準で用意されてるのは時々使う
FlagsAttributeやDllImportAttributeなんかは比較的良く使われているのではないだろうか
使わない人は全然使わないだろうけど
430デフォルトの名無しさん (アウアウエー Sac2-Y4hk)
2019/11/05(火) 23:52:58.07ID:mzMh853Ma >>429
初学でASP.NET Coreのソースおっかけたりしても意味わからんくて困っている
初学でASP.NET Coreのソースおっかけたりしても意味わからんくて困っている
431デフォルトの名無しさん (ブーイモ MM76-xr2D)
2019/11/06(水) 00:06:43.42ID:YY5sm69bM 調べてないけどxmlからデータクラス生成するくらいなんかのライブラリに投げちゃいかんの?
432デフォルトの名無しさん (ブーイモ MM76-xr2D)
2019/11/06(水) 00:10:22.77ID:YY5sm69bM と思ったら言語標準の機能で十分行けるな
433デフォルトの名無しさん (ワッチョイ 6f5f-qQ6b)
2019/11/06(水) 00:10:24.55ID:vTr6jChq0 >>430
Attribute自体はプロパティやメソッドに付与して、コンパイラやライブラリに対して追加の情報を与えるだけ
Attributeが具体的に何を意味をするのかは、それぞれのAttributeによる
ASP.NET Coreのソースだったら、Validation関係かな
Attribute自体はプロパティやメソッドに付与して、コンパイラやライブラリに対して追加の情報を与えるだけ
Attributeが具体的に何を意味をするのかは、それぞれのAttributeによる
ASP.NET Coreのソースだったら、Validation関係かな
434デフォルトの名無しさん (ワッチョイ 0363-ORrh)
2019/11/06(水) 00:13:31.71ID:fi/5YPdO0 >>428
自作はenumにラベルつけるのに作るくらいかなぁ
enumの定義値とメニュー上の表示文字列対応させるみたいな感じ
多言語対応とかあるような案件じゃ使えないけど
すでにあるのはちょいちょい使う
TestとかBenchmarkとかは属性ありきだったりするし
自作はenumにラベルつけるのに作るくらいかなぁ
enumの定義値とメニュー上の表示文字列対応させるみたいな感じ
多言語対応とかあるような案件じゃ使えないけど
すでにあるのはちょいちょい使う
TestとかBenchmarkとかは属性ありきだったりするし
435デフォルトの名無しさん (ワッチョイ 6f5f-qQ6b)
2019/11/06(水) 00:59:37.18ID:vTr6jChq0436デフォルトの名無しさん (ワッチョイ 0363-ORrh)
2019/11/06(水) 01:07:17.94ID:fi/5YPdO0437デフォルトの名無しさん (ワッチョイ 6f5f-qQ6b)
2019/11/06(水) 01:31:17.54ID:vTr6jChq0438デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/11/06(水) 01:36:47.06ID:sSqMDD2ka 属性をキーにするぐらいにあらenumを直接キーにすりゃいいじゃんw
素直に拡張メソッドてToString定義した方が早いよw
素直に拡張メソッドてToString定義した方が早いよw
439デフォルトの名無しさん (ワッチョイ c322-GD6V)
2019/11/06(水) 01:41:30.82ID:TfmivfRs0 >>434
それ自作しなくてもDescriptionAttributeが標準であるよ
それ自作しなくてもDescriptionAttributeが標準であるよ
440デフォルトの名無しさん (アウアウウー Sa2f-jEuW)
2019/11/06(水) 01:41:32.51ID:sSqMDD2ka 拡張メソッドが使える以前はenumと相互に暗黙変換できるクラスを作って
そこに変換メソッドを書いてたけど、あれは実にあほらしい作業だったなあ
そこに変換メソッドを書いてたけど、あれは実にあほらしい作業だったなあ
441デフォルトの名無しさん (ワッチョイ 0363-ORrh)
2019/11/06(水) 02:20:17.85ID:fi/5YPdO0 >>439
実際にはenumとラベルを相互に変換したり複数対応させたり等々ケースに応じて細かな要件が出てくるからそういう拡張をするときのベースとして使ってる
あとキャッシュしないと遅いから自作側でキャッシュ処理も含めて作ることが多い
descriptionだとその属性自身を機能拡張したいときにしづらくない?
実際にはenumとラベルを相互に変換したり複数対応させたり等々ケースに応じて細かな要件が出てくるからそういう拡張をするときのベースとして使ってる
あとキャッシュしないと遅いから自作側でキャッシュ処理も含めて作ることが多い
descriptionだとその属性自身を機能拡張したいときにしづらくない?
442デフォルトの名無しさん (ワッチョイ 4a90-W2Md)
2019/11/06(水) 10:06:07.21ID:ju8QJ8Hj0 BindでEnumToStringConverter作るからそこでやるだろ。そこでリソース文字列を引っ張るようにする
443デフォルトの名無しさん (JP 0Hcf-Ri0F)
2019/11/07(木) 00:45:40.72ID:9Le1AJukH チャートエリアとか図解したサイトないですか?
シリーズだかなんやら意味分からん
シリーズだかなんやら意味分からん
444デフォルトの名無しさん (ワッチョイ 8b6e-msxt)
2019/11/07(木) 18:27:33.71ID:4Y6lEZUW0 C++のライブラリのちょっとした機能使いたくて現状C++でexe作ってそれをprocessで呼び出してる構造なんですけどなんかデメリットあります?
一応ラッパーもあってC#に一元化も出来るんですけどまぁ遅い。それに実行ファイル配るときに一緒にdllわさっと渡さないといけなくて。今はC#とC++のexe2つ渡すだけです
ソースコード別になっちゃって管理がめんどいくらいしか思いつかなかったんですけど、なんかトラブルの種になりそうなことありますか?
一応ラッパーもあってC#に一元化も出来るんですけどまぁ遅い。それに実行ファイル配るときに一緒にdllわさっと渡さないといけなくて。今はC#とC++のexe2つ渡すだけです
ソースコード別になっちゃって管理がめんどいくらいしか思いつかなかったんですけど、なんかトラブルの種になりそうなことありますか?
445デフォルトの名無しさん (ワッチョイ 8b6e-msxt)
2019/11/07(木) 18:36:24.70ID:4Y6lEZUW0446デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/07(木) 18:55:13.67ID:5UmAe6Qb0 フォーム上に左1/4が欠けた円を表示させたいです。
FillEllipseで円を書いてFillRectangle背景色で1/4を塗りつぶせばいいや
と思ったら、FillRectangleが隣り合った塗りつぶしたくない図形も塗りつぶしてしまう。
なにかいい方法は無いでしょうか?
FillEllipseで円を書いてFillRectangle背景色で1/4を塗りつぶせばいいや
と思ったら、FillRectangleが隣り合った塗りつぶしたくない図形も塗りつぶしてしまう。
なにかいい方法は無いでしょうか?
447デフォルトの名無しさん (スップ Sdbf-4TTv)
2019/11/07(木) 19:05:19.59ID:rg6PQaG0d >>444
別に現状で不満ないなら良いのでは?
配布するものならexeが複数あるとC++の方のexe起動してうごかねーっていうのがくるかも
あと動かす環境が変わったときに両方のexeの再ビルドが必要になる可能性があるとか
環境まで言い出したらexeかどうかなん些細な話かもしれんが
別に現状で不満ないなら良いのでは?
配布するものならexeが複数あるとC++の方のexe起動してうごかねーっていうのがくるかも
あと動かす環境が変わったときに両方のexeの再ビルドが必要になる可能性があるとか
環境まで言い出したらexeかどうかなん些細な話かもしれんが
448デフォルトの名無しさん (ワッチョイ 9f2c-3bRk)
2019/11/07(木) 19:07:46.68ID:tx6c8EjT0 >>446
FillPieでできない?
FillPieでできない?
449デフォルトの名無しさん (ワッチョイ 9fa5-EJQs)
2019/11/07(木) 19:09:01.70ID:Cw78xltR0 >>446
DrawPie、FillPieがあるわけだが
DrawPie、FillPieがあるわけだが
450デフォルトの名無しさん (オイコラミネオ MMcf-KCNP)
2019/11/07(木) 19:19:51.87ID:6XnNaJpnM dllにでもしたほうがいい気はする
451デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/07(木) 19:19:52.40ID:5UmAe6Qb0 すいません。
扇形ではなくて、左1/4のところでまっすぐカットしているという意味です。
図形の説明難しいな・・・。
扇形ではなくて、左1/4のところでまっすぐカットしているという意味です。
図形の説明難しいな・・・。
452デフォルトの名無しさん (ワッチョイ 9fa5-EJQs)
2019/11/07(木) 19:38:40.99ID:Cw78xltR0 よくわからんが、SetClipで描画範囲を指定すればいいんじゃないの
453デフォルトの名無しさん (ワッチョイ 9f2c-3bRk)
2019/11/07(木) 19:52:29.15ID:tx6c8EjT0 円弧の端と円の中心、もう片方の端と円の中心でそれぞれ線分を引いた形じゃなくて
円弧の端と端を1本の線分でつないだ形?
まあGraphicsPath作ってFillPathすればいいんじゃない
円弧の端と端を1本の線分でつないだ形?
まあGraphicsPath作ってFillPathすればいいんじゃない
454デフォルトの名無しさん (ブーイモ MM4f-4fxd)
2019/11/07(木) 20:58:33.81ID:YpFFJiGZM 私なら直線分解してポリゴン描画かな😅
455デフォルトの名無しさん (アウアウウー Sacf-FD+t)
2019/11/07(木) 21:34:03.21ID:nmFTkuxva >>446
境界線が不要でただ塗りつぶすだけならこれが一番簡単だね
public void FillSlicedEllipseL(Graphics g,Brush brush, RectangleF rect, double ratio)
{
var clip = g.Clip;
var sliceRect = rect; sliceRect.Width *= (float)ratio;
g.SetClip(sliceRect, CombineMode.Exclude);
g.FillEllipse(brush, rect);
g.Clip = clip;
}
必用ならパス作るしかないか
境界線が不要でただ塗りつぶすだけならこれが一番簡単だね
public void FillSlicedEllipseL(Graphics g,Brush brush, RectangleF rect, double ratio)
{
var clip = g.Clip;
var sliceRect = rect; sliceRect.Width *= (float)ratio;
g.SetClip(sliceRect, CombineMode.Exclude);
g.FillEllipse(brush, rect);
g.Clip = clip;
}
必用ならパス作るしかないか
456デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/07(木) 21:35:04.28ID:debRpYWr0 >>444
Process経由の場合はDLL使ったAPI呼び出しに比べると
マーシャリング/アンマーシャリング、エラーハンドリングが面倒になりがち
現状そこに不満がないなら無理してDLLに変更する必要はないと思う
あと一応バイナリリソースとしてdllやexeをC#のアセンブリに埋め込んで1ファイルにすることも可能
(リソースからexeを取り出して起動したりDLLをロードしたりするための追加コードが必要)
Process経由の場合はDLL使ったAPI呼び出しに比べると
マーシャリング/アンマーシャリング、エラーハンドリングが面倒になりがち
現状そこに不満がないなら無理してDLLに変更する必要はないと思う
あと一応バイナリリソースとしてdllやexeをC#のアセンブリに埋め込んで1ファイルにすることも可能
(リソースからexeを取り出して起動したりDLLをロードしたりするための追加コードが必要)
457デフォルトの名無しさん (ワッチョイ bb5f-vPHs)
2019/11/07(木) 22:01:55.24ID:cfOynPV20458デフォルトの名無しさん (ブーイモ MM4f-4fxd)
2019/11/07(木) 22:58:10.38ID:YpFFJiGZM EXEもLoadLibrary出来るのよ。
なので関数をexport出来れば、どちらでも使える
なので関数をexport出来れば、どちらでも使える
459デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/07(木) 23:09:00.51ID:5UmAe6Qb0 いろいろありがとうございます。
説明ヘタですいません。
https://ja.wikipedia.org/wiki/%E5%BC%A7_(%E5%B9%BE%E4%BD%95%E5%AD%A6)
の上から2番めの図のABで円の端を切り落とした形状です。
任意の半径をしていするとこの形状が表示できるようにしたいのです。
隅っこがAB直線で欠けた円ですね。
説明ヘタですいません。
https://ja.wikipedia.org/wiki/%E5%BC%A7_(%E5%B9%BE%E4%BD%95%E5%AD%A6)
の上から2番めの図のABで円の端を切り落とした形状です。
任意の半径をしていするとこの形状が表示できるようにしたいのです。
隅っこがAB直線で欠けた円ですね。
460デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/07(木) 23:10:57.49ID:5UmAe6Qb0 https://ja.wikipedia.org/wiki/%E5%BC%A7_(%E5%B9%BE%E4%BD%95%E5%AD%A6)
貼り付けたら後ろがハイパーリンクじゃなくなってますが、コピペしていただくとwikiのページが開きます。
貼り付けたら後ろがハイパーリンクじゃなくなってますが、コピペしていただくとwikiのページが開きます。
461デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/07(木) 23:18:55.53ID:5UmAe6Qb0 やっかいなのは
欠けた円の半径を任意に変更したいのでGraphicPathで円に接する直線を引くのが難しいこと
欠けた円をたくさん描くので、rectangleやgclipでやると隣の欠けた円にも影響を及ぼすこと
なんですよね。
clipならできるのかなぁ。
欠けた円の半径を任意に変更したいのでGraphicPathで円に接する直線を引くのが難しいこと
欠けた円をたくさん描くので、rectangleやgclipでやると隣の欠けた円にも影響を及ぼすこと
なんですよね。
clipならできるのかなぁ。
462デフォルトの名無しさん (ワッチョイ 9fa7-cErl)
2019/11/07(木) 23:22:58.14ID:6/qmKr7m0 単純に描画順で回避すればいいじゃん
464デフォルトの名無しさん (ワッチョイ 9fa7-cErl)
2019/11/07(木) 23:25:47.22ID:6/qmKr7m0 それもできないなら一度
どっかのピクチャーボックス(wpf?winforms?)に貼り付けて
欠けた円を作ったあとで
それを必要な領域だけくり抜いて持って来ればええよ
どっかのピクチャーボックス(wpf?winforms?)に貼り付けて
欠けた円を作ったあとで
それを必要な領域だけくり抜いて持って来ればええよ
465デフォルトの名無しさん (ワッチョイ 4f0d-3CWa)
2019/11/08(金) 01:03:44.16ID:OPBfzRS70 vs2019でc#フォームアプリを作ろうとするとデフォが.net coreなのね
.net frameworkはやたら下の方に出てくるしこっちもデフォはユーザコントロール用だ
.net frameworkはやたら下の方に出てくるしこっちもデフォはユーザコントロール用だ
466デフォルトの名無しさん (JP 0Hcf-Ri0F)
2019/11/08(金) 01:52:25.99ID:u/zQOw3qH467デフォルトの名無しさん (ブーイモ MM7f-rO36)
2019/11/08(金) 07:02:50.73ID:uJPiJMNYM Properties.Settings.Default を変数dに入れて
クラス内のpublic変数にしたいんだけど
何かうまい方法はないだろうか
記述が長すぎるから短縮したいんだよね
クラス内のpublic変数にしたいんだけど
何かうまい方法はないだろうか
記述が長すぎるから短縮したいんだよね
468デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/08(金) 10:09:55.65ID:q9/Fdf+e0469デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/08(金) 10:55:00.38ID:l/9rfM6i0 usingは無理でした
名前空間はPropertiesだけで
Properties.Setting.Default のエイリアスや参照は作れないようです
privateだと参照が作れるんですが
publicにするとDefaultが internal sealedで定義されているため
エラーになっちゃうんですよね…
名前空間はPropertiesだけで
Properties.Setting.Default のエイリアスや参照は作れないようです
privateだと参照が作れるんですが
publicにするとDefaultが internal sealedで定義されているため
エラーになっちゃうんですよね…
470デフォルトの名無しさん (ワッチョイ 4f7c-3bRk)
2019/11/08(金) 11:05:14.26ID:gdoQlzgA0 そりゃそうだろ
internalでいいじゃん
using static hoge.Properties.Settings;
で Default.fuga なんて書き方もできるけど
internalでいいじゃん
using static hoge.Properties.Settings;
で Default.fuga なんて書き方もできるけど
471デフォルトの名無しさん (スップ Sdbf-4TTv)
2019/11/08(金) 11:46:56.06ID:QwZEyG0Sd publicなgetter setterもったラッパーでも作っちゃえば?
472デフォルトの名無しさん (アウウィフ FFcf-tB+Q)
2019/11/08(金) 13:05:04.27ID:3E1/z7K0F >>461
これじゃいかんのか
http://20100718seko.blog130.fc弐.com/blog-えんとり-43.html
https://どぼん.net/vb/dotnet/graphics/drawrectangle.html#section7
https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.graphics.fillellipse
これじゃいかんのか
http://20100718seko.blog130.fc弐.com/blog-えんとり-43.html
https://どぼん.net/vb/dotnet/graphics/drawrectangle.html#section7
https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.graphics.fillellipse
473デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 13:27:02.99ID:GoK8IDZc0 以下のプログラムについて質問お願いいたします。
--- 以下プログラム ---
public static int TwoAdicValuation(ulong x)
=> TwoAdicValuationTable[(x & ~x + 1) % 67];
static readonly int[] TwoAdicValuationTable
= InitializeTwoAdicValuationTable();
static int[] InitializeTwoAdicValuationTable() {
var table = new int[67];
table[0] = -1;
for (var i = 0; i < 64; i++) {
table[(1UL << i) % 67] = i;
}
return table;
}
--- 以上プログラム ---
上記の TwoAdicValuation メソッドは、
・引数 x がゼロのときは -1 を返す
・それ以外の場合、引数 x が 2 で割れる回数を返す
という動作をするようです。
例えば TwoAdicValuation(2*3*5) は 1,
TwoAdicValuation(2*2*2*17) は 3,
TwoAdicValuation(19) は 0,
TwoAdicValuation(0) は -1 を返します。
しかしプログラムを読んでみても、
何がどうなってそのような動作になっているのかどうしても理解できません。
何かお分かりになることがあれば
どんなことでも構いませんので教えていただけないでしょうか。
どうぞよろしくお願いいたします。
--- 以下プログラム ---
public static int TwoAdicValuation(ulong x)
=> TwoAdicValuationTable[(x & ~x + 1) % 67];
static readonly int[] TwoAdicValuationTable
= InitializeTwoAdicValuationTable();
static int[] InitializeTwoAdicValuationTable() {
var table = new int[67];
table[0] = -1;
for (var i = 0; i < 64; i++) {
table[(1UL << i) % 67] = i;
}
return table;
}
--- 以上プログラム ---
上記の TwoAdicValuation メソッドは、
・引数 x がゼロのときは -1 を返す
・それ以外の場合、引数 x が 2 で割れる回数を返す
という動作をするようです。
例えば TwoAdicValuation(2*3*5) は 1,
TwoAdicValuation(2*2*2*17) は 3,
TwoAdicValuation(19) は 0,
TwoAdicValuation(0) は -1 を返します。
しかしプログラムを読んでみても、
何がどうなってそのような動作になっているのかどうしても理解できません。
何かお分かりになることがあれば
どんなことでも構いませんので教えていただけないでしょうか。
どうぞよろしくお願いいたします。
474デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)
2019/11/08(金) 13:54:06.44ID:bNpOstnB0 Ruby で説明すると、
2進数で、右から連続する、0の数が、2の累乗を表す。
0b は、2進数
0b0101(5) → 奇数
0b0110(6), 0b1010(10) → 2^1
0b0100(4) → 2^2
0b1000(8) → 2^3
2進数で、右から連続する、0の数が、2の累乗を表す。
0b は、2進数
0b0101(5) → 奇数
0b0110(6), 0b1010(10) → 2^1
0b0100(4) → 2^2
0b1000(8) → 2^3
475デフォルトの名無しさん (アウアウウー Sacf-FD+t)
2019/11/08(金) 13:55:40.06ID:Y8kt1QUVa >>473
なんか1年ぐらい前にも同じネタがあった気がするんだけど...
コードよく読んでないけど、要するに2進数で見た時に
「値が1の最下位ビットの位置」を求めてるだけだと思うよ。
2進数で2で割ることは右に算術シフトするのと同じなのは分かるよね?
あと、奇数とはbit0が1の数なのも分かるよね?
だから「x が 2 で割れる回数」と「値が1の最下位ビットの位置」は同じになる
なんか1年ぐらい前にも同じネタがあった気がするんだけど...
コードよく読んでないけど、要するに2進数で見た時に
「値が1の最下位ビットの位置」を求めてるだけだと思うよ。
2進数で2で割ることは右に算術シフトするのと同じなのは分かるよね?
あと、奇数とはbit0が1の数なのも分かるよね?
だから「x が 2 で割れる回数」と「値が1の最下位ビットの位置」は同じになる
476デフォルトの名無しさん (アウアウウー Sacf-FD+t)
2019/11/08(金) 14:03:08.97ID:Y8kt1QUVa477デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/08(金) 15:02:17.09ID:l/9rfM6i0 なるほど因数分解して2がいくつあるか数えるのね
478デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 15:11:25.53ID:GoK8IDZc0 >>474-477
ありがとうございます。
色々と実験してみた結果、
x & ~x + 1 が、x と 2で割れる回数が同じ、
1UL << i の形の値になることがわかりました。
ただ、どうして x & ~x + 1 と 1UL << i が
結びつくのかまだ理解できておらず、
67 で割った余りを計算する理由も分かっていないので
引き続き考えてみようと思います。
もし他にもヒントがあれば教えていただけると嬉しいです。
よろしくお願いいたします。
ありがとうございます。
色々と実験してみた結果、
x & ~x + 1 が、x と 2で割れる回数が同じ、
1UL << i の形の値になることがわかりました。
ただ、どうして x & ~x + 1 と 1UL << i が
結びつくのかまだ理解できておらず、
67 で割った余りを計算する理由も分かっていないので
引き続き考えてみようと思います。
もし他にもヒントがあれば教えていただけると嬉しいです。
よろしくお願いいたします。
479474 (ワッチョイ 9f2c-E8Ce)
2019/11/08(金) 15:35:02.78ID:bNpOstnB0 Ruby で作った!
そんな、67 とか、訳の分からないロジックを解析しても、仕方ないだろ。無視すべしw
def func( num )
return -1 if num == 0
# 2進数の文字列にして、逆転して、左から探す
num.to_s( 2 ).reverse.index( "1" )
end
nums = %w(0 5 10 4 8).map!( &:to_i ) # 数値の配列
p nums.map { |num| func( num ) }
#=> [-1, 0, 1, 2, 3]
そんな、67 とか、訳の分からないロジックを解析しても、仕方ないだろ。無視すべしw
def func( num )
return -1 if num == 0
# 2進数の文字列にして、逆転して、左から探す
num.to_s( 2 ).reverse.index( "1" )
end
nums = %w(0 5 10 4 8).map!( &:to_i ) # 数値の配列
p nums.map { |num| func( num ) }
#=> [-1, 0, 1, 2, 3]
480デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/08(金) 16:37:08.11ID:l/9rfM6i0 なぜC#スレにruby厨が?
481デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/08(金) 16:48:42.14ID:q9/Fdf+e0 >>473
tableの中身を理解するにはi, table[i], 1UL <<1, (1UL<<1 %67)を0~64の範囲で逐次出力してみる
xとx&(~x +1)の関係を理解するには一旦byteで考えてビット演算を図にして考えてみる
x=1, ~x=254, x&(~x+1)=1
x=2, ~x=253, x&(~x+1)=2
x=3, ~x=252, x&(~x+1)=1
x=4, ~x=251, x&(~x+1)=4
x=5, ~x=250, x&(~x+1)=1
x=6, ~x=249, x&(~x+1)=2
x=7, ~x=248, x&(~x+1)=1
x=8, ~x=247, x&(~x+1)=8
64と67の関係は、16と19, 32と37でも同じ結果が得られそう
ぶっちゃけbrainfuck系のコードなのでビット演算を理解すればあとは忘れていい類だと思う
tableの中身を理解するにはi, table[i], 1UL <<1, (1UL<<1 %67)を0~64の範囲で逐次出力してみる
xとx&(~x +1)の関係を理解するには一旦byteで考えてビット演算を図にして考えてみる
x=1, ~x=254, x&(~x+1)=1
x=2, ~x=253, x&(~x+1)=2
x=3, ~x=252, x&(~x+1)=1
x=4, ~x=251, x&(~x+1)=4
x=5, ~x=250, x&(~x+1)=1
x=6, ~x=249, x&(~x+1)=2
x=7, ~x=248, x&(~x+1)=1
x=8, ~x=247, x&(~x+1)=8
64と67の関係は、16と19, 32と37でも同じ結果が得られそう
ぶっちゃけbrainfuck系のコードなのでビット演算を理解すればあとは忘れていい類だと思う
482デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/08(金) 16:50:19.91ID:l/9rfM6i0 >>478
わかったわ
x & ~x + 1 は、最下位の1のビットだけ残す計算
ビット反転して1を足すことで、最下位の1まで繰り上がり
他のビットは必ずどちらかが0になるのでandで消える
で、67で割った余りを求める理由は、2^t を67で割った場合
tが0〜63の範囲ならユニークな値になるから
最小サイズの配列のインデックスを返す値として
最も適していたということだな
なかなか面白いプログラムだった
わかったわ
x & ~x + 1 は、最下位の1のビットだけ残す計算
ビット反転して1を足すことで、最下位の1まで繰り上がり
他のビットは必ずどちらかが0になるのでandで消える
で、67で割った余りを求める理由は、2^t を67で割った場合
tが0〜63の範囲ならユニークな値になるから
最小サイズの配列のインデックスを返す値として
最も適していたということだな
なかなか面白いプログラムだった
483デフォルトの名無しさん (ワッチョイ cb88-4TTv)
2019/11/08(金) 17:03:13.19ID:N8JdoV2L0 文字列にするとかいう高コストの処理をしないためのアルゴリズムなのに無視すべきとか何言ってんだw
競技プログラムとか触ったこと無いの?
競技プログラムとか触ったこと無いの?
484デフォルトの名無しさん (アウアウウー Sacf-U/KP)
2019/11/08(金) 17:10:37.08ID:n8X47CXXa >>480
そいつはいろんな所に湧いて出てくる有名人だ。スルー推奨。
そいつはいろんな所に湧いて出てくる有名人だ。スルー推奨。
485デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/08(金) 17:10:58.46ID:l/9rfM6i0 >>482を修正
>で、67で割った余りを求める理由は、2^t を67で割った場合
割った余りを求めれば
>tが0〜63の範囲ならユニークな値になるから
tが1〜64の場合だな
かなり洗練されているが読みやすさとしては
仕事で扱うには勘弁してほしいw
ところでまさかこれ課題じゃねーよな?
>で、67で割った余りを求める理由は、2^t を67で割った場合
割った余りを求めれば
>tが0〜63の範囲ならユニークな値になるから
tが1〜64の場合だな
かなり洗練されているが読みやすさとしては
仕事で扱うには勘弁してほしいw
ところでまさかこれ課題じゃねーよな?
486デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 18:04:22.31ID:GoK8IDZc0 >>479
ありがとうございます。
Ruby を扱う技術が私には無いので
アイディアだけお借りして C# に翻訳してみたところ、
期待通りに動作いたしました。
ちなみに、他の方から実行速度に関するご指摘があったので
オリジナルと比較してみたところ、私の書いたコードでは
オリジナルよりも 250 倍程度時間がかかってしまうようでした。
とはいえ読みやすさは良いプログラムの重要な条件なので、
場面に応じて使い分けるのが良さそうですね。
ありがとうございます。
Ruby を扱う技術が私には無いので
アイディアだけお借りして C# に翻訳してみたところ、
期待通りに動作いたしました。
ちなみに、他の方から実行速度に関するご指摘があったので
オリジナルと比較してみたところ、私の書いたコードでは
オリジナルよりも 250 倍程度時間がかかってしまうようでした。
とはいえ読みやすさは良いプログラムの重要な条件なので、
場面に応じて使い分けるのが良さそうですね。
487デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 18:04:48.09ID:GoK8IDZc0 >>481-482
大変わかりやすいご説明どうもありがとうございます。
>>481
> xとx&(~x +1)の関係を理解するには一旦byteで考えてビット演算を図にして考えてみる
>>482
> x & ~x + 1 は、最下位の1のビットだけ残す計算
いただいたアドバイスを元に↓のような実験をしてみて理解できたと思います。
00101100 (44)
11010011 (~44)
11010100 (~44 + 1)
00000100 (44 & ~44 + 1)
>>481
tableの中身を理解するにはi, table[i], 1UL <<1, (1UL<<1 %67)を0~64の範囲で逐次出力してみる
>>482
> 67で割った余りを求める理由は、2^t を67で割った場合
> tが0〜63の範囲ならユニークな値になる
なるほど!実験してみて、確かにそうなっていることがわかりました。
40 人のクラスの中で同じ誕生日のペアがいる確率は 90% 近いと
聞いたことがあるので、なんだか不思議な感じがします。
>>481
> 64と67の関係は、16と19, 32と37でも同じ結果が得られそう
すごく興味深いです。私も実験してみたところ、
1 と 2、2 と 3、4 と 5、8 と 11 という感じになったのですがあってますか?
また、「16と19, 32と37」というのをさらっと書いてくださっていますが、
これは実際に調べてくださったのですか?
それとも、きちんと数学を勉強していればすぐに分かることなのでしょうか。。。
大変わかりやすいご説明どうもありがとうございます。
>>481
> xとx&(~x +1)の関係を理解するには一旦byteで考えてビット演算を図にして考えてみる
>>482
> x & ~x + 1 は、最下位の1のビットだけ残す計算
いただいたアドバイスを元に↓のような実験をしてみて理解できたと思います。
00101100 (44)
11010011 (~44)
11010100 (~44 + 1)
00000100 (44 & ~44 + 1)
>>481
tableの中身を理解するにはi, table[i], 1UL <<1, (1UL<<1 %67)を0~64の範囲で逐次出力してみる
>>482
> 67で割った余りを求める理由は、2^t を67で割った場合
> tが0〜63の範囲ならユニークな値になる
なるほど!実験してみて、確かにそうなっていることがわかりました。
40 人のクラスの中で同じ誕生日のペアがいる確率は 90% 近いと
聞いたことがあるので、なんだか不思議な感じがします。
>>481
> 64と67の関係は、16と19, 32と37でも同じ結果が得られそう
すごく興味深いです。私も実験してみたところ、
1 と 2、2 と 3、4 と 5、8 と 11 という感じになったのですがあってますか?
また、「16と19, 32と37」というのをさらっと書いてくださっていますが、
これは実際に調べてくださったのですか?
それとも、きちんと数学を勉強していればすぐに分かることなのでしょうか。。。
488デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 18:05:15.79ID:GoK8IDZc0489474 (ワッチョイ 9f2c-E8Ce)
2019/11/08(金) 19:01:19.01ID:bNpOstnB0490デフォルトの名無しさん (ワッチョイ abe6-DaD1)
2019/11/08(金) 20:36:38.33ID:83cZSp6a0 コレクションの初期化子で複数を同じ値でまとめて指定する方法はないでしょうか?
Pythonの、l=[False]*100みたいなことをやりたいのですが、
var l = new List<bool> { False, False・・(100個分)}ぐらいしか思いつかず・・
Pythonの、l=[False]*100みたいなことをやりたいのですが、
var l = new List<bool> { False, False・・(100個分)}ぐらいしか思いつかず・・
491デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 20:40:33.49ID:3NnH1vyN0 >>490
Enumerable.Repeatでググろう
Enumerable.Repeatでググろう
492デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 20:42:51.62ID:3NnH1vyN0493デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 20:45:08.81ID:3NnH1vyN0 ruby君はほんとひどいな
自分が軽く触れそうな話題にだけ飛びついてわからない部分は謎理論で適当な回答しかしない
自分が軽く触れそうな話題にだけ飛びついてわからない部分は謎理論で適当な回答しかしない
494デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 20:51:12.72ID:GoK8IDZc0495デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 21:38:06.59ID:3NnH1vyN0496デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 22:38:41.75ID:GoK8IDZc0 >>495
レスありがとうございます。
フェルマーの小定理について調べてみました。
フェルマーの小定理から分かることとして、p が奇数の素数のとき、
(2^0)%p と (2^(p-1))%p はともに 1 になるようです。
つまり >>482 さんの言葉をお借りするなら、
奇数の素数 p がビット数 n 以下のとき
t が 0〜(n-1) の範囲で変化すると (2^t)%p がユニークにならないため、
ビット数 n の対としてn 以下の奇数の素数は不適切ということになります。
ただ、フェルマーの小定理は p > n のときに (2^t)%p がユニークになることを
保証するものではありませんし、そもそも奇数の素数じゃなくても
ビット数 n の対としてn 以下の数が適切でないのは当たり前な気がするので、
フェルマーの小定理から直ちに欲しい情報が得られるというわけではないようです。
とはいえ、関連しそうな分野が分かっただけでも大きな前進ですので、
もう少し詳しく調べてみようと思います。どうもありがとうございました。
レスありがとうございます。
フェルマーの小定理について調べてみました。
フェルマーの小定理から分かることとして、p が奇数の素数のとき、
(2^0)%p と (2^(p-1))%p はともに 1 になるようです。
つまり >>482 さんの言葉をお借りするなら、
奇数の素数 p がビット数 n 以下のとき
t が 0〜(n-1) の範囲で変化すると (2^t)%p がユニークにならないため、
ビット数 n の対としてn 以下の奇数の素数は不適切ということになります。
ただ、フェルマーの小定理は p > n のときに (2^t)%p がユニークになることを
保証するものではありませんし、そもそも奇数の素数じゃなくても
ビット数 n の対としてn 以下の数が適切でないのは当たり前な気がするので、
フェルマーの小定理から直ちに欲しい情報が得られるというわけではないようです。
とはいえ、関連しそうな分野が分かっただけでも大きな前進ですので、
もう少し詳しく調べてみようと思います。どうもありがとうございました。
497デフォルトの名無しさん (ブーイモ MM4f-4fxd)
2019/11/08(金) 22:59:25.16ID:EylFl5WNM ついでにガロア体も調べると、
QRのコード化で楽になるよ:-p
QRのコード化で楽になるよ:-p
498デフォルトの名無しさん (ワッチョイ abe6-DaD1)
2019/11/08(金) 23:04:00.88ID:83cZSp6a0499デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 23:08:44.38ID:3NnH1vyN0 >>498
もしfalse限定ならC#のbool変数の初期値はfalseに決まってるからbool配列100個を作るだけで目的のものは作れるよ
trueの場合はRepeatすることになるけど、falseなら配列宣言で済ませたほうがパフォーマンスは良い
100個程度なら微々たる差ではあるけど
もしfalse限定ならC#のbool変数の初期値はfalseに決まってるからbool配列100個を作るだけで目的のものは作れるよ
trueの場合はRepeatすることになるけど、falseなら配列宣言で済ませたほうがパフォーマンスは良い
100個程度なら微々たる差ではあるけど
500デフォルトの名無しさん (ワッチョイ 9f61-DaD1)
2019/11/08(金) 23:10:41.57ID:oRbRRQfv0 >>498のは値型だからいいけど参照型でやると楽しいことになる
501デフォルトの名無しさん (ワッチョイ 8b1b-rQqJ)
2019/11/08(金) 23:27:30.91ID:kn5mNyzW0 値型でしか使ったことなかったけど調べたら参照型は複製してくれないのかよ!
やっぱforループしか信じられねえわ
やっぱforループしか信じられねえわ
502デフォルトの名無しさん (ワッチョイ abe6-DaD1)
2019/11/08(金) 23:27:57.31ID:83cZSp6a0 >>500
Pythonで[[0, 1]]*10とかやって、恐ろしいことになったのを思い出しました
今はちゃんと[[0,1] for _ in range(10)]としてますが、C#でも同じですね
それにしてもPythonから移ってくると、C#は難しいですね・・
Pythonで[[0, 1]]*10とかやって、恐ろしいことになったのを思い出しました
今はちゃんと[[0,1] for _ in range(10)]としてますが、C#でも同じですね
それにしてもPythonから移ってくると、C#は難しいですね・・
503デフォルトの名無しさん (ワッチョイ 9fb9-vPHs)
2019/11/08(金) 23:28:43.13ID:GoK8IDZc0 >>497
レスありがとうございます。
いろいろなビット数 n の対になる数を調べてみると、
必ずしも素数になるとは限らないものの、
調べた範囲では全て p^k(p は素数、k は自然数)の形になっていました。
で、教えていただいたガロア体というのは要素の個数 p^k の集合ということで
ビンゴかと思ったのですが、
どうやら私が考えているのは p^k を法とする剰余環というものらしく、
k = 1 で無い限りガロア体とは本質的に異なるもののようです。
しかし色々と調べれば調べるほどこのあたりの分野から答えが見つかりそうだと
思えてきたので、もう少し頑張ってみようと思います。どうもありがとうございます。
レスありがとうございます。
いろいろなビット数 n の対になる数を調べてみると、
必ずしも素数になるとは限らないものの、
調べた範囲では全て p^k(p は素数、k は自然数)の形になっていました。
で、教えていただいたガロア体というのは要素の個数 p^k の集合ということで
ビンゴかと思ったのですが、
どうやら私が考えているのは p^k を法とする剰余環というものらしく、
k = 1 で無い限りガロア体とは本質的に異なるもののようです。
しかし色々と調べれば調べるほどこのあたりの分野から答えが見つかりそうだと
思えてきたので、もう少し頑張ってみようと思います。どうもありがとうございます。
504デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/08(金) 23:52:22.74ID:3NnH1vyN0 >>501
newするRepeatをGenericで作ればいいよ
whereで値型と参照型分けるようにして作ってそっち呼ぶようにすれば気にする必要もなくなる
インスタンス生成が多くなるようなプロジェクトではよく使う
ゲーム系なんかだと結構使われること多いんじゃないかな?
newするRepeatをGenericで作ればいいよ
whereで値型と参照型分けるようにして作ってそっち呼ぶようにすれば気にする必要もなくなる
インスタンス生成が多くなるようなプロジェクトではよく使う
ゲーム系なんかだと結構使われること多いんじゃないかな?
505デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/08(金) 23:55:21.55ID:J2B6vaPv0 >>501
LINQ の速度が許容できるなら、こんな感じでやろうぜ。
Enumerable.Range(0, 100)
.Select( i => new CertainClass { ... } )
.ToList();
for 文ダサい。
LINQ の速度が許容できるなら、こんな感じでやろうぜ。
Enumerable.Range(0, 100)
.Select( i => new CertainClass { ... } )
.ToList();
for 文ダサい。
506デフォルトの名無しさん (ワッチョイ 9f2f-E8Ce)
2019/11/09(土) 05:56:33.04ID:b9xnhqog0 LINQ覚えたてで使いたくてしょうがなくてイキって書いたコードに見えるわ
507デフォルトの名無しさん (ワッチョイ 0fa7-DaD1)
2019/11/09(土) 08:50:31.29ID:Bvga/TrM0 Visual Studio2019で新プロジェクトを作ろうとしたらWindows Forms App(.NET Core)がさも推奨かのように上の方に出てきますが、
Windowsで使う想定のWinFormsアプリを作る場合も.NET Coreで作ったほうがいいんでしょうか?
Windowsで使う想定のWinFormsアプリを作る場合も.NET Coreで作ったほうがいいんでしょうか?
508デフォルトの名無しさん (ワッチョイ 2be5-3N2q)
2019/11/09(土) 09:05:30.09ID:SXTesUyU0509デフォルトの名無しさん (JP 0Hcf-ApVS)
2019/11/09(土) 09:13:38.87ID:pySBQwYBH ロードマップではこれからcore主流になるんでしょ
510デフォルトの名無しさん (ササクッテロラ Sp0f-Y4Hd)
2019/11/09(土) 09:36:44.32ID:7/SeOb4dp CoreってWindowsに標準でインストールされてるの?
ユーザーに別途インストールさせるようなことない?
ユーザーに別途インストールさせるようなことない?
511デフォルトの名無しさん (ワッチョイ fb0c-DaD1)
2019/11/09(土) 10:32:51.34ID:HanEs9+F0 されてないし今のところWUで配るような予定も無いとさ
逆にインストール不要なcoreのランタイムそのものを同梱して配布はできる
逆にインストール不要なcoreのランタイムそのものを同梱して配布はできる
512デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/09(土) 10:38:23.18ID:YXlbcSmw0513デフォルトの名無しさん (ワッチョイ 9fa7-cErl)
2019/11/09(土) 10:55:47.68ID:Bq7xaXZQ0 ちょっと条件変わったときに途中で引っ掛けにくいよね
あ、ここ、フラグでcontinueいるわ
あ、i%10==0毎に処理いるわ
あ、i±Nまで見る必要あるわ
とか、for文のが圧倒的に拡張性が高い
あ、ここ、フラグでcontinueいるわ
あ、i%10==0毎に処理いるわ
あ、i±Nまで見る必要あるわ
とか、for文のが圧倒的に拡張性が高い
514デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/09(土) 11:01:23.16ID:c61Xm8G30 foreachがインデックスも定義できれば
もっと活用の幅が広がるのだけど
もっと活用の幅が広がるのだけど
515デフォルトの名無しさん (ワッチョイ fb0c-DaD1)
2019/11/09(土) 11:15:58.41ID:HanEs9+F0 インデックス付きSelect/Whereとかでええんちゃうの
516デフォルトの名無しさん (ワッチョイ 8bad-DP7C)
2019/11/09(土) 11:17:41.47ID:UZitXSsm0 別に i は LINQ でも出来るような気が。
517デフォルトの名無しさん (アウアウエー Sa3f-pFIx)
2019/11/09(土) 11:18:29.90ID:aDURcOtda ループ内を雑に拡張して後で困るのが嫌だからLinqとLinq拡張ライブラリを使う
n件ごと、前後n件なんて頻出処理だしなおさらね
n件ごと、前後n件なんて頻出処理だしなおさらね
518デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/09(土) 11:24:19.54ID:c61Xm8G30 >>515
そんなのあるの?
そんなのあるの?
519デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)
2019/11/09(土) 11:56:21.81ID:Ypm9+s0e0 >>501-502
Ruby でも、ブロック無しで、Array.new すると、同じ参照を使ってしまうが、
ブロックを渡せば、ブロック内で個々のインスタンスを作れる
p ary = Array.new( 2, [ 0, 0 ] ) #=> [[0, 0], [0, 0]]
ary[ 0 ][ 1 ] = 2
p ary #=> [[0, 2], [0, 2]]
ary_2 = Array.new( 2 ) { [ 0, 0 ] }
ary_2[ 0 ][ 1 ] = 2
p ary_2 #=> [[0, 2], [0, 0]]
Ruby でも、ブロック無しで、Array.new すると、同じ参照を使ってしまうが、
ブロックを渡せば、ブロック内で個々のインスタンスを作れる
p ary = Array.new( 2, [ 0, 0 ] ) #=> [[0, 0], [0, 0]]
ary[ 0 ][ 1 ] = 2
p ary #=> [[0, 2], [0, 2]]
ary_2 = Array.new( 2 ) { [ 0, 0 ] }
ary_2[ 0 ][ 1 ] = 2
p ary_2 #=> [[0, 2], [0, 0]]
520デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/09(土) 12:15:40.62ID:YXlbcSmw0 >>513
設計せずに書き出すダメプログラマー丸出しの発言だな。そうやってできるのは、いちおう動くけどバグが埋れてて、変数ダンプしながらフローを追わないと挙動がわからない可読性の低いコードになるんだよ。
君のいうことは、インデックス付き Select や GroupBy & SelectMany や TakeWhile なんかを組み合わせれば簡単にできるよ。
もともとは System.Linq の Enumerable.Repeat が参照型では Shallow Copy になるってことから始まったのだから Select 使って Deep Copy にすることでいいんでないの。
設計せずに書き出すダメプログラマー丸出しの発言だな。そうやってできるのは、いちおう動くけどバグが埋れてて、変数ダンプしながらフローを追わないと挙動がわからない可読性の低いコードになるんだよ。
君のいうことは、インデックス付き Select や GroupBy & SelectMany や TakeWhile なんかを組み合わせれば簡単にできるよ。
もともとは System.Linq の Enumerable.Repeat が参照型では Shallow Copy になるってことから始まったのだから Select 使って Deep Copy にすることでいいんでないの。
521デフォルトの名無しさん (ワッチョイ 9fa7-cErl)
2019/11/09(土) 12:16:44.81ID:Bq7xaXZQ0 >>520
敗北宣言長いな
敗北宣言長いな
522デフォルトの名無しさん (ドコグロ MM3f-keNo)
2019/11/09(土) 12:32:54.67ID:u1W/mjBNM >>519
グロ
グロ
523デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/09(土) 13:03:11.11ID:YXlbcSmw0 >>521
根拠なく脳内勝利かよ。
根拠なく脳内勝利かよ。
524デフォルトの名無しさん (ワッチョイ 1f52-U/KP)
2019/11/09(土) 13:06:18.14ID:46ABhOVc0 >>522
グロって書くと画像のサムネイルをモザイク化できるけど、 Ruby君の発言もモザイクにならないかな。見たくない。
グロって書くと画像のサムネイルをモザイク化できるけど、 Ruby君の発言もモザイクにならないかな。見たくない。
525デフォルトの名無しさん (ワッチョイ 9f01-lZUE)
2019/11/09(土) 13:24:32.16ID:XH4+9Keu0 >>524
[Rr][Uu][Bb][Yy]でNGしとけ
[Rr][Uu][Bb][Yy]でNGしとけ
526デフォルトの名無しさん (アウアウウー Sacf-FD+t)
2019/11/09(土) 14:14:43.55ID:6EEimGlVa どこまで本気なのかネタなのかよくわからないけど個人的には>>505は選択しないなあ。
普通にforで回して埋めると思う。
理由は、そのコードを<読む時>に思考力の消費量がより少なくて済むと思うから
(a)
var list = Enumerable.Range(0, 100).Select(i => new Label()).ToList();
(b)
var list = new List<Label>(100);
for (int i = 0; i < list.Count; i++) list[i] = new Label();
一瞬で何やってるか理解できるのは(b)の方。
これは構造化(= パターン認識)の威力。
(a)も十分読みやすいけど、(b)に比べると若干高コスト。
(a)を好むのは多分巨大なコードを書いてメンテナンスしたことがない人だと思う。
普通にforで回して埋めると思う。
理由は、そのコードを<読む時>に思考力の消費量がより少なくて済むと思うから
(a)
var list = Enumerable.Range(0, 100).Select(i => new Label()).ToList();
(b)
var list = new List<Label>(100);
for (int i = 0; i < list.Count; i++) list[i] = new Label();
一瞬で何やってるか理解できるのは(b)の方。
これは構造化(= パターン認識)の威力。
(a)も十分読みやすいけど、(b)に比べると若干高コスト。
(a)を好むのは多分巨大なコードを書いてメンテナンスしたことがない人だと思う。
527デフォルトの名無しさん (ワッチョイ bb5f-vPHs)
2019/11/09(土) 14:30:15.58ID:54kG5N3g0528デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/09(土) 14:38:43.64ID:w+/raRA00 普段から書いてりゃ慣れるしLinqの遅延評価が役立つ場面なら積極的にlinqの方を選択する
可読性なんてその人そのプロジェクトで変わる
難読可したコードとかまでいくなら気にするのはわかるけど、この程度の差ならどっちでも良い
他言語から入ってきた人ならlinqが馴染みやすいこともあるだろうし、Cからやってる人ならforが馴染みやすいかもしれない
ただそれだけ
可読性なんてその人そのプロジェクトで変わる
難読可したコードとかまでいくなら気にするのはわかるけど、この程度の差ならどっちでも良い
他言語から入ってきた人ならlinqが馴染みやすいこともあるだろうし、Cからやってる人ならforが馴染みやすいかもしれない
ただそれだけ
529デフォルトの名無しさん (アウアウイー Sa0f-acGn)
2019/11/09(土) 14:47:42.99ID:Ersh0Xipa そのコレクションが固定長だったら、だけど
自分だったら
var array = new Label[100];
と配列で宣言したうえで>>526の(b)だな
listをわざわざforループで添字アクセスするのはちぐはぐだし
配列を明示的に使って固定長であることを明示的に表すべきだと考えるロートル人間なので
自分だったら
var array = new Label[100];
と配列で宣言したうえで>>526の(b)だな
listをわざわざforループで添字アクセスするのはちぐはぐだし
配列を明示的に使って固定長であることを明示的に表すべきだと考えるロートル人間なので
530デフォルトの名無しさん (ブーイモ MMbf-pFIx)
2019/11/09(土) 14:48:48.43ID:05Upg6UNM531デフォルトの名無しさん (ワッチョイ efde-cErl)
2019/11/09(土) 15:22:31.65ID:SYTZJUM/0 突然
i=>new Label
は厳しい
「i」ってなんやねんってまず思う
i=>new Label
は厳しい
「i」ってなんやねんってまず思う
532デフォルトの名無しさん (ワッチョイ fb0c-DaD1)
2019/11/09(土) 16:06:06.38ID:HanEs9+F0 そのへんは _ にしちゃうなー
匿名の引数では言語仕様としての破棄パターンとみなされる文脈ではないけれど
匿名の引数では言語仕様としての破棄パターンとみなされる文脈ではないけれど
533デフォルトの名無しさん (ワッチョイ 8b6e-msxt)
2019/11/09(土) 16:07:38.17ID:rNsqZ2GJ0 C#というかアルゴリズムの質問になっちゃうかもしれないんですけど
aというテキストファイルがあってそこにはb cという2つのファイル名が書いてある bを見るとdと書いてあって cにはファイル名書いてない
このときaを読み込んで最終的に手元にa b c dの4つのファイル名を取得したい。まぁList<string>に格納される感じでしょうか
再帰で書くんだろうなぁとは思いつくんですが、再帰が大の苦手でどういう終了条件でどういう戻り値の関数を作ればいいのか考えつきません
手助けいただけないでしょうか
aというテキストファイルがあってそこにはb cという2つのファイル名が書いてある bを見るとdと書いてあって cにはファイル名書いてない
このときaを読み込んで最終的に手元にa b c dの4つのファイル名を取得したい。まぁList<string>に格納される感じでしょうか
再帰で書くんだろうなぁとは思いつくんですが、再帰が大の苦手でどういう終了条件でどういう戻り値の関数を作ればいいのか考えつきません
手助けいただけないでしょうか
534デフォルトの名無しさん (ワッチョイ 4f02-YkAg)
2019/11/09(土) 16:40:40.94ID:Xnyz1DqK0 IEnumerable<string> ReadFilePaths(string filePath) { /* 再起なしでファイルパスをすべて読み取る */ }
IEnumerable<string> ReadFilePathsRecursive(string filePath) =>
ReadFilePaths(filePath)
.SelectMany(i => ReadFilePathsRecursive(i))
.Append(filePath)
;
はい
IEnumerable<string> ReadFilePathsRecursive(string filePath) =>
ReadFilePaths(filePath)
.SelectMany(i => ReadFilePathsRecursive(i))
.Append(filePath)
;
はい
535デフォルトの名無しさん (ワッチョイ 2b22-y5kd)
2019/11/09(土) 16:58:20.97ID:jywkcdak0 >>510
ランタイム同梱でexeを配布できるから問題ない
ランタイム同梱でexeを配布できるから問題ない
536デフォルトの名無しさん (ワッチョイ cb88-4TTv)
2019/11/09(土) 17:06:05.75ID:4gIYGCYB0 不要な引数は_だね
破棄パターンはまだ言語仕様になってないけど要望も多いし議論も進んでるからそう遠くない未来には入るだろう
すでに導入されてる言語もあるし
俺個人的には526のbみたいなlistなのかarrayなのかよくわからん制御のほうが混乱する
破棄パターンはまだ言語仕様になってないけど要望も多いし議論も進んでるからそう遠くない未来には入るだろう
すでに導入されてる言語もあるし
俺個人的には526のbみたいなlistなのかarrayなのかよくわからん制御のほうが混乱する
537デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/09(土) 17:12:48.50ID:MvykJ39t0 >>526
>(b)
>var list = new List<Label>(100);
>for (int i = 0; i < list.Count; i++) list[i] = new Label();
list.Countは0なのでループの中身は実行されない
一瞬で何やってるか理解できてる・・・?
>(b)
>var list = new List<Label>(100);
>for (int i = 0; i < list.Count; i++) list[i] = new Label();
list.Countは0なのでループの中身は実行されない
一瞬で何やってるか理解できてる・・・?
538デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/09(土) 17:20:28.60ID:YXlbcSmw0 >>526
LINQ が万能ではないことは認める。使う人を選ぶ技術でもあるし。
だが、Enumeration の操作にいちいちカウンタ使って境界テストしなければならなかったり、if, break, continue でフローを追わなければならなかったりするのは、レビュアーや運用・保守者を泣かせるコードになることが多い。
モダンな言語がここ10年のあいだに参照透過性や関数型を追求する方向に進化しているのは、そういう可読性、保守性、開発効率性を意識しているから。
ちっちゃいコードなら手続型で好きなように書けばいいんだよ。大規模開発やビジネスロジックが重要な場面では関数型で書くのが適してる。
まあ、LINQ もあまりやりすぎると読みにくくなるのだが。
LINQ が万能ではないことは認める。使う人を選ぶ技術でもあるし。
だが、Enumeration の操作にいちいちカウンタ使って境界テストしなければならなかったり、if, break, continue でフローを追わなければならなかったりするのは、レビュアーや運用・保守者を泣かせるコードになることが多い。
モダンな言語がここ10年のあいだに参照透過性や関数型を追求する方向に進化しているのは、そういう可読性、保守性、開発効率性を意識しているから。
ちっちゃいコードなら手続型で好きなように書けばいいんだよ。大規模開発やビジネスロジックが重要な場面では関数型で書くのが適してる。
まあ、LINQ もあまりやりすぎると読みにくくなるのだが。
539デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/09(土) 17:41:21.17ID:MvykJ39t0540デフォルトの名無しさん (ブーイモ MMbf-pFIx)
2019/11/09(土) 17:42:32.31ID:05Upg6UNM541デフォルトの名無しさん (アウアウウー Sacf-FD+t)
2019/11/09(土) 17:47:37.52ID:6EEimGlVa >>537
ぐぬぬw
ぐぬぬw
542デフォルトの名無しさん (ブーイモ MMbf-pFIx)
2019/11/09(土) 17:53:51.45ID:05Upg6UNM 良いコントだったよ
543デフォルトの名無しさん (スップ Sdbf-SCE2)
2019/11/09(土) 18:17:38.87ID:iu4bIs8od わろたwww
544デフォルトの名無しさん (アウアウウー Sacf-FD+t)
2019/11/09(土) 18:25:40.87ID:6EEimGlVa MSのDocs(?)の日本語版ってマウスオーバーでオリジナルの英語版が読めなかったっけ?
対応してるページと対応してないページが混在してるのか?
Docsって何やねんw
対応してるページと対応してないページが混在してるのか?
Docsって何やねんw
545デフォルトの名無しさん (ワッチョイ 8b6e-msxt)
2019/11/09(土) 19:22:51.64ID:rNsqZ2GJ0546デフォルトの名無しさん (JP 0Hcf-ApVS)
2019/11/09(土) 20:24:40.88ID:pySBQwYBH おまえら天才か
547デフォルトの名無しさん (ワッチョイ fb38-zIDV)
2019/11/09(土) 20:45:25.24ID:RT6p7yxc0 LINQは慣れると意図が読めるけど
forは何のためにループ回してるのかは解りづらくなりがち
数学的な問題や複雑な処理を書く場合LINQの表現力はすごいけど、慣れてない人が理解できるようになるのは大変
LINQやRxなしで同等のコード書くのはもはや考えられない
forは何のためにループ回してるのかは解りづらくなりがち
数学的な問題や複雑な処理を書く場合LINQの表現力はすごいけど、慣れてない人が理解できるようになるのは大変
LINQやRxなしで同等のコード書くのはもはや考えられない
548デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/09(土) 20:48:12.46ID:sTrPPJ5/r プログラマなら普通は逆だよね?
linqというかSQLはただの集合論のはずなのになぜかforの代替で使われたりする
linqはループを隠ぺいしているだけで実際はループしてる
linqというかSQLはただの集合論のはずなのになぜかforの代替で使われたりする
linqはループを隠ぺいしているだけで実際はループしてる
549デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/09(土) 20:50:43.28ID:sTrPPJ5/r Linqが本当に集合論を表してるなら途中でエラーがでてもデフォルトで残りの処理を終えるはず
そしてエラー含んだ集合が手元に残るはず
そしてエラー含んだ集合が手元に残るはず
550デフォルトの名無しさん (ワッチョイ 9f01-lZUE)
2019/11/09(土) 21:03:01.43ID:XH4+9Keu0 >>547
> forは何のためにループ回してるのかは解りづらくなりがち
流石に
> for (int i = 0; i < list.Count; i++) list[i] = new Label();
の意図がわからないならプログラマーやめるべきだと思うわ
> forは何のためにループ回してるのかは解りづらくなりがち
流石に
> for (int i = 0; i < list.Count; i++) list[i] = new Label();
の意図がわからないならプログラマーやめるべきだと思うわ
551デフォルトの名無しさん (アウアウエー Sa3f-pFIx)
2019/11/09(土) 21:05:00.70ID:aDURcOtda やりたいことは何かを書いてそれを実現する具体的な方法をライブラリにお任せするのがLinq(宣言的)
やりたいことは何か全くわからないけどそれを実現する具体的な手続きだけは知りたくないことまで細かく書くのがループ(手続き的)
何をしたいのかわからないコードよりしたいことが書いてあるコードのほうが親切
やりたいことは何か全くわからないけどそれを実現する具体的な手続きだけは知りたくないことまで細かく書くのがループ(手続き的)
何をしたいのかわからないコードよりしたいことが書いてあるコードのほうが親切
552デフォルトの名無しさん (ワッチョイ 5b63-DaD1)
2019/11/09(土) 21:06:24.76ID:d07pJzzX0553デフォルトの名無しさん (ワッチョイ ef8c-jXsh)
2019/11/09(土) 21:13:08.77ID:6gLEbAuX0 基本LINQでいいかなってなる
List.ForEachは使わんが
List.ForEachは使わんが
554デフォルトの名無しさん (ワッチョイ fb38-zIDV)
2019/11/09(土) 21:16:52.79ID:RT6p7yxc0555デフォルトの名無しさん (ワッチョイ 9f01-lZUE)
2019/11/09(土) 21:22:32.05ID:XH4+9Keu0 >>554
そりゃこんなコード「だけ」じゃ仕事にならんけど、仕事でその手のコードを書くことはあるだろ
そりゃこんなコード「だけ」じゃ仕事にならんけど、仕事でその手のコードを書くことはあるだろ
556デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/09(土) 21:32:36.03ID:sTrPPJ5/r 大体の場合においてやりたいことだけをlinqで書けはしない
普通の処理をすべてLinqに置き換えられるならそれだけでいいが
そんな世界どこにもない
実現不可能な話でlinqがいいなんて現実的じゃない
普通の処理をすべてLinqに置き換えられるならそれだけでいいが
そんな世界どこにもない
実現不可能な話でlinqがいいなんて現実的じゃない
557デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/09(土) 21:34:38.32ID:sTrPPJ5/r 標準で書けたところでそれって本当に効率的なのか疑問な場合がある
ループなら一回でmax min両方とれる
linqで標準で書いたとしてMAX MIN二回ループが回る
ループなら一回でmax min両方とれる
linqで標準で書いたとしてMAX MIN二回ループが回る
558デフォルトの名無しさん (ワッチョイ 5b63-DaD1)
2019/11/09(土) 21:40:24.07ID:d07pJzzX0 基準はシンプル
状態の更新を伴うものはループで書く
状態の更新を伴うものはループで書く
559デフォルトの名無しさん (アウアウエー Sa3f-pFIx)
2019/11/09(土) 21:45:51.67ID:aDURcOtda プログラマがヘボでクエリとコマンドの分割がうまくできてないとLinqが綺麗に適用できないことがある
しかしLinqはクエリであることを忘れてはいけない
コマンドで汚染されたループをLinqでは書きにくいと主張するより先にリファクタリングすることをおすすめする
速度最適化が必要な場面はあるが常に速度最適化が求められるわけではない
速度よりメンテナンス性が重視されることの方が多い
しかしLinqはクエリであることを忘れてはいけない
コマンドで汚染されたループをLinqでは書きにくいと主張するより先にリファクタリングすることをおすすめする
速度最適化が必要な場面はあるが常に速度最適化が求められるわけではない
速度よりメンテナンス性が重視されることの方が多い
560デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/09(土) 21:46:24.40ID:sTrPPJ5/r 本当に集合論ならループの順番などという概念がない
が実際にはある
MS自体はシーケンス(連続、並び)と言ってるが一部のオタが勝手にSQLと同じ集合論だと言ってるだけ
が実際にはある
MS自体はシーケンス(連続、並び)と言ってるが一部のオタが勝手にSQLと同じ集合論だと言ってるだけ
561デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/09(土) 21:48:01.22ID:sTrPPJ5/r どちらとも使えるのが正しい姿で必要に応じて使い分けるのが筋
所がlinq信者は全部lnqでいいforは使わなくていいと言う
所がlinq信者は全部lnqでいいforは使わなくていいと言う
562デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/09(土) 21:55:50.65ID:sTrPPJ5/r Linqでももともとやりたいことをそのまま表現できるパターンは少ない
それでどちらにしてもコードに落とし込みをする段階がある
処理に応じて手順を分解してコードにする
実際にそれをやるのがプログラムである
手順が分解できない、他人の書いた手順を理解する気がないならプログラムする気がないと言うこと
それでどちらにしてもコードに落とし込みをする段階がある
処理に応じて手順を分解してコードにする
実際にそれをやるのがプログラムである
手順が分解できない、他人の書いた手順を理解する気がないならプログラムする気がないと言うこと
563デフォルトの名無しさん (アウアウイー Sa0f-acGn)
2019/11/09(土) 22:00:36.64ID:OIyXFfhra 信者うんぬんの前に正しいスペル・大文字小文字でLINQと書けない人がテクニカルなことを主張しても説得力ががが
564デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/09(土) 22:01:50.43ID:sTrPPJ5/r 説得力などなくていいよ
酒飲んでごろ寝してスマホでかいてるんだから適当だよ
酒飲んでごろ寝してスマホでかいてるんだから適当だよ
565デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/09(土) 22:05:04.49ID:sTrPPJ5/r ああこれwintabだわ
つかいにくなこれw
つかいにくなこれw
566デフォルトの名無しさん (アウアウウー Sacf-FD+t)
2019/11/09(土) 22:38:55.83ID:6EEimGlVa >>534
これもイテレーター使った方が読みやすい気がする
IEnumerable<string> ReadFilePathsRecursive(string path)
{
yield return path;
foreach (var path2 in ReadFilePaths(path))
foreach (var path3 in ReadFilePathsRecursive(path2))
yield return path3;
}
}
これもイテレーター使った方が読みやすい気がする
IEnumerable<string> ReadFilePathsRecursive(string path)
{
yield return path;
foreach (var path2 in ReadFilePaths(path))
foreach (var path3 in ReadFilePathsRecursive(path2))
yield return path3;
}
}
567デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/09(土) 23:36:14.18ID:MvykJ39t0 循環する可能性を考慮しないのって普通にヤバイと思う
568デフォルトの名無しさん (ワッチョイ 0fe3-DaD1)
2019/11/10(日) 00:04:25.73ID:oSCFf5ef0 俺社環で{}省略していると糞扱いされるので迷わずLinq選ぶわ
569デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/10(日) 00:18:01.25ID:jJedryfu0 >>561
LINQ をまともに使っている人は LINQ の得手不得手を知っているから LINQ が万能だとは言っていない。
データ処理の多くの場面ではカウンタ使ってプリミティブに手続書くのは非効率だと言っているだけ。
逆に手続型信者 (老害ともいう) は不必要な場面でもカウンタ使ってイテレーションを書き、コードをいたずらに冗長化するねっていうこと。それに対する有効な反論がない。自分にとっては読みにくいっていう個人的感想ばかりじゃないか。
誰かが言ったとおりこれは慣れだよ。初めは確かにとっつきにくいが慣れる。そして戻れなくなる。
>>562
趣味グラマーならそれでいいよ。だが、ビッグデータやデータサイエンティストの時代になって業務ユーザもコード読むようになったこのご時世。
運用が止まって、下手くそなコード読んでトラブルシュートしなければならない身にもなってみて欲しい。センスない奴が書いたプリミティブな手続をダンプしながらフロー追っかけて修正し、リグレッションテストして、一定時間内に通常運用に戻すのは地獄。
無意味な宗教戦争にしないために、みなさんが前提や目的や利用場面をもう少し明確にすることを提案する。
下請けで隠蔽工程のコーディング担っているプログラマは LINQ のありがたみなんてわからなくても当然。レビュアーや PM や使う人のことを考えず、自分のスキルでとりあえず動くものを行数書いて月給もらえればいいんだから。
LINQ をまともに使っている人は LINQ の得手不得手を知っているから LINQ が万能だとは言っていない。
データ処理の多くの場面ではカウンタ使ってプリミティブに手続書くのは非効率だと言っているだけ。
逆に手続型信者 (老害ともいう) は不必要な場面でもカウンタ使ってイテレーションを書き、コードをいたずらに冗長化するねっていうこと。それに対する有効な反論がない。自分にとっては読みにくいっていう個人的感想ばかりじゃないか。
誰かが言ったとおりこれは慣れだよ。初めは確かにとっつきにくいが慣れる。そして戻れなくなる。
>>562
趣味グラマーならそれでいいよ。だが、ビッグデータやデータサイエンティストの時代になって業務ユーザもコード読むようになったこのご時世。
運用が止まって、下手くそなコード読んでトラブルシュートしなければならない身にもなってみて欲しい。センスない奴が書いたプリミティブな手続をダンプしながらフロー追っかけて修正し、リグレッションテストして、一定時間内に通常運用に戻すのは地獄。
無意味な宗教戦争にしないために、みなさんが前提や目的や利用場面をもう少し明確にすることを提案する。
下請けで隠蔽工程のコーディング担っているプログラマは LINQ のありがたみなんてわからなくても当然。レビュアーや PM や使う人のことを考えず、自分のスキルでとりあえず動くものを行数書いて月給もらえればいいんだから。
570デフォルトの名無しさん (ワッチョイ 5b63-DaD1)
2019/11/10(日) 00:23:11.55ID:rujkcJN50 LINQでDB通信タイミングコントロールできなくなって
泣きを見る話は聞いたが
泣きを見る話は聞いたが
571デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/10(日) 01:00:17.48ID:jJedryfu0 >>570
LINQ to Entities のことかな?
LINQ to Entities は残念ながらまだ発展途上だね。(もう 10 年にもなるのに。)
業務ロジックも書けなくはないが、.NET プラットホームや DB 実装などへの依存性が強すぎて、かなり工夫する必要があり、汎用性がなくなってしまう。
Select, Where (, OrderBy, Take, FirstOrDefault, Join)くらいしかまともに使えないと思っていた方が無難だと思う。となると DB アクセス回数と無駄なデータ取得が増えることになり、性能が出ない。
また C# 9 あたりで予定されている Records がないとデータ変換ロジックが非常に書きにくい。
.NET 5 になれば期待できるのではないかと思うけど。
LINQ to Entities のことかな?
LINQ to Entities は残念ながらまだ発展途上だね。(もう 10 年にもなるのに。)
業務ロジックも書けなくはないが、.NET プラットホームや DB 実装などへの依存性が強すぎて、かなり工夫する必要があり、汎用性がなくなってしまう。
Select, Where (, OrderBy, Take, FirstOrDefault, Join)くらいしかまともに使えないと思っていた方が無難だと思う。となると DB アクセス回数と無駄なデータ取得が増えることになり、性能が出ない。
また C# 9 あたりで予定されている Records がないとデータ変換ロジックが非常に書きにくい。
.NET 5 になれば期待できるのではないかと思うけど。
572デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/10(日) 01:09:03.51ID:jJedryfu0 >>557
おっしゃる通り、LINQ は Reduce 系処理の効率性がよくない。そこは工夫する必要あり。
ただ、Aggregate を使えば、一回の走査で Max, Min 両方同時に取れると思うよ。
おっしゃる通り、LINQ は Reduce 系処理の効率性がよくない。そこは工夫する必要あり。
ただ、Aggregate を使えば、一回の走査で Max, Min 両方同時に取れると思うよ。
573デフォルトの名無しさん (ワッチョイ 9fad-SCE2)
2019/11/10(日) 12:04:37.46ID:FrBSq/JS0 >>550
やめた方がいいよ
やめた方がいいよ
574デフォルトの名無しさん (ワッチョイ efde-cErl)
2019/11/10(日) 12:51:05.83ID:Q+o0EoEH0 いいからアプリ作れよ初心者
575デフォルトの名無しさん (ワッチョイ 9f79-DaD1)
2019/11/10(日) 14:15:34.99ID:j17ZnuaO0 標準のLINQでは効率的に処理できないなら
効率的に処理できる拡張メソッドを定義してそれを使うべき
流れの中でforやらforeachを使われると可読性が落ちるしテストもしにくくなる
効率的に処理できる拡張メソッドを定義してそれを使うべき
流れの中でforやらforeachを使われると可読性が落ちるしテストもしにくくなる
576デフォルトの名無しさん (ドコグロ MM0f-keNo)
2019/11/10(日) 14:48:47.97ID:Vkpd4679M そういうオナニーされるとそれこそ読みづらい
フレームワーク作ってるんでない限り、チーム開発で拡張メソッドを自作するのは本当にやめてくれ
フレームワーク作ってるんでない限り、チーム開発で拡張メソッドを自作するのは本当にやめてくれ
577デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/10(日) 15:27:29.24ID:Fk6O1w1g0 開発組織のコード管理能力やチームメンバーのリテラシーに合わせて判断することだとは思うが
拡張メソッド作れないって縛りプレイはできれば勘弁して欲しいな
拡張メソッド作れないって縛りプレイはできれば勘弁して欲しいな
578デフォルトの名無しさん (スップ Sdbf-4TTv)
2019/11/10(日) 15:45:16.03ID:VGQLXxaqd 拡張メソッド無しはさすがにしんどい
そら上位のnamespaceにstringやらintのextension大量に作るとかやられるのは勘弁してほしいがちゃんと整理されてるなら問題ないじゃん
そら上位のnamespaceにstringやらintのextension大量に作るとかやられるのは勘弁してほしいがちゃんと整理されてるなら問題ないじゃん
579デフォルトの名無しさん (ワッチョイ 9f5e-B9Yx)
2019/11/10(日) 16:04:31.99ID:cwUfzKNl0 拡張メソッドを使わないというオナニーではないのだろうか。
580デフォルトの名無しさん (ワッチョイ 4bda-zfwn)
2019/11/10(日) 19:59:11.47ID:osonYbcZ0 Linqの構文を本家のSQLに逆輸入すれば良いのに
581デフォルトの名無しさん (ワッチョイ df2d-tdZI)
2019/11/10(日) 23:41:53.75ID:Xa0PWm0+0 そういや、Max、Min句が対象とした個別要素を返すってのは酷い気がするな
IEnumerable<T>に対して使った時にT型で返すように何故しなかったのか全く理解できん
IEnumerable<T>に対して使った時にT型で返すように何故しなかったのか全く理解できん
582デフォルトの名無しさん (ワッチョイ 8b6e-msxt)
2019/11/11(月) 00:31:18.41ID:gP2AYUUm0 多少非効率でもなるべくもともと用意されてる機能や関数を使うのが分かりやすい派です
583デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/11(月) 02:22:50.36ID:U14XuieM0 MoreLINQ使えばMinBy/MaxByがある
(複数返すからTじゃなくIEnumerable<T>的なのが返される)
リスト埋めるやつもMoreLINQ使えば比較的読みやすい
var labels = new List<Label>().Pad(10, _ => new Label());
(複数返すからTじゃなくIEnumerable<T>的なのが返される)
リスト埋めるやつもMoreLINQ使えば比較的読みやすい
var labels = new List<Label>().Pad(10, _ => new Label());
584デフォルトの名無しさん (ドコグロ MMcf-lZUE)
2019/11/11(月) 06:43:42.02ID:Ndyau4keM >>581
そりゃ欲しいのは最大値や最小値なのに複数の要素が返ってきても面倒なだけだし
そりゃ欲しいのは最大値や最小値なのに複数の要素が返ってきても面倒なだけだし
585デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/11(月) 08:24:51.18ID:k+N9opvZ0586デフォルトの名無しさん (ドコグロ MMcf-lZUE)
2019/11/11(月) 09:41:13.10ID:Ndyau4keM587デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)
2019/11/11(月) 12:40:24.59ID:bjD92kdR0 generics, trait だろ。
has-a, interface, duck typing など、継承じゃなくて包含
Ruby では、<=> 宇宙船演算子があれば比較できる。Comparable
has-a, interface, duck typing など、継承じゃなくて包含
Ruby では、<=> 宇宙船演算子があれば比較できる。Comparable
588デフォルトの名無しさん (アウアウウー Sacf-FD+t)
2019/11/11(月) 12:41:25.30ID:W7OxtIUea589デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/11(月) 12:47:13.66ID:k+N9opvZ0 >>588
上位互換の方がいいっていうのはわかる。でもそれは LINQ to Object だけを考えた場合ね。
LINQ は LINQ to Entities という OR マッパーも強く意識しているから、標準 SQL 互換の機能も大事であり、どちらか一つという選択を強いるなら現状になる。
上位互換の方がいいっていうのはわかる。でもそれは LINQ to Object だけを考えた場合ね。
LINQ は LINQ to Entities という OR マッパーも強く意識しているから、標準 SQL 互換の機能も大事であり、どちらか一つという選択を強いるなら現状になる。
590デフォルトの名無しさん (スップ Sdbf-4TTv)
2019/11/11(月) 12:47:47.01ID:pQGjPoV1d 別に難しいもんじゃないんだし作りゃいいんだよ
どういうのがベストかが状況によってたやすく変化する処理だと思う
値が欲しいのか要素が欲しいのか、一つで良いのか全部列挙するのか
だから標準としては1回走査で済んでsum等の算術系と同じような入出力になる現仕様を選んだんじゃない?
どういうのがベストかが状況によってたやすく変化する処理だと思う
値が欲しいのか要素が欲しいのか、一つで良いのか全部列挙するのか
だから標準としては1回走査で済んでsum等の算術系と同じような入出力になる現仕様を選んだんじゃない?
591デフォルトの名無しさん (ワッチョイ df2d-tdZI)
2019/11/11(月) 18:08:06.42ID:FT34EqpP0 なんかよくわからないけど、SQLとの互換性ならTが返ってきた方が遥かにSQLに近いでしょ
592デフォルトの名無しさん (スププ Sdbf-piWr)
2019/11/11(月) 18:48:51.85ID:/nYlZGiNd ??SQLで集計関数使ったら元のレコードはわからんめえ
593デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/11(月) 18:53:21.43ID:k+N9opvZ0594デフォルトの名無しさん (ブーイモ MM7f-hbis)
2019/11/11(月) 18:57:02.20ID:Xp4ki1TGM Tを返すと戻り値がIEnumerable<T>になる
流石にそれをMax関数と呼ぶのは抵抗がある
流石にそれをMax関数と呼ぶのは抵抗がある
595デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/11(月) 19:00:34.90ID:oQXr0vGEr まず最大値を取る
その値を持つ要素の集合をselectする
確かに無駄だな
SQLはどこかで最適化してるのかな?
その値を持つ要素の集合をselectする
確かに無駄だな
SQLはどこかで最適化してるのかな?
596デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/11(月) 19:02:33.34ID:oQXr0vGEr MAXはMAXだけどそういう用途の関数?があってもいいかもね
というかすでにあるんだろうか?
というかすでにあるんだろうか?
597デフォルトの名無しさん (ワッチョイ cb88-4TTv)
2019/11/11(月) 19:42:55.85ID:rlOgmRK80 >>596
標準ではない
使ったこと無いけど583が紹介してるものか自作するか
自作しても数行だしググればコードは転がってるよ
個人的にはこういうやつは上げだすとキリがないんで現状で十分かなと思ってる
標準で山ほど用意されても何があって何を自作しなきゃならんかがわからなくなるんで本当に基本的なものだけあればいいかなと思う
標準ではない
使ったこと無いけど583が紹介してるものか自作するか
自作しても数行だしググればコードは転がってるよ
個人的にはこういうやつは上げだすとキリがないんで現状で十分かなと思ってる
標準で山ほど用意されても何があって何を自作しなきゃならんかがわからなくなるんで本当に基本的なものだけあればいいかなと思う
598デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/11(月) 19:55:30.29ID:oQXr0vGEr LINQじゃなかったら作るのは簡単
599デフォルトの名無しさん (ワッチョイ df2d-tdZI)
2019/11/11(月) 20:48:49.06ID:FT34EqpP0 SQLで書けるものはだいたい書けるようなってないと使いづらいよやっぱ
600デフォルトの名無しさん (ワッチョイ fbda-4fxd)
2019/11/11(月) 20:52:24.25ID:S9KO9pzP0 SQLだとストアドあるけど、LINQで書けるの?
インラインビューとかも
インラインビューとかも
601デフォルトの名無しさん (ワッチョイ df2d-tdZI)
2019/11/11(月) 20:54:23.36ID:FT34EqpP0 それは流石にLinqのせいじゃなく、例の変な人が言ってるフレームワーク等で吸収する部分じゃないか?
602デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/11(月) 21:13:49.74ID:U14XuieM0 >>595
SQLの場合はインデックスがあるから一般的にO(log n)で最大値のキーが取得できる
LINQ標準でMaxByと同じことをやる場合はちょっと効率悪いけどOrderBy使う
O(n)にするためだけにAggregate使った拡張メソッド作るよりも
走査する件数を減らすことを考えたほうがよかったりする
SQLの場合はインデックスがあるから一般的にO(log n)で最大値のキーが取得できる
LINQ標準でMaxByと同じことをやる場合はちょっと効率悪いけどOrderBy使う
O(n)にするためだけにAggregate使った拡張メソッド作るよりも
走査する件数を減らすことを考えたほうがよかったりする
603デフォルトの名無しさん (ブーイモ MM7f-pFIx)
2019/11/11(月) 21:39:19.76ID:ouAhYYgiM LinqとSqlは根本的に別物なので使い分けろ
当たり前のことだな
当たり前のことだな
604デフォルトの名無しさん (ドコグロ MMcf-lZUE)
2019/11/11(月) 21:40:04.42ID:Ndyau4keM >>600
DDLもLINQで書けるようにしろとか言いそうな勢いだなw
DDLもLINQで書けるようにしろとか言いそうな勢いだなw
605デフォルトの名無しさん (ワッチョイ fbda-4fxd)
2019/11/11(月) 21:46:03.84ID:S9KO9pzP0 出来ればやってくる欲しいけどw
606デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/11(月) 21:51:17.93ID:k+N9opvZ0 >>602
LINQ to Object vs LINQ to Entities でインデックスの有無は大きいよね。テーブルごとに特性とサイズを考えて、AsEnumerable でやるか AsQueryable でやるか機能配置の決め手になることがある。
OrderBy 使っていいなら、こんな感じかな?
public static IEnumerable<T> MaxBy<T>(this IEnumerable<T> src, Func<T, IComparable> selector) =>
src.GroupBy( selector ).OrderByDescending( x => x.Key ).Take(1).SelectMany( x => x );
>>600, 601
ストアドは DB の機能だから、フレームワークでは実現できないよ。
フレームワーク側でエミュレートできたとしても DB との間で通信が頻繁に発生することになるから、性能が出ないと思われる。
DB のストアドを呼ぶことはできるはず。
LINQ to Object vs LINQ to Entities でインデックスの有無は大きいよね。テーブルごとに特性とサイズを考えて、AsEnumerable でやるか AsQueryable でやるか機能配置の決め手になることがある。
OrderBy 使っていいなら、こんな感じかな?
public static IEnumerable<T> MaxBy<T>(this IEnumerable<T> src, Func<T, IComparable> selector) =>
src.GroupBy( selector ).OrderByDescending( x => x.Key ).Take(1).SelectMany( x => x );
>>600, 601
ストアドは DB の機能だから、フレームワークでは実現できないよ。
フレームワーク側でエミュレートできたとしても DB との間で通信が頻繁に発生することになるから、性能が出ないと思われる。
DB のストアドを呼ぶことはできるはず。
607デフォルトの名無しさん (アウアウイー Sa0f-acGn)
2019/11/11(月) 21:59:36.96ID:jrmXg5Iea >>604,605
つEFのCodeFirst
つEFのCodeFirst
608デフォルトの名無しさん (ドコグロ MMcf-lZUE)
2019/11/11(月) 22:10:23.25ID:Ndyau4keM >>607
LINQじゃねーしw
LINQじゃねーしw
609デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/11(月) 22:38:21.34ID:k+N9opvZ0610デフォルトの名無しさん (ワッチョイ bb5f-vPHs)
2019/11/11(月) 22:50:03.30ID:bl21NUGN0 >>609
初めからLINQの話してて、何がベストかなんて話してない
初めからLINQの話してて、何がベストかなんて話してない
611デフォルトの名無しさん (ブーイモ MM4f-rQqJ)
2019/11/11(月) 23:03:24.65ID:FJX73dNWM LINQって便利なんだけど今一歩物足りないよな
何が足りないのかと言われても難しいが
何が足りないのかと言われても難しいが
612デフォルトの名無しさん (スフッ Sdbf-y5kd)
2019/11/11(月) 23:09:21.20ID:c2Z6IyQ8d 十分もの足りるよ
613デフォルトの名無しさん (JP 0Hcf-ApVS)
2019/11/12(火) 01:07:27.57ID:uL6vLpX0H 前処理はストアドで定義してアプリはストアド叩くのが定石やろ
614デフォルトの名無しさん (ワッチョイ 9f2f-E8Ce)
2019/11/12(火) 02:21:22.46ID:AYqcftQb0 LANが10Mだったころの定石だな
615デフォルトの名無しさん (JP 0Hcf-ApVS)
2019/11/12(火) 03:26:22.31ID:uL6vLpX0H 今は前処理クライアントでやるもんなん?
616デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/12(火) 06:42:14.04ID:8jIzWHEF0 >>610
LINQ にこだわるなら、こだわるだけの理由が必要。
スレに貢献している人を茶化すなら、茶化すだけの知識なり、思想なり、技術的裏付けが必要。
>>611,612
どちらの意見もわかる。
LINQ to Object に閉じるなら十分。足りない部分はライブラリ自作すればいいし、そのパズルが楽しかったりする。
でも、LINQ to Entities に踏み込むと足りないことだらけ。本質的ではないところで相当な工夫が必要だし、工夫しすぎると汎用性がなくなって使い物にならなくなる。
LINQ to Object で組み始めたロジックを LINQ to Entities 互換に拡張することを考えている時間が結局ムダになることも多い。
両者、似ているようでギャップがかなり大きいところに物足りなさを感じる。
LINQ にこだわるなら、こだわるだけの理由が必要。
スレに貢献している人を茶化すなら、茶化すだけの知識なり、思想なり、技術的裏付けが必要。
>>611,612
どちらの意見もわかる。
LINQ to Object に閉じるなら十分。足りない部分はライブラリ自作すればいいし、そのパズルが楽しかったりする。
でも、LINQ to Entities に踏み込むと足りないことだらけ。本質的ではないところで相当な工夫が必要だし、工夫しすぎると汎用性がなくなって使い物にならなくなる。
LINQ to Object で組み始めたロジックを LINQ to Entities 互換に拡張することを考えている時間が結局ムダになることも多い。
両者、似ているようでギャップがかなり大きいところに物足りなさを感じる。
617デフォルトの名無しさん (アウアウエー Sa3f-I5cZ)
2019/11/12(火) 06:51:40.24ID:9Bw+vwp6a 最初から全くの別物なのに似ているというだけで変な期待をかけて勝手に裏切られた気持ちになる人が少なからず居る
別物と割り切って名前もインターフェースも変えれば初学者が迷わずに済んだだろうな
別物と割り切って名前もインターフェースも変えれば初学者が迷わずに済んだだろうな
618デフォルトの名無しさん (ワッチョイ 2b54-BjYd)
2019/11/12(火) 07:47:36.42ID:8jIzWHEF0 >>617
そうだね。裏切られたとは思わないけど、当初の期待はかなり高かった。
でも、LINQ to Entities の情報が少なすぎて別物だって理解するまでに相当な時間がかかってしまう。
誰も頼れる人がいない中、ネット情報のみの独学でみっちり3週間かかったよ、まともに使えるようになるまでに。
そうだね。裏切られたとは思わないけど、当初の期待はかなり高かった。
でも、LINQ to Entities の情報が少なすぎて別物だって理解するまでに相当な時間がかかってしまう。
誰も頼れる人がいない中、ネット情報のみの独学でみっちり3週間かかったよ、まともに使えるようになるまでに。
619デフォルトの名無しさん (スップ Sdbf-SCE2)
2019/11/12(火) 07:51:50.22ID:87WSr1Vsd EntityFrameworkなのかEntityFramework Coreなのかはっきりさせとけよ…
620デフォルトの名無しさん (ブーイモ MMbf-BjYd)
2019/11/12(火) 08:11:27.68ID:SXTlA5+FM621デフォルトの名無しさん (ブーイモ MMbf-BjYd)
2019/11/12(火) 08:13:15.74ID:SXTlA5+FM あ、ID 変わっちゃった。
618=620
618=620
622デフォルトの名無しさん (スップ Sdbf-SCE2)
2019/11/12(火) 10:46:47.47ID:87WSr1Vsd >>620
一次リソース見なよ
一次リソース見なよ
623デフォルトの名無しさん (ブーイモ MMbf-BjYd)
2019/11/12(火) 10:52:36.27ID:wo/moEjDM >>622
当然見てるよ。原文で。
当然見てるよ。原文で。
624デフォルトの名無しさん (ラクッペ MM0f-6c3l)
2019/11/12(火) 11:56:05.18ID:uH6v+/CZM まともに使えないものがまともに使えるようになったと言ってる時点でまともな人間でないのは明白
625デフォルトの名無しさん (スップ Sdbf-SCE2)
2019/11/12(火) 12:00:35.23ID:87WSr1Vsd >>623
なら混乱しないはず
なら混乱しないはず
626デフォルトの名無しさん (ブーイモ MMbf-BjYd)
2019/11/12(火) 12:08:55.50ID:wo/moEjDM >>624
君は読解力ないのかな?
局面によっては使えるかもしれないけど、業務ロジックを完結させるには役者不足、LINQ to Entities はまだまだ発展途上だね、今後に期待、と一貫して言っているのだが。
一次ソースも二次ソースも充実してないのは発展途上でこれからもまだまだ移りゆくものだからだとも思ってる。それがわかるのにけっこうコストがかかったよ、そのあたりが個人的に物足りなさを感じるところかな。
君は読解力ないのかな?
局面によっては使えるかもしれないけど、業務ロジックを完結させるには役者不足、LINQ to Entities はまだまだ発展途上だね、今後に期待、と一貫して言っているのだが。
一次ソースも二次ソースも充実してないのは発展途上でこれからもまだまだ移りゆくものだからだとも思ってる。それがわかるのにけっこうコストがかかったよ、そのあたりが個人的に物足りなさを感じるところかな。
627デフォルトの名無しさん (ブーイモ MM7f-I5cZ)
2019/11/12(火) 12:15:05.01ID:yJMEc/1iM あぁなるほど
データアクセスに業務ロジックをバリバリ書いてしまうタイプの人か
データアクセスに業務ロジックをバリバリ書いてしまうタイプの人か
628デフォルトの名無しさん (ブーイモ MMbf-BjYd)
2019/11/12(火) 12:31:28.37ID:wo/moEjDM >>625
一次ソースはバージョンに関しては混乱しない。それは二次ソースの話。一次ソースが混乱させるのは、LINQ to Object から Entities へ移行するにあたって、重要かつ基礎的なコンセプトをまともに解説していないこと。
たとえば、IEnumerable の派生である IQueryable はアップキャストするだけで AsEnumerable で評価されてしまうとか、引数となるラムダ式が全く同じ記法なのに IEnumerable では Func で IQueryable では Expression だとか。
これらは分かってしまえば当たり前だし、うまく設計したものだなと感心するけれど、初学者にはトラップでしかない。
君はこれら暗黙の前提を一次ソースで知ったのか?
だとしたらどこにガイドがあるか教えてほしい。
一次ソースに当たれというのは一般的なお約束だけれども、LINQ to Entities に関しては、コンセプトや実装の難しさに比して一次ソースがかなり脆弱で不親切だと思うよ。
617 の言うとおり Object と Entities でインターフェースを変えて設計するか、あるいは、移行に十分な情報を一次ソースが用意するか、どちらかだと思う。そのどちらでもないことがアンチを生んでいる原因ではないかと。
一次ソースはバージョンに関しては混乱しない。それは二次ソースの話。一次ソースが混乱させるのは、LINQ to Object から Entities へ移行するにあたって、重要かつ基礎的なコンセプトをまともに解説していないこと。
たとえば、IEnumerable の派生である IQueryable はアップキャストするだけで AsEnumerable で評価されてしまうとか、引数となるラムダ式が全く同じ記法なのに IEnumerable では Func で IQueryable では Expression だとか。
これらは分かってしまえば当たり前だし、うまく設計したものだなと感心するけれど、初学者にはトラップでしかない。
君はこれら暗黙の前提を一次ソースで知ったのか?
だとしたらどこにガイドがあるか教えてほしい。
一次ソースに当たれというのは一般的なお約束だけれども、LINQ to Entities に関しては、コンセプトや実装の難しさに比して一次ソースがかなり脆弱で不親切だと思うよ。
617 の言うとおり Object と Entities でインターフェースを変えて設計するか、あるいは、移行に十分な情報を一次ソースが用意するか、どちらかだと思う。そのどちらでもないことがアンチを生んでいる原因ではないかと。
629デフォルトの名無しさん (ブーイモ MMbf-BjYd)
2019/11/12(火) 12:34:30.29ID:wo/moEjDM630デフォルトの名無しさん (ラクッペ MM0f-6c3l)
2019/11/12(火) 12:56:06.79ID:3Ic/AzmcM 真っ赤なガイジ一歩手前
631デフォルトの名無しさん (スップ Sdbf-SCE2)
2019/11/12(火) 13:00:05.39ID:87WSr1Vsd ごめんガイジに触っちゃっま
632デフォルトの名無しさん (ブーイモ MMbf-BjYd)
2019/11/12(火) 13:53:14.21ID:wo/moEjDM >>630,631
業務ユーザが LINQ to Entities に手を突っ込むの、ガイジだよなぁ、わかるぞ。
だがね、人のやらないことを先鞭をつけてやらねばならない場合もあるのだよ。
ひととおり技術評価した結果、本格的に導入するのは時期尚早という判断で別の技術つかうことにした。.NET 5 以降に期待してる。
業務ユーザが LINQ to Entities に手を突っ込むの、ガイジだよなぁ、わかるぞ。
だがね、人のやらないことを先鞭をつけてやらねばならない場合もあるのだよ。
ひととおり技術評価した結果、本格的に導入するのは時期尚早という判断で別の技術つかうことにした。.NET 5 以降に期待してる。
633デフォルトの名無しさん (ワッチョイ 8bda-SIb9)
2019/11/12(火) 17:44:24.07ID:EGn19C9N0 え、業務アプリで普通にLINQ to Entities使ってるけどなんかマズい問題でもあるの?
単純に手軽で使いやすいと思ったから使ってるんだけど・・・・
単純に手軽で使いやすいと思ったから使ってるんだけど・・・・
634デフォルトの名無しさん (スップ Sdbf-SCE2)
2019/11/12(火) 17:50:33.05ID:87WSr1Vsd >>633
問題ない。Dapper開発元のStackOverflowでさえEntityFramework Coreを併用してる。
問題ない。Dapper開発元のStackOverflowでさえEntityFramework Coreを併用してる。
635デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/12(火) 18:29:22.62ID:rHSf0Tqi0 LINQのmaxやminで最大最小が求められるけど
最大、最小の値を持つオブジェクトを取得する方法はないのかな?
最大、最小の値を持つオブジェクトを取得する方法はないのかな?
636デフォルトの名無しさん (ワッチョイ bb17-DaD1)
2019/11/12(火) 18:44:22.60ID:jPYsymli0 MaxBy、MinByでググれ
637デフォルトの名無しさん (ワッチョイ cb88-4TTv)
2019/11/12(火) 18:46:28.43ID:dUZdRav20 散々上で話題に出てたやんw
638デフォルトの名無しさん (ブーイモ MM7f-I5cZ)
2019/11/12(火) 19:49:03.77ID:nctNxVOgM639デフォルトの名無しさん (オッペケ Sr0f-NaRu)
2019/11/12(火) 20:14:31.68ID:CeIzlsxBr >>628
それらを区別することがはたしてLINQの目指すべき理想なのかね
それらを区別することがはたしてLINQの目指すべき理想なのかね
640デフォルトの名無しさん (ブーイモ MMbf-BjYd)
2019/11/12(火) 21:23:28.30ID:wo/moEjDM >>639
それらってどれのことだろう?
LINQ to Object と Entities のことかな?
両者の設計はよく考えられたシームレスで美しいデザインだと個人的には思うよ、違いをしっかり理解できた後ならね。違いが分かりにくいというのは言語設計の問題ではなく、MS Docs などガイドの問題だと思う。
何が理想的な設計かは人によって感じ方が違うのではないかな。
あ、EF4, 5, 6, Core と進化する間に名前空間や正規関数などがコロコロ変わっているあたりは、場当たり的で汚いと思う。何か制約があって実装をやり直した、その苦労の跡が垣間見える。Core から後方互換を捨てて綺麗に作り直そう感があるから、.NET 5 に期待している。
それらってどれのことだろう?
LINQ to Object と Entities のことかな?
両者の設計はよく考えられたシームレスで美しいデザインだと個人的には思うよ、違いをしっかり理解できた後ならね。違いが分かりにくいというのは言語設計の問題ではなく、MS Docs などガイドの問題だと思う。
何が理想的な設計かは人によって感じ方が違うのではないかな。
あ、EF4, 5, 6, Core と進化する間に名前空間や正規関数などがコロコロ変わっているあたりは、場当たり的で汚いと思う。何か制約があって実装をやり直した、その苦労の跡が垣間見える。Core から後方互換を捨てて綺麗に作り直そう感があるから、.NET 5 に期待している。
641デフォルトの名無しさん (アウアウイー Sa0f-acGn)
2019/11/12(火) 21:44:06.09ID:WF3NQ/iBa ごめんちょっと話が横に反れちゃうけど、このスレ見たり書き込んだりしてる人って
MicrosoftDocsって日本語/英語どっちを見てるの?
当たり前のように原文ですらすらと読んで理解してるものなの?
MSDNが廃止されてDocsになったはいいけど特にAPIリファレンスとか日本語訳の品質が酷すぎて辛い
自分は英語ほとんど読めないんで、Chromeで日本語版、FireFoxで英語版+Google翻訳をそれぞれ表示して
3タブ切り替えながら読み進めてくなんて効率の悪いことをやってるんだけど、みんなはどうしてるのか気になった
MSの一次ソースに当たるのも↑の理由でしんどいんだよね・・・
もう潤沢な日本語訳が提供されるような時代じゃなくなったんで英語のできないPGは退場せざるをえないのか
MicrosoftDocsって日本語/英語どっちを見てるの?
当たり前のように原文ですらすらと読んで理解してるものなの?
MSDNが廃止されてDocsになったはいいけど特にAPIリファレンスとか日本語訳の品質が酷すぎて辛い
自分は英語ほとんど読めないんで、Chromeで日本語版、FireFoxで英語版+Google翻訳をそれぞれ表示して
3タブ切り替えながら読み進めてくなんて効率の悪いことをやってるんだけど、みんなはどうしてるのか気になった
MSの一次ソースに当たるのも↑の理由でしんどいんだよね・・・
もう潤沢な日本語訳が提供されるような時代じゃなくなったんで英語のできないPGは退場せざるをえないのか
642デフォルトの名無しさん (ワッチョイ 9f2c-3bRk)
2019/11/12(火) 21:45:38.20ID:036g9eq50 docsは辞書的に使うことがほとんどだしそれぐらいなら英語で十分
643デフォルトの名無しさん (ワッチョイ 9fad-SCE2)
2019/11/12(火) 21:46:46.04ID:ntZbVRJo0 >>641
もちろん英語
もちろん英語
644デフォルトの名無しさん (ブーイモ MMbf-BjYd)
2019/11/12(火) 22:25:29.03ID:wo/moEjDM >>641
調べる目的によるかな。
引数の順番とかオーバーロードとかうろ覚えの確認程度なら、検索して最初に出てきた方。
初出のロジックを書くためにコンセプトや基礎設計からじっくり考えつつ API を調査するなら、まず日本語でざっくり理解、重要なポイントが和訳で怪しいなら英語で精緻化。
LINQ なんかは集合論や数学に近く、これらは概念が同じなら分野跨いで英単語が同一だったりして英語の方が理解が早いから英語のみ、とか。
LINQ to Entities の場合、一次二次併せてそもそもの情報量が少ないから、英語日本語関係なくとにかく漁る。(そして英語の Q&A でほのめかされているヒントに辿り着き、一次ソース原文を当たったりする。)
調べる目的によるかな。
引数の順番とかオーバーロードとかうろ覚えの確認程度なら、検索して最初に出てきた方。
初出のロジックを書くためにコンセプトや基礎設計からじっくり考えつつ API を調査するなら、まず日本語でざっくり理解、重要なポイントが和訳で怪しいなら英語で精緻化。
LINQ なんかは集合論や数学に近く、これらは概念が同じなら分野跨いで英単語が同一だったりして英語の方が理解が早いから英語のみ、とか。
LINQ to Entities の場合、一次二次併せてそもそもの情報量が少ないから、英語日本語関係なくとにかく漁る。(そして英語の Q&A でほのめかされているヒントに辿り着き、一次ソース原文を当たったりする。)
645デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/12(火) 23:03:23.32ID:Mubuqyvi0 俺も英語は苦手だけどdocsは基本英語
どういうメソッドあったっけ?で見ることが多いから多少の単語がわかればほぼ理解できる
動作が知りたいときでよくわからん英語の言い回しがあったときは日本語にして読んでみる
けど、そういうときは日本語にしても大抵理解できない
デフォを英語にするようにしとけばプログラムで頻出する英単語が徐々に覚えられるようになるから英語をオススメする
どういうメソッドあったっけ?で見ることが多いから多少の単語がわかればほぼ理解できる
動作が知りたいときでよくわからん英語の言い回しがあったときは日本語にして読んでみる
けど、そういうときは日本語にしても大抵理解できない
デフォを英語にするようにしとけばプログラムで頻出する英単語が徐々に覚えられるようになるから英語をオススメする
646デフォルトの名無しさん (ワッチョイ bb5f-vPHs)
2019/11/12(火) 23:37:52.61ID:fxjtpr6a0647デフォルトの名無しさん (アウアウイー Sa0f-acGn)
2019/11/12(火) 23:53:04.67ID:WF3NQ/iBa ありがと、自分もdocs英語派に転向するよう頑張ってみる
比較的翻訳が整ってる基礎説明みたいなページでもいちいち
「角度」⇒「Angular.js」、「反応」⇒「React.js」みたいな脳内逆翻訳をかますよりは
苦手でも最初っから英語版を読み解くほうがやっぱりマシなんだよな・・・
自分はFirefoxのアドオンで
・Simple Translate (右クリックでGoogle翻訳結果をポップアップ表示)
・MouseDictionary (マウスを乗せた英単語の日本語意味をリアルタイム表示)
を入れてる
みらい翻訳はいちいち英文をCopy&Pasteするのが面倒で常用断念
比較的翻訳が整ってる基礎説明みたいなページでもいちいち
「角度」⇒「Angular.js」、「反応」⇒「React.js」みたいな脳内逆翻訳をかますよりは
苦手でも最初っから英語版を読み解くほうがやっぱりマシなんだよな・・・
自分はFirefoxのアドオンで
・Simple Translate (右クリックでGoogle翻訳結果をポップアップ表示)
・MouseDictionary (マウスを乗せた英単語の日本語意味をリアルタイム表示)
を入れてる
みらい翻訳はいちいち英文をCopy&Pasteするのが面倒で常用断念
648デフォルトの名無しさん (ワッチョイ 8b6e-msxt)
2019/11/13(水) 00:34:44.18ID:IXCpTxe30 とりあえず日本語でぱっと見て意味が取れるならそれで良し
んん?ってなったときに原文に当たる
これが一番効率良いと思うよ
んん?ってなったときに原文に当たる
これが一番効率良いと思うよ
649デフォルトの名無しさん (ワッチョイ 8bda-SIb9)
2019/11/13(水) 00:57:11.68ID:TUiuF95y0 >>648
意味が取れたと思って試してみたら挙動がおかしくて、原文見たら真反対の意味でショック受けた記憶がある。
意味が取れたと思って試してみたら挙動がおかしくて、原文見たら真反対の意味でショック受けた記憶がある。
650デフォルトの名無しさん (ワッチョイ 2b22-y5kd)
2019/11/13(水) 01:05:25.68ID:mCeTjzNg0 アホやなあ
651デフォルトの名無しさん (アウアウウー Sacf-keNo)
2019/11/13(水) 01:08:43.01ID:aZU5BEQSa まあジャパニーズITドカタの世界じゃ専門卒の英語アレルギーな連中に扱えないようなものが普及することは決してないから、
業界から脱出するつもりがないんなら英語はハナから捨てたほうが賢明だよ
だって業務では永遠に使えないんだから
業界から脱出するつもりがないんなら英語はハナから捨てたほうが賢明だよ
だって業務では永遠に使えないんだから
652デフォルトの名無しさん (ワッチョイ 9f79-DaD1)
2019/11/13(水) 01:13:25.17ID:puINEo4M0 どこの底辺業界の業務だよ
653デフォルトの名無しさん (ワッチョイ 8bda-SIb9)
2019/11/13(水) 01:22:20.09ID:TUiuF95y0 いや英語棄てるとか絶対無理。
日本語訳がアテにならないのが分かってから原文しか読んでない。
日本語訳がアテにならないのが分かってから原文しか読んでない。
654デフォルトの名無しさん (ワッチョイ 4bda-zfwn)
2019/11/13(水) 02:18:49.03ID:KALwwQwQ0 自分は英語が苦手
でもMSの自動翻訳はイマイチなのでgoogle翻訳の自動翻訳を使う
それでもよく分からない時はgoogle 翻訳のサイトにコピペして翻訳する
でもMSの自動翻訳はイマイチなのでgoogle翻訳の自動翻訳を使う
それでもよく分からない時はgoogle 翻訳のサイトにコピペして翻訳する
655デフォルトの名無しさん (ワッチョイ bb5f-vPHs)
2019/11/13(水) 02:34:13.53ID:0of/5iuj0656デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/13(水) 03:12:16.84ID:LQUpdw6j0 翻訳ソフトを多用するから英語読む力が身につかないんやで
まともな辞書を使って単語帳をつけて定期的に復習するのが大事
翻訳ソフトは最後の手段
マウスオーバーで引ける辞書も便利だけど
便利すぎて辞書ナシで文やパラグラフを読む努力をしなくなると英語力は向上しない
まともな辞書を使って単語帳をつけて定期的に復習するのが大事
翻訳ソフトは最後の手段
マウスオーバーで引ける辞書も便利だけど
便利すぎて辞書ナシで文やパラグラフを読む努力をしなくなると英語力は向上しない
657デフォルトの名無しさん (アークセー Sx0f-zNuL)
2019/11/13(水) 11:53:32.61ID:iszJrltix 英語力向上が目的じゃないから。
あくまで目的は正しい情報を入手すること。
もう数年後にはかなりの精度の自動翻訳ができるようになってると予想する。
あくまで目的は正しい情報を入手すること。
もう数年後にはかなりの精度の自動翻訳ができるようになってると予想する。
658デフォルトの名無しさん (ワッチョイ cb88-4TTv)
2019/11/13(水) 12:16:37.65ID:3gCJP2hx0 翻訳精度の向上ってもう10年以上言われ続けてるよねw
こないだgoogleだかどっかが文脈を考慮した翻訳どうのこうのってリリース出してたけどどこまで伸びるかねぇ
こないだgoogleだかどっかが文脈を考慮した翻訳どうのこうのってリリース出してたけどどこまで伸びるかねぇ
659デフォルトの名無しさん (スフッ Sdbf-y5kd)
2019/11/13(水) 12:22:25.68ID:950onq0Dd >>656
目的をはき違えてる
目的をはき違えてる
660デフォルトの名無しさん (ワッチョイ 0fa7-DaD1)
2019/11/13(水) 13:18:54.28ID:/n7NHPZ80 既に英語-日本語は十分な翻訳精度になってない?
MSDNのようなオフィシャルな場はもうほぼ完璧だし、そこら辺の外人フォーラムなんかでも一応意は汲める
中学英語程度の基礎があれば読みに関してはもう不自由しない
MSDNのようなオフィシャルな場はもうほぼ完璧だし、そこら辺の外人フォーラムなんかでも一応意は汲める
中学英語程度の基礎があれば読みに関してはもう不自由しない
661デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/13(水) 13:36:03.37ID:LQUpdw6j0662デフォルトの名無しさん (ワッチョイ cb88-4TTv)
2019/11/13(水) 14:39:59.45ID:3gCJP2hx0 現状で完璧なんて口が裂けても言えないと思うけど…
msdnみたいな同じ言い回しが頻出するようなところは個別の対応もしやすいし、そもそも単調な事実だけを述べるだけの文章なんで誤訳は少ない
そんな環境でも真逆の意味に訳されてしまっているケースすら存在する
こないだdoとdo notが逆に翻訳されててちょっと燃えたよね
補助として使う分には十分なレベルではあると思うが翻訳能力自体はまだまだ伸びて欲しいと思うよ
msdnみたいな同じ言い回しが頻出するようなところは個別の対応もしやすいし、そもそも単調な事実だけを述べるだけの文章なんで誤訳は少ない
そんな環境でも真逆の意味に訳されてしまっているケースすら存在する
こないだdoとdo notが逆に翻訳されててちょっと燃えたよね
補助として使う分には十分なレベルではあると思うが翻訳能力自体はまだまだ伸びて欲しいと思うよ
663デフォルトの名無しさん (スププ Sdbf-y5kd)
2019/11/13(水) 14:49:33.50ID:+YlxL5WQd664デフォルトの名無しさん (ドコグロ MM3f-keNo)
2019/11/13(水) 14:52:44.04ID:zYuYteZMM まともな大学出てるエンジニアなら英語さえ話せれば外資に転職して軽く一千万以上貰える
必死こいてEFCoreとか覚えるより本気で英語を勉強した方が遥かに効率的だぞ
必死こいてEFCoreとか覚えるより本気で英語を勉強した方が遥かに効率的だぞ
665デフォルトの名無しさん (オッペケ Sr0f-EJQs)
2019/11/13(水) 17:03:16.58ID:NmgYsJT9r 時々機械翻訳が真逆の時あったけどどこをどう解釈したのか痕跡も判らない
666デフォルトの名無しさん (ワッチョイ 2b63-DaD1)
2019/11/13(水) 18:13:13.40ID:EdyIqayv0 質問です
ジェネリッククラスにおいて型Tがクラスのときとstructのときで全く挙動を変えたいのですが、
同名の2つのジェネリッククラスに異なる型制約をつけることは可能でしょうか
ジェネリッククラスにおいて型Tがクラスのときとstructのときで全く挙動を変えたいのですが、
同名の2つのジェネリッククラスに異なる型制約をつけることは可能でしょうか
667デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/13(水) 18:27:16.02ID:00WyA5ks0 できないんじゃないかな
別のクラス名にして
インターフェースを被せてやるんじゃダメなの?
別のクラス名にして
インターフェースを被せてやるんじゃダメなの?
668デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/13(水) 18:54:26.13ID:cq8qXzOO0 ん?where T classでの制約の話じゃないの?
669デフォルトの名無しさん (ワッチョイ 2b63-DaD1)
2019/11/13(水) 18:54:57.26ID:EdyIqayv0 >>667
ありがとうございます 試してみます
ありがとうございます 試してみます
670デフォルトの名無しさん (スップ Sdbf-SCE2)
2019/11/13(水) 18:55:58.02ID:cEsy4BDid >>664
EFCore使うのに必死になる必要なんてない
EFCore使うのに必死になる必要なんてない
671デフォルトの名無しさん (ワッチョイ 2b63-DaD1)
2019/11/13(水) 18:57:22.33ID:EdyIqayv0672デフォルトの名無しさん (ワッチョイ fb3c-AXNO)
2019/11/13(水) 20:12:00.42ID:L3Ppb+A30 こんばんは
質問させてください
LINQのGroupByでデータテーブルの複数のカラムを指定しvar変数に格納後、
格納したデータをCopyToDataTableメソッドでデータテーブルに変換しようとしても、
CopyToメソッドしか候補に表示されないのですがVisual Studioのバグですか?
質問させてください
LINQのGroupByでデータテーブルの複数のカラムを指定しvar変数に格納後、
格納したデータをCopyToDataTableメソッドでデータテーブルに変換しようとしても、
CopyToメソッドしか候補に表示されないのですがVisual Studioのバグですか?
673デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/13(水) 20:36:20.89ID:FrzbMubD0 フォームアプリ作っていてデバッグ中です。
フォームのクラスから呼び出したクラスにブレークポイントを設定しているのですが、
止まってくれません。
フォームのクラス上に設定したブレークポイントでは止まってくれます。
これって仕様なのでしょうか?
フォームのクラスから呼び出したクラスにブレークポイントを設定しているのですが、
止まってくれません。
フォームのクラス上に設定したブレークポイントでは止まってくれます。
これって仕様なのでしょうか?
674デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/13(水) 20:54:49.74ID:FrzbMubD0 なんかプロジェクト内でブレークポイントで止まるクラスと止まらないクラスがある。
前はどこに設定しても止まっていたのに・・・。
一体何が原因なんでしょうか?
前はどこに設定しても止まっていたのに・・・。
一体何が原因なんでしょうか?
675デフォルトの名無しさん (ワッチョイ 9f79-DaD1)
2019/11/13(水) 20:55:42.59ID:P4Wenl6E0 ブレークポイントを通ってないから止まらないだけだろう
676デフォルトの名無しさん (ワッチョイ 5b2f-DaD1)
2019/11/13(水) 20:58:47.78ID:FrzbMubD0677デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/13(水) 22:19:14.93ID:cq8qXzOO0678デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/13(水) 22:20:10.28ID:LQUpdw6j0 >>672
変数の型を確認すべし
変数の型を確認すべし
679デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/13(水) 22:20:40.60ID:LQUpdw6j0 やべ、超かぶった
680デフォルトの名無しさん (ワッチョイ 8b01-hbis)
2019/11/13(水) 22:24:28.57ID:yG9mqOTd0 >>672
IGroupingはキーを列挙するものだよ?
キーは通常DataRowじゃないからそりゃ出ないよ
グループごとにChildrenをDataTableにしたいのか、Childrenをキー順に並んだ1つのDataTableにしたいのかによって書き方は変わる
IGroupingはキーを列挙するものだよ?
キーは通常DataRowじゃないからそりゃ出ないよ
グループごとにChildrenをDataTableにしたいのか、Childrenをキー順に並んだ1つのDataTableにしたいのかによって書き方は変わる
681デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/13(水) 22:25:44.66ID:LQUpdw6j0 >>663
マスターww
辞書使う前にとにかく翻訳ソフト使うやつは
リファレンス見ずにQiita見てコピペしようとするやつと同じ思考回路なんだよね
いつまでもスキルが身につかない原因を自分が作り出してることに気が付かないとすぐに淘汰されるよ
マスターww
辞書使う前にとにかく翻訳ソフト使うやつは
リファレンス見ずにQiita見てコピペしようとするやつと同じ思考回路なんだよね
いつまでもスキルが身につかない原因を自分が作り出してることに気が付かないとすぐに淘汰されるよ
682デフォルトの名無しさん (ワッチョイ fb3c-AXNO)
2019/11/13(水) 22:33:54.95ID:L3Ppb+A30683デフォルトの名無しさん (ワッチョイ 2b63-4TTv)
2019/11/13(水) 22:43:58.27ID:cq8qXzOO0 前にも居たけどなんですぐにVSのバグを疑うんだろうね?
684デフォルトの名無しさん (ドコグロ MM3f-keNo)
2019/11/13(水) 22:46:52.14ID:WMiEH2e/M まあ最近のVSの最新版はガチでバグだらけだけどな
685デフォルトの名無しさん (ワッチョイ db7d-DaD1)
2019/11/13(水) 23:45:26.05ID:C8qo/8PZ0 複数のスレッドから1つのコンソールにLOGを吐きつづけられますか?
Parallel.Forで
Parallel.Forで
686デフォルトの名無しさん (ワッチョイ 9fda-rO36)
2019/11/13(水) 23:50:53.72ID:00WyA5ks0 できるよ
687デフォルトの名無しさん (ワッチョイ db7d-DaD1)
2019/11/13(水) 23:53:58.04ID:C8qo/8PZ0 >>686
Invokeとかlockとかしなくても大丈夫ですか?
Invokeとかlockとかしなくても大丈夫ですか?
688デフォルトの名無しさん (ワッチョイ 0f7b-ggIY)
2019/11/13(水) 23:54:59.91ID:tSkG/O4T0 >>685
コンソールに出力するためのスレッド作ってそこにみんな投げればいいがParallel.Forの意味がわからん
コンソールに出力するためのスレッド作ってそこにみんな投げればいいがParallel.Forの意味がわからん
689デフォルトの名無しさん (オッペケ Sr11-wiCk)
2019/11/14(木) 00:06:39.08ID:6WMxxRzvr 昔はよく非同期処理の理解のためにコンソールに出力したんだけど今は市内の?
690デフォルトの名無しさん (アウアウウー Sa45-+JiD)
2019/11/14(木) 00:25:46.71ID:B8BttGYoa >>685
https://docs.microsoft.com/en-us/dotnet/api/system.console の一番下に
「Thread Safety This type is thread safe.」と保証されているので複数スレッドから吐いても全く問題ない
https://docs.microsoft.com/en-us/dotnet/api/system.console の一番下に
「Thread Safety This type is thread safe.」と保証されているので複数スレッドから吐いても全く問題ない
691デフォルトの名無しさん (ササクッテロ Sp11-YJUY)
2019/11/14(木) 11:25:27.19ID:M4CdzSm8p 複数あるスレッドが分割して1行の文字列を作ってると間に別スレッドの文字列が割り込むけどな。
692デフォルトの名無しさん (ワッチョイ 7188-L4DL)
2019/11/14(木) 11:34:27.42ID:low08wwY0693デフォルトの名無しさん (ワッチョイ 02da-wiwb)
2019/11/14(木) 11:45:28.52ID:tTWA+Y6h0 WPFだとスレッドからLabel.Textや
Textbox.Text、CheckBox.Checkedにアクセスできるもの?
できなければできるように拡張したりできないものかな
Textbox.Text、CheckBox.Checkedにアクセスできるもの?
できなければできるように拡張したりできないものかな
694デフォルトの名無しさん (ブーイモ MM76-+sLU)
2019/11/14(木) 12:17:18.58ID:1eSFX+RHM >>692
クラスではなくメソッドについて struct/class 制約の共通化をやろうとした経験から言うと ...
Nullable 含めて内部判定することはできるけど、判定・分岐があちこちに発生することになり、かなりめんどくさいし、読みにくくなる。
だったらクラス分けて、誰かが言った通り interface (か abstract base class) で共通化図る方が楽と思われる。
クラスではなくメソッドについて struct/class 制約の共通化をやろうとした経験から言うと ...
Nullable 含めて内部判定することはできるけど、判定・分岐があちこちに発生することになり、かなりめんどくさいし、読みにくくなる。
だったらクラス分けて、誰かが言った通り interface (か abstract base class) で共通化図る方が楽と思われる。
695デフォルトの名無しさん (ササクッテロ Sp11-apPb)
2019/11/14(木) 12:33:48.96ID:dFk0jDA3p >>693
無⭐︎理
無⭐︎理
696デフォルトの名無しさん (アウアウウー Sa45-CsEk)
2019/11/14(木) 12:59:54.31ID:xkNbqoiZa >>671
やりたいことの意図を誤解してるかもしれんけど、
static class A
{
public static A<T> OfStruct<T>() where T : struct
{
....
}
public static A<T> OfClass<T>() where T : class
{
....
}
}
class A<T>
{
}
こんなのとか...
っていうか、ジェネリッククラスのスタティックメソッドってTを使ってなくてもいちいち型パラメータ
指定しないと呼び出せないのかw
やりたいことの意図を誤解してるかもしれんけど、
static class A
{
public static A<T> OfStruct<T>() where T : struct
{
....
}
public static A<T> OfClass<T>() where T : class
{
....
}
}
class A<T>
{
}
こんなのとか...
っていうか、ジェネリッククラスのスタティックメソッドってTを使ってなくてもいちいち型パラメータ
指定しないと呼び出せないのかw
697デフォルトの名無しさん (ワッチョイ 7e7c-+JiD)
2019/11/14(木) 13:09:24.35ID:Um2wzMfp0 >>693
WPFだと一般的にはMVVM使う
で、MVVMなら直接ViewにアクセスしないでVM経由になる
VMの値はスレッド越しに取得設定できる
コレクションの操作については事前に同期オブジェクト渡すとかする必要があるけど
WPFだと一般的にはMVVM使う
で、MVVMなら直接ViewにアクセスしないでVM経由になる
VMの値はスレッド越しに取得設定できる
コレクションの操作については事前に同期オブジェクト渡すとかする必要があるけど
698デフォルトの名無しさん (アウアウウー Sa45-CsEk)
2019/11/14(木) 13:27:31.68ID:xkNbqoiZa こっちの方がマシか
class A<T>
{
protected A() { }
}
class AOfStruct<T>:A<T> where T:struct
{
}
class AOfClass<T>:A<T> where T:class
{
}
class A<T>
{
protected A() { }
}
class AOfStruct<T>:A<T> where T:struct
{
}
class AOfClass<T>:A<T> where T:class
{
}
699デフォルトの名無しさん (スプッッ Sda2-bVDO)
2019/11/14(木) 15:03:19.73ID:654cJ2ymd 型制約は正直あんまり役に立たない微妙な機能な気がしている
700デフォルトの名無しさん (ドコグロ MM4a-woiy)
2019/11/14(木) 15:23:48.31ID:DypnJQvvM ジェネリックなメンバアクセスには、最近は構造的部分型を使うのが流行りだね
構造的部分型ベースの型システムを持つTypeScriptやGoでは利用する側でアドホックにinterfaceを定義できるから、
利用シーンを先読みして型階層を設計するという人間には困難な芸当なしで柔軟に型制約のようなことができる
構造的部分型ベースの型システムを持つTypeScriptやGoでは利用する側でアドホックにinterfaceを定義できるから、
利用シーンを先読みして型階層を設計するという人間には困難な芸当なしで柔軟に型制約のようなことができる
701デフォルトの名無しさん (スッップ Sda2-qz5w)
2019/11/14(木) 15:51:06.76ID:TjrJmfxGd702デフォルトの名無しさん (ワッチョイ 21da-bNU/)
2019/11/14(木) 20:42:53.07ID:XexdQDOu0 質問させてください
ASP.NET
C#
SQL Server
を使用しています
SQLにByte型で保存したバイナリデータが保存されています
そのバイナリデータをASP.NET側でLISTで受け取り、フォルダに保存したいです
LISTで受け取った後にフォルダに保存するところの書き方を教えてください
よろしくお願いします
ASP.NET
C#
SQL Server
を使用しています
SQLにByte型で保存したバイナリデータが保存されています
そのバイナリデータをASP.NET側でLISTで受け取り、フォルダに保存したいです
LISTで受け取った後にフォルダに保存するところの書き方を教えてください
よろしくお願いします
703デフォルトの名無しさん (ワッチョイ 8279-iGNt)
2019/11/14(木) 21:07:50.31ID:mZpo/vPM0 BinaryWriterを使えばいい
704デフォルトの名無しさん (ワッチョイ 022c-+JiD)
2019/11/14(木) 21:23:37.38ID:H35THgS30 LISTというのが何なのかは知らんが
配列で読み取ってFile.WriteAllBytesだけでよくね 何百MBとかならアレだが
配列で読み取ってFile.WriteAllBytesだけでよくね 何百MBとかならアレだが
705デフォルトの名無しさん (スップ Sd02-rxWD)
2019/11/15(金) 12:38:58.70ID:bPzeY3lzd 普通にストリーミングで吐いた方が安パイ
706デフォルトの名無しさん (オッペケ Sr11-c556)
2019/11/15(金) 18:28:40.04ID:hv2qzw1yr 保存ってのはクライアント側なのかサーバ側なのか
707デフォルトの名無しさん (スフッ Sda2-zeRf)
2019/11/15(金) 21:26:03.41ID:eJD/Pf4cd708デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
2019/11/15(金) 23:36:35.15ID:pmE2fanG0 static int UnitStep1(int x) => x >= 0 ? 1 : 0;
static int UnitStep2(int x) => (x >> 31) + 1;
上のような2つの関数を最適化ありでコンパイルして
ランダムな100万個の値に対して実行すると、
@どちらも同じ値が返ってくる
AUnitStep1の方がUnitStep2よりも10倍近く時間がかかる
という実験結果が得られました。
@とAの理由を考察しないといけないのですが、
@は分かったものの、Aがさっぱり分かりません。
というか、どう考えてもUnitStep2の方が
無駄な処理をしているように思えます。
分かる方がいたら教えていただけないでしょうか?
よろしくお願いします。
static int UnitStep2(int x) => (x >> 31) + 1;
上のような2つの関数を最適化ありでコンパイルして
ランダムな100万個の値に対して実行すると、
@どちらも同じ値が返ってくる
AUnitStep1の方がUnitStep2よりも10倍近く時間がかかる
という実験結果が得られました。
@とAの理由を考察しないといけないのですが、
@は分かったものの、Aがさっぱり分かりません。
というか、どう考えてもUnitStep2の方が
無駄な処理をしているように思えます。
分かる方がいたら教えていただけないでしょうか?
よろしくお願いします。
709デフォルトの名無しさん (ワッチョイ e963-L4DL)
2019/11/15(金) 23:45:14.55ID:ksKmrlqp0 三項演算子で比較するよりビットシフトのほうが圧倒的に早いから
cpuが得意とする処理と人間が理解しやすい処理は一致しない
どうしても納得行かないならILを見て各ステップでどういう命令がされるか確認するしか無いかな?
cpuが得意とする処理と人間が理解しやすい処理は一致しない
どうしても納得行かないならILを見て各ステップでどういう命令がされるか確認するしか無いかな?
710デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
2019/11/16(土) 00:11:47.33ID:m6RZqer/0 >>709
ありがとうございます。とりあえずILについて調べて、
下のようなページを表示させるところまで行き着きました。
https://sharplab.io/#v2:C4LglgNgPgAgzAAhgJgQYQQbwLACgEFICMAbAmAHbAICqFYwAysAKYAORAFJdQB4CUCALwA+BLwQihCAAwIA/AiIIQsgNx5CxMj1r0mrNsm5Vxg0Qk4SRYuEUEBqJWoR4AvkA===
これから書いてある内容の理解に挑戦してみようと思います。
ありがとうございます。とりあえずILについて調べて、
下のようなページを表示させるところまで行き着きました。
https://sharplab.io/#v2:C4LglgNgPgAgzAAhgJgQYQQbwLACgEFICMAbAmAHbAICqFYwAysAKYAORAFJdQB4CUCALwA+BLwQihCAAwIA/AiIIQsgNx5CxMj1r0mrNsm5Vxg0Qk4SRYuEUEBqJWoR4AvkA===
これから書いてある内容の理解に挑戦してみようと思います。
711デフォルトの名無しさん (ワッチョイ e963-L4DL)
2019/11/16(土) 00:31:35.36ID:4hbhG1OZ0 そのILをぱっと見る限り、実行されるアセンブラまで調べに行く必要あるのかも
命令数は変わらんし
そこまで行ったらもう環境依存な気もする
てか最適化ありなら最適化されたIL見ないとだめかな
命令数は変わらんし
そこまで行ったらもう環境依存な気もする
てか最適化ありなら最適化されたIL見ないとだめかな
712デフォルトの名無しさん (ワッチョイ e954-+sLU)
2019/11/16(土) 00:37:54.66ID:NxgYCWhy0 >>708
大昔にアセンブリやっていた経験からの推測だけど...
@の >= は左辺引く右辺の減算をして符号判定をしており、右辺の 0 を引くという演算が最適化ありでも外れず無駄な演算をしている可能性がまず一つ。でもこれはAに対して圧倒的に不利になる要素ではない。
もう一つのよりありそうな可能性は、三項演算子がコンパイルで if ステートメントになり、分岐先ブロックでパイプライン先読み実行していたステップが、分岐先読みの失敗により、ロールバックするコストが高くついているのではないかと。
確率 50% の分岐なら、2回に1回はロールバックすることになるため、コストが最悪になる。if else ブロックのどちらが実現確率が高いか、コンパイラが判断・制御できていない。
それに対してAはパイプライン処理を乱す要素がない。
どう中間コンパイルされ、どう IL が動くのか、最近の低レイヤーの処理は全く知らないため、見当外れかもしれないが。
大昔にアセンブリやっていた経験からの推測だけど...
@の >= は左辺引く右辺の減算をして符号判定をしており、右辺の 0 を引くという演算が最適化ありでも外れず無駄な演算をしている可能性がまず一つ。でもこれはAに対して圧倒的に不利になる要素ではない。
もう一つのよりありそうな可能性は、三項演算子がコンパイルで if ステートメントになり、分岐先ブロックでパイプライン先読み実行していたステップが、分岐先読みの失敗により、ロールバックするコストが高くついているのではないかと。
確率 50% の分岐なら、2回に1回はロールバックすることになるため、コストが最悪になる。if else ブロックのどちらが実現確率が高いか、コンパイラが判断・制御できていない。
それに対してAはパイプライン処理を乱す要素がない。
どう中間コンパイルされ、どう IL が動くのか、最近の低レイヤーの処理は全く知らないため、見当外れかもしれないが。
713デフォルトの名無しさん (ワッチョイ 8279-iGNt)
2019/11/16(土) 00:46:48.34ID:D8F8Ex6/0 条件分岐は遅い
一方ビットシフトと加減はCPUが最も得意な処理
そのレベルのことを考慮するような処理にC#はあまり向いてないと思うが
一方ビットシフトと加減はCPUが最も得意な処理
そのレベルのことを考慮するような処理にC#はあまり向いてないと思うが
714デフォルトの名無しさん (ワッチョイ e954-+sLU)
2019/11/16(土) 00:59:24.83ID:NxgYCWhy0 パイプライン処理の詳細は Wiki で調べて、命令パイプライン、パイプラインハザード、制御ハザードの節あたりを参照しておくれ。
条件分岐がなぜ遅いかわかる。確率考えてアセンブリレベルで制御しないと速くならないよ。
条件分岐がなぜ遅いかわかる。確率考えてアセンブリレベルで制御しないと速くならないよ。
715デフォルトの名無しさん (ワッチョイ e954-+sLU)
2019/11/16(土) 01:04:27.12ID:NxgYCWhy0 あ、ごめん。よく読んだらランダムな値に対してって書いてあった。確率 50% の先読み最悪ケースになるね。アセンブリレベルでも最適化は無理。
716デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
2019/11/16(土) 01:07:09.62ID:m6RZqer/0 >>711
ありがとうございます。
アセンブラというのはSharpLabのページの
ResultsをJIT Asmにしたときに表示されるものと考えて正しいですか?
IL命令について色々と調べていたのですが、
JIT Asmのほうが書いてあることが少ないので先にこちらに挑戦してみようと思います。
あと最適化されたILというのは、ResultsをILにして、
一番右上の選択肢をReleaseにしたときに表示されるものと考えて正しいですか?
>>712
ありがとうございます。UnitStep?(int x)のxはプラスとマイナスが50%ずつになるように
ランダムに決めているので、確かに分岐の確率は50%です。
まだパイプラインについて完全に理解できていないので見当外れかもしれませんが、
試しにプラスとマイナスの割合を変えてどうなるかについても検証してみようと思います。
>>713
>>714
ありがとうございます。やはりハードウェアについてしっかりと理解しないといけないのですね。
ひとまず、>>714に書いていただいたキーワードについて調べてみたいと思います。
ありがとうございます。
アセンブラというのはSharpLabのページの
ResultsをJIT Asmにしたときに表示されるものと考えて正しいですか?
IL命令について色々と調べていたのですが、
JIT Asmのほうが書いてあることが少ないので先にこちらに挑戦してみようと思います。
あと最適化されたILというのは、ResultsをILにして、
一番右上の選択肢をReleaseにしたときに表示されるものと考えて正しいですか?
>>712
ありがとうございます。UnitStep?(int x)のxはプラスとマイナスが50%ずつになるように
ランダムに決めているので、確かに分岐の確率は50%です。
まだパイプラインについて完全に理解できていないので見当外れかもしれませんが、
試しにプラスとマイナスの割合を変えてどうなるかについても検証してみようと思います。
>>713
>>714
ありがとうございます。やはりハードウェアについてしっかりと理解しないといけないのですね。
ひとまず、>>714に書いていただいたキーワードについて調べてみたいと思います。
717デフォルトの名無しさん (ワッチョイ e954-+sLU)
2019/11/16(土) 01:19:12.81ID:NxgYCWhy0 もしパイプライン処理がビンゴだったら IL 見ててもわからないよ。
CPU の fetch, decode, exec という内部処理の流れを理解しないと。
質問の書きぶりから大学かなんかの課題に見えるんだけど、高級言語ばかり見ていて低レイヤーのこと知らないとハマることあるかもよって警告するためのお題なのかもね。
CPU の fetch, decode, exec という内部処理の流れを理解しないと。
質問の書きぶりから大学かなんかの課題に見えるんだけど、高級言語ばかり見ていて低レイヤーのこと知らないとハマることあるかもよって警告するためのお題なのかもね。
718デフォルトの名無しさん (ワッチョイ 8279-iGNt)
2019/11/16(土) 01:26:24.15ID:D8F8Ex6/0 C#で考えるべき速度は計算量まで
メモリレベルの最適化を考えるならCで書くべきだし
CPUレベルでの最適化がしたいならアセンブラを覚えるべき
メモリレベルの最適化を考えるならCで書くべきだし
CPUレベルでの最適化がしたいならアセンブラを覚えるべき
719デフォルトの名無しさん (アウアウウー Sa45-CsEk)
2019/11/16(土) 01:33:47.48ID:KEmuW3Wza 分岐先読み失敗って言ったって
x >= 0 ? 1 : 0
さすがにこんなのゼロコストじゃないの?
単純に機械語レベルの命令数の差を反映しているだけのような気が
知らんけど
x >= 0 ? 1 : 0
さすがにこんなのゼロコストじゃないの?
単純に機械語レベルの命令数の差を反映しているだけのような気が
知らんけど
720デフォルトの名無しさん (ワッチョイ e954-+sLU)
2019/11/16(土) 01:41:11.97ID:NxgYCWhy0721デフォルトの名無しさん (ワッチョイ e954-+sLU)
2019/11/16(土) 01:50:49.22ID:NxgYCWhy0 >>719
機械語レベルの命令数に差があるように見える?
@Aどちらも 2, 3 ステップだよ。
先読み失敗リカバリーはものすごくコスト高いよ。
パイプライン上の仕掛かりを全部クリアしなければならないんだから。その 2, 3 ステップの 1.5 〜 3 倍くらいのクロックサイクルを無駄にすると思う。
機械語レベルの命令数に差があるように見える?
@Aどちらも 2, 3 ステップだよ。
先読み失敗リカバリーはものすごくコスト高いよ。
パイプライン上の仕掛かりを全部クリアしなければならないんだから。その 2, 3 ステップの 1.5 〜 3 倍くらいのクロックサイクルを無駄にすると思う。
722デフォルトの名無しさん (ワッチョイ e954-+sLU)
2019/11/16(土) 02:00:02.51ID:NxgYCWhy0723デフォルトの名無しさん (アウアウウー Sa45-CsEk)
2019/11/16(土) 02:19:10.34ID:KEmuW3Wza 不勉強で今時のCPUのアーキテクチャーさっぱり分からんが、
ググってみると、投機的実行は予測が当たれば儲け、はずれても損なしだからこそ意味があると書いてある
コインの裏が出たら損をするなら意味がないと思うんだけど
ググってみると、投機的実行は予測が当たれば儲け、はずれても損なしだからこそ意味があると書いてある
コインの裏が出たら損をするなら意味がないと思うんだけど
724デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
2019/11/16(土) 02:28:53.52ID:m6RZqer/0 >>715
>>720
ありがとうございます。
xのプラスとマイナスの割合を変えて実験してみたところ、
UnitStep2では処理時間はほとんど変わりませんでしたが、
UnitStep1では、50:50のときが一番遅くてUnitStep2の10倍程度、
75:20と25:75はどちらも少し速くなってUnitStep2の6倍程度、
100:0と0:100はどちらもさらに速くなってUnitStep2の2倍程度になりました。
やっぱりパイプライン処理が原因っぽいですよね?
>>717
ありがとうございます。勉強になります。
高級言語では計算量までしか考える価値がなくて、
しかし計算量さえ小さければあとはマシンパワーでなんとでもなる。
だからこそ高級言語が今の時代に合っているということでしょうか。
>>719
ありがとうございます。
機械語レベルの命令=JIT Asmの命令だとすれば、
UnitStep1とUnitStep2では6命令と4命令で確かに差はあるものの、
単純計算なら10倍もの違いはないようです。
>>720
ありがとうございます。
xのプラスとマイナスの割合を変えて実験してみたところ、
UnitStep2では処理時間はほとんど変わりませんでしたが、
UnitStep1では、50:50のときが一番遅くてUnitStep2の10倍程度、
75:20と25:75はどちらも少し速くなってUnitStep2の6倍程度、
100:0と0:100はどちらもさらに速くなってUnitStep2の2倍程度になりました。
やっぱりパイプライン処理が原因っぽいですよね?
>>717
ありがとうございます。勉強になります。
高級言語では計算量までしか考える価値がなくて、
しかし計算量さえ小さければあとはマシンパワーでなんとでもなる。
だからこそ高級言語が今の時代に合っているということでしょうか。
>>719
ありがとうございます。
機械語レベルの命令=JIT Asmの命令だとすれば、
UnitStep1とUnitStep2では6命令と4命令で確かに差はあるものの、
単純計算なら10倍もの違いはないようです。
725デフォルトの名無しさん (ワッチョイ e954-+sLU)
2019/11/16(土) 02:35:13.39ID:NxgYCWhy0 >>723
それ出典教えてもらえる?
外れても損なし、だったらいいなっていう理想を言っているのではないのかな。
ランダムデータには弱いけど、正常系と異常系の分岐はたいてい正常系の発生確率が高いためこちらに賭けるのよ。で、ロジックの多くはこの手の分岐でしょ、っていうことを想定して先読みのアーキテクチャになっている。
ということをその文献も (独特の表現で) 言いたいのではないかと思うのだが。
もれも最近の CPU がわかっているわけではない。80286 〜 386 時代でアップデート止まってる。
それ出典教えてもらえる?
外れても損なし、だったらいいなっていう理想を言っているのではないのかな。
ランダムデータには弱いけど、正常系と異常系の分岐はたいてい正常系の発生確率が高いためこちらに賭けるのよ。で、ロジックの多くはこの手の分岐でしょ、っていうことを想定して先読みのアーキテクチャになっている。
ということをその文献も (独特の表現で) 言いたいのではないかと思うのだが。
もれも最近の CPU がわかっているわけではない。80286 〜 386 時代でアップデート止まってる。
726デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
2019/11/16(土) 02:40:12.76ID:m6RZqer/0727デフォルトの名無しさん (ワッチョイ e954-+sLU)
2019/11/16(土) 02:46:49.96ID:NxgYCWhy0 >>724
そうですね、データ依存なんでパイプラインと先読みが原因だと個人的には思います。
そういえば思い出しましたが、if else ブロックの片方に固定的に賭けると必要以上に大負けすることがあるため、条件分岐を何度か通ったところで学習し、勝てる見込みのより高い方へ賭けるアーキ設計だったような気がします。
true : false = 100 : 0 or 0 : 100 に片方が大負けせず、同じ性能になったのはこの学習効果ではないかと。
モダン言語の進化の方向の一つに高級化があるのは、仰るとおり。低レイヤーの最適化はコンパイラと進化したハードウェアに任せ、コードは人間にわかりやすくして開発生産性を高めようということです。
もう一つの進化方向は Rust とか Go とか、低レイヤー向け言語を C++ よりわかりやすく、より安全にしようというものだと思います。
そうですね、データ依存なんでパイプラインと先読みが原因だと個人的には思います。
そういえば思い出しましたが、if else ブロックの片方に固定的に賭けると必要以上に大負けすることがあるため、条件分岐を何度か通ったところで学習し、勝てる見込みのより高い方へ賭けるアーキ設計だったような気がします。
true : false = 100 : 0 or 0 : 100 に片方が大負けせず、同じ性能になったのはこの学習効果ではないかと。
モダン言語の進化の方向の一つに高級化があるのは、仰るとおり。低レイヤーの最適化はコンパイラと進化したハードウェアに任せ、コードは人間にわかりやすくして開発生産性を高めようということです。
もう一つの進化方向は Rust とか Go とか、低レイヤー向け言語を C++ よりわかりやすく、より安全にしようというものだと思います。
728デフォルトの名無しさん (アウアウウー Sa45-CsEk)
2019/11/16(土) 03:34:45.34ID:KEmuW3Wza >>725
失礼、例えばここにそんなことが書いてある
http://e-words.jp/w/%E6%8A%95%E6%A9%9F%E7%9A%84%E5%AE%9F%E8%A1%8C.html
でもこの通りだとしても>>723は的外れだねすんません。
「損はない」というのは並列ではなくシーケンシャルに実行した場合のコストを
上回ることはないって意味だと思う。
同じ100ステップでも素直に並列化できる部分が大きい100ステップの方が
低コストなのは当たり前の話でした
失礼、例えばここにそんなことが書いてある
http://e-words.jp/w/%E6%8A%95%E6%A9%9F%E7%9A%84%E5%AE%9F%E8%A1%8C.html
でもこの通りだとしても>>723は的外れだねすんません。
「損はない」というのは並列ではなくシーケンシャルに実行した場合のコストを
上回ることはないって意味だと思う。
同じ100ステップでも素直に並列化できる部分が大きい100ステップの方が
低コストなのは当たり前の話でした
729デフォルトの名無しさん (ワッチョイ e954-+sLU)
2019/11/16(土) 03:57:31.89ID:NxgYCWhy0 >>728
ありがとう。
この説明は失敗時のリカバリーがノーコストでできる環境を前提にしていると思う。
投機的実行をした面とは別の面を持っていて、そちらにすぐスイッチしてロジックを実行しつつ、その裏で失敗した面を同時並行で捨てられるような感じ。それが一般的かどうかはわからない。
複数面を持たず、失敗ステータスを捨てて (= クリアして)、その後に分岐別側のロジックを走らせるというようにシーケンシャルにリカバリーするのが一般的なのではないかなと思ったんだけどね。
最近のは複数面持ってるのかもしれない。ただ、複数面持っていると分岐ない時にリソースが遊んで無駄だからねぇ、分岐なくても普段からその面で並列演算すればいいって話になるよね。
ありがとう。
この説明は失敗時のリカバリーがノーコストでできる環境を前提にしていると思う。
投機的実行をした面とは別の面を持っていて、そちらにすぐスイッチしてロジックを実行しつつ、その裏で失敗した面を同時並行で捨てられるような感じ。それが一般的かどうかはわからない。
複数面を持たず、失敗ステータスを捨てて (= クリアして)、その後に分岐別側のロジックを走らせるというようにシーケンシャルにリカバリーするのが一般的なのではないかなと思ったんだけどね。
最近のは複数面持ってるのかもしれない。ただ、複数面持っていると分岐ない時にリソースが遊んで無駄だからねぇ、分岐なくても普段からその面で並列演算すればいいって話になるよね。
730デフォルトの名無しさん (ワッチョイ e963-L4DL)
2019/11/16(土) 09:45:55.26ID:+/ZlAd+w0 スレタイの初心者用とはいったいw
初めに回答したのが的外れとまでは行かなくてホッとしてるw
初めに回答したのが的外れとまでは行かなくてホッとしてるw
731デフォルトの名無しさん (ワッチョイ 02a7-Bv1e)
2019/11/16(土) 09:50:21.82ID:hIGr9Z3d0 こいつらウンチクごちゃごちゃ長くても作るもん電卓だから
732デフォルトの名無しさん (ワッチョイ 69a0-+sLU)
2019/11/16(土) 10:49:58.51ID:42LkciGb0733708 (ワッチョイ 02b9-Ks/Y)
2019/11/16(土) 11:14:24.24ID:lqoaSlCM0 色々と教えていただきどうもありがとうございました。
とりあえず、下のような感じの結論でまとめたいと思います。
・UnitStep1が遅い原因はパイプライン処理における分岐先読みの失敗による制御ハザードだと思われる
・分岐の方向の入れ替わりが激しくてもそこに規則性があれば制御ハザードは起こりにくいようで、
分岐先読みにおいて高度な学習が行われていることが伺える
・高級言語の目的を考えれば、開発生産性を優先してUnitStep1を選択することも十分にあり得る
UnitStep1の入力データをランダムに決定した場合の、±の割合に応じた実行時間の計測結果
http://iup.2ch-library.com/i/i2026606-1573870091.png
何かおかしなところがあれば指摘していただけると嬉しいです。
親切にしていただきどうもありがとうございました。
とりあえず、下のような感じの結論でまとめたいと思います。
・UnitStep1が遅い原因はパイプライン処理における分岐先読みの失敗による制御ハザードだと思われる
・分岐の方向の入れ替わりが激しくてもそこに規則性があれば制御ハザードは起こりにくいようで、
分岐先読みにおいて高度な学習が行われていることが伺える
・高級言語の目的を考えれば、開発生産性を優先してUnitStep1を選択することも十分にあり得る
UnitStep1の入力データをランダムに決定した場合の、±の割合に応じた実行時間の計測結果
http://iup.2ch-library.com/i/i2026606-1573870091.png
何かおかしなところがあれば指摘していただけると嬉しいです。
親切にしていただきどうもありがとうございました。
734デフォルトの名無しさん (ワッチョイ 69a0-+sLU)
2019/11/16(土) 11:20:09.54ID:42LkciGb0735デフォルトの名無しさん (ワッチョイ 02b9-Ks/Y)
2019/11/16(土) 11:44:37.21ID:lqoaSlCM0 >>734
お褒めいただきありがとうございます。
パイプライン処理はとても奥が深いようで完全に理解するのはなかなか大変そうですが、
データの割合に関するご指摘のおかげでわかりやすい計測結果も得られて私もとても楽しかったです。
あまりにもわかりやすすぎる結果のせいで今後しばらく条件分岐恐怖症になりそうですがw
お褒めいただきありがとうございます。
パイプライン処理はとても奥が深いようで完全に理解するのはなかなか大変そうですが、
データの割合に関するご指摘のおかげでわかりやすい計測結果も得られて私もとても楽しかったです。
あまりにもわかりやすすぎる結果のせいで今後しばらく条件分岐恐怖症になりそうですがw
736デフォルトの名無しさん (ワイーワ2 FFca-/nAh)
2019/11/16(土) 12:23:55.13ID:HpU1Ehe+F >>710
C4LglgNgPgAgzAAhgJgQYQQbwLACgEFICMAbAmAHbAICqFYwAysAKYAORAFJdQB4CUCALwA+BLwQihCAAwIA/AiIIQsgNx5CxMj1r0mrNsm5Vxg0Qk4SRYuEUEBqJWoR4AvkA===
個人情報漏れてね?
C4LglgNgPgAgzAAhgJgQYQQbwLACgEFICMAbAmAHbAICqFYwAysAKYAORAFJdQB4CUCALwA+BLwQihCAAwIA/AiIIQsgNx5CxMj1r0mrNsm5Vxg0Qk4SRYuEUEBqJWoR4AvkA===
個人情報漏れてね?
737デフォルトの名無しさん (ワッチョイ bd17-jvSr)
2019/11/16(土) 12:48:10.35ID:fOFWPIeT0 >個人情報漏れてね?
???
???
738デフォルトの名無しさん (ワッチョイ e92c-iGNt)
2019/11/16(土) 14:00:04.80ID:t9DFByLU0 これはAUTO
739デフォルトの名無しさん (ワッチョイ 2922-pwu9)
2019/11/16(土) 20:18:46.13ID:/0XYhqwL0 >>731
Windows10の電卓のソースコードがGithubに公開されてるけどかなり複雑なことやってるぞ
Windows10の電卓のソースコードがGithubに公開されてるけどかなり複雑なことやってるぞ
740デフォルトの名無しさん (ワッチョイ 02a7-Bv1e)
2019/11/16(土) 20:32:31.30ID:hIGr9Z3d0741デフォルトの名無しさん (スププ Sda2-pwu9)
2019/11/16(土) 20:57:09.66ID:v94aDxHUd >>740
電卓が簡単でないことを指摘されて逆ギレw
電卓が簡単でないことを指摘されて逆ギレw
742デフォルトの名無しさん (ワッチョイ cdda-qdX5)
2019/11/16(土) 21:05:45.94ID:379I+6zB0 1enter2+
743デフォルトの名無しさん (ワッチョイ d163-r7Uq)
2019/11/16(土) 21:38:31.95ID:tPkM1yht0744デフォルトの名無しさん (ワッチョイ 02a7-Bv1e)
2019/11/16(土) 22:32:22.78ID:hIGr9Z3d0 >>741
お前が作ってるのは簡単だろ
お前が作ってるのは簡単だろ
745デフォルトの名無しさん (ワッチョイ bd17-jvSr)
2019/11/16(土) 22:36:56.78ID:fOFWPIeT0 >>744
輝いてるよ!
輝いてるよ!
746デフォルトの名無しさん (ワッチョイ 657d-iGNt)
2019/11/16(土) 22:46:30.74ID:KlgbujPN0 お前らいっつもケンカしてんな
747デフォルトの名無しさん (スププ Sda2-pwu9)
2019/11/16(土) 22:49:01.28ID:QmX0E4+sd ID:hIGr9Z3d0
クスクスクス
クスクスクス
748デフォルトの名無しさん (ワッチョイ 02a7-Bv1e)
2019/11/16(土) 22:49:34.30ID:hIGr9Z3d0 >>745
LEDだけな
LEDだけな
749デフォルトの名無しさん (ワッチョイ d17b-7HT4)
2019/11/16(土) 23:29:47.38ID:JWQCRo2F0 ワッチョイ 2922-pwu9
スププ Sda2-pwu9
ワッチョイ 02a7-Bv1e
ワッチョイ d163-r7Uq
NG推奨
スププ Sda2-pwu9
ワッチョイ 02a7-Bv1e
ワッチョイ d163-r7Uq
NG推奨
750デフォルトの名無しさん (ワッチョイ eea7-iGNt)
2019/11/19(火) 18:50:59.68ID:wDZa4BoT0 WPF開発に使われるMVVMパターンについてですが、Viewは良いとしてViewModelとModelの役割分担についての理解がイマイチです
ModelではOnPropertyChanged();などの記述はするべきではないという理解で良いんでしょうか?
ModelではOnPropertyChanged();などの記述はするべきではないという理解で良いんでしょうか?
751デフォルトの名無しさん (オッペケ Sr11-wiCk)
2019/11/19(火) 19:09:43.87ID:t6NsCYD5r 雑な解釈
基本的に一画面ごとに最低一つViewModelつくる
なんも画面用にいじらなくてすべて共通部分しかないならModelオンリーで
基本的に一画面ごとに最低一つViewModelつくる
なんも画面用にいじらなくてすべて共通部分しかないならModelオンリーで
752デフォルトの名無しさん (オッペケ Sr11-wiCk)
2019/11/19(火) 19:16:11.51ID:t6NsCYD5r 基本的に変更も通知するモデルを作る
各画面ごとにそれをViewで使いやすい形に成形したVMを作る
深く考えない
困ったら考える
各画面ごとにそれをViewで使いやすい形に成形したVMを作る
深く考えない
困ったら考える
753デフォルトの名無しさん (アウアウウー Sa9d-Wa+g)
2019/11/21(木) 12:06:43.32ID:sWsV7L/3a 趣味でタッチパネル用のアプリ開発始めたのですが
IsMouseOverだとタッチイベントが認識されなくて辛い
なんかいい方法ご存知だったりしませんか?
IsMouseOverだとタッチイベントが認識されなくて辛い
なんかいい方法ご存知だったりしませんか?
754デフォルトの名無しさん (ドコグロ MM63-5f43)
2019/11/21(木) 12:19:33.38ID:Bs6+HN1rM タッチパネルならUWPを使いましょう
WPFは終わった技術であり、過去の資産のために残されているだけです
WPFは終わった技術であり、過去の資産のために残されているだけです
755デフォルトの名無しさん (ワッチョイ 2b7c-Q1nT)
2019/11/21(木) 13:20:56.61ID:qO3ULcJY0 そもそもタッチ操作ではマウスオーバーを表現できないってのは明らかだけど
なんでIsMouseOverが出てくるの?
なんでIsMouseOverが出てくるの?
756デフォルトの名無しさん (ワッチョイ f15f-zsms)
2019/11/21(木) 14:44:35.71ID:5f7eRC930 なにを使うのが適切?
757デフォルトの名無しさん (ワッチョイ 1310-QS5Z)
2019/11/21(木) 14:49:09.23ID:vYs/9NCN0 C#でQUEUEクラスを利用した際、Dequeue()後にメモリは残るのでしょうか?
EnQueue()とDeQueue()を繰り返しているのですが、(Countは0になる)
Visual Studioでメモリ使用量をみるとサイズがとても大きくなってるのですがこれはどういうことでしょうか?
EnQueue()とDeQueue()を繰り返しているのですが、(Countは0になる)
Visual Studioでメモリ使用量をみるとサイズがとても大きくなってるのですがこれはどういうことでしょうか?
758デフォルトの名無しさん (ワッチョイ f15f-zsms)
2019/11/21(木) 14:50:14.67ID:5f7eRC930 GCされてないだけじゃね
適当なところでGC.Collect() してみなよ
適当なところでGC.Collect() してみなよ
759デフォルトの名無しさん (スププ Sd33-6WSE)
2019/11/21(木) 14:55:41.36ID:RWorgXN+d surfaceをペンとで使ってるけどペンを画面に近づけるだけでボタンの色が変わったりしてるな
760デフォルトの名無しさん (ワッチョイ f15f-zsms)
2019/11/21(木) 14:58:37.65ID:5f7eRC930 ペンはマウス扱いなんだろうけど
タッチはどうなんだろうな
タッチはどうなんだろうな
761デフォルトの名無しさん (ワッチョイ c161-oMOs)
2019/11/21(木) 15:03:46.75ID:htKo0xsj0 そりゃ対応ペンは少し浮いた状態でも座標検知できるけど指は無理っしょ
762デフォルトの名無しさん (ササクッテロ Spc5-cDSj)
2019/11/21(木) 15:06:06.00ID:m1a1HPIBp APIによって色々
WM_POINTERなら全部別デバイスとして判別されてる
wpfにもタッチイベントあるんだからそれでやりゃいいやんと思うが
WM_POINTERなら全部別デバイスとして判別されてる
wpfにもタッチイベントあるんだからそれでやりゃいいやんと思うが
763デフォルトの名無しさん (ワッチョイ f15f-zsms)
2019/11/21(木) 15:06:47.73ID:5f7eRC930 あるんだ
最近WPF始めたから知らんかった
まだまだ使えそうだな
最近WPF始めたから知らんかった
まだまだ使えそうだな
764デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/21(木) 15:36:34.05ID:2+YsLjv3a765デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/21(木) 15:39:50.86ID:2+YsLjv3a 一応Windows7からOSネイティブでタッチ操作に対応してるんだよね。
当時技術サンプルとして鯉が泳いでる池をタッチすると波紋が広がるスクリーンセーバーが
公開されてたけど、なぜかコードは非公開で意味ねえと思ったなw
当時技術サンプルとして鯉が泳いでる池をタッチすると波紋が広がるスクリーンセーバーが
公開されてたけど、なぜかコードは非公開で意味ねえと思ったなw
766デフォルトの名無しさん (ワッチョイ 1310-QS5Z)
2019/11/21(木) 15:52:09.65ID:vYs/9NCN0767デフォルトの名無しさん (ワッチョイ f15f-zsms)
2019/11/21(木) 15:58:35.96ID:5f7eRC930 へぇーためになるわ
768デフォルトの名無しさん (ワッチョイ e922-6WSE)
2019/11/21(木) 17:29:49.14ID:0iDNy5//0 >>764
surfaceのペンをスマホに当てても使えないから指とは仕組みが違うのでは?
surfaceのペンをスマホに当てても使えないから指とは仕組みが違うのでは?
769デフォルトの名無しさん (ワッチョイ 5161-CJzu)
2019/11/21(木) 17:45:14.26ID:0fDEV4Sz0770デフォルトの名無しさん (ワッチョイ 5161-CJzu)
2019/11/21(木) 17:48:28.33ID:0fDEV4Sz0771デフォルトの名無しさん (ワッチョイ 8901-o5/b)
2019/11/21(木) 18:08:29.79ID:2xdKb6kz0 テレパシーの実用化。
772デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/21(木) 19:22:17.78ID:iJSjE21Ua773デフォルトの名無しさん (オッペケ Src5-BEIG)
2019/11/21(木) 19:40:36.49ID:zBKzddxbr774デフォルトの名無しさん (ワッチョイ 1901-xPlI)
2019/11/21(木) 20:37:16.26ID:oCiIkumQ0 専用ペン使うのは電磁誘導方式でしょ。
静電容量とは根本的に違う。
静電容量とは根本的に違う。
775デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/21(木) 20:57:25.88ID:phtIa0Jsa776デフォルトの名無しさん (ワッチョイ 93bd-AvZR)
2019/11/22(金) 00:36:21.37ID:k4KfXICB0 長い名前を持つクラスに、thisを返すメソッドがあるとします
// 超長いクラス名
class VeryLongLongClassName {
// thisを返すメソッド
VeryLongLongClassName Foo( ) {
return this;
}
}
このとき、Foo()の定義につけるクラス名を省略、
あるいは置き換える方法はありますか?
たとえば以下のような形が理想です
var Foo() { … } // 型推論っぽく書けるとか
__CLASS__ Foo() { … } //自身のクラスを表す予約語とか
// 超長いクラス名
class VeryLongLongClassName {
// thisを返すメソッド
VeryLongLongClassName Foo( ) {
return this;
}
}
このとき、Foo()の定義につけるクラス名を省略、
あるいは置き換える方法はありますか?
たとえば以下のような形が理想です
var Foo() { … } // 型推論っぽく書けるとか
__CLASS__ Foo() { … } //自身のクラスを表す予約語とか
777デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/22(金) 01:05:43.88ID:FPmCk6jV0 ないです。
778デフォルトの名無しさん (ワッチョイ 69a0-x9/g)
2019/11/22(金) 01:10:47.79ID:JIfSXtJz0 >>776
外部との境界に var 型推論はムリ。それやると型を差し替えたときに影響が甚大になるため、型推論はローカルでしか許されない。
using エイリアスディレクティブで短い別名付けるとよいのではないかな。
外部との境界に var 型推論はムリ。それやると型を差し替えたときに影響が甚大になるため、型推論はローカルでしか許されない。
using エイリアスディレクティブで短い別名付けるとよいのではないかな。
779デフォルトの名無しさん (ワッチョイ 93bd-AvZR)
2019/11/22(金) 01:39:19.16ID:k4KfXICB0 ありがとうございます
ないですかー 残念
ないですかー 残念
780デフォルトの名無しさん (ワッチョイ 9138-4UII)
2019/11/22(金) 01:41:38.83ID:JMhA1FIB0 問題点や何がやりたいのかを言うと
違うアドバイスか得られることもあるぞ
違うアドバイスか得られることもあるぞ
781デフォルトの名無しさん (ワッチョイ 7997-Rk0C)
2019/11/22(金) 01:41:47.12ID:9t5OvAOe0 インタフェースとか継承を考えても、thisで型推論するのは無理じゃない?
782デフォルトの名無しさん (ワッチョイ 93bd-AvZR)
2019/11/22(金) 02:06:03.92ID:k4KfXICB0 戻り値が特に必要ないメソッドはreturn thisにして繋げれるようにしておこうかなあと
return thisにするか同じクラスをnewするかはさておき
return thisにするか同じクラスをnewするかはさておき
783デフォルトの名無しさん (アウアウエー Sae3-QS5Z)
2019/11/22(金) 03:39:52.30ID:zCaqBpsza VisualStudio2017を使用
Form1にsplitContainer1を上下に分割して全面に貼ってあり、splitContainer1の下段側にリッチテキストボックス1をドッキングさせて貼ってあります。
このリッチテキストボックス1が、ScrollBarsプロパティ:Both、WardWrapプロパティ:false
このリッチテキストボックス1に縦と横幅を超えるテキスト表示をした時、
縦のスクロールバーは普通に表示されるけど、水平のほうのスクロールバーが表示されなくなったのだけど何が原因と考えられるでしょうか?
・右キー押して自分でカーソルを右端まで動かせば一応画面のスクロールはさせられる
・以前はちゃんとスクロールバーが表示されてたはずなんだけどいつの間にか表示されなくなった?
Form1にsplitContainer1を上下に分割して全面に貼ってあり、splitContainer1の下段側にリッチテキストボックス1をドッキングさせて貼ってあります。
このリッチテキストボックス1が、ScrollBarsプロパティ:Both、WardWrapプロパティ:false
このリッチテキストボックス1に縦と横幅を超えるテキスト表示をした時、
縦のスクロールバーは普通に表示されるけど、水平のほうのスクロールバーが表示されなくなったのだけど何が原因と考えられるでしょうか?
・右キー押して自分でカーソルを右端まで動かせば一応画面のスクロールはさせられる
・以前はちゃんとスクロールバーが表示されてたはずなんだけどいつの間にか表示されなくなった?
784デフォルトの名無しさん (ワッチョイ 3988-+jxl)
2019/11/22(金) 09:14:29.30ID:miLj5dAA0785デフォルトの名無しさん (ワッチョイ 8ba7-QS5Z)
2019/11/22(金) 10:12:54.94ID:NcGK5KJU0 xamlの質問になってしまいますが、全コントールアイテムのBorderBrushやForegroundの色を統一することって出来ないのでしょうか?
<Style TargetType="Button">
<Setter Property="BorderBrush" Value="Black"/>...
と一つ一つのコントロールを定義して回るしか方法はないのでしょうか?
<Style TargetType="Button">
<Setter Property="BorderBrush" Value="Black"/>...
と一つ一つのコントロールを定義して回るしか方法はないのでしょうか?
786デフォルトの名無しさん (ワッチョイ 99e8-QS5Z)
2019/11/22(金) 10:34:58.33ID:8LwJ3HSF0787デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/22(金) 11:05:21.71ID:fOeQA7sva788デフォルトの名無しさん (ワッチョイ 93bd-AvZR)
2019/11/22(金) 11:21:07.27ID:k4KfXICB0789デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/22(金) 11:34:48.44ID:fOeQA7sva790デフォルトの名無しさん (ワッチョイ 3988-+jxl)
2019/11/22(金) 12:09:19.86ID:miLj5dAA0 returnの型から推論できるんだからメソッドの戻り型にもvarを使わせろって話?
んじゃあ始め書き込みで予約語の例示が意味不明
というか長い名前という言葉から文章を開始しといて何が違うんだ?
変数でvarを使うのは名称が長いからではないぞ?
長いものも3文字で表現できるという副次的メリットはあれどそのために導入されたものではない
んじゃあ始め書き込みで予約語の例示が意味不明
というか長い名前という言葉から文章を開始しといて何が違うんだ?
変数でvarを使うのは名称が長いからではないぞ?
長いものも3文字で表現できるという副次的メリットはあれどそのために導入されたものではない
791デフォルトの名無しさん (ドコグロ MM63-5f43)
2019/11/22(金) 12:18:11.80ID:627roQa/M メンバの型に型推論が使えないのは単純に技術的な問題だよ
コンパイラは先にメンバのシグネチャだけを見てリストアップしてから各メソッドの本体を処理することで依存関係を解決している
メソッドの中身を見ないとメンバの型が確定しないとなると、一度メソッドを処理しただけでは依存関係を解決しきれないから
メソッドを何度も繰り返し処理する必要がでてきてコンパイルが遅くなる
コンパイラは先にメンバのシグネチャだけを見てリストアップしてから各メソッドの本体を処理することで依存関係を解決している
メソッドの中身を見ないとメンバの型が確定しないとなると、一度メソッドを処理しただけでは依存関係を解決しきれないから
メソッドを何度も繰り返し処理する必要がでてきてコンパイルが遅くなる
792デフォルトの名無しさん (アウアウウー Sa9d-XYou)
2019/11/22(金) 12:18:49.41ID:Da5ctjWBa793776 (ワッチョイ 93bd-AvZR)
2019/11/22(金) 12:21:55.56ID:k4KfXICB0794デフォルトの名無しさん (ブーイモ MMcb-+o02)
2019/11/22(金) 12:26:27.67ID:8PnAlYZlM 戻りの型名を普通に書くのがスマート
くだらないアイデアでコードを汚さないで
くだらないアイデアでコードを汚さないで
795776 (ワッチョイ 93bd-AvZR)
2019/11/22(金) 12:29:12.04ID:k4KfXICB0796776 (ワッチョイ 93bd-AvZR)
2019/11/22(金) 12:35:32.03ID:k4KfXICB0797デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/22(金) 13:01:16.69ID:VuiommTl0 >>791
今どきのコンパイラでワンパスなんてないだろw
今どきのコンパイラでワンパスなんてないだろw
798デフォルトの名無しさん (ワッチョイ 3988-+jxl)
2019/11/22(金) 13:09:44.77ID:miLj5dAA0 な?名称が長いかどうかなんて関係ない質問なのに余計な単語から質問を始めるから周りが混乱する。
コメントで超長いクラス名とかまで書いてんじゃん
そんで指摘したらそーじゃねぇよ!ってあほかとwどんだけ説明下手くそなのw
コメントで超長いクラス名とかまで書いてんじゃん
そんで指摘したらそーじゃねぇよ!ってあほかとwどんだけ説明下手くそなのw
799デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/22(金) 13:09:46.78ID:fOeQA7sva800776 (ワッチョイ 93bd-AvZR)
2019/11/22(金) 13:22:21.21ID:k4KfXICB0 型推論ともちょっと違うからなあ
801デフォルトの名無しさん (ドコグロ MM63-5f43)
2019/11/22(金) 13:24:19.67ID:627roQa/M802デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/22(金) 13:48:44.67ID:VuiommTl0803デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/22(金) 14:08:44.11ID:fOeQA7sva >>800
そうなの?w
// VLLCNじゃ何だかわからないので必要な場面で説明的な名前を与えるためだけのクラス
// 空っぽの継承のまま維持せよ。メンバ追加禁止!!!
class VeryLongLongClassName : VLLCN { private VeryLongLongClassName(){} }
// VeryLongLongClassNameの実体はこっち。
class VLLCN
{
....
}
まさかこんなのがお好みなのかなw
そうなの?w
// VLLCNじゃ何だかわからないので必要な場面で説明的な名前を与えるためだけのクラス
// 空っぽの継承のまま維持せよ。メンバ追加禁止!!!
class VeryLongLongClassName : VLLCN { private VeryLongLongClassName(){} }
// VeryLongLongClassNameの実体はこっち。
class VLLCN
{
....
}
まさかこんなのがお好みなのかなw
804デフォルトの名無しさん (ワッチョイ 3988-+jxl)
2019/11/22(金) 14:16:21.50ID:miLj5dAA0 自身のクラス返すときだけ利用したいんでしょ
tweenerみたいな設定が多いものをチェインメソッドで必要な設定を好きな順番で書くとか
他にはfactoryみたいなのをわかりやすくするとか
気持ちはわからんでもないけど局所的すぎると思う
tweenerみたいな設定が多いものをチェインメソッドで必要な設定を好きな順番で書くとか
他にはfactoryみたいなのをわかりやすくするとか
気持ちはわからんでもないけど局所的すぎると思う
805デフォルトの名無しさん (ワッチョイ b32d-gZQb)
2019/11/22(金) 14:17:29.50ID:k9hYLF030 .Net CoreからBitFlyerの認証が必要なWebAPIを使いたいんだけどさあ
業者は暗号化キーをソースコードやファイル等に保存しないよう求めてるんだけど、.Net Coreでキーを守る手段ってどういうのがあるの?
WindowsやmacOS付属の機能も使えなさそうだし、最終的に動かしたいLinuxなんかそもそもそんな機能がないし・・・・
ランタイムにもそんな機能なさそうだし、どうすればいいんだろ
業者は暗号化キーをソースコードやファイル等に保存しないよう求めてるんだけど、.Net Coreでキーを守る手段ってどういうのがあるの?
WindowsやmacOS付属の機能も使えなさそうだし、最終的に動かしたいLinuxなんかそもそもそんな機能がないし・・・・
ランタイムにもそんな機能なさそうだし、どうすればいいんだろ
806デフォルトの名無しさん (ブーイモ MMcb-+o02)
2019/11/22(金) 14:51:55.96ID:8PnAlYZlM ソースはともかくファイルに保存は普通にやるよ
リポジトリに機密情報をコミットしない、と勘違いしてないか?
リポジトリに機密情報をコミットしない、と勘違いしてないか?
807デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/22(金) 15:31:23.92ID:VuiommTl0 >>804
> tweenerみたいな設定が多いものをチェインメソッドで必要な設定を好きな順番で書くとか
チェインメソッドってよく見かけるようになったけど見易いのかなぁ…
X.A( ).B( ).C( );
より
X.A( );
X.B( );
X.C( );
の方が見易いと思う俺は老害なんだろうか
> tweenerみたいな設定が多いものをチェインメソッドで必要な設定を好きな順番で書くとか
チェインメソッドってよく見かけるようになったけど見易いのかなぁ…
X.A( ).B( ).C( );
より
X.A( );
X.B( );
X.C( );
の方が見易いと思う俺は老害なんだろうか
808デフォルトの名無しさん (ワッチョイ 3988-+jxl)
2019/11/22(金) 16:18:12.63ID:miLj5dAA0809デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/22(金) 16:37:13.07ID:VuiommTl0810デフォルトの名無しさん (ワッチョイ 132c-4eZD)
2019/11/22(金) 19:30:22.12ID:IgRfeEG+0 Groovy などでやる、フォームビルダーみたいに、
各コントロールのサイズ・色など、設定項目が多いものは、メソッドチェーンでは見にくい
各コントロールのサイズ・色など、設定項目が多いものは、メソッドチェーンでは見にくい
811デフォルトの名無しさん (ワッチョイ 7997-Rk0C)
2019/11/23(土) 02:25:29.33ID:LRCCNZf00 >>807
自分もそう思う
>>808
LINQでつなげる場合はLINQメソッドの戻り値を意識しながらつなげるわけだから、話が違うじゃん
list.Reversed().Select((v)=>v+1)みたいな例はデータをどんどん変換しているから良いと思うけど、
form.ForeColor(Color.Red).BackColor(Color.Black)みたいなやつは1行で書けるメリットがあるのはわかるけど、
やってることは関数じゃないのに関数っぽくっ振る舞ってるのがすごくモニョモニョする。
これが、
form.CopyWithForeColor(Color.Red).CopyWithBackColor(Color.Black)で別のformが2つ作られるとか、
form.ForeColorChanger(Color.Red)でForeColorChanger<Form>が生成されて、ApplyFormで元のFormに反映されるとか
ToFormで新しくフォームが作れるとかならわかるんだけど、
副作用のあるメソッドで、戻り値がvoidのやつはもったいないから、戻り値をthisにするってのがなんか受け付けないんだよな―。
自分もそう思う
>>808
LINQでつなげる場合はLINQメソッドの戻り値を意識しながらつなげるわけだから、話が違うじゃん
list.Reversed().Select((v)=>v+1)みたいな例はデータをどんどん変換しているから良いと思うけど、
form.ForeColor(Color.Red).BackColor(Color.Black)みたいなやつは1行で書けるメリットがあるのはわかるけど、
やってることは関数じゃないのに関数っぽくっ振る舞ってるのがすごくモニョモニョする。
これが、
form.CopyWithForeColor(Color.Red).CopyWithBackColor(Color.Black)で別のformが2つ作られるとか、
form.ForeColorChanger(Color.Red)でForeColorChanger<Form>が生成されて、ApplyFormで元のFormに反映されるとか
ToFormで新しくフォームが作れるとかならわかるんだけど、
副作用のあるメソッドで、戻り値がvoidのやつはもったいないから、戻り値をthisにするってのがなんか受け付けないんだよな―。
812デフォルトの名無しさん (ワッチョイ 9301-wiXz)
2019/11/23(土) 02:58:58.06ID:8xX8HZu80 DSLとしてどの程度価値があるのか次第だと思う
https://martinfowler.com/bliki/FluentInterface.html
LINQのように関数型ライクな関数合成をOOで表現する場合と
FluentなBuilderパターンは見た目は似てても中身と目的は違うよね
https://martinfowler.com/bliki/FluentInterface.html
LINQのように関数型ライクな関数合成をOOで表現する場合と
FluentなBuilderパターンは見た目は似てても中身と目的は違うよね
813デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 03:16:21.47ID:gK3OO6AB0 だから意味合いは違うって書いてんでしょうが
this返して繋げる前提ライブラリなんてよくあるし好き嫌いの範疇
君が嫌いならしなきゃ良いだけじゃん
俺だってC#のライブラリ作るとき設定するだけのメソッドでthisなんて返さないよ
それは俺が作るものが小さいものだからできるだけ標準に近いものが良いだろうってだけ
大きめのものでそれが全体を通して同じようにthis返す設計で、それを使うならなるべくその思想には従うかもしれん程度
this返して繋げる前提ライブラリなんてよくあるし好き嫌いの範疇
君が嫌いならしなきゃ良いだけじゃん
俺だってC#のライブラリ作るとき設定するだけのメソッドでthisなんて返さないよ
それは俺が作るものが小さいものだからできるだけ標準に近いものが良いだろうってだけ
大きめのものでそれが全体を通して同じようにthis返す設計で、それを使うならなるべくその思想には従うかもしれん程度
814デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/23(土) 04:29:53.39ID:1tUJgTKRa this返すお作法は昔のjava方面の文化じゃない?
C#は1.xの時代にMSか何かのガイドラインで「やるな」って書いてあったのを読んだ記憶がある。
個人的にそもそもそんなキモいことやらないよと思ったので禁止の理由までは覚えてないが。
C#は1.xの時代にMSか何かのガイドラインで「やるな」って書いてあったのを読んだ記憶がある。
個人的にそもそもそんなキモいことやらないよと思ったので禁止の理由までは覚えてないが。
815デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/23(土) 08:12:23.68ID:IdTl1qyV0816デフォルトの名無しさん (ワッチョイ 5142-/L9V)
2019/11/23(土) 08:50:13.03ID:0TwI+VPl0 とは言え
X.A()?.B()?.C();
ならどうだろう?
X.A()?.B()?.C();
ならどうだろう?
817デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 11:11:29.56ID:gK3OO6AB0 意味合い違うものを出すのがおかしいなら807のレスがおかしいんだよ?
見やすいとか関係なくて776がこんな機能ないの?→無いよ→なんで欲しいの?→こういうのしたいんでしょ→見にくくね?気持ち悪くね?
って知るかよw
機能の話してんのになんで見易さの話にシフトすんだよ
見易さの話に変えられたので同じ表記の例示だしただけだし、そもそもlinqではないが採用してるライブラリも例示してんのになんでそこにこだわんの?w
見やすいとか関係なくて776がこんな機能ないの?→無いよ→なんで欲しいの?→こういうのしたいんでしょ→見にくくね?気持ち悪くね?
って知るかよw
機能の話してんのになんで見易さの話にシフトすんだよ
見易さの話に変えられたので同じ表記の例示だしただけだし、そもそもlinqではないが採用してるライブラリも例示してんのになんでそこにこだわんの?w
818デフォルトの名無しさん (アウアウイー Sa45-FRU3)
2019/11/23(土) 11:15:35.39ID:jZmYWOXfa おおもとの>>776や>>793の疑問についてはusingでエイリアスをつけて
『using [別名] = [VeryLongLongClassNameとか別名をつけたいクラス名];』と宣言して、
『[別名] Foo() { return this; }』みたいなメソッドの書き方することはできるし、
その別名に「This」を使ってるようなソースもたまに見かける
なんだけど・・・そもそも戻り値が特にないからとりあえず安易にthisを返すみたいな考え方は間違ってる
戻り値がないならvoidにして無駄な戻り値を返さない
そのクラスがBuilder的な使い方をするクラスである場合に限って、
そういうクラスであることをクラス名ほかで明示したうえで首尾一貫して全voidメソッドでthisを返す
>>782みたいな考え方で戻り値がthisなのか新しいインスタンスなのかブレるかもしれないのは論外
戻り値が後者なメソッドが混ざってると>>807の2種類の書き方で結果が同一にならなくなる
『using [別名] = [VeryLongLongClassNameとか別名をつけたいクラス名];』と宣言して、
『[別名] Foo() { return this; }』みたいなメソッドの書き方することはできるし、
その別名に「This」を使ってるようなソースもたまに見かける
なんだけど・・・そもそも戻り値が特にないからとりあえず安易にthisを返すみたいな考え方は間違ってる
戻り値がないならvoidにして無駄な戻り値を返さない
そのクラスがBuilder的な使い方をするクラスである場合に限って、
そういうクラスであることをクラス名ほかで明示したうえで首尾一貫して全voidメソッドでthisを返す
>>782みたいな考え方で戻り値がthisなのか新しいインスタンスなのかブレるかもしれないのは論外
戻り値が後者なメソッドが混ざってると>>807の2種類の書き方で結果が同一にならなくなる
819デフォルトの名無しさん (ブーイモ MMcb-+o02)
2019/11/23(土) 11:33:01.08ID:fy5uwVSkM Fluent apiってthisを返すことが目的じゃないからな
メソッドチェインで宣言的っぽくプログラミングするためのアイデアであってthisを返すメソッドはそのサブセットでしかない
世に出てるライブラリを見ればわかるがthis以外もバンバン返してる
だから作法としてとりあえずthisを返すなんてのは何もわかってない全く馬鹿げたことだ
先にFluent apiの設計をしなければならない
その設計に必要ならthisを返すメソッドを加えるだけだ
メソッドチェインで宣言的っぽくプログラミングするためのアイデアであってthisを返すメソッドはそのサブセットでしかない
世に出てるライブラリを見ればわかるがthis以外もバンバン返してる
だから作法としてとりあえずthisを返すなんてのは何もわかってない全く馬鹿げたことだ
先にFluent apiの設計をしなければならない
その設計に必要ならthisを返すメソッドを加えるだけだ
820デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/23(土) 11:54:08.57ID:IdTl1qyV0821デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 12:07:14.69ID:gK3OO6AB0 >>820
話題を変えたから見た目の話してんのに機能面に難癖つけてるの分かってる?
見た目はこれと一緒、機能はちがうけどね
ってレスしたらそれは機能が違う!って戻してんじゃんw
見た目も機能も同じtweenerという例示
見た目の話に切り替えたので見た目は同じだが機能は異なるlinqという例示
念の為機能は異なることも明記した上での提示に対して機能面についてあーだこーだ言われてもねぇ
話題を変えたから見た目の話してんのに機能面に難癖つけてるの分かってる?
見た目はこれと一緒、機能はちがうけどね
ってレスしたらそれは機能が違う!って戻してんじゃんw
見た目も機能も同じtweenerという例示
見た目の話に切り替えたので見た目は同じだが機能は異なるlinqという例示
念の為機能は異なることも明記した上での提示に対して機能面についてあーだこーだ言われてもねぇ
822デフォルトの名無しさん (ワッチョイ 69a0-x9/g)
2019/11/23(土) 12:14:24.40ID:WMLRYpBj0 喧嘩すんなよ。
いろいろな観点から指摘が入って、設計やスタイルに関する考察が深まるのはいいことだ。
揚げ足取りとか噛み付きとか不毛だからやめような。
いろいろな観点から指摘が入って、設計やスタイルに関する考察が深まるのはいいことだ。
揚げ足取りとか噛み付きとか不毛だからやめような。
823デフォルトの名無しさん (ワッチョイ 9138-4UII)
2019/11/23(土) 12:25:25.02ID:2fNzxcKi0 コードレビューするなら
本質的な機能では無いのに戻り値返すのは利用者の理解を妨げる上に、バグの元にもなるので、余計な事すんなと言うな
あとから戻り値欲しくなった途端に困るやろ
本質的な機能では無いのに戻り値返すのは利用者の理解を妨げる上に、バグの元にもなるので、余計な事すんなと言うな
あとから戻り値欲しくなった途端に困るやろ
824デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 12:58:03.05ID:gK3OO6AB0 今までレスしてる中でthis返す設計に肯定的な姿勢なのは元の質問者である782だけ
C#標準にそういう設計は無いからその利用者の多くは否定的になる、俺も含めて
世の中いろんな設計指針があるし他言語の流儀を真似することもある
同じチームで開発することになるならその辺りはできるだけ同じ方向を向きたいけれど、そういうのじゃなければ最終的にはお好きなようにとなるよね
C#標準にそういう設計は無いからその利用者の多くは否定的になる、俺も含めて
世の中いろんな設計指針があるし他言語の流儀を真似することもある
同じチームで開発することになるならその辺りはできるだけ同じ方向を向きたいけれど、そういうのじゃなければ最終的にはお好きなようにとなるよね
825デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/23(土) 13:19:13.45ID:IdTl1qyV0 >>821
バカなの?
> linqはパイプみたいに順次処理して行くからまだ理解できるんだけど
って書いてあるだろ
そういう必然性のない
> 設定が多いものをチェインメソッドで必要な設定を好きな順番で書く
を同一視してるのがおかしいの
わかった?
バカなの?
> linqはパイプみたいに順次処理して行くからまだ理解できるんだけど
って書いてあるだろ
そういう必然性のない
> 設定が多いものをチェインメソッドで必要な設定を好きな順番で書く
を同一視してるのがおかしいの
わかった?
826デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 13:30:54.32ID:gK3OO6AB0827デフォルトの名無しさん (アウアウイー Sa45-FRU3)
2019/11/23(土) 13:39:42.87ID:jZmYWOXfa 揚げ足取りだけど&Javaからの輸入だけど
>C#標準
つStringBuilder
もっとも自分でコード書くなら(変数名が短い前提で)メソッドチェーンにはしないけど
「文字列組み立ての順序を明示する」意図でメソッドチェーンで書くのはまあ理解できる
>C#標準
つStringBuilder
もっとも自分でコード書くなら(変数名が短い前提で)メソッドチェーンにはしないけど
「文字列組み立ての順序を明示する」意図でメソッドチェーンで書くのはまあ理解できる
828デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 13:44:55.41ID:gK3OO6AB0 linqもtweenerみたなのもメソッドをドットでつなげて表記する
データを加工して流すものとthisを返すものという機能面では全く異なるもの
機能と見た目を完全に切り離せるわけではないので、その見た目から機能面を理解しづらい=可読性に影響があるという議題は残るものの、どちらも利用する上での表記は同じ
ただこれだけで当初から機能は異なることを明記してるのになんで機能違うじゃねーか!みたいなすでに注釈してる内容に噛み付いてくるんだ
データを加工して流すものとthisを返すものという機能面では全く異なるもの
機能と見た目を完全に切り離せるわけではないので、その見た目から機能面を理解しづらい=可読性に影響があるという議題は残るものの、どちらも利用する上での表記は同じ
ただこれだけで当初から機能は異なることを明記してるのになんで機能違うじゃねーか!みたいなすでに注釈してる内容に噛み付いてくるんだ
829デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 13:48:34.67ID:gK3OO6AB0830デフォルトの名無しさん (ドコグロ MM63-hZ32)
2019/11/23(土) 14:30:45.15ID:1F/kr+dxM831デフォルトの名無しさん (ワッチョイ 69a0-x9/g)
2019/11/23(土) 14:39:10.21ID:WMLRYpBj0 >>827
fact を提示するのは揚げ足取りではないと思うよ。
return this は言われるほど悪いものではないと個人的には思う。が、メソッドチェーンにする価値は LINQ に比べるとさしてないという意見にも同意。
fact を提示するのは揚げ足取りではないと思うよ。
return this は言われるほど悪いものではないと個人的には思う。が、メソッドチェーンにする価値は LINQ に比べるとさしてないという意見にも同意。
832デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 14:40:26.89ID:gK3OO6AB0 >>830
うん、使わなくてよくね?
使うべきとも使ったほうが良いとも書いてない
そういうライブラリがこの世に多少は存在することを例示しただけ
そもそも俺自身がthis返す設計に否定的だって何度も書いてるんだけど読んでる?
うん、使わなくてよくね?
使うべきとも使ったほうが良いとも書いてない
そういうライブラリがこの世に多少は存在することを例示しただけ
そもそも俺自身がthis返す設計に否定的だって何度も書いてるんだけど読んでる?
833デフォルトの名無しさん (ワッチョイ 9301-wiXz)
2019/11/23(土) 15:10:38.43ID:8xX8HZu80 他言語だけどスクレイピングでよく使う
browser
.GotoHome()
.Login()
.DoSomething()
.DoAnother()
.SkipSomething()
.PrintResult()
コンテキストのつながりが自分にとって自然で
各メソッドを部品としてチェリーピックして使うような場合は
読みやすくなると思ってる
結局 return thisの是非じゃなく
メソッドチェーンでつないでいくのが適してる用途なのか
そうじゃないのかの話だよねこれ
browser
.GotoHome()
.Login()
.DoSomething()
.DoAnother()
.SkipSomething()
.PrintResult()
コンテキストのつながりが自分にとって自然で
各メソッドを部品としてチェリーピックして使うような場合は
読みやすくなると思ってる
結局 return thisの是非じゃなく
メソッドチェーンでつないでいくのが適してる用途なのか
そうじゃないのかの話だよねこれ
834デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/23(土) 15:17:05.69ID:IdTl1qyV0835デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 16:24:36.28ID:gK3OO6AB0 なんか絡まれたから対応したら君の意見はどうでもいいって…
じゃあなんで絡んだんだよw
じゃあなんで絡んだんだよw
836デフォルトの名無しさん (アウアウエー Sae3-+o02)
2019/11/23(土) 16:33:18.34ID:i26Fm466a VBのWithみたいなことやりたいって理由でthis返すんなら最低だな
837デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/23(土) 17:56:40.63ID:IdTl1qyV0 >>835
> じゃあなんで絡んだんだよw
ちゃんと書いてあるだろ…
> 必然性の有無にも気づけずにLinqガーとかいうアホがいたって話だしw
見た目の話だけなら個人の好みだから人それぞれでいいけどLinqとかの必然性があるものを持って来られても困る
> じゃあなんで絡んだんだよw
ちゃんと書いてあるだろ…
> 必然性の有無にも気づけずにLinqガーとかいうアホがいたって話だしw
見た目の話だけなら個人の好みだから人それぞれでいいけどLinqとかの必然性があるものを持って来られても困る
838デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 18:13:01.41ID:gK3OO6AB0 >>837
いや、だからなんで俺の意見はどうでも良いはずなのに未だに絡むの?
何を説明しようがどうでもいいで片付けるんだから話にならないじゃんw
もう一回説明しようか?
linqと見た目が一緒、機能は異なる
ただそれだけなんだけど伝わらない?これも意見だからどうでも良いんだと思うけど
ずーっとこう主張してるのになんでlinqは必然性があるから良いんだ!みたいな頓珍漢な絡みするの?
いや、だからなんで俺の意見はどうでも良いはずなのに未だに絡むの?
何を説明しようがどうでもいいで片付けるんだから話にならないじゃんw
もう一回説明しようか?
linqと見た目が一緒、機能は異なる
ただそれだけなんだけど伝わらない?これも意見だからどうでも良いんだと思うけど
ずーっとこう主張してるのになんでlinqは必然性があるから良いんだ!みたいな頓珍漢な絡みするの?
839デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/23(土) 18:19:16.92ID:IdTl1qyV0840デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 18:31:57.35ID:gK3OO6AB0 >>839
いや、だからそんなことわかりきってるよw
807で君が言った内容に対して表記が同じとしか言ってない
ちゃんと機能が異なることを追記した上で同じ表記だね、って言っただけでしょ?
それに対して延々と同じ内容で煽り続けてるんだよ?
linqは意味が違うよっていう808からの始まった内容に対してlinqは意味が違う!馬鹿なの?って
もっかい始めの方からレス内容確認したほうが良いよ
言葉尻捕まえて煽るだけで引っ込みつかなくなってるのはたぶん君の方だよ
いや、だからそんなことわかりきってるよw
807で君が言った内容に対して表記が同じとしか言ってない
ちゃんと機能が異なることを追記した上で同じ表記だね、って言っただけでしょ?
それに対して延々と同じ内容で煽り続けてるんだよ?
linqは意味が違うよっていう808からの始まった内容に対してlinqは意味が違う!馬鹿なの?って
もっかい始めの方からレス内容確認したほうが良いよ
言葉尻捕まえて煽るだけで引っ込みつかなくなってるのはたぶん君の方だよ
841デフォルトの名無しさん (ワッチョイ 8901-r6xQ)
2019/11/23(土) 18:40:43.12ID:FJ5K4BwR0 判った。LINQ宗教だ
842デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/23(土) 18:41:15.69ID:IdTl1qyV0 もう堂々巡りにして引き分けに持ち込もうと必死だな
Linqならメソッドチェーンにする意味があるから
> tweenerみたいな設定が多いもの
と一緒にされても困るって何度書いても同じこと書いてくるんだろうなw
Linqならメソッドチェーンにする意味があるから
> tweenerみたいな設定が多いもの
と一緒にされても困るって何度書いても同じこと書いてくるんだろうなw
843デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 18:46:16.32ID:gK3OO6AB0 機能の話から表記の話なってまた機能の話に戻す
表記の話のときに表記が同じ例を提示すると機能が違うんだから同じにすんな!
ってそりゃそうですよね、機能は違うってみんな言ってますもん
機能が同じだなんてレスどこにありました?
表記の話のときに表記が同じ例を提示すると機能が違うんだから同じにすんな!
ってそりゃそうですよね、機能は違うってみんな言ってますもん
機能が同じだなんてレスどこにありました?
844デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 19:45:54.89ID:gK3OO6AB0 804:機能の話
807:機能から発展した表記の話
808:表記の類似例の提示
811:機能ちげーじゃんというツッコミ
813:そうだよ機能は違うよという返し
ここから延々、表記の類似例に対して機能が違うじゃんというツッコミ
811は807とは違う人だけどね
807でも機能の話をしてたと言うなら俺の読解力が悪かった
表記の話であることを明確にするために808に意味合いが異なると注記したつもりではあった
今見返しても表記に関しての話題転換にしか見えないけど
807:機能から発展した表記の話
808:表記の類似例の提示
811:機能ちげーじゃんというツッコミ
813:そうだよ機能は違うよという返し
ここから延々、表記の類似例に対して機能が違うじゃんというツッコミ
811は807とは違う人だけどね
807でも機能の話をしてたと言うなら俺の読解力が悪かった
表記の話であることを明確にするために808に意味合いが異なると注記したつもりではあった
今見返しても表記に関しての話題転換にしか見えないけど
845デフォルトの名無しさん (ワッチョイ 13a7-Xt/m)
2019/11/23(土) 19:53:56.23ID:1OCMO4gt0 linqなんてゴミだろ
846デフォルトの名無しさん (ワッチョイ 13a7-Xt/m)
2019/11/23(土) 19:58:41.98ID:1OCMO4gt0 LINQ友の会スレ消えちゃった?(核爆)
847デフォルトの名無しさん (ワッチョイ f963-kgoK)
2019/11/23(土) 19:59:21.32ID:4Ca6PtTC0 ゴミのような時間の使い方をしている人らとはどっこいどっこいって感じよ
848デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/23(土) 19:59:52.48ID:IdTl1qyV0 まだ言ってるのかよw
> 機能が違うからダメと言うより必要もないのにチェインメソッド使わなくても良くね?
> って話な
って書いてあるのに「機能が違う」を連呼するしかない脳無し乙
> 機能が違うからダメと言うより必要もないのにチェインメソッド使わなくても良くね?
> って話な
って書いてあるのに「機能が違う」を連呼するしかない脳無し乙
849デフォルトの名無しさん (ワッチョイ 7117-/L9V)
2019/11/23(土) 20:07:04.96ID:Q44dea670 >>1
>なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
>C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
ID真っ赤にしている人はコレ100回読んでね
>なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
>C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
ID真っ赤にしている人はコレ100回読んでね
850デフォルトの名無しさん (ワッチョイ 69a0-x9/g)
2019/11/23(土) 20:20:39.76ID:WMLRYpBj0 お互い口汚く罵るのはやめよう。どちらも有益な情報を持ち込み、スレに貢献してると思うよ。
>>844
機能と表記の 2 観点からの考察ありがとう。君の主張は首尾一貫していて妥当だと思うよ。
私は return this 完全否定はしないけどね。
>>842
tweener なるものが何か知らないのだが、設定の手数の観点で C# と比較できるものではないということはわかった。ありがとう。
私が return this を時折使う理由も設定の手数あたりにあるかもしれないと思った。
変数宣言&インスタンス初期化を “本処理とは分けて” ワンライナーで書きたいのだが、初期化の手数が多いときに return this 使うよ。
var a = new ClassA().Init1().Init2().Init3();
var b = new ClassB().Init(a);
// a, b, その他の変数を用いた本処理
という感じで。
初期化と本処理をごちゃ混ぜに書くと本処理の本質が見えづらくなるため好きではないし、if, for などで新しいブロックが出てくるわけでもないのにコンテクストの途中で新規変数宣言するのも好きではない。純粋に表記スタイルの (好みの) 話。
>>844
機能と表記の 2 観点からの考察ありがとう。君の主張は首尾一貫していて妥当だと思うよ。
私は return this 完全否定はしないけどね。
>>842
tweener なるものが何か知らないのだが、設定の手数の観点で C# と比較できるものではないということはわかった。ありがとう。
私が return this を時折使う理由も設定の手数あたりにあるかもしれないと思った。
変数宣言&インスタンス初期化を “本処理とは分けて” ワンライナーで書きたいのだが、初期化の手数が多いときに return this 使うよ。
var a = new ClassA().Init1().Init2().Init3();
var b = new ClassB().Init(a);
// a, b, その他の変数を用いた本処理
という感じで。
初期化と本処理をごちゃ混ぜに書くと本処理の本質が見えづらくなるため好きではないし、if, for などで新しいブロックが出てくるわけでもないのにコンテクストの途中で新規変数宣言するのも好きではない。純粋に表記スタイルの (好みの) 話。
851デフォルトの名無しさん (ワッチョイ 93bd-AvZR)
2019/11/23(土) 20:21:25.84ID:zU8fto2w0 まあLINQはさておき
前者と後者じゃ後者のほうがスッキリして見える場合もあるんじゃないかなとは思う
hoge.foo();
hoge.bar();
hoge.baz();
hoge.quz();
hoge
.foo()
.bar()
.baz()
.quz();
セミコロン必須の言語やif文とは相性そんなに良くないけどさ
前者と後者じゃ後者のほうがスッキリして見える場合もあるんじゃないかなとは思う
hoge.foo();
hoge.bar();
hoge.baz();
hoge.quz();
hoge
.foo()
.bar()
.baz()
.quz();
セミコロン必須の言語やif文とは相性そんなに良くないけどさ
852デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 20:27:14.79ID:gK3OO6AB0 >>850
tweenerはたぶんゲーム分野とかで使うことが多いと思うけど表示物のアニメーション制御に使うようなライブラリを指して言った
最近はweb系もアニメーションには富んでるからそっちにも似たようなものはある
表示物のx座標をaからbにc秒かけて移動させる、そのときd秒遅れてアニメーションを開始して終了後にe関数を呼ぶ
みたいな設定をするのに使う
tweenerはたぶんゲーム分野とかで使うことが多いと思うけど表示物のアニメーション制御に使うようなライブラリを指して言った
最近はweb系もアニメーションには富んでるからそっちにも似たようなものはある
表示物のx座標をaからbにc秒かけて移動させる、そのときd秒遅れてアニメーションを開始して終了後にe関数を呼ぶ
みたいな設定をするのに使う
853デフォルトの名無しさん (ワッチョイ 1901-xPlI)
2019/11/23(土) 20:32:13.74ID:lT+2m/c90 >>851
疑似with構文ってとこかな?
疑似with構文ってとこかな?
854デフォルトの名無しさん (オッペケ Src5-BEIG)
2019/11/23(土) 21:28:03.06ID:o0OxBnlFr c#の先祖に当たるdelphiではwithがあったがC#で亡くなった
855デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/23(土) 21:33:29.44ID:TBCDcXkja まあ罵倒は見てて見苦しいねw
thisを返す手法に違和感を感じる人(自分もその一人)が多いのは、
(1) シグジェチャだけではメソッドが返す値がthisなのか別のインスタンスなのか分からない
(2) チェーンさせる目的でthisを返すのは意味論(メソッド名はそのメソッドの機能を表現する)を破壊する
こんなところか。
本来は必用なら言語レベルで実現すべき機能なんだろうね。
でもC#erってVBのWithブロックには否定的な人が多かったよな
thisを返す手法に違和感を感じる人(自分もその一人)が多いのは、
(1) シグジェチャだけではメソッドが返す値がthisなのか別のインスタンスなのか分からない
(2) チェーンさせる目的でthisを返すのは意味論(メソッド名はそのメソッドの機能を表現する)を破壊する
こんなところか。
本来は必用なら言語レベルで実現すべき機能なんだろうね。
でもC#erってVBのWithブロックには否定的な人が多かったよな
856デフォルトの名無しさん (ワッチョイ 13b9-0DuE)
2019/11/23(土) 22:00:39.91ID:6Id8VYs40 相談させてください。
以下のようなクラスを作りたいと考えています。
class MyStaticClass1
{
static double HighCostMethod() { ... }
public static double X = Math.Sign(HighCostMethod());
public static double Y = Math.Abs(HighCostMethod());
}
しかし高コストな HighCostMethod を2回も呼びだすのは無駄なので
以下のように改良しました。
class MyStaticClass2
{
static double HighCostMethod() { ... }
public static double X, Y;
static MyStaticClass2()
{
var v = HighCostMethod();
X = Math.Sign(v);
Y = Math.Abs(v);
}
}
ところがこのコードは規則 CA1810 に違反すると警告が表示されました。
静的コンストラクターにはパフォーマンス上の欠点があるようなのです。
【CA1810 参照型の静的フィールドをインラインで初期化します - Visual Studio Microsoft Docs】
https://docs.microsoft.com/ja-jp/visualstudio/code-quality/ca1810?view=vs-2019
(続く)
以下のようなクラスを作りたいと考えています。
class MyStaticClass1
{
static double HighCostMethod() { ... }
public static double X = Math.Sign(HighCostMethod());
public static double Y = Math.Abs(HighCostMethod());
}
しかし高コストな HighCostMethod を2回も呼びだすのは無駄なので
以下のように改良しました。
class MyStaticClass2
{
static double HighCostMethod() { ... }
public static double X, Y;
static MyStaticClass2()
{
var v = HighCostMethod();
X = Math.Sign(v);
Y = Math.Abs(v);
}
}
ところがこのコードは規則 CA1810 に違反すると警告が表示されました。
静的コンストラクターにはパフォーマンス上の欠点があるようなのです。
【CA1810 参照型の静的フィールドをインラインで初期化します - Visual Studio Microsoft Docs】
https://docs.microsoft.com/ja-jp/visualstudio/code-quality/ca1810?view=vs-2019
(続く)
857デフォルトの名無しさん (ワッチョイ 13b9-0DuE)
2019/11/23(土) 22:01:03.42ID:6Id8VYs40 (続き)
そこでさらに次のように改良したところ、無事警告は表示されなくなりました。
class MyStaticClass3
{
static double HighCostMethod() { ... }
public static double X = Initialiser.Instance.X;
public static double Y = Initialiser.Instance.Y;
class Initialiser
{
public static Initialiser Instance = new Initialiser();
public double X, Y;
Initialiser()
{
var v = HighCostMethod();
X = Math.Sign(v);
Y = Math.Abs(v);
}
}
}
ただ、クラス初期化時のパフォーマンス上の問題を解消するために
さらに別のクラスを定義するのは本末転倒な気もします。
私のアプローチは正しいのでしょうか。
それとも素直に CA1810 の警告表示を抑制すべきでしょうか。
もしくは、別のもっとスマートな解決策があるのでしょうか。
アドバイス等をいただけると嬉しく思います。よろしくお願いいたします。
そこでさらに次のように改良したところ、無事警告は表示されなくなりました。
class MyStaticClass3
{
static double HighCostMethod() { ... }
public static double X = Initialiser.Instance.X;
public static double Y = Initialiser.Instance.Y;
class Initialiser
{
public static Initialiser Instance = new Initialiser();
public double X, Y;
Initialiser()
{
var v = HighCostMethod();
X = Math.Sign(v);
Y = Math.Abs(v);
}
}
}
ただ、クラス初期化時のパフォーマンス上の問題を解消するために
さらに別のクラスを定義するのは本末転倒な気もします。
私のアプローチは正しいのでしょうか。
それとも素直に CA1810 の警告表示を抑制すべきでしょうか。
もしくは、別のもっとスマートな解決策があるのでしょうか。
アドバイス等をいただけると嬉しく思います。よろしくお願いいたします。
858デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/23(土) 22:01:38.76ID:gK3OO6AB0 俺自身もthis返す設計に否定的で813で明確に表明してるんだけどねw
850の初期化の例みたいなのもC#ではメソッドに引数名を指定して呼び出すことができる機能があるからそれで事足りる
引数の数が多くなったりオプション引数使えば更に長くなったり呼び出し側も見た目はスマートとは言えないような書き方になったりするんで多用は避けたいところだけど局所的な利用なら無しでは無い気もする
まぁ設定用の構造体作って渡すとかjson等をシリアライズしたものを渡すとかのほうがいいんじゃない?とは思う
850の初期化の例みたいなのもC#ではメソッドに引数名を指定して呼び出すことができる機能があるからそれで事足りる
引数の数が多くなったりオプション引数使えば更に長くなったり呼び出し側も見た目はスマートとは言えないような書き方になったりするんで多用は避けたいところだけど局所的な利用なら無しでは無い気もする
まぁ設定用の構造体作って渡すとかjson等をシリアライズしたものを渡すとかのほうがいいんじゃない?とは思う
859デフォルトの名無しさん (ワッチョイ 132c-4eZD)
2019/11/23(土) 22:08:25.71ID:fygFNKSM0 >>856
>高コストな HighCostMethod を2回も呼びだすのは無駄なので
典型的なシングルトン。
データベースマネージャーとか、何かを管理するクラスは、基本的に1回しか実行しない
init( ) みたいな、特別な関数でしかnew できない。
通常の方法では、newできないように、エラーになるように作る
>高コストな HighCostMethod を2回も呼びだすのは無駄なので
典型的なシングルトン。
データベースマネージャーとか、何かを管理するクラスは、基本的に1回しか実行しない
init( ) みたいな、特別な関数でしかnew できない。
通常の方法では、newできないように、エラーになるように作る
860デフォルトの名無しさん (ワッチョイ 9301-wiXz)
2019/11/23(土) 22:09:46.52ID:8xX8HZu80861デフォルトの名無しさん (アウアウウー Sa9d-Q1nT)
2019/11/23(土) 22:14:33.73ID:IgdFxqh4a >>856
private static double Cache = HighCostMethod();
public static double X = Math.Sign(Cache);
public static double Y = Math.Abs(Cache);
みたいに一旦結果を受けるものを作れば回避できそう
private static double Cache = HighCostMethod();
public static double X = Math.Sign(Cache);
public static double Y = Math.Abs(Cache);
みたいに一旦結果を受けるものを作れば回避できそう
862デフォルトの名無しさん (ワッチョイ 13b9-0DuE)
2019/11/23(土) 22:25:20.74ID:6Id8VYs40 >>859
レスありがとうございます。
おっしゃるとおり、シングルトンを使えば問題は解決するだろうと考えて
作成したのが MyStaticClass3 なのですが、
MyStaticClass3 が MyStaticClass2 よりも
パフォーマンス的に優れていると考えられなくて
質問させていただきました。
> init( ) みたいな、特別な関数でしかnew できない。
> 通常の方法では、newできないように、エラーになるように作る
ここで説明していただいているお話と
MyStaticClass3 の中身の違いがよく理解できていないので
詳しく教えていただけないでしょうか。
よろしくお願いいたします。
>>860
レスありがとうございます。
HighCostMethod()の結果をキャッシュするための装置として
MyStaticClass3.Initializer を作ったつもりなのですが、
改良点などがあればご指摘いただけると幸いです。
よろしくお願いいたします。
>>861
なるほど!レスありがとうございます。
ただ、一時的に値を保持するためにフィールドを使うのは
少し抵抗があるきもするのですが、よく使われる手法なのでしょうか。
また、一つのクラスを複数ファイルに分けて記述できることを考えると、
フィールドの初期化は必ず上から順に行われることが
保証されているのかということについても少し不安があるのですが、
もし何か参考資料などをご存知なら教えていただけると嬉しく思います。
よろしくお願いいたします。
レスありがとうございます。
おっしゃるとおり、シングルトンを使えば問題は解決するだろうと考えて
作成したのが MyStaticClass3 なのですが、
MyStaticClass3 が MyStaticClass2 よりも
パフォーマンス的に優れていると考えられなくて
質問させていただきました。
> init( ) みたいな、特別な関数でしかnew できない。
> 通常の方法では、newできないように、エラーになるように作る
ここで説明していただいているお話と
MyStaticClass3 の中身の違いがよく理解できていないので
詳しく教えていただけないでしょうか。
よろしくお願いいたします。
>>860
レスありがとうございます。
HighCostMethod()の結果をキャッシュするための装置として
MyStaticClass3.Initializer を作ったつもりなのですが、
改良点などがあればご指摘いただけると幸いです。
よろしくお願いいたします。
>>861
なるほど!レスありがとうございます。
ただ、一時的に値を保持するためにフィールドを使うのは
少し抵抗があるきもするのですが、よく使われる手法なのでしょうか。
また、一つのクラスを複数ファイルに分けて記述できることを考えると、
フィールドの初期化は必ず上から順に行われることが
保証されているのかということについても少し不安があるのですが、
もし何か参考資料などをご存知なら教えていただけると嬉しく思います。
よろしくお願いいたします。
863デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/23(土) 22:40:06.43ID:IdTl1qyV0 >>851
そう、そう言う風に純粋に見た目の話をしてるのにチェインメソッドにするしかない(まあ一旦変数に受けりゃいいんだけど流石にそれはねぇ)Linqを出されてもねぇ
Linqをバカにされたとでも思ったのかな?
それはさておき、たしかに同じ変数を何度も書かされるのはなんとなく冗長な感じがするからWith文みたいなのが欲しいのは理解できる
そのうちオブジェクト初期化子でメソッドが呼び出せるようになったりして
var a = new ClassA().Init1().Init2().Init3();
var b = new ClassB().Init(a);
↓
var b = new ClassB(){
Init(new ClassA(){ Init1(), Init2(), Init3() })
};
そう、そう言う風に純粋に見た目の話をしてるのにチェインメソッドにするしかない(まあ一旦変数に受けりゃいいんだけど流石にそれはねぇ)Linqを出されてもねぇ
Linqをバカにされたとでも思ったのかな?
それはさておき、たしかに同じ変数を何度も書かされるのはなんとなく冗長な感じがするからWith文みたいなのが欲しいのは理解できる
そのうちオブジェクト初期化子でメソッドが呼び出せるようになったりして
var a = new ClassA().Init1().Init2().Init3();
var b = new ClassB().Init(a);
↓
var b = new ClassB(){
Init(new ClassA(){ Init1(), Init2(), Init3() })
};
864デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/23(土) 22:41:20.33ID:TBCDcXkja VS2015だとCA1810 なんか出ないなw
出るとしても警告を抑止して問題ないケースだと思うけど
出るとしても警告を抑止して問題ないケースだと思うけど
865デフォルトの名無しさん (ワッチョイ 9301-wiXz)
2019/11/23(土) 22:43:26.64ID:8xX8HZu80 >>862
XやYをプロパティにしてキャッシュがあるかどうか確認してなければHighCostを呼ぶ
じゃなければLazy<T>使う
https://dotnetfiddle.net/0dQM8v
https://docs.microsoft.com/en-us/dotnet/framework/performance/lazy-initialization
XやYをプロパティにしてキャッシュがあるかどうか確認してなければHighCostを呼ぶ
じゃなければLazy<T>使う
https://dotnetfiddle.net/0dQM8v
https://docs.microsoft.com/en-us/dotnet/framework/performance/lazy-initialization
866デフォルトの名無しさん (ワッチョイ 13a7-Xt/m)
2019/11/23(土) 22:50:14.45ID:1OCMO4gt0 stringのreplaceとか別のインスタンスじゃん
こういうのと仕様が違うの作っちゃうの嫌だな
こういうのは多数派に合わせる感じで
こういうのと仕様が違うの作っちゃうの嫌だな
こういうのは多数派に合わせる感じで
867デフォルトの名無しさん (アウアウウー Sa9d-Q1nT)
2019/11/23(土) 22:50:15.57ID:IgdFxqh4a >>862
「一つのクラスを複数ファイルに分けて記述できること」はpartial classを指していると思うんだけど、その場合はちょっと分からん
ただpartialでない普通のクラスの場合は、初期化は記述順(上から順)に行われることが保証されている
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/classes#fields
> The static field variable initializers of a class correspond to a sequence of assignments that are executed in the textual order in which they appear in the class declaration
「一つのクラスを複数ファイルに分けて記述できること」はpartial classを指していると思うんだけど、その場合はちょっと分からん
ただpartialでない普通のクラスの場合は、初期化は記述順(上から順)に行われることが保証されている
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/classes#fields
> The static field variable initializers of a class correspond to a sequence of assignments that are executed in the textual order in which they appear in the class declaration
868デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/23(土) 23:07:33.85ID:TBCDcXkja これはOKみたい。
static double x;
static double y =
(
(Func<double>)
(
() =>
{
var v = HighCostMethod();
x = Math.Sign(v);
return Math.Abs(v);
}
)
)();
もちろん俺ならこんなことしないw
素直に警告無視or抑止するのが一番いい。
無駄なことして可読性落とすなんて愚の骨頂
static double x;
static double y =
(
(Func<double>)
(
() =>
{
var v = HighCostMethod();
x = Math.Sign(v);
return Math.Abs(v);
}
)
)();
もちろん俺ならこんなことしないw
素直に警告無視or抑止するのが一番いい。
無駄なことして可読性落とすなんて愚の骨頂
869デフォルトの名無しさん (ワッチョイ 13b9-0DuE)
2019/11/23(土) 23:15:13.03ID:6Id8VYs40 >>864
情報どうもありがとうございます。
Visual Studio のバージョンに依存する話だったのですね。
私は Visual Studio 2019 (Version 16.3.10) を使っています。
情報が後出しになってしまい失礼いたしました。
> 出るとしても警告を抑止して問題ないケースだと思うけど
ご意見ありがとうございます。 >>856 に貼り付けたリンクの先にも
「パフォーマンスが問題にならない場合は、このルールの警告を抑制しても安全です。」
と書いてありますし、やはり抑制が最善の方法であるような気もしてきました。
>>865
> プロパティ
アドバイスどうもありがとうございます。
string.Empty の様に、プロパティである必要がないものは
フィールドにしたほうがパフォーマンス的に有利かと思って
そのようにしていたのですが、確かにプロパティが一番真っ当ですね。
> Lazy<T>
ありがとうございます。ただ、私の考える限り以下のような方法しが思いつかず、
だったら >>861 に書いていただいたもので良いのではと思ってしまうのですが、
もし Lazy<T> を使った別の方法があれば詳しく教えていただけると嬉しく思います。
static Lazy<double> Cache = new Lazy<double>(HighCostMethod);
public static double X = Math.Sign(Cache.Value);
public static double Y = Math.Abs(Cache.Value);
情報どうもありがとうございます。
Visual Studio のバージョンに依存する話だったのですね。
私は Visual Studio 2019 (Version 16.3.10) を使っています。
情報が後出しになってしまい失礼いたしました。
> 出るとしても警告を抑止して問題ないケースだと思うけど
ご意見ありがとうございます。 >>856 に貼り付けたリンクの先にも
「パフォーマンスが問題にならない場合は、このルールの警告を抑制しても安全です。」
と書いてありますし、やはり抑制が最善の方法であるような気もしてきました。
>>865
> プロパティ
アドバイスどうもありがとうございます。
string.Empty の様に、プロパティである必要がないものは
フィールドにしたほうがパフォーマンス的に有利かと思って
そのようにしていたのですが、確かにプロパティが一番真っ当ですね。
> Lazy<T>
ありがとうございます。ただ、私の考える限り以下のような方法しが思いつかず、
だったら >>861 に書いていただいたもので良いのではと思ってしまうのですが、
もし Lazy<T> を使った別の方法があれば詳しく教えていただけると嬉しく思います。
static Lazy<double> Cache = new Lazy<double>(HighCostMethod);
public static double X = Math.Sign(Cache.Value);
public static double Y = Math.Abs(Cache.Value);
870デフォルトの名無しさん (ワッチョイ 13b9-0DuE)
2019/11/23(土) 23:15:35.51ID:6Id8VYs40871デフォルトの名無しさん (アウアウウー Sa9d-Q1nT)
2019/11/23(土) 23:20:13.08ID:IgdFxqh4a >>868
そのコードだとyにアクセスせずxにだけアクセスしたら初期値の0のままだぞ
そのコードだとyにアクセスせずxにだけアクセスしたら初期値の0のままだぞ
872デフォルトの名無しさん (ワッチョイ 9301-wiXz)
2019/11/23(土) 23:24:58.85ID:8xX8HZu80873デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/23(土) 23:25:48.76ID:TBCDcXkja874デフォルトの名無しさん (ワッチョイ 13b9-0DuE)
2019/11/23(土) 23:40:24.93ID:6Id8VYs40 >>872
サンプルを書いてくださっていたのですね。大変失礼いたしました。
ただ、やはり Lazy<T> を使うメリットが理解できずにいます。
MyStatic が初期化される時点で _highCost が初期化されて、
その後すぐに _highCost.Value が呼び出されるのであれば、
>>861 に書いていただいた方法で十分な気がするのです。
>>873
おっしゃるとおりだとおもいます。
ところで少し考えてみて、場合によっては冗談ではなく
public static double X, Y = InitializeYAndX();
static double InitializeYAndX()
{
var v = HighCostMethod();
X = Math.Sign(v);
return Math.Abs(v);
}
みたいな書き方が選択肢になり得ることもあるような気がしてきました。
もしくは、実際にはフィールドは readonly にしたい場合が多いと思うので
public static readonly double X, Y = InitializeYAndX(out X);
static double InitializeYAndX(out double x)
{
var v = HighCostMethod();
x = Math.Sign(v);
return Math.Abs(v);
}
のような感じとか。
サンプルを書いてくださっていたのですね。大変失礼いたしました。
ただ、やはり Lazy<T> を使うメリットが理解できずにいます。
MyStatic が初期化される時点で _highCost が初期化されて、
その後すぐに _highCost.Value が呼び出されるのであれば、
>>861 に書いていただいた方法で十分な気がするのです。
>>873
おっしゃるとおりだとおもいます。
ところで少し考えてみて、場合によっては冗談ではなく
public static double X, Y = InitializeYAndX();
static double InitializeYAndX()
{
var v = HighCostMethod();
X = Math.Sign(v);
return Math.Abs(v);
}
みたいな書き方が選択肢になり得ることもあるような気がしてきました。
もしくは、実際にはフィールドは readonly にしたい場合が多いと思うので
public static readonly double X, Y = InitializeYAndX(out X);
static double InitializeYAndX(out double x)
{
var v = HighCostMethod();
x = Math.Sign(v);
return Math.Abs(v);
}
のような感じとか。
875デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/24(日) 00:02:41.75ID:kdnOmkRS0 >>874
個人的に警告を回避するために普段しない書き方をするのは違うと思う
警告の内容を理解し、それが今回のケースでは問題ないと判断できるなら遠慮なく警告を抑制していいと思う
プログラム起動時に自動的に初期化されるstaticとプログラマが初期化タイミングを制御できるsingleton
起動コストが問題なくてstaticが妥当なら警告抑制を選択するかな
個人的に警告を回避するために普段しない書き方をするのは違うと思う
警告の内容を理解し、それが今回のケースでは問題ないと判断できるなら遠慮なく警告を抑制していいと思う
プログラム起動時に自動的に初期化されるstaticとプログラマが初期化タイミングを制御できるsingleton
起動コストが問題なくてstaticが妥当なら警告抑制を選択するかな
876デフォルトの名無しさん (ワッチョイ 9301-wiXz)
2019/11/24(日) 00:02:47.40ID:ajYX9vGJ0 >>874
LowCostMethodも追加してみた
https://dotnetfiddle.net/Be6wMy
名前の通りLazy LoadingとかLazy Initializationとかいうのをするためのもので
必要になった時に初期化されてなければ初期化して、初期化済みなら初期化済みの値を使う
MyStaticクラスが初期化される時点で_highCostが初期化されるわけではない
getプロパティで
if ( cache == null ) { cache = HighCostMethod(); }
return cache;
するのと意味的には同じでdefaultでthread-safe
詳しくは>>862の2つ目のリンクに書いてある
あともし他人も使うコードなら潜在的に高コストな処理は
フィールドやプロパティじゃなくメソッドにしといたほうが無難
LowCostMethodも追加してみた
https://dotnetfiddle.net/Be6wMy
名前の通りLazy LoadingとかLazy Initializationとかいうのをするためのもので
必要になった時に初期化されてなければ初期化して、初期化済みなら初期化済みの値を使う
MyStaticクラスが初期化される時点で_highCostが初期化されるわけではない
getプロパティで
if ( cache == null ) { cache = HighCostMethod(); }
return cache;
するのと意味的には同じでdefaultでthread-safe
詳しくは>>862の2つ目のリンクに書いてある
あともし他人も使うコードなら潜在的に高コストな処理は
フィールドやプロパティじゃなくメソッドにしといたほうが無難
877デフォルトの名無しさん (ワッチョイ 13b9-0DuE)
2019/11/24(日) 00:26:34.20ID:ilfNxwrd0 >>875
> 個人的に警告を回避するために普段しない書き方をするのは違うと思う
> 警告の内容を理解し、それが今回のケースでは問題ないと判断できるなら遠慮なく警告を抑制していいと思う
アドバイスどうもありがとうございます。確かにおっしゃるとおりですね。
この考え方で、警告を抑制する方向で行こうと思います。
> プログラム起動時に自動的に初期化されるstaticとプログラマが初期化タイミングを制御できるsingleton
static はプログラム起動時に初期化されるんでしたっけ?
ただいずれにしても、コストが非常に高い場合は
明示的に初期化のタイミングを指定できるように気をつけたいと思います。
>>876
詳しいご説明ありがとうございます。
「MyStatic が初期化される時点で _highCost が初期化されて」
という表現は正しくありませんでした。失礼いたしました。
ただ、お書きいただいたコードでは
private static readonly Lazy<double> _highCost = new Lazy<double>(HighCostMethod);
の直後に
public static double X = Math.Sin(_highCost.Value);
public static double Y = Math.Abs(_highCost.Value);
が実行されるので、例えば
private static readonly double _highCost = HighCostMethod();
と
public static double X = Math.Sin(_highCost);
public static double Y = Math.Abs(_highCost);
に書き換えても同じではないでしょうか?
> あともし他人も使うコードなら潜在的に高コストな処理は
> フィールドやプロパティじゃなくメソッドにしといたほうが無難
アドバイスどうもありがとうございます。言われてみて、確かにそのとおりだと思いました。
コストの高さに応じて適切な書き方が選択できるように勉強したいと思います。
> 個人的に警告を回避するために普段しない書き方をするのは違うと思う
> 警告の内容を理解し、それが今回のケースでは問題ないと判断できるなら遠慮なく警告を抑制していいと思う
アドバイスどうもありがとうございます。確かにおっしゃるとおりですね。
この考え方で、警告を抑制する方向で行こうと思います。
> プログラム起動時に自動的に初期化されるstaticとプログラマが初期化タイミングを制御できるsingleton
static はプログラム起動時に初期化されるんでしたっけ?
ただいずれにしても、コストが非常に高い場合は
明示的に初期化のタイミングを指定できるように気をつけたいと思います。
>>876
詳しいご説明ありがとうございます。
「MyStatic が初期化される時点で _highCost が初期化されて」
という表現は正しくありませんでした。失礼いたしました。
ただ、お書きいただいたコードでは
private static readonly Lazy<double> _highCost = new Lazy<double>(HighCostMethod);
の直後に
public static double X = Math.Sin(_highCost.Value);
public static double Y = Math.Abs(_highCost.Value);
が実行されるので、例えば
private static readonly double _highCost = HighCostMethod();
と
public static double X = Math.Sin(_highCost);
public static double Y = Math.Abs(_highCost);
に書き換えても同じではないでしょうか?
> あともし他人も使うコードなら潜在的に高コストな処理は
> フィールドやプロパティじゃなくメソッドにしといたほうが無難
アドバイスどうもありがとうございます。言われてみて、確かにそのとおりだと思いました。
コストの高さに応じて適切な書き方が選択できるように勉強したいと思います。
878デフォルトの名無しさん (ワッチョイ 13a7-Xt/m)
2019/11/24(日) 00:53:53.43ID:/zc8WPZx0 ソースといっしょで中身がないのに文章なっげぇな
879デフォルトの名無しさん (アウアウウー Sa9d-927E)
2019/11/24(日) 02:24:11.12ID:8mt5PJRXa もう誰かとっくに書いてるだろうけど、やっぱり本来は重くなる可能性があるなら
フィールドやプロパティーじゃなくてメソッドにすべきなんだろうね。知らんけど
static double _x, _y;
static Action InitializeXY = () =>
{
var v = HighCostMethod();
_x = Math.Sign(v);
_y = Math.Abs(v); ;
InitializeXY = null;
};
public static double GetX()
{
InitializeXY?.Invoke();
return _x;
}
フィールドやプロパティーじゃなくてメソッドにすべきなんだろうね。知らんけど
static double _x, _y;
static Action InitializeXY = () =>
{
var v = HighCostMethod();
_x = Math.Sign(v);
_y = Math.Abs(v); ;
InitializeXY = null;
};
public static double GetX()
{
InitializeXY?.Invoke();
return _x;
}
880デフォルトの名無しさん (ワッチョイ 93bd-AvZR)
2019/11/24(日) 04:59:22.37ID:QxCNqVes0 なんかこう、せっかくの言語仕様を活かしきれてないような
もったいなさがあるよね
もったいなさがあるよね
881デフォルトの名無しさん (ワッチョイ 1379-QS5Z)
2019/11/24(日) 10:11:24.43ID:L7p7ghIU0 原則としてはgetterでは値の取得と通知しかしてはならない
これはC#に限った話ではなくオブジェクト指向の大原則の一つ
これはC#に限った話ではなくオブジェクト指向の大原則の一つ
882デフォルトの名無しさん (ブーイモ MMcb-gJGD)
2019/11/24(日) 10:18:03.91ID:eHhiG+n9M >オブジェクト指向の大原則
w
w
883デフォルトの名無しさん (アウアウウー Sa9d-5f43)
2019/11/24(日) 10:25:13.16ID:0nk530rxa 大原則?
オブジェクト指向の原理主義的にはそもそもgetterを作るべきではないんだよ
getterを使うのは上司がタバコを吸いたいときに不器用な部下にしびれを切らして「お前、もういいからお前のライター寄越せ」
と言っているようなもので、オブジェクトから本来担うべき責務を剥ぎ取ってしまっている
火をつけろと命令を投げっぱなしにしておけば勝手に火をつけてくれるのが本来のオブジェクト指向の姿
オブジェクト指向の原理主義的にはそもそもgetterを作るべきではないんだよ
getterを使うのは上司がタバコを吸いたいときに不器用な部下にしびれを切らして「お前、もういいからお前のライター寄越せ」
と言っているようなもので、オブジェクトから本来担うべき責務を剥ぎ取ってしまっている
火をつけろと命令を投げっぱなしにしておけば勝手に火をつけてくれるのが本来のオブジェクト指向の姿
884デフォルトの名無しさん (ブーイモ MMcb-gJGD)
2019/11/24(日) 10:27:30.29ID:eHhiG+n9M 昔の人は言いました「100人のプログラマーがいたら100通りのオブジェクト指向がある」
885デフォルトの名無しさん (ワッチョイ 13a7-Xt/m)
2019/11/24(日) 10:33:58.10ID:/zc8WPZx0 なるほど
博士が100人いる村につながる胸熱展開ですね
博士が100人いる村につながる胸熱展開ですね
886デフォルトの名無しさん (ワッチョイ 132f-4eZD)
2019/11/24(日) 11:55:35.11ID:bu3J19Ko0 ところでみんな、警告って全部消してるのか?
887デフォルトの名無しさん (ラクッペ MMe5-kgoK)
2019/11/24(日) 12:11:25.46ID:TAL5a3TmM 消すの意味次第
抑制も含むなら消してる
抑制は含まないなら消してない
抑制も含むなら消してる
抑制は含まないなら消してない
888デフォルトの名無しさん (ワッチョイ f9da-Ke7D)
2019/11/24(日) 19:27:53.50ID:btk/7EiO0 vs2019になって警告増えたよね
889デフォルトの名無しさん (ササクッテロル Spc5-5oM1)
2019/11/25(月) 12:55:19.06ID:xUq4VGI0p 警告を消してないと納品出来ないから渋々消してる。
890デフォルトの名無しさん (ワッチョイ f9da-Ke7D)
2019/11/25(月) 14:11:59.51ID:qmWi7Xp+0 vs 2019でenumをuintで作ったらint32にしろって警告された
win32api用なんだけど使用時にキャストしろという事か
win32api用なんだけど使用時にキャストしろという事か
891デフォルトの名無しさん (ワイーワ2 FF63-KqLj)
2019/11/25(月) 14:22:13.25ID:pjJuONFZF 負の数混ぜてないか
892デフォルトの名無しさん (ワッチョイ d901-QS5Z)
2019/11/26(火) 16:49:39.39ID:/t5k7Bse0 フォルダファイルの情報集めてデータベース作りたいんですけど
データベースの種類って何がいいのかな?
3万件ぐらいのレコード、外部に持っていくこともしない
よろちしおねがいします
データベースの種類って何がいいのかな?
3万件ぐらいのレコード、外部に持っていくこともしない
よろちしおねがいします
893デフォルトの名無しさん (ワッチョイ 11da-r6xQ)
2019/11/26(火) 16:59:08.05ID:3+G7L2kq0 redisは早いぞ〜
894デフォルトの名無しさん (オイコラミネオ MM95-4UII)
2019/11/26(火) 17:04:50.13ID:tkOtmh9WM DB作って何がしたいのかしら
895デフォルトの名無しさん (アウアウウー Sa9d-xPlI)
2019/11/26(火) 17:44:33.63ID:0fuBmAsQa sqliteでいんじゃね?
896デフォルトの名無しさん (スップ Sd73-+jxl)
2019/11/26(火) 17:46:09.18ID:ffeAt8NAd 何がしたいのかによるよね
ぶっちゃけ外にださないんだったらcsvですらいいんじゃね?って気もするけど
ぶっちゃけ外にださないんだったらcsvですらいいんじゃね?って気もするけど
897デフォルトの名無しさん (オッペケ Src5-BEIG)
2019/11/26(火) 17:53:20.38ID:GH1P3tUMr linuxにはlocateコマンドと言うものがあってファイルを高速に検索できる
これはただあらかじめフルパスのファイル名を全部取っておいて一つのテキストファイルにまとめてあるだけ
用途次第で最適な方法は異なる
これはただあらかじめフルパスのファイル名を全部取っておいて一つのテキストファイルにまとめてあるだけ
用途次第で最適な方法は異なる
898デフォルトの名無しさん (オッペケ Src5-BEIG)
2019/11/26(火) 17:54:23.39ID:GH1P3tUMr フルパスそのままじゃなくて差分のようなテキストファイルを作っていたような気もする
899デフォルトの名無しさん (ワッチョイ d901-QS5Z)
2019/11/26(火) 23:01:40.76ID:/t5k7Bse0900デフォルトの名無しさん (ワッチョイ 6963-+jxl)
2019/11/26(火) 23:55:29.19ID:Rjqqllka0 いや、知りたいのはその書き出したファイル情報をどうしたいのか?なんだけど…
自分で作りたいというのが勉強を兼ねてるならsqliteとかでひとまず慣れるのが良いんじゃない?
自分で作りたいというのが勉強を兼ねてるならsqliteとかでひとまず慣れるのが良いんじゃない?
901デフォルトの名無しさん (ワッチョイ 9138-4UII)
2019/11/27(水) 00:05:09.92ID:a5fnDquJ0 教会作るのか扉作ってるのか木を切ってるのかっつー話よな
それはさておき
お手軽に使えるのはSQLiteでライブラリやマッパーも豊富
redisは高速でwebクラウド周りでは結構ちやほやされた
けどRDBとNoSQLの区別付いてるかは心配やな
外付けHDDの中身…か…
それはさておき
お手軽に使えるのはSQLiteでライブラリやマッパーも豊富
redisは高速でwebクラウド周りでは結構ちやほやされた
けどRDBとNoSQLの区別付いてるかは心配やな
外付けHDDの中身…か…
902デフォルトの名無しさん (オッペケ Src5-/L9V)
2019/11/27(水) 00:28:53.08ID:0UC6xAmXr テキストファイルにファイル名ずらっと並べて終わりだろう
903デフォルトの名無しさん (ワッチョイ d901-QS5Z)
2019/11/27(水) 11:14:29.53ID:TFRzaUoP0904デフォルトの名無しさん (アウアウウー Sa9d-xPlI)
2019/11/27(水) 11:29:33.07ID:IQPQs9eCa905デフォルトの名無しさん (ドコグロ MM63-5f43)
2019/11/27(水) 11:38:43.35ID:vYtjQlD0M SQL ServerとかそれこそWinのクラサバでしか使われてない無価値な技術だぞ
906デフォルトの名無しさん (ワッチョイ 7190-HqzV)
2019/11/27(水) 12:04:05.91ID:DM2fL27g0 sqliteは組み込みDBではメジャーだろ。androidアプリの標準ローカルDBがsqliteだし。iosのcoredbだって内部はsqlite使ってるだろ?
モバイルアプリでsqlite使われまくりだろ。
まぁ、最近はrealmだのあるが
モバイルアプリでsqlite使われまくりだろ。
まぁ、最近はrealmだのあるが
907デフォルトの名無しさん (スップ Sd73-wQSf)
2019/11/27(水) 12:10:33.33ID:gi64Bf5vd >>905
無知乙
無知乙
908デフォルトの名無しさん (ブーイモ MM33-r6xQ)
2019/11/27(水) 12:20:11.74ID:g28fiJsQM ボソッと Berkeley DB
909デフォルトの名無しさん (ワッチョイ f9da-Ke7D)
2019/11/27(水) 15:21:18.43ID:ZeR4ARRa0 sqliteはChromeとかfirefoxでも使ってるはず
910デフォルトの名無しさん (ワッチョイ 9138-4UII)
2019/11/27(水) 15:28:58.26ID:a5fnDquJ0 >>903
win環境ならSQL Serverは最有力選択肢だよ
C#前提ならVisualStudioとも統合されてるし、簡単に扱えるので取り回しもしやすくて情報も多い
気になるのはやろうとしてることに対して、若干大げさな構成かなという点かな
RDBの経験積みたいのが目的に含まれるなら全然アリよ
win環境ならSQL Serverは最有力選択肢だよ
C#前提ならVisualStudioとも統合されてるし、簡単に扱えるので取り回しもしやすくて情報も多い
気になるのはやろうとしてることに対して、若干大げさな構成かなという点かな
RDBの経験積みたいのが目的に含まれるなら全然アリよ
911デフォルトの名無しさん (オッペケ Src5-/L9V)
2019/11/27(水) 17:33:31.24ID:0UC6xAmXr インストールとかもSQLServerのインストールと設定込みになるから大げさだよ
インストール先でSQLserverの管理も必要になる(セキュリティーホールに対するアップデートなど)
sqliteがいいと思うよ
インストール先でSQLserverの管理も必要になる(セキュリティーホールに対するアップデートなど)
sqliteがいいと思うよ
912デフォルトの名無しさん (ワッチョイ 9138-4UII)
2019/11/27(水) 17:35:21.60ID:a5fnDquJ0 プロダクト目的なSQLite
勉強目的ならSQLServerっつーことで
勉強目的ならSQLServerっつーことで
913デフォルトの名無しさん (ドコグロ MMd5-hZ32)
2019/11/27(水) 20:07:31.01ID:w7hpp5weM SQLite3は当のMSが使ってたりするぐらいメジャー
https://qiita.com/h_matsumura/items/e1597a985de25e2ea9c8
https://qiita.com/h_matsumura/items/e1597a985de25e2ea9c8
914デフォルトの名無しさん (ワッチョイ d901-QS5Z)
2019/11/27(水) 22:24:42.73ID:TFRzaUoP0 >>904
さんくすです、現役なら今から勉強しても無駄にはならなそうですね
>>905
Microsoftはたまに、それ誰得よってのがあるから怖い
>>906
さんくす、androidに使われてたらしばらく安泰でつね
>>908
ちょと調べてみたけど、きびしい、頭の片隅に
>>910,912
さんくす、SQLServerも間違ってはいないのですね
DB使うまでもなくオーバスペックっぽいけど、練習になるから
>911
導入がメンドイのと保守もいると、さんくすね
>909
firefoxで使ってるのみました、でもFFは設計古いままきてるからどうなのかなって
>913
VisualStudioにsqliteいれといてくれたらいいのにね
みなさんさんくす、現在のDBの立ち位置がわかって、方向性がだいたい決まりました
まずはsqlite導入してみようかな
さんくすです、現役なら今から勉強しても無駄にはならなそうですね
>>905
Microsoftはたまに、それ誰得よってのがあるから怖い
>>906
さんくす、androidに使われてたらしばらく安泰でつね
>>908
ちょと調べてみたけど、きびしい、頭の片隅に
>>910,912
さんくす、SQLServerも間違ってはいないのですね
DB使うまでもなくオーバスペックっぽいけど、練習になるから
>911
導入がメンドイのと保守もいると、さんくすね
>909
firefoxで使ってるのみました、でもFFは設計古いままきてるからどうなのかなって
>913
VisualStudioにsqliteいれといてくれたらいいのにね
みなさんさんくす、現在のDBの立ち位置がわかって、方向性がだいたい決まりました
まずはsqlite導入してみようかな
915デフォルトの名無しさん (エムゾネ FFb2-Qbqw)
2019/11/28(木) 15:03:25.97ID:1U78x1XWF SQLiteって導入するほどのもんでもない
っていうか導入とかせんでも使えるし
っていうか導入とかせんでも使えるし
916デフォルトの名無しさん (ワッチョイ f538-CTFU)
2019/11/28(木) 15:06:08.02ID:A6hZkiU20 一緒んとこ置いて呼ぶだけやからなw
917デフォルトの名無しさん (ササクッテロ Sp79-x0FR)
2019/11/28(木) 16:30:32.78ID:JOfZpAUcp Nugetなりvcpkgでソッコで使えるしね
918デフォルトの名無しさん (スププ Sdb2-Hu9A)
2019/11/28(木) 16:38:21.51ID:WQY8IlVbd nugetで簡単にプロジェクト追加できるからVisual Studioに付属していないという批判はお門違い
919デフォルトの名無しさん (ブーイモ MMa6-Ud7Q)
2019/11/28(木) 17:59:07.38ID:lZQsc35zM >>917
しね、とはなんだよゴルァ
しね、とはなんだよゴルァ
920デフォルトの名無しさん (ワッチョイ f538-CTFU)
2019/11/28(木) 18:06:17.42ID:A6hZkiU20 >>917
まあこういう文章だと語尾がしねに読めちゃうのはしょうがないしね
まあこういう文章だと語尾がしねに読めちゃうのはしょうがないしね
921デフォルトの名無しさん (ワッチョイ a901-f/qG)
2019/11/28(木) 18:21:36.60ID:XY/WHPaW0 「〜だしね」からの「しねとは何だ!」ってのはいつものお約束だろw
むしろ愛を感じるわ。
むしろ愛を感じるわ。
922デフォルトの名無しさん (ドコグロ MM71-MhVQ)
2019/11/28(木) 19:31:57.14ID:jLfyQeMzM >>914
> VisualStudioにsqliteいれといてくれたらいいのにね
2019は知らんけど2017はVisual Studioのインストール時にSQL-Server LocalDBを入れるかどうかを聞いてきたような気がする
LocalDBは外部からの接続できないだけで中身はほとんどSQL-Server
Visual Studioからテーブル開いてデータを弄ることもできるしそこそこ便利よ
> VisualStudioにsqliteいれといてくれたらいいのにね
2019は知らんけど2017はVisual Studioのインストール時にSQL-Server LocalDBを入れるかどうかを聞いてきたような気がする
LocalDBは外部からの接続できないだけで中身はほとんどSQL-Server
Visual Studioからテーブル開いてデータを弄ることもできるしそこそこ便利よ
923デフォルトの名無しさん (ワッチョイ d9da-Cro1)
2019/11/28(木) 19:36:42.43ID:VrR/a7te0 sqliteもlinqで使えるの?
924デフォルトの名無しさん (ワッチョイ 9242-3RYV)
2019/11/28(木) 20:05:23.89ID:/zg9SHoG0 >>923
使いたいときはentityframeworkっていう似たようなものを被せて使います
使いたいときはentityframeworkっていう似たようなものを被せて使います
925デフォルトの名無しさん (ワッチョイ b5da-9mSp)
2019/11/28(木) 20:27:08.97ID:+uF2PV0n0 山車ね
926デフォルトの名無しさん (ワッチョイ 0901-R3ru)
2019/11/28(木) 20:59:45.72ID:huhp3ZI30927デフォルトの名無しさん (ワッチョイ 0901-R3ru)
2019/11/28(木) 21:06:27.46ID:huhp3ZI30 >>915-918
nugetも入れたほうがいいのかお
nugetも入れたほうがいいのかお
928デフォルトの名無しさん (ブーイモ MMd5-/3vA)
2019/11/28(木) 23:11:59.46ID:ttkv3u0hM genericsの〈T〉のTって動的に入れるのは無理?
System.Typeはわかってるんだが
System.Typeはわかってるんだが
929デフォルトの名無しさん (アウアウウー Sacd-e3ak)
2019/11/28(木) 23:17:10.55ID:1K1GwsjBa >>928
Type.MakeGenericType
Type.MakeGenericType
930デフォルトの名無しさん (ワッチョイ f538-CTFU)
2019/11/28(木) 23:52:03.59ID:A6hZkiU20 >>927
nugetを入れると言う以前にVS使ってソリューションて作るとすぐ使える状態にあるし
SQLiteを始めとして外部ライブラリを導入するならnuget使うのはc#では基本ツールと言えるので、使えたほうが良い
パッケージ管理にnugetが最適かは置いておくとして
nugetを入れると言う以前にVS使ってソリューションて作るとすぐ使える状態にあるし
SQLiteを始めとして外部ライブラリを導入するならnuget使うのはc#では基本ツールと言えるので、使えたほうが良い
パッケージ管理にnugetが最適かは置いておくとして
931デフォルトの名無しさん (ドコグロ MM71-MhVQ)
2019/11/29(金) 07:12:41.61ID:Q2zZop56M >>926
すまん、今ググったら入れるかどうかを聞かれるわけじゃなくて.NET desktop developmentを入れた時のオプションだったわ
https://i.stack.imgur.com/1u3O2.png
一応後からでも入れられるみたい
https://stackoverflow.com/questions/42774739/how-to-install-localdb-2016-along-with-visual-studio-2017
すまん、今ググったら入れるかどうかを聞かれるわけじゃなくて.NET desktop developmentを入れた時のオプションだったわ
https://i.stack.imgur.com/1u3O2.png
一応後からでも入れられるみたい
https://stackoverflow.com/questions/42774739/how-to-install-localdb-2016-along-with-visual-studio-2017
932デフォルトの名無しさん (アウアウウー Sacd-CRcH)
2019/11/29(金) 07:58:25.58ID:MT93SOfea sqliteだと配布も楽だしね。
933デフォルトの名無しさん (ワッチョイ 9242-3RYV)
2019/11/29(金) 08:44:50.30ID:k2xfmaZa0 sqliteやるとして、Dapperを使うかEF使うかは意見が分かれるところだね
ついでにSQLから始めるってことでDapperをお薦めしますが
EFはSQLを知らなくてもなんとかなるが、そのうち壁にぶち当たるだろうからね
ついでにSQLから始めるってことでDapperをお薦めしますが
EFはSQLを知らなくてもなんとかなるが、そのうち壁にぶち当たるだろうからね
934デフォルトの名無しさん (アウアウウー Sacd-e3ak)
2019/11/29(金) 08:52:58.95ID:buffyidfa SQLiteとEFの組み合わせはテスト専用だ
EFはサーバー用のフレームワークなのでSQLiteを使うようなスタンドアロンなアプリで使用されることは基本的にないし、
EFなんか被せたら軽量なSQLiteが台無し
EFはサーバー用のフレームワークなのでSQLiteを使うようなスタンドアロンなアプリで使用されることは基本的にないし、
EFなんか被せたら軽量なSQLiteが台無し
935デフォルトの名無しさん (アウウィフ FFcd-Qbqw)
2019/11/29(金) 12:06:03.16ID:N/f9f1S7F SQL-Server Local DB って MSDE のこととちゃうんけ
936デフォルトの名無しさん (ドコグロ MM71-MhVQ)
2019/11/29(金) 12:25:43.27ID:Q2zZop56M >>935
どんだけ情報更新されてないんだよw
どんだけ情報更新されてないんだよw
937デフォルトの名無しさん (ワッチョイ 1933-XJEi)
2019/11/29(金) 12:29:53.68ID:bcKuqIh50 MSDEつーか、SQL Server Expressだっけかな
938デフォルトの名無しさん (アウウィフ FFcd-Qbqw)
2019/11/29(金) 12:30:30.51ID:N/f9f1S7F 間違ってなくて安心した
939デフォルトの名無しさん (ワッチョイ 6e7c-1cCl)
2019/11/29(金) 12:45:06.14ID:IdASmNxu0 いや間違ってる
MSDEの後継はSQL Server Express
Local DBはそれとインターフェイス互換性を持たせた別製品
ExpressとCompactのあいのこみたいなもの
MSDEの後継はSQL Server Express
Local DBはそれとインターフェイス互換性を持たせた別製品
ExpressとCompactのあいのこみたいなもの
940デフォルトの名無しさん (アウウィフ FFcd-Qbqw)
2019/11/29(金) 13:03:59.73ID:N/f9f1S7F ありがとう
SQLite とは関係無いことは判った
SQLite の簡単さとは比べ物にならない
SQLite とは関係無いことは判った
SQLite の簡単さとは比べ物にならない
941デフォルトの名無しさん (ワッチョイ 5561-3RYV)
2019/11/29(金) 14:58:40.82ID:HgnfNDDk0 SQLLiteてUPDATE文に結合テーブル使えないんだっけ
942デフォルトの名無しさん (ドコグロ MM71-MhVQ)
2019/11/29(金) 19:40:54.65ID:/qBs46JEM >>939
> Local DBはそれとインターフェイス互換性を持たせた別製品
> ExpressとCompactのあいのこみたいなもの
お前もテキトーなこと書くなよw
LocalDBはエンジンはExpressとほぼ同じで外部からの接続ができないだけ
Compactは全く別物で使えるSQLも異なる
> Local DBはそれとインターフェイス互換性を持たせた別製品
> ExpressとCompactのあいのこみたいなもの
お前もテキトーなこと書くなよw
LocalDBはエンジンはExpressとほぼ同じで外部からの接続ができないだけ
Compactは全く別物で使えるSQLも異なる
943デフォルトの名無しさん (ワッチョイ b5da-9mSp)
2019/11/29(金) 21:23:09.62ID:PfmOYk0/0 20年程前にSYBASEと分離したけど
大元は同じだったり
大元は同じだったり
944デフォルトの名無しさん (スププ Sdb2-Hu9A)
2019/11/29(金) 22:31:53.69ID:XR55tucPd MS製でサーバーインスコ必要ないSQLはmdbということになる?
945デフォルトの名無しさん (ワッチョイ 926a-XJEi)
2019/11/29(金) 22:40:51.06ID:IQbSmMMZ0 >>944
JETなりは必要になるんじゃ?
JETなりは必要になるんじゃ?
946デフォルトの名無しさん (アウアウウー Sacd-e3ak)
2019/11/29(金) 22:53:16.05ID:xO30F0VUa なんでMSはAccessやめちゃったんだろうな
さっさとWeb移行して真面目に開発続けてればSalesforceみたいな糞に出番はなかったのに
さっさとWeb移行して真面目に開発続けてればSalesforceみたいな糞に出番はなかったのに
947デフォルトの名無しさん (ワッチョイ 655f-8b9h)
2019/11/29(金) 22:58:29.32ID:J8/N3ImM0 >>944
SQL Server Compact…はまだ生きてたっけ?
SQL Server Compact…はまだ生きてたっけ?
948デフォルトの名無しさん (ワッチョイ 926a-XJEi)
2019/11/29(金) 23:00:31.63ID:IQbSmMMZ0 >>947
Compactは終了で、その代わりがlocalDBなんじゃなかったっけ
Compactは終了で、その代わりがlocalDBなんじゃなかったっけ
949デフォルトの名無しさん (ワッチョイ 0901-R3ru)
2019/11/29(金) 23:16:39.14ID:Z1Tig2XP0950デフォルトの名無しさん (ワッチョイ 8101-Tzvd)
2019/11/30(土) 10:23:08.45ID:o+UOyhff0951デフォルトの名無しさん (ワッチョイ 9242-3RYV)
2019/11/30(土) 14:43:46.04ID:20NjWWXF0952デフォルトの名無しさん (ワッチョイ 0d7d-nO0S)
2019/12/01(日) 16:07:57.01ID:r7b9vkne0 ASP.NET Webフォームでオブジェクト指向な作りって出来ますか?Pageクラスを継承した画面ごとのクラスが基本となると思うんですが、それらとは別にドメインオブジェクトを定義すればいいんでしょうか?
古いフレームワークのせいか、参考になる情報がWeb上で見つからず困っています
古いフレームワークのせいか、参考になる情報がWeb上で見つからず困っています
953デフォルトの名無しさん (ワッチョイ f538-CTFU)
2019/12/01(日) 17:00:26.82ID:B1zYgJIz0 ドメインオブジェクトはどんなフレームワークでも作るのはまあ基本
954デフォルトの名無しさん (ワッチョイ 122f-Ql8R)
2019/12/01(日) 17:01:47.30ID:BdsW8ng60 C#にしてもVB.Netにしても、オブジェクト指向な言語だからできるだろ
オブジェクト指向な作りってどんなのを指してるんだ?
オブジェクト指向な作りってどんなのを指してるんだ?
955デフォルトの名無しさん (ワッチョイ 6e02-14DC)
2019/12/01(日) 17:09:16.81ID:4wBvZE+S0 extendsを使いグローバル変数で回さないことかな
956デフォルトの名無しさん (アウウィフ FFcd-Qbqw)
2019/12/01(日) 17:30:22.41ID:zxgavQqmF mdb は Access 無くても作れるし使える
wsh からも作れるし
python からでも win32com とか adodb とかで生成も操作も可能
wsh からも作れるし
python からでも win32com とか adodb とかで生成も操作も可能
957デフォルトの名無しさん (ワッチョイ 9201-MhVQ)
2019/12/01(日) 17:54:34.01ID:Enyr5Fgf0958デフォルトの名無しさん (オッペケ Sr79-o7DB)
2019/12/01(日) 20:13:56.38ID:/00m1kV3r 昔はVSでもGUI上からmdb作れた気がするけどc#からコードで作れたと思う
959デフォルトの名無しさん (ワッチョイ 2517-3RYV)
2019/12/01(日) 20:33:15.39ID:eAT9QJyK0 COMオブジェクト参照するの気持ち悪いな
960デフォルトの名無しさん (ワッチョイ f538-CTFU)
2019/12/01(日) 20:38:52.40ID:B1zYgJIz0 扱い面倒だからね
自分だけなら良いけど
人が触ると直ぐに解放漏れするし
gc.Collect連打とか
自分だけなら良いけど
人が触ると直ぐに解放漏れするし
gc.Collect連打とか
961デフォルトの名無しさん (ワッチョイ 92a5-o7DB)
2019/12/02(月) 00:32:28.82ID:6ndr7bm90 windowsなんてcomの塊なのに
962デフォルトの名無しさん (アウアウウー Sacd-e3ak)
2019/12/02(月) 00:48:30.78ID:GldGaTIna モダンアプリではより完全なCOMベースになったね
.NETなんかいらんかったんや
.NETなんかいらんかったんや
963デフォルトの名無しさん (ワッチョイ f122-Hu9A)
2019/12/02(月) 02:17:05.78ID:seAdfS0z0 >>959
ADO.NETじゃアカンの?
ADO.NETじゃアカンの?
964デフォルトの名無しさん (ワッチョイ 2590-8b9h)
2019/12/02(月) 21:29:05.38ID:TV8SuK+L0 組み込みっていったっていまどきマルチスレッド当たり前で、要は
マルチユーザーでアクセスするのと同じなんだが、組み込みDBは行ロックが
ないのが痛すぎる。大きめのバッチ走らせると行ロックないから
他から更新できなくなるし。
マルチユーザーでアクセスするのと同じなんだが、組み込みDBは行ロックが
ないのが痛すぎる。大きめのバッチ走らせると行ロックないから
他から更新できなくなるし。
965デフォルトの名無しさん (スププ Sdb2-Hu9A)
2019/12/02(月) 22:09:18.94ID:wKwMS0nkd >>964
用途に応じて使い分ければいいんじゃないでしょうか
用途に応じて使い分ければいいんじゃないでしょうか
966デフォルトの名無しさん (ワッチョイ a22d-Mdr6)
2019/12/02(月) 23:30:52.06ID:kOdIgETi0 Newtonsoft.Jsonに絡み、C#の文法や仕組みがよくわからないので教えてください
https://www.newtonsoft.com/json
前者のコードが通ること、対して後者が通らないことの理由がそれぞれよくわかりません
var jsonString = JsonConvert.SerializeObject(new {asdf = "asdf"});
var jsonString = JsonConvert.SerializeObject(new {var asdf = "asdf"});
JsonConvert.SerializeObjecメソッドに匿名のオブジェクトを作成して渡すのであれば、宣言を含めきちんと作成した後者のコードになるような気がしてしまいますが・・・・一体どういうことなのですか?
https://www.newtonsoft.com/json
前者のコードが通ること、対して後者が通らないことの理由がそれぞれよくわかりません
var jsonString = JsonConvert.SerializeObject(new {asdf = "asdf"});
var jsonString = JsonConvert.SerializeObject(new {var asdf = "asdf"});
JsonConvert.SerializeObjecメソッドに匿名のオブジェクトを作成して渡すのであれば、宣言を含めきちんと作成した後者のコードになるような気がしてしまいますが・・・・一体どういうことなのですか?
967デフォルトの名無しさん (ワッチョイ d963-CbTA)
2019/12/02(月) 23:37:45.37ID:uoYmKGGq0 匿名型でvarを使う文法が存在しないからじゃねーの
968デフォルトの名無しさん (ワッチョイ d963-CbTA)
2019/12/02(月) 23:38:00.50ID:uoYmKGGq0969デフォルトの名無しさん (ワッチョイ a22d-Mdr6)
2019/12/03(火) 00:00:10.26ID:joV0JnEl0970デフォルトの名無しさん (ワッチョイ a54f-MSc7)
2019/12/08(日) 19:26:34.55ID:NRgw7da20 WindowsフォームのListBoxのアイテムの順番を
マウスでドラッグして移動出来たりはしないでしょうか?
マウスでドラッグして移動出来たりはしないでしょうか?
971デフォルトの名無しさん (アウアウクー MM41-miCc)
2019/12/08(日) 20:35:42.68ID:FzxO83mcM972デフォルトの名無しさん (ワッチョイ a54f-MSc7)
2019/12/08(日) 21:37:23.18ID:NRgw7da20 ありがとう!やってみる
973デフォルトの名無しさん (ワッチョイ 2b0d-uDkH)
2019/12/11(水) 00:30:39.25ID:Apb01tOE0 vs2019って新規作成でフォーム作れます?いきなりユーザーコントロールしかなくないですか?
974デフォルトの名無しさん (ワッチョイ a501-LTTH)
2019/12/11(水) 00:38:14.09ID:FG7l6DGf0 モルダー、あなた疲れてるのよ
975デフォルトの名無しさん (ワッチョイ 23da-YEgJ)
2019/12/11(水) 00:47:13.40ID:X8nac/9U0976デフォルトの名無しさん (ワッチョイ 2b0d-uDkH)
2019/12/11(水) 01:50:25.70ID:Apb01tOE0 はいはいそうですか
977デフォルトの名無しさん (ワッチョイ 2342-Fgt1)
2019/12/11(水) 07:25:39.35ID:FImiT/Ke0 >>976
右上二行目のコンボボックスが「AddOn」となっているだろうが、そこを「デスクトップ」にする
右上二行目のコンボボックスが「AddOn」となっているだろうが、そこを「デスクトップ」にする
978デフォルトの名無しさん (ワッチョイ 1524-Fgt1)
2019/12/11(水) 11:18:11.21ID:mMKqVbip0 WPFのStack、WrapPanelなどのコンテナ上の余白クリック時にイベントを追加したいのですが、Background="#00000000"とすることでそれ自体は達成することが出来ました
しかし該当コンテナ上に配置されてるButtonなどのコントロールをクリックしたときもコンテナに追加したクリックイベントを拾ってしまいます
あくまで余白クリック時のみ発生させたいのですが、何か方法はないでしょうか?
しかし該当コンテナ上に配置されてるButtonなどのコントロールをクリックしたときもコンテナに追加したクリックイベントを拾ってしまいます
あくまで余白クリック時のみ発生させたいのですが、何か方法はないでしょうか?
979デフォルトの名無しさん (アウアウウー Saa9-XnaB)
2019/12/11(水) 12:35:45.56ID:R9jKaic8a >>978
ルーティングイベントを止めればええ
ルーティングイベントを止めればええ
980デフォルトの名無しさん (ワッチョイ 1524-Fgt1)
2019/12/11(水) 12:54:59.33ID:mMKqVbip0 >>979
if (!(sender is StackPanel)) { e.Handled = true; return; }
これを先頭に追加してみたところ希望の動作になりました。
どうもありがとうございます。
if (!(sender is StackPanel)) { e.Handled = true; return; }
これを先頭に追加してみたところ希望の動作になりました。
どうもありがとうございます。
981デフォルトの名無しさん (ワッチョイ 4b7b-iKQf)
2019/12/11(水) 20:04:02.78ID:ohlEvVsV0 >>980を踏んだ人は新スレを建てて下さい
次スレよろしく
次スレよろしく
982デフォルトの名無しさん (ワッチョイ 1524-Fgt1)
2019/12/11(水) 22:13:29.51ID:mMKqVbip0983デフォルトの名無しさん (ワッチョイ 4b7b-iKQf)
2019/12/11(水) 22:22:20.09ID:L93wxtPA0 >>982
スレたて乙
スレたて乙
984デフォルトの名無しさん (ワッチョイ f050-RbSw)
2019/12/28(土) 00:46:39.13ID:oR/9kMuC0 めちゃくちゃ初歩的な話で恐縮ですが…
Visual Studio 2019でWPFアプリを作ってみようとして最初の最初でつまづきました
参考にしたURLは↓
C# で WPF を使った Hello World アプリ - Visual Studio | Microsoft Docs
https://docs.microsoft.com/ja-jp/visualstudio/get-started/csharp/tutorial-wpf?view=vs-2019
1.新プロジェクトを作成(WPF App(.NET Core))
2.ツールボックス > コモンWPFコントロールからTextBlockをデザインサーフェイス上に配置
3.配置したTextBlockを削除
4.再度、ツールボックスからTextBlockを配置
5.このスコープで重複する名前 'textBlock' を登録することはできません。 と言われエラーになる
コントロールの名称を変更すれば良いのだとは思いますが、
表面上は1つ目のコントロールなのにtextBlock2のような名前に変更しなければならないのは気持ちが悪いです
そもそも先に配置したコントロールを削除したのに重複エラーと言われてしまうのがよく解りません
一旦配置してしまうと、削除してもどこかにデータが残ってしまうのでしょうか?
Visual Studio 2019でWPFアプリを作ってみようとして最初の最初でつまづきました
参考にしたURLは↓
C# で WPF を使った Hello World アプリ - Visual Studio | Microsoft Docs
https://docs.microsoft.com/ja-jp/visualstudio/get-started/csharp/tutorial-wpf?view=vs-2019
1.新プロジェクトを作成(WPF App(.NET Core))
2.ツールボックス > コモンWPFコントロールからTextBlockをデザインサーフェイス上に配置
3.配置したTextBlockを削除
4.再度、ツールボックスからTextBlockを配置
5.このスコープで重複する名前 'textBlock' を登録することはできません。 と言われエラーになる
コントロールの名称を変更すれば良いのだとは思いますが、
表面上は1つ目のコントロールなのにtextBlock2のような名前に変更しなければならないのは気持ちが悪いです
そもそも先に配置したコントロールを削除したのに重複エラーと言われてしまうのがよく解りません
一旦配置してしまうと、削除してもどこかにデータが残ってしまうのでしょうか?
985デフォルトの名無しさん (ドコグロ MM46-BCWm)
2019/12/28(土) 09:45:41.95ID:pvVVcNyyM XAMLを見て必要なら手で直せとしか
WPFのデザイナは貧弱であり、基本的にはデザイナは補助と割り切って手でXAMLを弄る必要があるし、それが認められている
WPFは既にメンテナンスモードに入っており、今後改善される見込みもない
あとWinFormsと異なりWPFではどうしても必要な場合を除きコントロールのNameは指定しないのが基本
WPFのデザイナは貧弱であり、基本的にはデザイナは補助と割り切って手でXAMLを弄る必要があるし、それが認められている
WPFは既にメンテナンスモードに入っており、今後改善される見込みもない
あとWinFormsと異なりWPFではどうしても必要な場合を除きコントロールのNameは指定しないのが基本
986デフォルトの名無しさん (ワッチョイ f050-RbSw)
2019/12/28(土) 11:07:45.18ID:oR/9kMuC0 >>985
おっしゃっている"手で直す"とは、どこのことでしょうか?
例として、
1.TextBlockをデザイナに追加
2.TextBlockタグのx:Nameを"textBlock5"に変更
3.TextBlockを削除(マークアップ側のTextBlockタグも消える)
4.再度TextBlockをデザイナに追加(マークアップ側にTextBlockタグが追加される)
5.TextBlockタグのx:Nameを"textBlock5"に変更
6.重複エラー
このようになるのですが、やはり textBlock5 がどこに残っているのか見つけられません
現在のプロジェクトを対象に"textBlock5"を検索してみましたが見つかりませんでした
プロジェクト作成時はxamlが↓のようになっており
<Window x:Class="HelloWPFApp.MainWindow"
中略
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>
コントロールを追加するとGridタグ内にタグが追加されます↓
<Grid>
<TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="159,236,0,0" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Top"/>
</Grid>
参考URLのマークアップでは x:Name="textBlock" が記述されていなかったため、その部分を削除したところエラーは消えました
>コントロールのNameは指定しないのが基本
というのは、ここのx:Nameのことでしょうか?
ただ、上記の通り重複している名前がどこに残っているのか解らないため
根本的な解決になっていません
おっしゃっている"手で直す"とは、どこのことでしょうか?
例として、
1.TextBlockをデザイナに追加
2.TextBlockタグのx:Nameを"textBlock5"に変更
3.TextBlockを削除(マークアップ側のTextBlockタグも消える)
4.再度TextBlockをデザイナに追加(マークアップ側にTextBlockタグが追加される)
5.TextBlockタグのx:Nameを"textBlock5"に変更
6.重複エラー
このようになるのですが、やはり textBlock5 がどこに残っているのか見つけられません
現在のプロジェクトを対象に"textBlock5"を検索してみましたが見つかりませんでした
プロジェクト作成時はxamlが↓のようになっており
<Window x:Class="HelloWPFApp.MainWindow"
中略
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>
コントロールを追加するとGridタグ内にタグが追加されます↓
<Grid>
<TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="159,236,0,0" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Top"/>
</Grid>
参考URLのマークアップでは x:Name="textBlock" が記述されていなかったため、その部分を削除したところエラーは消えました
>コントロールのNameは指定しないのが基本
というのは、ここのx:Nameのことでしょうか?
ただ、上記の通り重複している名前がどこに残っているのか解らないため
根本的な解決になっていません
987デフォルトの名無しさん (ワッチョイ 2fad-eHIc)
2019/12/28(土) 11:15:27.00ID:rkUgfi/c0 xaml は xml(テキスト)ファイルだから、テキストエディタで開いてその名前で検索してみれば見つかるんじゃないの。
見つけたら余計な設定があるはずなので、それを読み取って自力で削除すれば。
ってことでは。
見つけたら余計な設定があるはずなので、それを読み取って自力で削除すれば。
ってことでは。
988デフォルトの名無しさん (ワッチョイ f050-RbSw)
2019/12/28(土) 11:24:05.48ID:oR/9kMuC0 >>987
986の書き方では良くなかったでしょうか
xamlファイルの中身は
<Window x:Class="HelloWPFApp.MainWindow"
中略
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>
となっていて、コントロールを追加するとGridタグ内にタグが追加されます↓
<Grid>
<TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="159,236,0,0" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Top"/>
</Grid>
コントロールを削除すると、TextBlockタグも消えます
コントロールの追加/削除で変更があるのはこの行だけです
その後、現在のプロジェクトを対象としてx:Nameに指定してあった値を検索しても見つからなかったんです
xamlファイルをテキストエディタで開き直しても中身は同じです
986の書き方では良くなかったでしょうか
xamlファイルの中身は
<Window x:Class="HelloWPFApp.MainWindow"
中略
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>
となっていて、コントロールを追加するとGridタグ内にタグが追加されます↓
<Grid>
<TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="159,236,0,0" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Top"/>
</Grid>
コントロールを削除すると、TextBlockタグも消えます
コントロールの追加/削除で変更があるのはこの行だけです
その後、現在のプロジェクトを対象としてx:Nameに指定してあった値を検索しても見つからなかったんです
xamlファイルをテキストエディタで開き直しても中身は同じです
989デフォルトの名無しさん (ワッチョイ 4624-K0SF)
2019/12/28(土) 11:31:09.48ID:iFSWdOZd0 >>986
XamlデザイナではC#エディタと違ってどこで重複してるのかまでは教えてくれないね確か
でもエラー箇所は下線が付くはずだからそれで見つけられるはず
x:Name=""やName=""は名指しでのアクセスが必要にならない限りは指定しないのが普通
そのコントロールでのイベントからのアクセスなら、例えば<Button Click="buttonClick" />なら下記のようにsenderをキャストすることによってアクセス出来るので、Name属性はそうそう必要にならないはず
private void buttonClick(object sender, RoutedEventArgs e)
{
var button = (Button)sender;
}
XamlデザイナではC#エディタと違ってどこで重複してるのかまでは教えてくれないね確か
でもエラー箇所は下線が付くはずだからそれで見つけられるはず
x:Name=""やName=""は名指しでのアクセスが必要にならない限りは指定しないのが普通
そのコントロールでのイベントからのアクセスなら、例えば<Button Click="buttonClick" />なら下記のようにsenderをキャストすることによってアクセス出来るので、Name属性はそうそう必要にならないはず
private void buttonClick(object sender, RoutedEventArgs e)
{
var button = (Button)sender;
}
990デフォルトの名無しさん (ワッチョイ f050-RbSw)
2019/12/28(土) 14:57:45.16ID:oR/9kMuC0 「x:Name="" は基本的には不要」という話は解りました
何度も書いていますが、デザイナにコントロールを配置した時点で自動生成されるコードにx:Nameが存在しているのであって
私が追記したものではありません
それはそれとして、重複エラーになってしまうことの根本的な解決法が知りたいのです
何度も書いていますが、デザイナにコントロールを配置した時点で自動生成されるコードにx:Nameが存在しているのであって
私が追記したものではありません
それはそれとして、重複エラーになってしまうことの根本的な解決法が知りたいのです
991デフォルトの名無しさん (ワッチョイ f050-RbSw)
2019/12/28(土) 16:10:36.19ID:oR/9kMuC0 自己解決しました
恐らくデザイナに追加した時点でメモリにロードされ
コードを削除してもメモリ上にデータが残っているので重複とされてしまうようです
一旦xamlファイルを閉じ、開き直してからコントロールを追加するとエラーになりませんでした
恐らくデザイナに追加した時点でメモリにロードされ
コードを削除してもメモリ上にデータが残っているので重複とされてしまうようです
一旦xamlファイルを閉じ、開き直してからコントロールを追加するとエラーになりませんでした
992デフォルトの名無しさん (オッペケ Srd7-dR36)
2019/12/28(土) 18:23:00.02ID:euZyKjoir .VSでのnet coreのWPF対応が全然ダメダメなのに
>新しい開発には .NET Core をお勧めします。
と書いちゃうMSはダメだろ
>新しい開発には .NET Core をお勧めします。
と書いちゃうMSはダメだろ
993デフォルトの名無しさん (オッペケ Srd7-dR36)
2019/12/28(土) 18:33:26.16ID:euZyKjoir .net coreのWPF自体が未完成品レベルなのに何で使うのかな
994デフォルトの名無しさん (ワッチョイ e2ad-SvJ4)
2019/12/29(日) 00:55:27.84ID:wQPPCmQj0995デフォルトの名無しさん (ワッチョイ efda-BXgI)
2019/12/29(日) 02:31:33.81ID:N0Ta2GQF0 立場上、忖度しないといけないから行間読んでくれってことでしょ。
996デフォルトの名無しさん (オッペケ Srd7-dR36)
2019/12/29(日) 16:24:52.91ID:KHmi1cQer 今のレベルの.net coreのWPFは趣味レベルならいいけど
商売に使うレベルの物じゃない
商売に使うレベルの物じゃない
997デフォルトの名無しさん (ドコグロ MM36-BCWm)
2019/12/29(日) 16:33:44.41ID:J2Lmqp1KM それを言ったらWPF自体が…
だいたい、既存のWPFアプリケーションをSCDで塩漬けにすることでMSや開発者がメンテから解放されるというのが.NET Core移植の目的なわけで、
そもそも新規に使うもんじゃないんだよ
デザイナなんか本来要らないの
だいたい、既存のWPFアプリケーションをSCDで塩漬けにすることでMSや開発者がメンテから解放されるというのが.NET Core移植の目的なわけで、
そもそも新規に使うもんじゃないんだよ
デザイナなんか本来要らないの
998デフォルトの名無しさん (ワッチョイ efda-BXgI)
2019/12/30(月) 08:29:40.81ID:GqGnUSog0 Windows.FormsのDataGridViewで2カラムのみの状態で、カラム幅をちょうど半分ずつにするには
どうすればよいでしょうか?
どうすればよいでしょうか?
999デフォルトの名無しさん (ワッチョイ 9317-K0SF)
2019/12/30(月) 09:22:09.70ID:VA5+g/lT0 グリッド幅を2で割ってそれをカラム幅にセットする
1000デフォルトの名無しさん (ワッチョイ fcde-zEes)
2019/12/30(月) 09:34:46.49ID:dvqJbcrW0 RowHeader「チッす」
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 83日 13時間 18分 29秒
新しいスレッドを立ててください。
life time: 83日 13時間 18分 29秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【神奈川県警】「ストーカー相談受けた認識なし」川崎20歳女性遺体 県警が被害相談などへの当時の対応を説明 ★4 [ぐれ★]
- 基礎年金満額でも貧困リスク 氷河期世代、生活保護急増も [蚤の市★]
- 【図解】広末涼子さん、5度衝突後に停止か…3車線横断、両側面に [おっさん友の会★]
- 【万博】利用者「この料金設定は“常識”を外れている」6500円、万博駐車場はGWでもガラガラ [おっさん友の会★]
- 【中居正広】“強力な弁護団”を組み反撃準備 女性トラブルの現場「10億円マンション」売却の動きも 売値は25億円超か [Ailuropoda melanoleuca★]
- 【テレビ】藤本敏史さんの行為が物議 女性マネジャーの食べ残しを勝手に口に…これは「ハラスメント」なのか 弁護士見解 [少考さん★]
- 【重要】大谷ホームラン [617981698]
- 井川意高 「ニューヨーク生まれでロンドン在住が一人前の日本人ヅラするんじゃねえわ、愛国心のないクソ女が」 [476729448]
- 【悲報】嫌儲、ゴールデンウィークの昼12時にも関わらず過疎が深刻。本格的に終焉近づく。もう終わりだよこの匿名掲示板😿 [803137891]
- 😁🫴三🧨 🏡
- 【速報】大谷翔平、ソロホームラン
- クソコテが全レスするかも