X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 1e7b-qjLW)
垢版 |
2019/10/07(月) 20:16:17.93ID:9eyAES450
!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
0136デフォルトの名無しさん (ワッチョイ ff7b-v59O)
垢版 |
2019/10/15(火) 21:15:31.52ID:n+UvEGVJ0
>>134
質問の内容が変わっているよね
VBAで作ったものはVB.Netに手直し程度で動かせるようになるものができる場合もあるけどC#は書き方も完全に別物
ここで聞くより自分のPCで動かしてみたほうが早い
0138デフォルトの名無しさん (アウアウウー Sa5b-YqqQ)
垢版 |
2019/10/15(火) 21:16:06.96ID:Hz78fwHza
>>134
C#を使えないなんて言ってないよw
VBAとC#は完全に別の言語だと言ってるだけ
VBAの知識はC#を覚える上でほとんど役に立たないよと
0139デフォルトの名無しさん (ワッチョイ 972d-epSy)
垢版 |
2019/10/15(火) 21:20:18.71ID:zMbku3w90
用語と名付けルールについていくつか教えてください
まず、class Asdf{}の入れた物(Asdf asdf; でいうasdf)は、何と呼べばいいんですか?変数でいいのでしょうか?
また、Asdfの入ったものを自動プロパティで宣言したい場合、一文字めを大文字にすべきなのでしょうか?
Asdf Asdf{get; set;}なのか、Asdf asdf{get; set;}なのかどちらが正しいのでしょうか
0142デフォルトの名無しさん (ワッチョイ 972d-epSy)
垢版 |
2019/10/15(火) 22:44:41.51ID:zMbku3w90
>>140
ありがとうございます
大文字かどうかは、クラス名とプロパティ名が一緒になってしまっていいのか結構疑問に思っていたのでスッキリしました
0143デフォルトの名無しさん (ワッチョイ 1663-GUq/)
垢版 |
2019/10/17(木) 01:03:06.25ID:GTpPRCCe0
Pythonでは文字列をコマンドとして実行するのにevalとexecの2つあるみたいですが
C#で文字列をコマンドとして実行するには、eval以外の関数はありますか?
0145デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
垢版 |
2019/10/17(木) 09:37:45.19ID:ewN8FeZ7F
subprocess.popen
subprocess.call
subprocess.call_hogehoge
もっとあるぞ
0146デフォルトの名無しさん (ワッチョイ 5fda-+VEO)
垢版 |
2019/10/17(木) 11:49:09.47ID:qkwcuRdz0
フォーム間でのデータの受け渡しを行うクールな方法を教えて下さい。
今は以下の2通りの方法ででやっています。
@互いの公開プロパティ(public get / private set)を参照しあう。
 (互いに相手フォームへの参照を通じて取得するので疎結合になり切れていない)
Aデータ保持用クラスを作って、そのインスタンスを参照する。
 (データ保持用クラスが増えまくって、だんだん管理困難になりそう)
0149デフォルトの名無しさん (ワッチョイ 9242-S3Tg)
垢版 |
2019/10/17(木) 12:38:06.93ID:p0JdpBwB0
WpfやUWPなどではDIコンテナってものを使うのが流行りだが、WindowsFormsでも存在するそうだ
こっちは使ったことがないからお薦めはわからんがググって探してみるといい

まあクールってことならWindowsForms捨てるのも一つだね
0151デフォルトの名無しさん (ドコグロ MMea-tIsl)
垢版 |
2019/10/17(木) 13:34:04.59ID:gr44XWYWM
>>149
WPFやUWP自体がほぼ全くと言っていいほど使われていないのに流行りも何も
DIコンテナは主にWebで利用されるもので、デスクトップアプリではあまり使われないよ
アプリの起動を遅くする原因になりやすいし、エンドユーザーにバイナリを直接配布するタイプのアプリではそもそも実装を差し替えたいというニーズ自体が稀だからね
0153デフォルトの名無しさん (ワッチョイ e338-m7UD)
垢版 |
2019/10/17(木) 15:44:16.62ID:U3fOiqzQ0
>>146
クールな方法というか堅実・定石な方法
フォーム間のデータのやり取りならA

相手のフォームに依存するとテスト時や改修時に困るでしょ
原則として相手の画面やクラスの事は知らないに越したことは無い

その設計でもデータ保持用クラスの管理が大変になることは無い
管理が大変になる場合は設計がおかしい
画面遷移の組合せ数分クラス作るとかアホなことすれば大変だろうけど
0154デフォルトの名無しさん (ワッチョイ 16a7-S3Tg)
垢版 |
2019/10/17(木) 17:38:31.11ID:xrf7PluH0
wpfのCheckBoxについてですが、Contentに文字を設定するとその文字の表示範囲もチェックオンオフの感知範囲になってしまいます
これを無効にして純粋にチェックボックスの□のみをクリック範囲にすることはできないのでしょうか?
CheckBoxのContentに文字を設定するのではなく、横にTextBlockを置くなどしないと無理でしょうか?
0156デフォルトの名無しさん (ワッチョイ 5fda-S3Tg)
垢版 |
2019/10/17(木) 17:47:00.63ID:LBezDrpM0
>>154
手段としてはその通りだと思う。

しかし、あのちっさいチェックボックスに正確にマウスを当てないと反応しないってのは、
使い勝手からするとどうかと思う。誤クリックが多いというなら、そもそもの配置場所が悪い
0157デフォルトの名無しさん (アウアウウー Sa43-ptFq)
垢版 |
2019/10/17(木) 17:49:21.17ID:f5CxH478a
>>154
PreviewMouseDownイベントを追加して
e.OriginalSourceからVisualTreeHelper.GetParent()でVisualTreeを親方向にたどっていき
途中に"checkBoxBorder"というNameのBorderがあればe.Handled=true;で無効化出来るかもしれない
出来るかもしれないが一般的にCheckBoxはテキスト部分をクリックしてもオンオフ出来るものだから
その一般的な挙動を逸脱するよっぽどの理由がなければ止めておいたほうがいい
0158デフォルトの名無しさん (ワッチョイ 16a7-S3Tg)
垢版 |
2019/10/17(木) 18:14:20.41ID:xrf7PluH0
>>156>157
ありがとうございます
具体的にはListBox内にCheckBoxを配置しており、チェックとは別にListBoxから選択時に多少のインフォメーションを表示するといった形にしたいためContentも含めると誤クリックが発生してしまいます
とりあえずは文字とCheckBoxは分離する方向でやってみたいと思います
0159デフォルトの名無しさん (ワッチョイ f345-UkKt)
垢版 |
2019/10/17(木) 19:36:38.52ID:ukHDmGyB0
先日C#を始めたものです
Hello Worldを記述出来ました
エクセル等のオフィスソフトに対応している初心者向けのサイトは無いでしょうか?
よろしくお願いします
0167デフォルトの名無しさん (ワッチョイ 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があるのでどうしたものかと
0168デフォルトの名無しさん (アウアウイー Sa87-sprL)
垢版 |
2019/10/17(木) 23:30:47.28ID:+xa644SFa
C#8.0の新しい文法を使う意図だったら「#nullable enable」のディレクティブをつけないとnull許容参照型にならないよ
そうでなければ、stringは参照型だから?をつけずとも普通にnull許容
0176デフォルトの名無しさん (ワッチョイ 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,はま寿司,漬け。まずい。食えたもんじゃない,汚い,漬け,小さい
0191デフォルトの名無しさん (ワッチョイ 7f2d-BO72)
垢版 |
2019/10/19(土) 18:32:57.19ID:BH051H7O0
すまんが、インターフェイスとオートプロパティーとがよくわから人だけどさあ
interface IPerson{string Name();}
class Person : IPerson {public string Name{get=>"Taro";}}
これじゃなんでIPerson.Name();を実装したことにならないの?正しくはどうすればよかんべえ?
0192デフォルトの名無しさん (ワッチョイ 7f2d-BO72)
垢版 |
2019/10/19(土) 18:36:03.37ID:BH051H7O0
自分で気づいて今インターフェイスをstring Name{get;}にしてみたらできた
すまん、191のは無視してくれ・・・・
0195デフォルトの名無しさん (ワッチョイ e334-V+wO)
垢版 |
2019/10/21(月) 20:48:34.93ID:Q380rRZI0
ListViewをLargeImageListとして使って、かつ画像は非同期的に読み込んで反映させていきたいんだけど、
ImageListを変更しても画像が差し変わらない。アイテムを選択したりすると変わる。
差し替え後に強制的に反映させるにはListViewをRefleshするしかない?
0197デフォルトの名無しさん (ワッチョイ 4bda-PVzv)
垢版 |
2019/10/21(月) 22:36:01.36ID:gFaZXUyV0
RichTextBox.Textプロパティに数MBの文字列をセットすると
5秒くらいフォームがフリーズするので
Task/async/await的なコードを試したのですが
別スレッドからコントロールにはアクセスできないと怒られ
それではとInvokeメソッドを使ってみるも
今度はアクセスで怒られない代わりにまたフリーズ。

上手いこと非同期でTextプロパティにセットする
方法はありますかね。
0198デフォルトの名無しさん (ワッチョイ 167b-836U)
垢版 |
2019/10/21(月) 22:46:01.22ID:/X8txQrc0
>>197
数MBの文字列程度でフリーズした経験はないけど、その環境でフリーズするのなら非同期にしても解決はしないよ
Invoke使おうがその文字列の処理にそれだけかかるのだからどうしようもない
非同期にするのは処理中にキャンセルするとか他のGUIからの入力処理をする目的じゃないと
0204デフォルトの名無しさん (アウアウウー Sa43-WFp/)
垢版 |
2019/10/22(火) 14:13:07.80ID:d9ySxcs9a
UIスレッド自体が輻輳してるんだからそんなことしても無意味w

別のプロセスか別のUIスレッドで動作させるか、
あるいは小分けにしてちょっとずつ更新するしかないと思うよ。
0205デフォルトの名無しさん (ワッチョイ 16a7-S3Tg)
垢版 |
2019/10/22(火) 19:15:02.64ID:ZcCp4/Eg0
クラス継承の意義がイマイチ分かりません
継承したいクラスをフィールドに持たせ、共通して呼び出したいものはインターフェースとして定義するではダメなのでしょうか?
単にその両者をいっぺんにやるためにあるという理解で良いんでしょうか?
0208デフォルトの名無しさん (アウアウウー Sa43-WFp/)
垢版 |
2019/10/22(火) 20:19:18.17ID:d9ySxcs9a
アポロ13って映画に「何のために作られたかではなく、何に使えるかが重要」って台詞が出てくるけど、
意義とか考えるのは(重要だとは思うけど)後回しにして、どういう使い方ができるかに
注視した方がいいよw

あと、オブジェクト指向関係で教条主義的なことを言う奴の話は眉に唾して聞いた方がいいw
これほんと
0215デフォルトの名無しさん (ワッチョイ d201-4js2)
垢版 |
2019/10/22(火) 22:38:30.26ID:QfoZv31s0
>>205
例えばフレームワークが用意してるControllerクラスを継承して20個くらい個別のコントローラーを作る場合と
個別のコントローラーにControllerクラスを持たせて呼び出しを委譲できるようにする場合
前者はカスタマイズしたい部分だけ書けばいいけど
後者はControllerの機能を呼び出すためにはすべてのクラスに委譲メソッドを用意する必要がある

Controllerのメソッドを20個呼び出したいなら20x20で400個委譲メソッド定義をしないといけないしテストもしないといけない
自動生成することも可能だけどそれを考慮しても必要になる労力とコンポジションで得られる柔軟性が見合わない

それぞれメリット・デメリットあるからそれを判断して使い分けるのが良いと思う
0220デフォルトの名無しさん (ワッチョイ 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();
}

自分なりにも書いてみたのですがなんか素人感が半端ないです
どうか正しいかっこいい書き方を教えてください、お願いします
0222デフォルトの名無しさん (ワッチョイ 670c-2cJs)
垢版 |
2019/10/23(水) 08:41:29.15ID:cIthmx8S0
Goは>>205のような考えで継承廃止したんじゃなかったっけ?
コーディングコスト削減メリットよりも階層複雑化によるデメリットの方が大きいから、やるならインターフェースでやれって考え方だったと思う
天下のグーグルがそう言ってるからには継承が悪という考えもあながち全否定は出来ない
0226デフォルトの名無しさん (ワッチョイ c67c-ptFq)
垢版 |
2019/10/23(水) 09:57:02.37ID:N3BHKY3G0
Rangeということは「最小値と最大値」の範囲内かどうかなわけで
nullが範囲外なのは自明だからそもそも意味がなくね?
nullは特別に範囲内ってのなら「最小値と最大値」であるRangeじゃなくて他の方法で表現せざるを得ないよね
0227デフォルトの名無しさん (ワッチョイ 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
0230デフォルトの名無しさん (オッペケ Sr47-g1So)
垢版 |
2019/10/23(水) 12:06:02.89ID:uTmD95wkr
>>229
できる出来ないの基準は?
既存コントロール使わないで全部時前で処理するなら、出来ないことが重い浮かばない
0232デフォルトの名無しさん (ワッチョイ e338-m7UD)
垢版 |
2019/10/23(水) 12:24:26.05ID:rCWJ/rTC0
原理的に出来ないことは無いが大変さが違う

それこそMVCで組みづらいとか
EFとの相性とか
WebAPI作りたいとか
他言語や環境と混ぜづらいとか
つぶしが効かないとか

まあ新規でWebFormsはやめとけと
■ このスレッドは過去ログ倉庫に格納されています

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