ふらっと 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/07/13(月) 20:47:06.17ID:3o862Tw1
>>488
1行79文字というルールがあるらしい
2020/07/13(月) 21:06:52.00ID:kZw8RHgL
>>489
PC-8001のN-BASIC Ver1.0は40桁目が欠落した。
2020/07/13(月) 21:57:10.49ID:nR5el41K
C#で7lineはしんどくない?w
7lineテトリスって行って7行プログラミングでテトリス実装するってのが昔はやったのよ
2020/07/14(火) 12:10:38.46ID:LRD1Crue
改修作業中で既存のメソッドにパラメータを追加する場合、どう対応するのが一番スマートなんでしょうか?
とりあえず既存の処理に影響がないように、引数をしてなくても大丈夫なように初期値を与えておくデフォルトパラメータで対応しました

他にうまいやり方があれば教えてください
2020/07/14(火) 12:21:11.06ID:167XiksQ
オーバーロード的な?
2020/07/14(火) 12:48:22.02ID:B+3PexkI
デフォルト引数を使った奴は数年後にデフォルト引数5個のメソッドの4番目だけ入れるようなことになる
495デフォルトの名無しさん
垢版 |
2020/07/14(火) 13:38:14.30ID:Mma3I+br
hashで引数造れたやろ
496デフォルトの名無しさん
垢版 |
2020/07/14(火) 13:40:22.60ID:Mma3I+br
https://ufcpp.net/study/csharp/sp_params.html
https://ufcpp.net/study/csharp/sp4_optional.html
2020/07/14(火) 22:58:11.47ID:Pj9moNkq
>>492
C#でデフォルトありパラメータを追加すると、それを別アセンブリから参照した場合別のメソッドとみなされるので注意が必要だよ
一括でビルドする運用じゃない場合はオーバーロードで追加する必要があるよ
498デフォルトの名無しさん
垢版 |
2020/07/16(木) 02:42:42.59ID:upERmnMd
.NET Codeって表現は初めて見た
https://bitbucket.org/product/features/pipelines
https://bitbucket.org/product/ja/features/pipelines
499デフォルトの名無しさん
垢版 |
2020/07/16(木) 08:06:35.48ID:T5Fa9tJk
.NET CoreとVS Codeが混ざったのかな…
2020/07/16(木) 09:04:03.94ID:9VjFX6DT
VS Coreって書いてしまうのは分かる
2020/07/16(木) 09:13:31.65ID:bp92lBtJ
出てきそう。。
502デフォルトの名無しさん
垢版 |
2020/07/16(木) 13:06:39.59ID:Bj5j4Y6i
三峡dump
503デフォルトの名無しさん
垢版 |
2020/07/18(土) 10:46:40.09ID:EAXhwyhk
Entity FrameworkでDBのEntityから振る舞いを持ったモデルクラス?(表現が適切か分からん)に変換するときどうやってる?
https://ideone.com/AyKkA4
↑みたいな感じで強引に全部代入していくか
会社の頭良い人はリフレクション使って同名プロパティ同士で代入するようにしてたけど
どんな感じでやるのが一般的なのか聞きたい
504デフォルトの名無しさん
垢版 |
2020/07/18(土) 11:56:22.48ID:U6qRAqAx
振る舞いを持ったクラスにEntityのインスタンスを持たせる
2020/07/18(土) 12:51:46.86ID:hYOY3gDK
class Hoge {
private readonly HogeEntity e;
public Hoge(HogeEntity e) => this.e =e;
public HogeEntity Entity => e;
public HogeId Id => new HogeId(e.Id);
public HogeName Name {
get => new HogeName(e.Name);
set => e.Name = value.ToString();
}
public void ExecFugaFuga() {
Console.WriteLine("{0}:{1}", Id, Name);
}
}

EFは遅延ロードやトラッキングのための情報を持ってるから元のインスタンスを活かす方向で
506デフォルトの名無しさん
垢版 |
2020/07/18(土) 19:31:26.08ID:EAXhwyhk
>>504-505
ID変わったと思うけど>>503です
ありがとうございます 勉強になりました
2020/07/26(日) 14:38:05.73ID:2YJHPn7i
基本はAutoMapperじゃねーの
508デフォルトの名無しさん
垢版 |
2020/07/29(水) 07:58:29.60ID:Wyck1MKo
自作クラスで
https://docs.unity3d.com/ja/current/ScriptReference/Vector2.Index_operator.html
の様な機能を実装するにはどうすればよいでしょうか?

例えば
MyClass mc=new MyClass();
mc[0]=10;
mc[1]=5;

という感じです。
MyClassがdouble[2]を継承していれば実現できる気がするのですが、そんなことができるとは思えません?
thisに特別な使い方があるでしょうか?
Listなんかもインスタンスが配列的に取り扱えているので、何かしらの方法があるのだとは思いますが、
その方法がわかりません。
2020/07/29(水) 08:11:08.24ID:jnMYxU1A
これ?
https://ufcpp.net/study/csharp/oo_indexer.html
510デフォルトの名無しさん
垢版 |
2020/07/29(水) 08:59:21.14ID:Kt0/ZYo6
なぜC#はプロパティやメソッドの最初の文字が大文字なんだ??
2020/07/29(水) 09:09:52.48ID:jnMYxU1A
>>510
俺はオプション切ったけど
うざいから

アレ真似するとさ
マイクロソフトのメソッドと文体が同じになって見難いんだよね
2020/07/29(水) 09:27:17.11ID:Rb05fCWl
privateなメソッドは小文字から、publicなら大文字から始めるのが俺のジャスティス
2020/07/29(水) 09:30:02.96ID:HB4PhX83
.NET Frameworkの設計責任者だったヘルスバーグの趣味だろ
Dephiもそうだし
2020/07/29(水) 09:38:21.50ID:jnMYxU1A
>>512
それやるとMSのとバッティングすんじゃん
ウゼーよ
お前が作ったテストしてあるかどうかもよくわからんのと
MS様のが同列にでてくんのかよ
2020/07/29(水) 10:19:42.52ID:F052uZps
>>514
はいキチガイ
2020/07/29(水) 10:22:20.42ID:aa0ScELi
MFCみたいにクラス全部Cはじまりみたいな方が良かったという主張?
全然今のほうが良いけど…
2020/07/29(水) 10:36:21.93ID:ZD2Ud5DP
MS以外のライブラリ使ったらもう大混乱だねえ

そういやUnityEngineってガイドラインだとプロパティもパスカルケースってあるんだけど
標準の実装だとプロパティはキャメルケースになってるのなんなんだろな
518デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:26:54.87ID:hY/5h1XO
なんでもかんでも頭にm付ける人嫌い
2020/07/29(水) 12:23:23.19ID:GpWpPvNy
>>510
それは問題設定が逆
むしろ何でキャメルみたいな自然言語の表現として違和感がある表記を
private以上のスコープの識別子に採用する必要があったの?
普通はそう考えるでしょ

ライブラリの識別子と俺コードの区別が〜なんて論外だよねw
何で区別する必要あんの

>>518
ごめんそれ俺ですw

でもハンガリアンは濫用するとかならず破綻する悪いマナーだけど
フィールドにプリフィクス付けるとか用途を限定すればそれなりに有用だと思うよ
520デフォルトの名無しさん
垢版 |
2020/07/29(水) 12:34:50.98ID:RKALKuVf
変数の最初にアンダーバー(_)入れるの嫌い。
なにか理由があってそうしてるのだろうけど、それを推測しないといけないからそれを考えるのに無駄に時間を損する。
2020/07/29(水) 12:55:58.45ID:GpWpPvNy
プロパティーのバッキングフィールドを_でプリフィクスするのは合理的だと思う
基本的に積極的に触るものではないから、インテリセンスを「汚染」しないような名前がいいよね
2020/07/29(水) 13:49:34.09ID:Wyck1MKo
>>509
ありがとうございます。
それです。
2020/07/29(水) 14:30:37.46ID:ZD2Ud5DP
dotnetのソースコードも専らインスタンスフィールドは_プレフィックスだし
推測が必要なほど珍しいもんでもないと思うがなあ
2020/07/29(水) 16:55:46.49ID:jnMYxU1A
>>519
普通に区別できたほうが便利じゃん
2020/07/29(水) 17:23:11.73ID:tmYSVGo9
何がどう便利なのかさっぱりわからん
2020/07/29(水) 17:38:57.25ID:ECJwuhlO
できることが少ないほどどうでもいいことにこだわる例
C#自体の制約でもないんだから他でやれ
2020/07/29(水) 18:12:10.63ID:jnMYxU1A
>>525
区別できるのとできないのとじゃできたほうがいいじゃん
2020/07/29(水) 18:27:50.53ID:Bu6uxHFv
大して役立つわけでもない区別のために無駄な制約が付くくらいなら、区別する必要はないだろう。
お前にとっては大事かもしれないが他の人にとっては下らないことだというだけのことでしょ。
2020/07/29(水) 18:34:33.47ID:jnMYxU1A
>>528
えー、マイクロソフトのメソッドと混じっちゃうのに?
すげー見難いよ
2020/07/29(水) 18:40:15.08ID:ftoJRs+p
混じっていいじゃん
メソッドの作者が誰かなんて呼び出す側考慮する内容じゃない
その理論で行けば全てのライブラリが固有の記法を持つ必要がある
namespaceで十分事足りる
531デフォルトの名無しさん
垢版 |
2020/07/29(水) 18:45:43.45ID:irGYEToC
分ける意味あるの?
2020/07/29(水) 18:54:51.38ID:gkYIYE/o
>>529
MSだけじゃなくてサードパーティーの大抵のライブラリでもpublicなやつは頭大文字じゃね?
2020/07/29(水) 19:28:30.63ID:jnMYxU1A
>>532
だからそれと自分のと分けたい
MSとその他の会社のが同じ傾向なのはむしろ良い
2020/07/29(水) 19:37:46.77ID:ftoJRs+p
自分だけm_でもつけて警告全部抑制してんでしょ?
それでいいじゃん
一緒に仕事はしたくないけど閉じた中でやる分には勝手にやってくれ
ライブラリとMS標準は同じ記法で自分だけ違うとか成立するわけ無いじゃん
ライブラリ作成者どうするんだよw
2020/07/29(水) 20:54:45.98ID:jnMYxU1A
>>534
は?意味不明
2020/07/29(水) 22:15:00.38ID:F71xeJ/5
>>529
そう思うのは多分君だけだよ
2020/07/29(水) 22:17:01.57ID:F71xeJ/5
C#は別だけどメジャーな他の言語で大文字で始まったらpublicでそれ以外はprivateみたいな
クソ言語がいくつもある
2020/07/30(木) 00:28:20.43ID:9xNaK/gE
というか、コーディング規約あるだろ。
混じっていいんだよ。むしろ混じるべきなんだよ。
2020/07/30(木) 01:07:51.31ID:gZE3bpaO
>>538
C#はMSのコーディング規約に則っている人が多いような気がする
2020/07/30(木) 01:34:48.66ID:9xNaK/gE
>>539
VSに矯正されるしな。
標準のコーディング規約が一番いいよ。
2020/07/30(木) 01:40:40.83ID:jUjY7FYi
労力を欠けずに静的解析可能なデフォルトのコーディング規約に従っとくのが定石
逆に言うと静的解析不可のコーディング規約は害悪
2020/07/30(木) 02:06:34.25ID:3OVhn9K/
>>538
嫌だよ
だってメリット一つもないじゃん
単に見難いだけ
プロジェクトで作成したメソッドとMSやその他のメソッドは違う記述で書いておいた方が普通に見やすいだろ
逆に何で同じにしたいの?
何かメリットある?
2020/07/30(木) 02:15:13.70ID:3OVhn9K/
そもそもprivateとpublicの記述を変えてまで分けるメリットこそわからん
クラス内で呼び出すときに違いなんて皆無だしそもそも意識する必要はない
外部からはそもそもpublicしかideで候補に出ないだろ

ガチで記述分ける意味なんてないだろ
言っちゃ悪いけどアメ公って設計センス皆無だと思うよ
オブジェクト指向も意味ないし
ハンガリアン考えたアホもあいつらだし
どっちかっていうと
グローバルかスタティックか
メンバかローカルか引数か
わかったほうがいいと思うけど
あいつらバカだからそういうのでないし
2020/07/30(木) 02:52:55.04ID:wMJzUtju
相対性理論は間違っている!!!まで読んだ
2020/07/30(木) 02:53:13.66ID:jUjY7FYi
キチガイに触っちゃダメだな
2020/07/30(木) 02:57:23.12ID:f3QF/ar6
統一された規約で見やすい
同じプロジェクト内に異なる規約に基づいたコードが混じるほうが見にくい

まぁ見やすい見にくいなんてものは感覚的なとこも大きいから人それぞれ
で、君はこのスレに限って言えば確実に少数派ってだけよ
2020/07/30(木) 02:59:20.25ID:oNfdNk6G
プログラマーってやっぱ面倒な人多いな
2020/07/30(木) 03:03:25.78ID:jUjY7FYi
>>547
そういう人が目立つから、多いように感じるだけでは?
2020/07/30(木) 06:49:19.25ID:3OVhn9K/
>>546
え?単に統一したいってだけ?
バカじゃん
2020/07/30(木) 07:16:05.43ID:eBe0OoYr
using namespaceして混ざってますとか
まさかそんな話じゃ無いよね
2020/07/30(木) 08:53:32.24ID:FAJU7a5A
完全無欠なプログラマーばかりじゃ無いからね
2020/07/30(木) 09:01:43.81ID:cb3mNJbN
static変数であれば _ を接頭に付けるようにしてる
2020/07/30(木) 09:51:18.81ID:jpY92a62
どのLinter使ってる?
わたしSonarAnalyzer、FxCop、StyleCopしか知らない
554デフォルトの名無しさん
垢版 |
2020/07/30(木) 16:26:26.85ID:MEm4+jqE
>>542
揃ってないと他者が君のコードを読みにくくなることが理解できないのか?
2020/07/30(木) 16:29:57.10ID:3OVhn9K/
>>554
は?どういう理由で?
2020/07/30(木) 16:30:59.11ID:1FNHaAqH
キチガイに触るやつもキチガイ
557デフォルトの名無しさん
垢版 |
2020/07/30(木) 17:36:24.35ID:EPvquY9v
TicTok禁止で日本のプログラマは腕の見せ所と言われていますが
日本から出て来ないのは何故ですか
2020/07/30(木) 17:38:46.73ID:MNqN/CLh
プログラムじゃなくて企画の話
2020/07/30(木) 17:53:23.21ID:jpY92a62
TicTokってなんだ?
560デフォルトの名無しさん
垢版 |
2020/07/30(木) 20:16:55.83ID:PjXQoB0L
禁則事項です (*❛‿❛)
2020/07/30(木) 20:18:11.19ID:1U+fWq81
すっかり雑談スレ
2020/07/30(木) 20:30:20.90ID:f76NfPGa
初心者用スレなので難しい話題が続くのは辛いのです
2020/07/30(木) 20:32:38.95ID:f76NfPGa
難しい話がしたい人はStackOverflowにでも行ってください
2020/07/30(木) 21:05:58.87ID:W995pNPY
この板キチガイ比率多いよな
プログラムできそうにもない奴も多いけど何のために来てスレ見て書き込むんだろう
2020/07/30(木) 21:26:57.39ID:SHrdySLu
ふらっと立ち寄った牛丼にちょっぴり甘酸っぱいアレを求めて
2020/07/31(金) 02:02:46.97ID:scVTyeA2
しょうがないな...
2020/07/31(金) 04:35:04.60ID:FOeYvzY0
using system;
みたいなのってnamespace{}の中に書く人と外に書く人がいるのだがどっちでも効果変わらないの?
2020/07/31(金) 05:13:30.80ID:PQssP+wa
>>567
名前欄にちゃんと書かないと0点ですよ。

usingはこれ以降は省略して使いますよという宣言を指示しているものであって

namespace{}はこれから定義する中身をこの名前で宣言しますので使ってくださいねと書くものです
中に書いた場合は入れ子になるので
外で使う時に探せないとエラーです。
2020/07/31(金) 05:27:28.58ID:FOeYvzY0
>>568
ありがとうございます。名前欄に書いてみました。これでいいのでしょうか?
2020/07/31(金) 06:26:04.32ID:HyC+Ilh8
>>567
visualstudioが答え教えてくれてる
2020/07/31(金) 20:46:44.97ID:jclw2i1e
>>557
niconicoを再興させるの?
2020/08/01(土) 13:08:48.90ID:1MgiYVOp
初心者ですが
form1の中に全部書くのが正しいスタイルなんでしょうか?
クラスを分けて書いたところエラーが出て呼び出せなかったりしてハマったので
2020/08/01(土) 14:15:01.91ID:Xo2cpU8S
すっごく単純なテストプログラムとかならばデフォルトフォームにすべてのコードを
書くのもありっちゃありだけど、一応それっぽく書くならばフォームのコードには
UIを更新するものだけにして、ロジック部分は別クラスにするのが普通かな

まぁ、趣味で自分しかソースを見ない、1ファイルが数千ステップでも理解できるって
いうならばクラスを切らなくても出来る事は多いけど
2020/08/01(土) 14:17:11.32ID:1MgiYVOp
ありがとうございました
2020/08/01(土) 14:50:06.39ID:IrtDCma7
>>572
正しい書き方なんか気にする前になんでエラーになっているか検証と反省した方がいい
クラス分けたのが原因じゃなくコードが間違っているのが原因なんだから
2020/08/03(月) 01:52:17.59ID:6dZ6svAV
visual studio 2019 でListViewのHideSelectingプロパティをTrueにしても、しばしばFalseになります
ViewはDetail,OwnerDrawとAllowDropはTrueにしてます
対処法などあるでしょうか?
2020/08/03(月) 08:54:15.22ID:tu1Eof6R
>>576
プログラムで指定するとか
578デフォルトの名無しさん
垢版 |
2020/08/03(月) 09:53:15.93ID:3aFKjSal
メモリ壊してるとか
2020/08/03(月) 09:56:00.38ID:6dZ6svAV
>>577
なるほど
ツールの不安定動作の解消でなく、プログラムでの対応ですね
これでいきます
ありがとうございました
2020/08/04(火) 17:32:59.57ID:LpmHfjM4
ネットワーク越し等で受け取った画像ファイルをストレージに保存することなくそのまま外部の画像ビューアで開きたいのですが、
その画像ビューアがPipe受け取りをサポートしておらず、パスによるファイル指定でしか画像を開けない場合にでも受け渡す方法はないでしょうか?
NamedPipeやMemory-mapped fileあたりを利用すればメモリ上のオブジェクトのパス指定で別プロセスに開かせるということも可能にならないでしょうか?
2020/08/04(火) 17:42:55.18ID:4MGs1dmO
>>580
その外部の画像ビューアの仕様の問題でC#関係ないな
582デフォルトの名無しさん
垢版 |
2020/08/04(火) 17:52:51.76ID:DzQriKoF
NamedPipeやMemory-mapped fileあたりを利用すればいけるんじゃね
2020/08/04(火) 17:59:57.39ID:QdwTkp3A
Windowsだとそういうの無理じゃなかったっけ
Linuxならそれこそ名前付きパイプで可能だけど
2020/08/04(火) 18:00:03.93ID:4j4tUZaH
前も同じ質問があった気が。

良く知らないので適当だけど、仮想ドライブが存在する以上
何かをファイルシステム上のファイルに見せかけることは少なくとも技術的には
可能なはずだけど、普通のユーザーモードのプログラムには無理なんじゃないの?
2020/08/04(火) 18:34:34.30ID:6pRXexcE
Shell Namespace Extensionでフォルダっぽく見せることはできるが
ファイルAPIからアクセスできなかった気がする
あとはNASエミュレートしてマウントするとか
どうやっても実装コストに見合わない気がするのでテンポラリに保存したら
2020/08/04(火) 19:34:00.39ID:mkYNa+r5
dokanはどうなったんだろ。
2020/08/05(水) 17:53:29.91ID:NSeNyg6w
File.Replaceでバックアップファイル要らんとき
nullを指定しろって書いてあるけど嘘だよね?

.net 4.8 でやってるんだが
588587
垢版 |
2020/08/05(水) 18:02:35.76ID:NSeNyg6w
わかた

上書きされるファイルが元々無いと例外でるようね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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