ふらっと C#,C♯,C#(初心者用) Part140
レス数が900を超えています。1000を超えると表示できなくなるよ。
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1533466544/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured リフレクションはウンコみたいな依存関係を作る元凶だからな
まともなヤツならまず使わない こうやってクソみたいな依存関係のあるクソコードが量産されていくのがよくわかる AというオブジェクトからBというオブジェクトにアクセスする場合
よほどの理由がないかぎりBからAにアクセスすることは避けないといけない
できるだけコンポジションにするべき
この場合、AがBを内包するようにする
コレはシロウトでなければ常識の問題だからな >>822
> AというオブジェクトからBというオブジェクトにアクセスする場合
> よほどの理由がないかぎりBからAにアクセスすることは避けないといけない
何で?
例えば俺がAでお前がBだったとする
俺からお前を殴るかもしれんし
お前から俺を殴るかもしれん
どちらにしろ
お前はすでに死んでいる 低学歴知恵遅れほど
継承とリフレクションをうれしがって多用するからな
まさに
オブジェクト指向に低学歴知恵遅れは
キチガイに刃物 リフレクションを使わないソースコードなんて気の抜けたコーラだろ 64bitの.NET Core でSQLite使いたい時はどれ落とせばいいんですか?
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
.NET Core用のは以下の1つしかないっぽいけど、これ使うと、"間違ったフォーマットのプログラムを読み込もうとしました。"とエラーが発生します。
Precompiled Binaries for the .NET Standard 2.0 (.NET Core 2.0)
過去の.net frameworkの経験上、bit違いでこのエラーが出るようなんですが、Core用SQLite.dllが上記しかないので、どうしようもない状態です。 EF Coreのマイグレーションで自動生成したことしかないわ >>831
Coreなら尚更だけど、今時手動でDLLを入れるのはやめろ
NuGetで一発 ああdllの話かw
こないだNuGet知らないやつがいて驚いたわ >>831
UWPでは、System.Data.Sqliteとは別系統のMicrosoft.Data.SQliteというMSご謹製のライブラリがあるのでそっちを使ってください
ちなみにDapperはマトモ動きませんのでEF Core使うか直にADOやらないと駄目だけどね リフレクションはgotoみたいな弊害があるって話? 漏れは、様々なアプリから使うために、C:\sqlite3 に、すべてを入れているけど。
ただし、C# は使わないけど
sqlite3.def, sqlite3.dll, sqlite3.exe
sqldiff.exe, sqlite3_analyzer.exe [ProgramFilesFolder]
あんたのアプリケーション.exe
[x64]
SqliteInterop.dll(64ビット)
[x86]
SqliteInterop.dll(32ビット) >>838
Debugモードで動いたけどReleaceモードにしたら落ちた
詳しく調べるのもめんどいからプロジェクトから削除してADO+EFにしたよ やっぱりバカはいまだにうるう秒がどういうもんなのかすら分かってない
低学歴っていちいち低学歴を自白するからな
そして低学歴の知ったかドイチェ語
すぐに分かるのが恐ろしいわ。。。 >>843
コレは誤爆だ
リフレクションで問題になるのは
オブジェクトの依存関係になるのは常識だからな リフレクションなしのコーディングなんて考えられんわ 暫く泳がせてたが
オブジェクトの依存関係はリフレクションとは直接関係ないけどな
メタデータ触るには不可欠だし
ライブラリ周り作るにも必要なケースは多い
自称上級者が継承やらリフレクションや使ってドヤって害悪なのは同意 呼び出し方向を一方通行に制限するのは、循環呼び出しを避ける為だから。 ぜんぜん違う
このスレにいるような池沼が作らなければ
クラスライブラリも階層(ココで階層は継承の階層ではない)や種類で作るからな
低い階層に行けばいくほど単純な簡単な機能を提供するクラスになる
階層は完全に分離させて独立したライブラリにする
そして明確に種類の異なるプリミティブがある場合は
ライブラリを完全に分離させて独立したライブラリにする
その上にアプリケーションを実現するクラス群がのっかる
低学歴知恵遅れが作るとすべて同じ階層で同じ種類になる 当然、低レベルな部分を実現するクラスライブラリと
アプリケーションが主に利用する中間層のクラスライブラリと
アプリケーション自体を記述するクラス群は
シロウトでもないかぎり完全に分離するからな
低レベルな部分を実現するクラスライブラリは
当然、中間層のクラスライブラリやアプリケーション自体を記述するクラス群を
参照することはまずない
アプリケーションが主に利用する中間層のクラスライブラリは
アプリケーション自体を記述するクラス群を参照することはまずない
低学歴知恵遅れが作ると酷い依存関係ができる
コレはオブジェクト指向関係なくライブラリの基本だからな 組織でたとえるならこうなるからな
経営者クラス 社員をこき使う
↓
社員クラス ← 派遣をこき使う(職階ごとの複数の中間層)
↓
派遣クラス ← キミラが担当するような低レベルな部分の単純作業(つまりキミラ)
派遣は社員の作業も役員の作業もしない
社員は役員の作業はしない
関数の行数が多いのは
作業を整理して作業を手順化して
派遣にうまく単純作業を割り当てれてないのと同じだからな
つまり、人に仕事させないと自分の作業が増える
キミラは派遣ドカタだからな、そういう作業はできないのは分かる
当然作業ミス(例外)が発生してスルーし続けてたら上までいく 3行にまとめられない奴の発言は読む価値がないって本当だわ 例えば扱うビジネスの領域が違えば
部門を分けることになる
会社に複数の部門があっても一つの会社だからな
種類で分けるというのはそういうことになる
キミラみたいな一種類の単純作業しかしてないヤツラには関係ないワケ というわけでな
キミラは刺身にタンポポのせる作業に戻りなさい
キミラにはムリ いちいちタンポポ載せてる作業経過報告はいらない
作業の補助とか、いちいち次になにをするかとかとか指示はしないからな
タンポポが地面に落ちたとかこのタンポポのハナ小さいとか
そういう報告(リフレクション)もいらない
捨てときなさい
それぐらい分かるだろう
タンポポが足りなくなりそうになったら
この台帳に書いときなさい
コレだけはたまに見といてやるからな
キミラのコーディングは自身がおかれてる立場と
まったく一致してるワケ プロジェクト適切に分けて
依存関係の正規化しろって話だろうに
リフレクションは関係ないしな
その程度の理解やから長い寝言いってる 所詮、派遣ドカタ
残念なことに派遣ドカタのレスなんか
すぐにわかるわ バカに限って抽象化とかいって
サルみたいにうれしがって継承するからな
破綻はそこから始まる
しばらくほっとくと
データ受け渡しするために
無秩序に相互参照しはじめる
こうなったら終わりの始まり 質問です
ifの条件に配列を使いたいとき、例えば
if( 配列[ ]=={1,2,3,4} )
みたいにやるにはどうするのが一番簡単ですかね
配列[0]==1&&……で一個ずつ作るしかないですか 左辺も右辺も同じ長さの配列であればfor文を使うと書く量を減らすことができる気はする 半角さんはこっちでも馬鹿を晒してるんだ。。
次世代言語スレで論破されてもまだみっともなくないんだね。 俺はできるだけなんでもリフレクションでやるようにしてるよ 半角カナの人はあっちこっちで喧嘩売っている話の通じない人だから相手にしないでくれ
あとここ質問スレだから質問以外の話は相談室なり他で頼むよ if( 配列.Where( a => (new int[] { 1,2,3,4 }).IndexOf( a ) > 0 ).FirstOrDefault() != null )
とかボソッと言ってみる。真に受けないでね。 オレはケンカなんか売ってない
バカが真人間になるように矯正してるだけだからな
バカはオレにケンカ売ってるつもりらしいな >>859
「一番簡単」が何を求めているのかわからないが、比較するものの数が決まっているのなら「配列[0]==1&&……で一個ずつ作る」のが「速くなる」
汎用にしたいのならラムダもlinqも俺自身が使えないのでメソッドにすると例えば
private bool hikaku(int[] arr1, int[] arr2)
{
if (arr1.Length != arr2.Length) return false;//配列の長さのCheck
int i = 0;
for (; i < arr1.Length; i++) if (arr1[i] != arr2[i]) break;
return i == arr1.Length;//全部一致したら最後まで止まらない
}
メソッドを呼び出すのはそれだけで速度的にだいたいロスになるので「速い」動作を求めるのならこれも勧めない
linq使うのが一般的だと思うけどそれは他の人に聞いてw まあ、>>861で済んでるとは思うんだけど、あえて付け加えるならこう?
public static bool Equals<T>(this T[] x, params T[] y) where T:IEquatable<T>
{
return x.SequenceEqual(y);
}
今は(というか10年前からだけど)new[]{...}が使えるからparamsは有難みが薄いかもしれない vbで言う、戻り値もらう時Function 〇〇の〇〇の部分って変数はそのまま使えない?
あとcallはないみたいだけど、人が書いたコード読む際にこれはなんか値取ってきてるなとか何か計算しにいってるなとか一目で分かるには慣れるしかないですかね? 〇〇 = 戻り値 は return 戻り値; じゃね。
Call は戻り値とかではなくて戻り値のない関数(Sub)を呼ぶときに引数の部分を () でくくりたい場合に使うものではなかったっけか。
戻り値を受け取るかは呼ぶ側で 変数 = 呼ぶ関数(); になってれば受け取るんだろうし、
呼ばれる側が戻り値を用意してるかどうかは呼ばれる側の関数の(戻り値の)定義が void になってれば返さないんだろうしってことじゃダメなん? >>871
現代のVBではCallを明示的に書くのはMSが非推奨 >>874
MSが公式にそう言ってるのか?ソースはどこ? >>875
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/call-statement
> You typically use the Call keyword when the called expression doesn’t start with an identifier.
> Use of the Call keyword for other uses isn’t recommended. 意識高い系VBerさん達が梯子外されちゃって可哀想 VBでもCallなんて付けない方がいいと思うしそれが普通だと思うけど、
>>876の内容はCallキーワードの使用一般を非推奨とはしてないじゃんw
これが非推奨と言ってるのはたぶん、
Call Math.Min(1, 2)
みたいな使い方。これはCallはC系の言語でいう式になってない、つまり
Dim x = Call Math.Min(1, 2)
と書けないことも一因か?
あと、>>871の
>vbで言う、戻り値もらう時Function 〇〇の〇〇の部分って変数はそのまま使えない?
これはどういう意味なの?
まったく分からん C#でも自分のメンバー呼び出しにthis付けないと気が済まない人がいるけど、
あれはVBから来た人なのかねw
Call付けたい心理とたぶん同じだよな こうしてまた場外乱闘が始まる。
なんでわざわざ煽るかね。 >>880
別に煽ってないし
this付けたがる人はそもそもそんなに多くないと思うから杞憂だよ >>878
いや呼び出しが識別子で始まらない場合って書いてあるでしょ
サンプルコードにあるように、New Hoge.Method() とか、ラムダ式を即時呼び出しするケース
これは純粋に構文解析上の制限だろう BASIC系ではステートメントは原則的にステートメント種別を示すキーワードで始まらなければならず、式が単独でステートメントになることはできない
これは構文解析を楽にするための制限で、大昔の言語ではわりと一般的なスタイルだ
ただ、さすがにそれは不便だということで、識別子から始まる式については例外的に単独でステートメントになることができる
>>876のサンプルコードにあるようなケースでは四季がステートメントと見做されないから、例外的にCallが必須になるということだね >>883
ああ、なるほどそうだねごめんw
MSDNの記事読んでなかったよw
VBは
(New TheClass()).ShowText()
と書けないのか。ダメな理屈がよくわからんなあ
ラムダ式の即時呼び出しは便利そうだね。
必要になった記憶はないし、戻り値を握りつぶすんじゃ相談室の方の661の
質問みたいなことはできないが 文法の違いにケチつけても意味無いだろ
外国語覚えるつもりで勉強しろよ 言語の記述方式ばっかりこだわって大したもん作れなかったら笑う >>878
vbではfncHogeの戻り値を設定するのに
return 1
fncHoge = 1
のどちらの書き方もできたねん
関数の中で、関数名を変数名として使えた
再帰処理なんか考えたら
パっと見紛らわしくて
可読性に問題あるけどね ちょっとすれ違いだけどVB出てきたのでちょっと質問
C#でMicrosoft VisualBasicを参照にしてInteraction.InputBoxを使って「キャンセル」が押された場合は
VBで言うEmptyが返るはずなんだけど(VBのfunctionで何も値を設定せずexit functionした場合はEmptyが返る)、
EmptyかどうかをC#で判定する方法ってありますか? VBScriptなんかだと
r = Inputbox("何か値を入れてね")
if IsEmpty(r) then MsgBox "キャンセル押したね?"
という風に空文字列と区別とできるのでそれをやりたいの 初心者用スレッドは学習者のためにあるべきだろう
進歩のないVBコピペプログラマーのためにコードを代わりに書いてあげる場所にはならないようにしようぜ >>891
デバッガで何が返ってるか見たらすぐ分かるでしょ >>891
何も入力しないでOKでも、キャンセルでも空文字列だから判別できないね
キャンセル判定したかったら横着せずに自分でフォーム作れって事でしょ >>892
たぶん分かってると思うけど、ドキュメント見る限り無理だね
そもそも今時モーダルなダイアログを表示してテキスト入力させるUIってどうなのよって気がする
単純なメッセージボックスでもイラッとくるよね >>891
その Empty の型はなに?
たぶん string なんだろうけど、それなら IsNullOrEmpty() あたりかね。
895 の言うような問題もあるけれど、もとから Empty かどうかだけで判定してたなら上ので用が済むんじゃね。 nullが来ないなら==でstring.Emptyもしくは""と比較するだけで良い >>892
そもそも、今のVB.Netでもそれ出来ないから >モーダルなダイアログを表示してテキスト入力させるUI
えっこれって今いけてない扱いなの?
今どきはどんな感じでやってるの 別に本当に必要ならモーダルでいいよ。
どうせ分かって言ってると思うけど、モーダルなダイアログはユーザーの自由を奪って
特定の操作の完了を強制するUIだから、可能なら避けるべきなのは当たり前だし、
昔から嫌われ者だよね
そして、どうしてもモーダルなダイアログでテキストの入力を強制する必要があるケースなんか
あんまりないと思う。他にいくらでも代替手段があるでしょ >>902
俺は逆
どうせ特定の手順でしか設定できない・しないのに無駄な自由度を付けて
バグを盛り込んでいるアプリが多い
完成度が低い >>902
なるほど
でも業務システム作ってる身からすると>>903の意見に賛成 >>902-903
システムモーダルなら問題あるけど、アプリケーションモーダルなら好きにすればいい うちの場合、モーダルではなく、入力されて問題ない時だけ入力出来るようにしてるわ。
ボタンも、押すと問題があるor意味がない時は無効化。
オペレーターの入れ替わり多い業界相手に売ってるから迷わせたらサポートが死ぬ。 アプリケーションモーダルでもメインウィンドウの移動が出来なくなるのは嫌い IEではお気に入りに追加はモーダルなダイアログだったけど、
EdgeではChromeやFireFoxを真似てモードレスになってるよね。
まあ、さすがにモーダルの方が好みとか、作る方の都合を言ってるんじゃなきゃ
ネタで言ってるんだと思うが... デバッガで追ってみましたがどうもだめっぽいのであきらめます
ありがとうございました まさかクソセンスのないおまえらがUIを語るとは思わんかったw
大体ユーザーが喜ぶんわおまえらが良いと思う逆やからね
これ覚えとった方がええでw >>879
thisつけたいのはIntelliSenseで楽するためじゃない? >>912
逆?違うよ
ユーザーが喜ぶのは
カッコイイとは無縁の
Excelだよ
設定はExcelファイルから
帳票はExcelファイルで出力
これさえ押さえておけばオールオッケー モーダルダイアログの欠点は、マルチウインド故に偶に起こる事故でモーダルなのにウインドウがメインの裏に回っちまって操作不能になる
それが改良されたUWPのContentDialogは良いね
何しろメインウインドウ上に描画されているだけだから上記の事故が発生しない
wpfのmaterial design xaml toolkitでも似たようなことが出来るな >>916
TopMost=trueにしとけば済む レス数が900を超えています。1000を超えると表示できなくなるよ。