!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
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 1e7b-qjLW)
2019/10/07(月) 20:16:17.93ID:9eyAES450745デフォルトの名無しさん (ワッチョイ 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に意味合いが異なると注記したつもりではあった
今見返しても表記に関しての話題転換にしか見えないけど
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【野球】野球の未来に危機感「マイナースポーツになる」 宮本慎也氏が開催…学童大会 [尺アジ★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 中国「日本のネトウヨを根絶してやるからな」。ネトウヨ、人生が終わる [805596214]
- おはようございます [577451214]
- (´・ω・`)刑務所での暮らしwwwwwwwwwwwwwwww
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- なぜ人間は架空の人物に感情移入するのか
- 【愛国者速報】山上徹也、金に困りTwitterのお金配り垢に応募していた。犯行もお金があったら暫くやらなかったと供述 [856698234]
