X



ふらっと 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
446442
垢版 |
2020/07/08(水) 10:36:21.30ID:HlrvmqX5
>>443-445
レスありがとうございます。
計算式の同一性を判断したかったのですができないようなので他の方法で実装します。
2020/07/08(水) 11:24:34.35ID:WXMpgQLP
計算式の同一性って、p*2とp<<1は同一と判断するのかな?
448デフォルトの名無しさん
垢版 |
2020/07/08(水) 11:29:13.34ID:hADFKHgu
定義域の数値を全部代入してみて出力が全部同じなら同じと見なす
2020/07/08(水) 11:57:50.89ID:efuFen5l
>>446
そんなの無理だよw

=x*(x+1)+1と= x*x +x+1が同じかどうか判定できるわけがない
2020/07/08(水) 12:03:35.90ID:hEQaHqpN
p => p * 2とq => q * 2は違うという判定でもよければ
ExpressionをToString()して比較
それ以上は中身を比較しないと無理

NugetのLambdaCompareを使うとp => p * 2とq => q * 2は同一と判断可能
https://dotnetfiddle.net/bTgYtj
(表現の同一性比較であって計算式の同一性比較ではない)
2020/07/08(水) 12:05:22.06ID:739odCbc
http://wildpie.はてなぶろぐ.com/entry/2014/09/29/174449
452デフォルトの名無しさん
垢版 |
2020/07/08(水) 12:27:34.83ID:4Tv60rH2
小姑みたいな話と思われるかもしれないけど、同一と等価は厳密に区別した方がいいよw

同一というのは同一人物の同一。
等価というのはある判断基準に基づいて同じと見なせるということ。

前者には恣意性が入り込む余地がないのに対して、後者は恣意的な演算。
恣意的ということはつまり、計算機が適当に忖度して行える演算ではないということ。
何をもって等価と見なすかは人間が決定する必要がある。

デリゲートの==演算子は同一性を検査する
2020/07/08(水) 12:31:30.49ID:Uf4eXrJ5
単芝を生やさなければいい人なんです
454デフォルトの名無しさん
垢版 |
2020/07/08(水) 13:00:57.01ID:hADFKHgu
ちなみに水分子H2Oの二つのHは同一ですか?等価ですか?
455デフォルトの名無しさん
垢版 |
2020/07/08(水) 13:54:53.54ID:4Tv60rH2
素粒子に自己同一性はないって昔学校で習った気がするけど
分子や原子は区別できないとしても別の実体としてふるまうんでないの?

知らんけどw
量子論のスレとかで聞いてよ
2020/07/08(水) 18:19:57.64ID:3FAysldn
片方のHが重水素だとしても水は水だし
同一とは呼ばないんじゃない
2020/07/08(水) 23:06:58.00ID:1YeSpiHr
A〜Eのスイッチがあります
各スイッチには3つの状態、ON、OFF、IDLEがあります
A〜Eの状態の組合せすべてを試すには、どういうコードを書けばいいんでしょうか?
2020/07/08(水) 23:11:47.61ID:fZdxMqQA
for (int a = 0; a < 3; a++)
for (int b = 0; b < 3; b++)
for (int c = 0; c < 3; c++)
for (int d = 0; d < 3; d++)
for (int e = 0; e < 3; e++)
f(a, b, c, d, e);
2020/07/08(水) 23:24:42.93ID:1YeSpiHr
>>458
どうもありがとうぎざいました
2020/07/09(木) 00:41:54.14ID:ivivNmNg
>>457
LINQ使うやり方
var list =
from a in switchStatus
from b in switchStatus
from c in switchStatus
select (a, b, c);
https://ideone.com/F8LWa8
2020/07/09(木) 01:30:27.61ID:w3TiL3fA
>>460
どうもありがとうございます
2020/07/11(土) 11:00:22.02ID:YXUM7d+V
C#にpandasやdplyrのようなデータフレームライブラリないですか?わざわざ独自クラス定義して箱作ってデータ受けるのだるいんですが、便利な手法あれば教えて下さい
2020/07/11(土) 11:05:23.65ID:n/S+GwYQ
ないよ
データ分析系は一時期MSがC#で整備しようとしてたけど結局諦めてJava系技術を使ってねということになり、それ以来何も動きはない
2020/07/11(土) 11:07:47.42ID:Rtii2xnW
ひどい話だ。C#がイマイチなのはそういう所か
2020/07/11(土) 11:12:22.42ID:n/S+GwYQ
まあ良くも悪くもMS頼みだね
なんでも.NETにしようとしていた時代は終わり、今ではMSの戦略上はC#は数ある言語の一つでしかなく、.NETはそれを動かすためのランタイムでしかない
2020/07/11(土) 11:17:18.89ID:Rtii2xnW
Javaに引け目を感じてるならともかく
Javaの牙城を乗り越えて・・と思ったけど
Winサーバーでお世話になってるOracleさんには迷惑かけるわけにもいかず中途半端な感じ
467デフォルトの名無しさん
垢版 |
2020/07/11(土) 11:23:00.23ID:J0INoyBc
C#からpandas呼んだらええやん
2020/07/11(土) 11:27:30.40ID:Rtii2xnW
MS> Java系技術を使ってね
2020/07/11(土) 11:43:59.72ID:YXUM7d+V
>>463-464
なるほど、C#好きなんでその辺残念です。



>>467
詳しく!!
470デフォルトの名無しさん
垢版 |
2020/07/11(土) 12:09:40.13ID:J0INoyBc
>>469
オウム返しで聴く前に自分で探せ
C# から Python https://qiita.com/hogegex/items/3743225a7af13e93df78
Python から C# https://qiita.com/Masutani/items/2f94110a8d386919788d
C# から Python https://www.valuestar.work/news/archives/120
Python から C# https://www.valuestar.work/news/archives/81
Python から C# https://www.valuestar.work/news/archives/82
https://devlights.?ぶろぐ.com/entry/2017/05/18/125507
2020/07/11(土) 12:11:46.15ID:eBTflR9l
デカpandasよ
2020/07/11(土) 13:35:41.03ID:n9XGFFVi
今時の開発は、ツールやフレームワークが先行して、それを使うにはなんの言語が必要なのか、で言語を決めるから、C#に拘ってられないんだ
2020/07/11(土) 13:36:36.27ID:n9XGFFVi
なのでpandasを使いたいなら素直にpythonを使うのがいい
2020/07/11(土) 14:30:33.81ID:0BF0aQZE
Deedle
http://bluemountaincapital.github.io/Deedle/index.html

DataFrame
https://devblogs.microsoft.com/dotnet/an-introduction-to-dataframe/
2020/07/11(土) 15:28:02.44ID:7If+bDP/
「pandasと同じことが出来るC#用のなにか」
っていうのじゃまた覚え直すことが増えてしまう

C#で動くpandasが欲しい

無かったらC#からpython呼ぶ

この流れはありだと思うけど
2020/07/11(土) 20:04:57.74ID:UJnAvrbq

C#やめてpythonにするわ
2020/07/11(土) 20:12:52.17ID:YXUM7d+V
>>470
自分、優しいやん
2020/07/12(日) 14:42:20.04ID:xkMf7lNc
PyCallみたいな馬鹿をやってまでRubyを貫こうとする連中とは対称的なスタイルだ
どっちが賢いのかは知らない
2020/07/12(日) 16:36:04.87ID:1J6U44eR
現在のソリューション構成(Release/Debug)やソリューションプラットフォーム(x64/x86)は.vsフォルダ化に記録されてるのだと思いますが、
これを.slnや.csprojに記録しておくことは出来ないのでしょうか?
githubからcloneし直すたびに構成やプラットフォームを選択し直すのが面倒であるため、ignore対象である.vsフォルダ下以外に記憶させたいです
2020/07/12(日) 16:52:29.71ID:eLToXZUv
>>479
それはバージョンもわからないしスレ違いだからVSのスレで聞いて
2020/07/12(日) 17:57:35.03ID:1+Y6Y1fc
.slnを覗いた感じアクティブな構成は.slnに記録されてるように思うけどな。
個々のプロジェクトの構成とソリューションの構成を混同してたりしないかね
482デフォルトの名無しさん
垢版 |
2020/07/12(日) 19:36:45.95ID:c6U54YOa
自分用にmakefile描けば解決
2020/07/12(日) 22:04:11.66ID:gfWQHUNC
自分でmakefile書いたら負けかなと思う
484デフォルトの名無しさん
垢版 |
2020/07/13(月) 09:19:43.71ID:TjSPxylo
自分用の裏.sln造って.gitignore
2020/07/13(月) 13:13:21.99ID:UoRA6Cp5
VS2019はslnではなく隠しフォルダ下の.suoにアクティブ構成は保存される
よって個人プロジェクトであれば.suoもpushしておけばいい
2020/07/13(月) 20:06:02.67ID:3o862Tw1
今日は仕事をする気が起きなくては、朝からずっとC#でマインスイーパ作ってた。
すごくがんばったけど15行までしか縮められなくて絶望した。
7行とか目指すならルーチンを根本的に変えなきゃダメなんだろうな。
2020/07/13(月) 20:11:45.44ID:ivWwVChL
LINQとラムダでゴリ押すのか
2020/07/13(月) 20:24:39.61ID:07870Pda
文字数じゃなく行数?
;つければいくらでも連結できるのに何の意味が
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
キチガイに触っちゃダメだな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。