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

■ このスレッドは過去ログ倉庫に格納されています
2021/05/16(日) 10:45:59.00ID:8qTwOc620
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part150
https://mevius.5ch.net/test/read.cgi/tech/1616471904/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
https://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/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
https://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
2021/05/19(水) 07:27:19.64ID:yWkX4iecd
>>16
ExcelVBAのことがよく判らなくて、答えづらい。っていうか、その変換にストレスが発生してない?
お勉強なら、VBAのことは忘れてゼロから始めた方が良いんじゃないかと。
25デフォルトの名無しさん (ワッチョイ c7e6-JFKK)
垢版 |
2021/05/19(水) 07:34:53.84ID:AMEX05Gv0
単に印刷をしたいだけだろ
ギョーカイでは印刷用コンポーネント買ってこいで一蹴される案件
26デフォルトの名無しさん (ブーイモ MM5b-M3SR)
垢版 |
2021/05/19(水) 08:48:51.66ID:dvesxogvM
印刷コンポーネントって標準で付いてないっけ?
2021/05/19(水) 09:40:36.03ID:TmTcYE5Zd
>>14>>17 ありがとうございます。説明たらずですみません。ネットみてこんな感じで作成しましたが、こういう作りはよろしくないってことですよね?クラスにxmlファイル関連の処理をまとめたいなと思ったのですが...

{}等々は省略します。
class ClsXml
Public Frm1 frm1
Public Frm2 frm2

Public ClsXml(Frm1 frm_1,Frm2 frm_2)
  frm1=frm_1
  frm2=frm_2

 Public void aaa
frm1のコンコロール使用

 Public void bbb
frm2のコントロール使用
 
 Public void ccc
frm1とfrm2のコンコロール使用

※Frm1
ClsXml clsXml = new ClsXml clsXml(this,null)

※Frm2
ClsXml clsXml = new ClsXml clsXml(Frm1,This)
2021/05/19(水) 10:02:03.60ID:+JHqwFd70
データ保持クラスを1つ作って、それを受け渡しする
29デフォルトの名無しさん (ワッチョイ 2b7b-gSvD)
垢版 |
2021/05/19(水) 10:08:02.04ID:C6qGRFkz0
C#のプログラミング本を読んでいるのですけど
C#という言語はnewしても失敗することはないのでしょうか
newの戻り値を確認したり
try catchで囲んだりてませんよね
Designer.csをみてもnewだけしてて戻り値を確認していません

識者の方教えてください。よろしくお願いします。
30デフォルトの名無しさん (ラクッペペ MM17-JFKK)
垢版 |
2021/05/19(水) 10:32:55.61ID:TDEniZJiM
>>26
説明するのが面倒だから一蹴するんだよ
真に受けて買うのも別に悪くない選択
31デフォルトの名無しさん (ラクッペペ MM17-JFKK)
垢版 |
2021/05/19(水) 10:37:43.80ID:TDEniZJiM
>>29
catchしたところで他に代替方法がないんだから
諦めてそこで試合終了ですよ
2021/05/19(水) 10:42:01.36ID:RX1B9Flf0
>>29
使い方を間違えていなければコンストラクタで例外が発生しないクラスが多いので
基本的にはコンストラクで例外が発生する場合はバグであり使い方を修正する。
正しい使い方でもコンストラクタで例外が発生する場合があるクラスについては例外を捕捉してフォローする。
2021/05/19(水) 11:56:33.37ID:u9Tr9lyP0
>>27
よくないね

依存性の方向は基本的に「個別処理 ―> 共通処理」
個別処理が共通処理に依存するのはいいが逆はよくない
変更に対して弱くなるから

各フォームが個別処理でXMLの読み書きが共通処理なので
フォームがXMLクラスに依存するのはよくて
XMLクラスが各フォームに依存するのはよくないということ
2021/05/19(水) 11:59:42.08ID:C6qGRFkz0
>>31
>>32
回答ありがとうございます
古い人間なもので常に以下のようなコードと思い込んでいました

p = new hogeCalss();
if (!p) {
print("失敗しました");
exit();
}

---------------------------------
try {
p = new hogeClass();
}
catch(exception) {
print("失敗しました");
exit();
}
2021/05/19(水) 12:09:28.47ID:5VIb1gQWa
>>27
Xmlの処理をするクラスなのになんでFormを使うのか?
ということに疑問を持つべき

>>29
コンストラクタでエラーが発生したら例外を投げて
例外を受けてどう処理するかはその場次第で様々なので
無視して上位に任せるのもその場でハンドリングするのも間違いではない
2021/05/19(水) 12:15:53.32ID:RX1B9Flf0
>>34
例外が発生した時に簡単なメッセージを表示して終了するだけなら
個別の例外処理はせずにApplication.ThreadExceptionイベントや
UnhandledExceptionイベントを使うといい
37デフォルトの名無しさん (ワッチョイ f384-gIXh)
垢版 |
2021/05/19(水) 18:35:07.68ID:kJekIUOX0
>>27
何となく何がおかしいか分かったかも
Formのプロパティを外からいじるのいくないとかはおいといて言っていることを
無理やり形にすると多分こんな感じかな
class control
 ClsXml cx=new ClsXml
 cx.aaa
 cx.bbb
 cx.ccc

class ClsXml
Public ClsXml()
 Form frm1=new Form
 From frm2=new From

 Public void aaa
  form1 progress

 public  void bbb
  form2 progress

 public void ccc
  form1&2 progress

Formを独自拡張する必要があるならば、ぞれぞれのFormクラスを作る必要があるけど
そういうことじゃないのではないかと
元の書き方だと違うインスタンスが同じインスタンスのように扱われているのでForm1では
Form1側の操作しか出来ないと思うよ
あとFormを制御する人がいないのでプログラムとして成立しないかな
2021/05/19(水) 19:01:35.29ID:C6qGRFkz0
>>36
Application.ThreadExceptionイベント
UnhandledExceptionイベント
ググってみます
ありがとうございました
2021/05/20(木) 17:15:54.44ID:bilBOnqPd
質問です。
xamarinとC#でAndroidアプリを作成していて、ボタン押下でAndroidからPCの指定の共有サーバーにWi-Fi経由でSMB通信をしてファイル転送する機能があるのですが、それをUSB経由で接続したPCの指定のフォルダに転送する機能に変更したいと思っています。調べてみても方法が分からず、どうやってやればいいのかお教えいただけないでしょうか?
2021/05/20(木) 17:25:36.42ID:h+nvuHPl0
C#とか関係なく、システム的にAndroid側からPCの中って参照できないんじゃね?
2021/05/20(木) 17:53:35.03ID:1kvRnQEZ0
PC側がホストになるから、PC基点じゃないと何も出来ないよ。
2021/05/20(木) 19:20:45.57ID:bilBOnqPd
>>40
>>41
回答ありがとうございます。
SMB通信の前はWindows PhoneからPCの指定のフォルダへUSB経由でFTP通信をして指定したフォルダに転送していたのですが、これもandroidだとできない感じでしょうか?
2021/05/21(金) 00:18:51.38ID:uT4ElnGZa
>>42
詳しくないので適当に聞いてね。
結局PC側からUSB接続のアンドロイトが何に見えているかが肝だよねたぶん。

ただのマスストレージに見えてるなら他の人が書いてるように
Android側からPCに対しては何もできない(PC側のアプリでAndroidの
ストレージからファイルを持ってくることは可能なはず)

Androidにそんな器用なことができるのか知らないけど、仮にNICのふりができるなら
理屈上はAndroid側からPCの共有フォルダにアクセスは可能なはずだと思うけど
かなりハードル高そうだよね
2021/05/21(金) 00:35:25.73ID:iGmMnIp90
>>43
ありがとうございます。
とりあえずバッチかアプリでPCからUSB経由でandroidの指定フォルダのファイルをPCの指定フォルダに転送できるか試してみます。
45デフォルトの名無しさん (ワッチョイ cebb-T0p4)
垢版 |
2021/05/21(金) 14:30:29.31ID:i5DLTQw90
Visual StudioでGitを使う場合、Gitによる管理が不要なファイルのために自動で.gitignoreを作ってくれると思います
.NET 5のコマンドラインから同じようなことをするにはどうすれば良いのでしょうか?(手書きなのでしょうか?)
2021/05/21(金) 14:41:38.94ID:mSvK+x2g0
dotnet new gitignore
47デフォルトの名無しさん (ワッチョイ cebb-T0p4)
垢版 |
2021/05/21(金) 15:07:41.48ID:i5DLTQw90
>>46
全然知らなかったよ、ありがとう!
2021/05/21(金) 18:18:47.45ID:r4fhOYFqd
フォームが複数あって入力された文字列やチェックBoxの状態記憶して、フォームが閉じて再び開いた時に同じ状態に戻したいんですがどんな方法がありますか?
49デフォルトの名無しさん (ラクッペペ MMb6-jLf6)
垢版 |
2021/05/21(金) 18:38:24.30ID:P35wDmNWM
フォームのコントロールのプロパティを取得したり設定したりします
2021/05/21(金) 18:39:34.68ID:ydARslbAa
>>48
単純にそれを実現するだけならアプリケーション設定を使えばできる。
https://www.atmarkit.co.jp/fdotnet/dotnettips/438winsettings/winsettings.html

ただ、それがあなたのアプリの要件に合ってるかどうかは分からない。
まともな設計思想で作ってたらほとんどの場合は合わない思うw
2021/05/21(金) 18:55:24.86ID:b2hwhOft0
>>48
visibleをfalseにする
2021/05/21(金) 20:55:20.39ID:LYjrJpHE0
>>51
めっちゃきもちわるいわあ
2021/05/22(土) 08:57:11.87ID:hnUmAMvp0
Winform(.net 4.8)でentity frameworkにてクラス内の値を変換したいのですがどのようにするのでしょうか
public class StringValue
{
public StringValue(string s) { Value = s; }
public string Value { get; set; }
}
モデル内
public class Sample
{
[NotMapped]
public StringValue dummy { get; set; }
public string value { get => dummy.Value; private set => dummy = new StringValue(value); }
}
今は上記のような感じでStringValueをvalueに見立ててデータベース上でnvarchar:valueとして扱っています
コード上はクラスで扱いつつデータベースでは別の型として扱うという事をしたいです
EFCoreではHasConversionでできそうですがEFではそう言ったのは無いのでしょうか?
2021/05/22(土) 09:46:32.75ID:hnUmAMvp0
>>53なんか解決かもです
出かけるので確認するのは後になりますが駄目ならまた書き込みます
ありがとうございます
2021/05/23(日) 21:45:22.13ID:y8mHkt/k0
オブジェクト初期化子とコンストラクタは何が違うのでしょうか?
見た目はインスタンス作成時に()を付与するかどうかの違いがありますが、やってる事は同じに見えます…
別物として扱っているのは理由があるからなのだと思いますがイメージが掴めません
初歩的な質問ですみませんが教えてください
2021/05/23(日) 21:58:29.07ID:pYmK4nAPa
前スレで同じこと聞いてない?w
https://mevius.5ch.net/test/read.cgi/tech/1616471904/327-
2021/05/23(日) 22:02:16.32ID:RNjOm9Rva
コンストラクタを実行したあと属性に代入するのが初期化子
コンストラクタにはインスタンス化時に絶対に必要な処理を書く
初期化子にはどっちでもいいオプションを書く
2021/05/24(月) 18:26:23.84ID:x4lG9/QZd
>>27
私感じでやっちゃってますね。みんなさんが言うようにclassでformを使うのは良くないのは言われれば分かりますが、Formを使わないやり方がPublic static使う方法しか分からないし、ネット検索かけてもformを渡してるやり方ばかり出てきますね。

Public static string stA
Public static string stB

Public void AddFile
〇〇.add stA + stB

先生がネット故に...みなさんはどこで学ぶんですか?
2021/05/24(月) 18:51:16.14ID:hM0efzfu0
>>58
会社ソースとかMSDNとか
画面とデータを分けるやり方はそういう構造を要求する
フレームワークやライブラリが多かったってだけかも
2021/05/24(月) 19:25:01.66ID:f+6lGWLS0
>>58
ネットで調べるなら、GUIアーキテクチャ、MVC、MVVM、関心の分離あたりで調べたら?
ネットで十分に学べる
2021/05/24(月) 19:49:24.96ID:NzBI28bl0
この短い数行のコード見ただけで相当ヤバいのが分かる。
これは関わっちゃいけないやつだ。
2021/05/24(月) 20:41:17.35ID:i2eTwvSN0
葦原将軍の生まれ変わりと見た(^_^)ノ
2021/05/25(火) 06:29:00.67ID:PTaC3ctB0
LangVersionか何か判定する方法ある?
実際はLangVersionを判定したいわけじゃなく、
C#が「interfaceのデフォルトが使えるバージョン」ならデフォルト実装を用意したものを、
そうでなければデフォルト実装はなし、
というのを#ifプリプロセッサな何かで切り替えたいんだが。
2021/05/25(火) 11:32:44.90ID:MwLEufUx0
どうせ.NET Frameworkなら最新のC#使ってもデフォルト実装は使えないんだから
言語のバージョンじゃなくて.NETのバージョンで分けたほうが良くない?
2021/05/25(火) 13:30:21.38ID:FpV6PuqQa
あればここに載せてるだろうからないんでしょうね
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/preprocessor-directives

まああってもC#のプリプロセッサのシンボルは定義済みかどうかしか評価できないから
既述が大変そうだよね

結局VS使うならプロジェクトのプロパティーで自分でシンボル定義してソリューション構成を
手動で切り替えるしかないんじゃないのかな
2021/05/25(火) 14:32:42.00ID:PTaC3ctB0
#if (NET or NETCOREAPP3_1)

でとりあえず要件満たせそうなので
これでいきます。
67デフォルトの名無しさん (ワッチョイ dfb0-5BAZ)
垢版 |
2021/05/26(水) 09:59:35.98ID:qJ3DTor20
最近VisualStudio2017から2019に変えたんだけど
WindowsAPIは使えなくなったの?
2017で書いたプロジェクトなら2019で読み込んで動くけど
直接2019から同じこコード書き始めると「現在のコンテキストには名前が見つかりません」
ってでて波線がで警告表示される
これは2019から始まったターゲットフレームワークとかいう奴が影響してるのか?
どうしたら以前のようにWindowsAPIが使えますか?
2021/05/26(水) 10:14:15.14ID:FSQy2KRV0
普通にやれば普通に今まで通り動くので
何かが普通にできてないんだろう としか言えん

Windows API呼び出すならTargetFrameworkはnet5-windowsにすべきではあるけど
別にそれは必要条件ではない
単にnet5でも問題ない(Windows以外だと実行時例外になるだけ)
69デフォルトの名無しさん (ワッチョイ dfb0-5BAZ)
垢版 |
2021/05/26(水) 10:49:28.94ID:qJ3DTor20
>>68
resありがとうございます
.NET5で試してもできませんでした
ただし「usinディレクティブか、アセンブリの参照が違うのでは?」
と具体的なメッセージに変わりましたから、
何か探しに行ってくれてるようですね
これは単純にIDEとしてのVS2019のバグということでしょうかね?
2021/05/26(水) 10:51:53.53ID:FSQy2KRV0
いや単にあなたのコードの記述ミスということだと思うよ
2021/05/26(水) 11:07:29.14ID:SkyFdszB0
もしかするとDLL参照が黄色いマーク付いてるんじゃね?
2021/05/26(水) 11:19:52.23ID:cScpWA/k0
昨日今日使い始めたやつがツールのバグを疑う世界
73デフォルトの名無しさん (エムゾネ FFba-4Cki)
垢版 |
2021/05/26(水) 11:25:04.91ID:2/BE6bBSF
ソースと環境を晒すべき
2021/05/26(水) 12:15:50.54ID:Q8/sORJB0
ブラウザからSQL文とパラメータを受け取って、PostgreSQLのテーブルを検索し、結果を返すWebAPIを作成しています。
PostgreSQLとのやり取りはDapperを使っており、パラメータは匿名型で記述しています。

ブラウザからSQL文とパラメータを送る際にjson形式でシリアライズしているのですが、これをAPI側でデシリアライズを行うと匿名型が元と違う形になってしまいます。

var foo = new { Key1 = 1, Key2 = 2};
// foo = { Key1 = 1, Key2 = 2 }

var strJson = JsonSerializer.Serialize(foo);
// strJson = "{\"Key1\":1,\"Key2\":2}"

var bar = JsonSerializer.Deserialize<object>(strJson);
// bar = ValueKind = Object : "{"Key1":1,"Key2":2}"

デシリアライズした時に、シリアライズ前と同じ状態にすることは出来ないのでしょうか。
2021/05/26(水) 12:45:20.58ID:cScpWA/k0
DataContractJsonSerializerの代わりにJavaScriptSerializerを使う
2021/05/26(水) 13:08:02.39ID:FSQy2KRV0
Json.NETなら.Deserialize<Dictionary<string, object>>(...)にすればDapperのパラメータオブジェクトに使える
2021/05/26(水) 14:04:52.01ID:Q8/sORJB0
>>75,76
Json.NET で出来ました。ありがとうございます。
2021/05/26(水) 17:06:43.67ID:vmYXos7Q0
処理を非同期にするかどうかの切り分けってどうすればいいん?
HTTPリクエストとか、I/Oとか、DB書き込みくらいでいいの?
2021/05/26(水) 17:56:01.15ID:cScpWA/k0
野生の勘
2021/05/26(水) 18:02:02.54ID:FSQy2KRV0
基本はIOバウンドなら非同期、CPUバウンドなら同期、でいいんじゃないかな
2021/05/26(水) 18:17:47.51ID:rgCCVIaL0
処理の完了を待たずに他の処理をしたい場合や
UIスレッドをブロックしたくない場合は非同期にする
2021/05/26(水) 18:34:13.84ID:wtKQcQ0P0
非同期にしたら最後
次の処理が次の行とは限らない地獄
2021/05/26(水) 18:41:14.07ID:UtsUe89ga
基本的にまずは全て非同期
これは非同期にする意味ないなと思ったら同期
2021/05/26(水) 22:04:01.82ID:c9Vxajem0
いや普通基本は同期でヘビーなとこだけ非同期にすべきだよ。
全てのアプリが何もかも全部のステップ非同期なんかにしたら、
全体的にはCPU食うだけでメッチャ重くなる。
2021/05/26(水) 22:41:04.74ID:UtsUe89ga
>>84
だから意味ないところは同期にする
2021/05/26(水) 23:01:29.12ID:W7oYIEbZ0
その、意味があるとかないとかを、どうやって判断するかと聞いてるんじゃないかね
2021/05/26(水) 23:02:37.43ID:c9Vxajem0
それだとまずは全てasyncで制作したあと、
ああここは意味がないなと、ひとつひとつあたって普通の同期に変えていく作業するわけでしょ。

だって基本まずはすべて非同期といってるわけだから。
2021/05/26(水) 23:26:44.94ID:SkyFdszB0
時間がかかるのは非同期にしたほうがいいが、短いのは切り替えの分だけ遅くなるかもな
2021/05/27(木) 00:31:55.35ID:4W3Xfkm6a
>>87
書く前にわかるだろ
2021/05/27(木) 00:56:56.72ID:1MRs9mFSa
もうやめとけってw
2021/05/27(木) 01:59:03.14ID:4CedIZFv0
>>88
全部taskValueで書けば良いんだな!
92デフォルトの名無しさん (ラクッペペ MMb6-9F53)
垢版 |
2021/05/27(木) 08:30:07.04ID:f+HvaIKyM
非同期中に他になにかやりたいことがあれば非同期

ただ待ってるだけなら同期
2021/05/27(木) 08:35:36.75ID:PMifv8cua
基本非同期とか言ってる人は、本当にアプリ組んだことあるのか疑問
2021/05/27(木) 09:12:32.37ID:7nNOolzWM
基本は非同期でいいんだよ
どうせデータアクセスやらAPIコールで呼び出し元まで遡って非同期になる
まずは非同期で考えて考えた結果こいつは非同期にする価値がないと気付いたら同期にする
それでおk
例えばドメインクラスなどはすぐに非同期にする価値ねえなと気付く筈なので同期にすればよい

初心者がやりがちなミスは非同期にすべきインターフェースメソッド、デリゲートを同期で定義してしまうことだ
これは同期デフォルト脳の弊害であるがこのミスは後々ボディブローのように効いてくる
まずは非同期で考えてじっくり考えた結果非同期にする価値なしとわかったら同期にする
こうすればゴミのようなインターフェース、デリゲートに苛つかなくて済む
2021/05/27(木) 11:25:27.22ID:VDO1F2Iy0
基本は非同期だろ
2021/05/27(木) 11:45:36.96ID:FpmPCpLLr
アプリかサーバかとか環境の平準リソースとかでも変わるしなあ

完成までに一度でもちゃんと検討しとけばいいと思うわ
97デフォルトの名無しさん (ワッチョイ 275f-4Cki)
垢版 |
2021/05/27(木) 14:40:09.29ID:U0nLnJgd0
Java は throw が伝染する・・・
C# は async が伝染する・・・
2021/05/27(木) 15:58:32.56ID:59fz6k+L0
async voidで解決
2021/05/27(木) 20:38:38.25ID:5gyWgj9W0
async使ったことないお
2021/05/27(木) 22:08:31.07ID:P0524FRt0
しばらくお待ちくださいのメッセージは非同期
101デフォルトの名無しさん (ブーイモ MM26-yRoj)
垢版 |
2021/05/27(木) 22:44:17.51ID:GWsz6i+wM
>>99
x async使ったことないお
o async使ったことないよ

日本語は正確に。
2021/05/28(金) 03:02:26.12ID:ukkv+1yM0
使うのWinFormsだからってナメてたらオーナードローと追加機能まみれで、チャリが戦車になるレベルで原型とどめてないコントロールばっか。
WPFのほうがだいぶ楽だったよ・・・タスケテ・・・
2021/05/28(金) 04:37:28.38ID:eNCMSwEe0
JavaScript, Node.js は非同期で、例外などが面倒くさい

だから、同期のRuby, Ruby on Rails を使う
2021/05/28(金) 07:07:03.28ID:LkJzbBRc0
>>102
チャリ→チャリオット
原型は完全に残ってるな
2021/05/28(金) 09:31:52.57ID:6AxbZXMl0
チャリオットの方が古いんだぜ?
2021/05/28(金) 10:05:09.64ID:YP1Y+7z60
名古屋ではケッタマシーンと言う
昭和の頃から
2021/05/28(金) 18:38:06.39ID:AMiYNwV2d
formで入力→計算→出力てな感じなもの作成してます。
exe起動後一番最初に入力するTextBox1に番号記号を入力します。例A−101など。
それを入力した時から他の人が同一番号記号を使用出来なくなるようにしたいんですがどうすればいいですか?
2021/05/28(金) 19:26:02.56ID:JNHeGsYc0
データベースに文字列を登録して各ユーザーがチェックすればOK
2021/05/28(金) 19:29:49.66ID:EVIGfz1i0
他の人は何処に居るの?
2021/05/29(土) 08:53:16.72ID:mnYn/SGN0
データベースからデータグリッドビューに表示させる際の文字列のソートが分かりません
データベース
id(int:主キー,自動採番), code(string:値としては数値で構成"01","02","10"等), name(string)
OrderByとかの使い方が良く分かってないだけだと思うのですがうまくいきません
//登録
Test.SaveChanges();
//登録後、ソートしてコード順で表示したい
Test.DbSetEntity.Where(x => x.id == id).Load();
DGVView.DataSource = DbSetEntity.Local.ToBindingList();

ご教授いただければ幸いです
2021/05/30(日) 14:35:56.95ID:borQq+I40
20行程度の1つのメソッドだけポリモーフィズム使って処理させたい&継承するクラスが複数有るとき、
サブクラス毎にファイル別ける? 同じファイルに全部書く?

今までファイル別けてたんだけど、なんか邪魔なのでファイル1個で良い気がしてきた
ただ、そうすると今度はファイル名に悩む
フォルダ作ってそこにファイル別けて全部ぶち込めば良いのかな?
2021/05/30(日) 14:53:56.25ID:McAyMcZBM
1メソッドだけの差し替えならデリゲート使えよ
それはともかく、俺は仕事では突っ込まれるのが面倒だから必ず分ける
プライベートなら適当に意味のある単位で纏めることもある
2021/05/30(日) 15:12:33.91ID:AeBNzYwcM
サブクラスをその継承元クラス内にインナークラスとして定義する前提で同じファイルに書く
仮にそのクラスが肥大化したら「BaseClass.ExtendedClass.cs」って別ファイルにpartialで切り出す
ってのを自分はよくやる

ただしインナークラスをそういう風に使うのは一般的にはやっちゃいけない気もする
2021/05/30(日) 15:21:34.04ID:McAyMcZBM
そもそも1メソッドだけなのにあえて多態を使う理由は実装を分散させたいからに尽きるわけで、
結局1ファイルに纏めるんならそれもうswitchでもええやろという気はする
2021/05/30(日) 15:35:09.61ID:4O1ZlwMf0
クソデカclassにすると、newする時間もバカにできない
2021/05/30(日) 15:45:56.38ID:Petj9nTfa
>>111
1ファイルに複数の型があっても全然構わないと思うよ。
Enumにそんな原則誰も適用してないよね?

VSにはクラスビューもあるし必要なら簡単に定義場所に飛べるので
ファイル名にこだわる必要はあまりないと思う。
だから単にベースクラスの名前でもいいと思うけど、気になるなら
「Hogeとその派生クラス」みたいにするだけじゃないの?
2021/05/30(日) 16:01:20.36ID:+uKRRzZAM
そうはならんやろ
2021/05/30(日) 16:32:51.89ID:pNxwDlXH0
>>115
それソースある?
2021/05/30(日) 17:46:22.08ID:Jq+vr6RQ0
>>111
ボリモーフィズムと継承って単語を並べて使うのが気持ち悪いな
多態性と継承か、ポリモーフィズムとインヘリタンスを使って欲しい
2021/05/30(日) 20:33:04.19ID:borQq+I40
>>119
藪からスティック
2021/05/30(日) 22:58:30.65ID:bQ1dCiB60
>>118
newするたびにコードも複製される勘違いしてる知り合いが、似たような事を言ってたなあ
2021/05/30(日) 23:02:02.71ID:bQ1dCiB60
✘ コードも複製される勘違いしてる
○ コードも複製されると勘違いしてる
2021/05/31(月) 00:13:41.39ID:N0w7o/rO0
でかいクラスってメンバーが多かったりする奴を言ってるのかと思ったけどコードの話なの?
2021/05/31(月) 00:15:18.85ID:W0rzhAw20
Pentium無印で動かしてるかもしれないだろ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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