ふらっと C#,C♯,C#(初心者用) Part148

■ このスレッドは過去ログ倉庫に格納されています
2020/05/27(水) 10:14:39.92ID:wHIUQvvs
■前スレ
ふらっと C#,C♯,C#(初心者用) Part147
http://mevius.5ch.net/test/read.cgi/tech/1582100741/
■関連スレ
C#, C♯, C#相談室 Part94
http://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
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
2020/08/28(金) 05:31:50.04ID:oE2/2ycX
JavaでGUIプログラムを作るのは大変なのに、それを画期的に簡単にしている
WinFormsを喜んで捨てるようなM$じゃないと思うぞw
まああれは元をたどればDelphiなんだがw
2020/08/28(金) 07:41:53.11ID:H7JELY0H
WinFormsってかWin32GUIの技術って覚えても他で応用効かないのがなぁ
GUIもHTMLで構築するのが最近の流れなだしC#もそうしてほしい
WPFもなんか違うし
2020/08/28(金) 07:43:09.49ID:uRkPXEbP
C++のGUIプログラムも簡単に作れたら良いな……
2020/08/28(金) 08:00:57.34ID:82Ydq7Fl
>>752
C++Builder
2020/08/28(金) 08:02:48.39ID:82Ydq7Fl
と言うか32bit時代は仕事にC++Builder本当に使ってたんだが
C#が出たんであっさりこれを捨てた
2020/08/28(金) 09:02:21.12ID:OvBt5QFO
Delphiも業務で使ってたな
2020/08/28(金) 11:31:52.66ID:cNFgn67M
WPFはバインドがもっと楽に書ければ良かったんだが
757デフォルトの名無しさん
垢版 |
2020/08/28(金) 12:06:01.11ID:LLs1s+XQ
>>747
WPF
758デフォルトの名無しさん
垢版 |
2020/08/28(金) 12:08:43.97ID:LLs1s+XQ
>>752
Tcl/Tk
WxWidgets
2020/08/28(金) 12:19:49.25ID:1Z5uoBOo
WPFはGUIに動画流すつもりでもない限りいらんわ〜
2020/08/28(金) 13:11:19.21ID:7/vp4FHO
FormsはVBゆずりのポトペタで素早くGUIアプリをでっち上げるのは
ほんとうに楽でいいんだけど、複雑になってくるとデザイナーで
編集するのが辛くなってくるし自動テストも面倒くさいな。
2020/08/28(金) 13:13:34.94ID:uRkPXEbP
>>753
>>758
あとで調べてみるわトン
2020/08/28(金) 13:20:23.57ID:MLu0ChVJ
Formsは高DPI対応が面倒
2020/08/28(金) 14:14:53.89ID:VQ4yRaWS
Electron.Netが最強伝説
764デフォルトの名無しさん
垢版 |
2020/08/28(金) 15:25:31.29ID:3b9hSP4x
MVVMパターンは必ず適用しなければいけないものではないので、それが理解できなくとも、WPFはWinFormsと同じようなスタイルでもプログラミングができる。
なので、WinFormsを使っている人は、そのことを知らないか、またはWPFで用意されているコントロール群が貧弱だと思った(自作する気のない)人なのではないだろうか。
しかし、最新のWinUIでは用意されているコントロールが過去一で豊富になるようで脱WinFormsが加速するように思われます。
2020/08/28(金) 15:42:28.39ID:VQ4yRaWS
WPFってしばらく開発すら放置していたのとクソ重いのは治ったの?
766デフォルトの名無しさん
垢版 |
2020/08/28(金) 16:20:09.70ID:3b9hSP4x
Windows 10の標準アプリをいくつか触って確認するといい。
2020/08/28(金) 16:49:22.87ID:EkP+GA07
WinUIってそんなのあるのか
UWPはどうなるんやw

っていうかWPFを使う気になれなかった理由の一つが
超絶高パフォーマンス(もちろん皮肉)をたたき出す保持モードのグラフィックだけど、
今度はそのあたりもうちょっと現実的な方法が用意されてるのかな

あと印刷関係も訳分からんかったよねw
768デフォルトの名無しさん
垢版 |
2020/08/28(金) 18:39:18.85ID:XFujtf5p
スマホとデスクトップで同じアプリが動く世界では。

スマホから印刷した場合とデスクトップから印刷した場合では、結果が違うの?
同じA4なのに?
ってなるから。

WYSIWYGは意味が無くなる。
2020/08/28(金) 18:58:59.43ID:OvBt5QFO
>>763
そういう流れになるに1票
770デフォルトの名無しさん
垢版 |
2020/08/28(金) 19:53:00.97ID:3b9hSP4x
これからもWindows GUI プログラミングを続けるつもりならXAML Controlls Galleryをインストールしておくと良いと思う。
様々なコントロールのサンプルが触れるかたちで見ることができる。
サンプルコードもWinFormsに近いスタイルで書かれていて、XAMLが絡むと難しくなると思っている人たちのもつ誤解も解けるだろう。
2020/08/28(金) 21:45:41.12ID:7/vp4FHO
>>767
高速な描画が必要な用途にはDirectX使う前提じゃね?
だから標準には柔軟な保持モードを採用したんだろう。
2020/08/28(金) 21:54:12.26ID:6oFjsBbz
WinFormsにWebBrowserControl貼り付けてUIはHTML/CSSで組むのがお勧め。
2020/08/28(金) 21:58:41.36ID:QzB/6hkA
そんなのお母さん許しません
774デフォルトの名無しさん
垢版 |
2020/08/28(金) 22:03:15.85ID:V3zcyyrc
そりゃないよかあちゃん
2020/08/28(金) 22:47:37.28ID:b7nBc/Fx
>>752
しばらく前はWTLで組んでたな
776デフォルトの名無しさん
垢版 |
2020/08/28(金) 22:50:58.50ID:3b9hSP4x
私もマルチプラットフォームという言葉に飛びついてきた人間ですが、結局のところ、それを求めるのはプログラマーであり、カスタマーではないことに気付きました。
カスタマーは最大限のユーザーエクスペリエンスを求めています。
つまり、それはどちらかというとネイティブなアプリであるということの方が近いわけです。
iOSを使っている人間は、Androidアプリが粗悪であろうとiOSアプリで最大限の体験ができればそれで良いのです。
であれば、やはりそれぞれにそれぞれのものを作り上げることが必要です。
GUIプログラミングにおいては、マルチプラットフォームという言葉は弱者の縋る藁でしかありません。
カスタマー・ファースト、それぞれに最高のものを。
さあ、マルチプラットフォームを捨てよう。
2020/08/28(金) 23:08:15.22ID:IRRC70To
>>776
VSCodeはマルチプラットフォームだけど大成功してるじゃん
778デフォルトの名無しさん
垢版 |
2020/08/29(土) 11:12:08.33ID:HmjSn9P9
Unityで造ってWebGLで公開するのが最強
2020/08/29(土) 13:21:22.89ID:1Tm3n33G
>>777
VSCodeってプラットフォーム間でどの程度ソース共通なの?
2020/08/29(土) 14:33:42.78ID:gxxzDfcY
いや本気でelectron.netがガチ最強だろ
2020/08/29(土) 14:45:06.54ID:vdfuX+h6
どうしてelectronしないのよォッ
2020/08/29(土) 15:20:51.27ID:uDIS5Gf0
誠に申し上げにくいのですが…

加齢

です…
2020/08/29(土) 19:43:09.00ID:qgT4YAAE
そのネタは10回以上聞いた
784デフォルトの名無しさん
垢版 |
2020/08/29(土) 19:57:49.43ID:c1GPVpI/
TextboxをバインドしてプロパティでCustomValidationを使用して入力値をチェックしたいのだが、バリデーションのメソッドが呼ばれない。原因わかる人いませんか?

・xaml
 <TextBox Text="{Binding HogeProp}" />
・プロパティ
 [CustomValidation(typeof(MyValidator), "ValidateFunc")]
 public string HogeProp { get; set; }
・バリデーションのメソッド
public class MyValidator
{
public static ValidationResult ValidateFunc(string value, ValidationContext context) { ・・・ }
2020/08/29(土) 20:13:21.62ID:RX7Po31A
XamlのTextBoxにValidatorもbindしろよ
2020/08/29(土) 23:17:43.89ID:tTe5QKgv
ルー大柴感すごい
787デフォルトの名無しさん
垢版 |
2020/08/30(日) 02:46:23.09ID:ZwD+TFIO
バリデーションはIDataErrorInfoとかINotifyDataErrorInfoで検索したらいい
2020/08/30(日) 05:27:19.88ID:MpJjZFKq
検索ねえ
2020/08/30(日) 08:30:45.47ID:4MoD5DHT
結局nugetは何て読むのが正解なのさ
790デフォルトの名無しさん
垢版 |
2020/08/30(日) 08:43:44.85ID:gfZIZ6L9
チキンナゲット
2020/08/30(日) 09:42:24.92ID:Yl8NJxwy
ルー語ってよくネタ扱いされるけど
日本語の判別しにくい同音異義語とか1文字の単語とかを英単語にして話すと凄い聞き取りやすくなる
2020/08/30(日) 23:12:57.74ID:ShCExdob
ムーンにフィット
2020/08/31(月) 00:59:34.88ID:4JRe7JNQ
ILMERGEってインストールしただけでビルド時にキチンと動いてくれてるんだけどなんでだろ?
exeとdll指定して叩く必要あるって聞いてたんだけど
2020/09/01(火) 19:45:26.75ID:rxfGWw0P
DataGridViewにてコードから追加されたRowをその都度捕捉することは出来ないのでしょうか?
RowsAddedイベントではe.RowIndexなどを利用しても今追加されたRowを特定する事は出来なさそうですが
2020/09/01(火) 19:55:31.07ID:XgGNoQZC
え?
2020/09/01(火) 20:51:20.69ID:E4x1EXdk
最終行じゃないの?
2020/09/01(火) 21:20:02.37ID:w/vk4Luz
DataGridついでに質問なんだけど、バインドするclassの中にList<string>なメンバーもあってそれもどうにか表に表示させたいんだけどどうすればいい?
Detailは使いたくないので可能な限りColumnの中に入れたいんだが
2020/09/01(火) 21:59:56.20ID:q3yKgY6M
>>797
連結?
2020/09/02(水) 00:15:16.66ID:wB4YzsNo
>>797
onehotencodingをヒントにせよ
2020/09/02(水) 12:12:07.29ID:RUg5xcTY
外道だろうけどComboBoxCellにしてDataSourceにそのListをバインドする
コンテキストメニューから追加削除できるようにする
ただしアイテムテキストを編集する場合はちょっと細工が必要だった気がする
2020/09/02(水) 15:33:38.02ID:A3FRNSa9
>>797
DataGridViewじゃなくてDataGrid?

まあどっちにしても独自のカラム作ればいけんじゃね
2020/09/02(水) 16:16:11.28ID:1n8aQRkE
WinFormsなのかWPF/UWPなのかでも話が違ってきそうな
2020/09/05(土) 02:42:24.49ID:dAFWTNcH
C#だけvisual studioに贔屓されててずるいわ
2020/09/10(木) 14:28:11.41ID:kNAPgoJG
public int Value1 { get; set; }
のみならず中身書くときでも自動フィールド生成させる方法ってないの?
2020/09/10(木) 14:33:24.42ID:oRytwQm5
>>804
どういうこと?
2020/09/10(木) 14:39:00.62ID:jhilEFNS
>>804
日本語でおk
2020/09/10(木) 15:11:13.13ID:kNAPgoJG
>>805>>806
private int _value1;
getsetの中身書くときはこうやってバッキングフィールド作ってるんだがそれを自動生成してもらいたいって事
_value1指定じゃなく下みたいに書ければ最高なんだが

public int Value1
{
get => AutoField;
set
{
if (value == AutoField) return;
AutoField = value;
OnPropertyChanged(AutoField);
}
}
2020/09/10(木) 15:19:22.13ID:8iTjeGBd
複数プロパティがあったら読みづらそう
2020/09/10(木) 15:24:21.99ID:liDa04ql
C#で行けてるダッシュボードライブラリありますか?
2020/09/10(木) 16:03:46.25ID:oRytwQm5
>>807
それの何が嬉しいの?
2020/09/10(木) 16:40:27.15ID:kNAPgoJG
>>810
バッキングフィールドのコーディングを省ける
別のフィールドを参照するミスを無くせる
2020/09/10(木) 16:47:07.58ID:Xme5aVsY
>>807
Kotlinのimplict backing field的なものだと思うけどC#にはない
https://github.com/dotnet/csharplang/blob/master/meetings/2020/LDM-2020-04-01.md#field-keyword-in-properties

どうしてもやりたければ自分でAttributeを書けばできるんじゃないかな
2020/09/10(木) 17:02:36.52ID:yDXd1gWF
code generatorが来たら自分で生成するコード書いときゃ実現できる話かな?
2020/09/10(木) 17:46:15.27ID:+mPYCvwp
暗黙的に変数が定義されちゃうのはよくないと思うが
getterとsetterから見えれば十分というケースも多いことは確かなので

int Hoge
{
  var bf;
  get {retun bf;}
  set {bf = value;}
}

こういう特殊なローカル変数が定義できたら便利かもしれないね
2020/09/10(木) 17:50:39.83ID:+mPYCvwp
ちなみに、VBはインスタンスと同じ寿命のローカル変数が定義できるけど
>>814みたいなことはやっぱりできなかったはず。
2020/09/10(木) 18:23:32.80ID:sC8DJVf9
未確認飛行のブログでも同じことが触れられてたな

↓の一番下
ttps://ufcpp.net/blog/2020/4/pickuproslyn0408/

この記事見る限りだと将来的にも仕様が追加されることはなさそう
2020/09/10(木) 18:25:49.14ID:AEy96ITZ
そんなどうでもいい機能よりさきに構造体のprivateコンストラクタよこせや
2020/09/10(木) 18:43:00.82ID:oRytwQm5
まあSourceGeneratorでやってくれって話だな
2020/09/10(木) 18:46:46.94ID:kNAPgoJG
まあマクロが実装されればこれに限らずあらゆる点は解決されるんだがなぁ
2020/09/10(木) 18:53:36.61ID:oRytwQm5
>>819
SourceGeneratorじゃなくて?
2020/09/10(木) 19:43:38.93ID:kNAPgoJG
>>820
SourceGeneratorって要するにマクロでしょ
2020/09/10(木) 20:47:54.12ID:C5BpJj/6
全然違うよw
あれをマクロというのはかなり無理がある
コンパイラをコードから機械語に変換するだけのマクロでしょとか言う?
2020/09/10(木) 20:51:45.01ID:C5BpJj/6
C++のtemplateを要するにマクロでしょ、で済ませる?
generatorはtemplateより多彩なことができるのにマクロに含まれるの?
2020/09/10(木) 20:55:09.46ID:g9owWbpq
またくだらないマウント合戦始めた
2020/09/10(木) 22:28:11.10ID:oRytwQm5
まあマクロって言葉しか知らなかったんやろな
2020/09/10(木) 22:37:49.44ID:Z2xPjLcN
構文解析の結果受けてソース生成できる
付随されてるコメントの内容すら拾えるから今回みたいな例なら目的のプロパティに特定のコメント付いてたらソース生成するとかもできる
まぁ特定の属性が付いてたら、って条件のほうが良いとは思うけど
2020/09/10(木) 22:43:20.64ID:Z2xPjLcN
最終的にどんな実装になるかわからんが高機能な分、扱いはめんどくさくなると思うよ
defineマクロみたいなのを想像してたらたぶんこんな複雑なの求めてねーよ!ってなると思う
コピペに近いようなコードを数百個単位で記述しなきゃならんような状況なら大活躍すると思う
2020/09/11(金) 01:52:09.21ID:4BwL6K3k
久々にC#がトレンド入り記念ぱぴこ

【C#】インターフェイスの利点が理解できない人は「インターフェイスには3つのタイプがある」ことを理解しよう
https://qiita.com/yutorisan/items/d28386f168f2f3ab166d
2020/09/11(金) 10:20:23.18ID:KNnaGpRD
>>828
それぞれ異なるレイヤーのものを3つまとめて併記されるとモヤるな

>「インターフェイスには目的に応じて3つのタイプがある」
>1. 疎結合を目的としたインターフェイス
>2. クラスの機能を保証することを目的としたインターフェイス
>3. クラスへの安全なアクセスを提供することを目的としたインターフェイス
2020/09/11(金) 11:02:48.67ID:Agc0sYKy
記事読まずに(笑)批判するけど、たぶん初心者にいきなり抽象論で説法するタイプの記事なんだろうね
初心者は抽象論の記事なんか読まなくていいよw
時間の無駄だから

抽象論は後回しにして実際の使われ方を見た方が100倍効率的
抽象は具象からの演繹なんで具象をよく知ってる人の方が理解が早いし、
具象を知らない状態で抽象が理解できないとしても恥じることない
これも抽象論だけど
2020/09/11(金) 11:25:10.88ID:/NrwCQnT
>>830
自分自身への見事なブーメランになってるぞw
2020/09/11(金) 11:27:01.28ID:/NrwCQnT
>>829
3つのタイプというから語弊があるけど、3つの目的(重なることもある)と読み替えれば、そんなに悪くないと思う
2020/09/11(金) 11:58:34.46ID:Y/Y0LcuP
実際のところインターフェース独自の利点なんて無限に引っ付けられるってところだけじゃないの?
継承と共通の利点なら沢山あるけどさ
2020/09/11(金) 12:19:35.54ID:/cTVelwp
インターフェイスとか必要ないと確信してる
マジで要らない
2020/09/11(金) 12:49:51.48ID:KNnaGpRD
>>832
抽象度の異なるものをごちゃ混ぜにしても平気な神経って結構やばいで

1はインターフェースの目的(存在意義)
2はその目的を実現するための実装ルール
3はインターフェースを活用したパターンの一例

意図したのかはわからないけど抽象度の高い順に並んでる
下位の目的は上位の目的を満たした上でなければ成り立たないので
重なることがあるんじゃなくて常に重なってる
2020/09/11(金) 14:00:10.01ID:Agc0sYKy
そんなことないと思うよw
抽象論好きな人は疎結合だの依存性がどうのにやたらこだわるけど(理論として「美しい」からねw)
実際の現場ではそんな目的でも何でもなくむしろどーでもいいことの方が多い。
2020/09/11(金) 14:04:36.27ID:y/Gz+a0e
>>828
インターフェースはインターフェースはいいとしても、その例で示してるクラスは記事削除できるような設計が単におかしいとしか思わなかった
2020/09/11(金) 14:28:32.12ID:rnsLXOV6
日本語でおk
2020/09/11(金) 15:26:57.22ID:qEgHhc43
その記事書いた奴は基底クラスとか継承とか理解してないとしか思えん
2020/09/11(金) 16:35:17.20ID:rmY/ILRi
>>839
継承は単なる実装共有の手段であり、インターフェイスを定義するものではない、というかぶっちゃけ無くてもいい
っていうのが今時のオブジェクト指向なんで、そこは的外れ
841デフォルトの名無しさん
垢版 |
2020/09/11(金) 16:37:07.75ID:pFVcr0yG
Diamondだね
2020/09/11(金) 16:49:02.30ID:JNr8vBI0
抽象的な話を理解できない人でもインターフェースを使えば無駄な依存性が途切れてビルドが速くなると言えばそれはイイネと取り組んでくれる
それを聞いてもまだ拒否するやつは長いビルド中に休憩してるサボリ魔とみなしてよい
2020/09/11(金) 17:03:01.47ID:wYjppPp4
C++なら分かるけどC#で長いビルド時間って何百万行のコード?
10万行程度だと一瞬なんだけどなあ
2020/09/11(金) 17:09:53.59ID:KNnaGpRD
インターフェース使わないと実行時のオーバーヘッドが減って速くなると言えばそれはイイネと取り組んでくれる

かもw
2020/09/12(土) 17:32:41.75ID:NisQsc7a
インターフェイスはコンテナに突っ込む時の取っ手
846デフォルトの名無しさん
垢版 |
2020/09/12(土) 18:27:01.14ID:5DtQrmwa
見てみたけど、1と2は一緒だし、3は間違えてるってところだろう
2020/09/12(土) 18:54:40.33ID:iYw8cktk
自分の頭で考えて3つにまとめたことは評価できるけど中身がね・・・

>なんと、読み手が勝手に人の書いた記事を消せてしまいます。
消せてないからw

>自分の記事に自分でLGTMできちゃいます。
LGTMできちゃってないからw

>なぜこのような問題が起きるのかというと、ズバリ「QiitaPostクラスにアクセスするための適切なインターフェイスが定義されていないから」に尽きると思います。

問題起きてないからw
2020/09/12(土) 18:58:08.91ID:leYa1Fk6
おじさんLTCMしか知らん
20年以上前に破綻したけど
2020/09/13(日) 02:12:35.92ID:S9IYhVJO
webアプリの勉強がてらwinformsで作ったアプリをwebアプリに置き換えてみようかと思ったんですけどASP.NETって需要あるのかな
2020/09/13(日) 02:26:54.88ID:WHRl74f1
ASP.NETと言っても色々ある
国内でASP.NETというと一般的には WebForms (Classic ASP.NET)のことを指すことが多いけど、これは.NET5で廃止される
そして今後はASP.NET Coreに一本化されるんだけど、国内ではほとんど使われていない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況