ふらっと C#,C♯,C#(初心者用) Part140
■ このスレッドは過去ログ倉庫に格納されています
「どんなにくだらない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 >>760
前者はセッターをinternalにするのが一番素直で分かりやすいと思う >>765
>>766
>>767
ありがとうございます
参考にさせていただきます >>767
アクセス修飾子での制限はリフレクションで簡単に突破される >>769
当たり前やん。
悪意と不注意は区別する必要がある。
前者に対する防衛法を語る能力を俺は持ってないので
後者について言ったまで >>770
>>760が訊いてるのは悪意対策だろ… >>778
マジガイジかよ…
生ゴミはとっととくたばれ ClassA,ClassB,,,のインスタンスをJsonで保存したい。
Class Ihozon{
void init(){} //変数を初期化
string serialize(ClassA str){ }
ClassA deserialize( string json){ }
}
というインターフェースを作って保存処理は共通化したいと思うのだが、Serializeするのにクラス名の
引数が必要になるので共通化できない。こういう場合どうしたらいいの? >>781
ちょっと何言ってるのかよく分からないところがあるので
勘違いかもしれないけど、普通にジェネリックメソッドにするだけじゃないの?
public static string JsonSerialize<T>(T obj) {...}
public static T JsonDeserialize<T>(string json) {...} jeneric interface をつかったらいいんだね。できました。ありがとう。 インスタンスを保存して何か良い事あるのか?
言葉の違いなだけならいいが…クラス内の値を保存するんだよな?
クラスのある位置を示すポインタを保存するんじゃないんだよな? public interface Ijson<T> {
T deserialize(string json);
string serialize(T js);
void init();
}
public class ClassA : Ijson<ClassA>
{ }
ClassAをシリアライズしたいのだけでど、Interfaseするんはわかったんだが内部に
つねに class ClassFile{ void FileSave() {} void FileLoad(){} } を継承もしたい。
(中が固定なのでいちいち実装したくない)
ClassA A = new ClassA();
A.FileLoad(); // これでAはファイルデータで初期化したい。
継承とinterfaceを同時にやるってどうやるの? System.Web.Mail.MailMessageクラスのFieldプロパティでCDOのFieldを追加してました。
System.Webは古いからSystem.Net.Mailを使えと警告が出るので置き換えようとしてみたところ、対応する方法が見つかりませんでした。
ご存知の方いないでしょうか。 >>786
自己解決:Interfaseやめてジェネリックのクラス使えばできました。 別のプロジェクトからCopy してきた Form1をNameSpace名をこのプロジェクトに
あわせて
var fm = new Form1();
fm.ShowDialg();
とやっても、空のフォームが立ち上がる。なぜなんだろう? >>789
エディタのキャッレットを
> var fm = new Form1();
この行のForm1の箇所に置いてF12を押す >>786
もう解決してるみたいだけど、一応。
Interfaceと継承を指定する場合は、カンマ(,)で区切って並べるだけ。 >>790
ありがとう。解決しました。
InitializeCompornent();の呼び出しが消えていた。
なんでだろ。消した覚えはないんだけど。 >>791
interfaceを使えないかトライしてみましたが、どうもうまく行かないです。
ClassFileはIjsonをインターフェースする必要があって、Ijsonのinit()はClassAのプロパティや
変数の初期化なのでClassAの中でしか実装できません。なので
ClassFile:Ijson<ClassA>
ClassA:ClassFile<ClassA>
のような構成になります。しかし問題があります。
問題:ClassFileの中ではinit()は実装したくないのに、実装を余儀なくされるが、初期化したい変数は
ClassAの中にあるので困る。 clsAのインスタンスに代入する方法ってこれでいいのでしょうか?
public class clsA: clsJson <clsA>
{
public void ParamLoad() {
clsGamenParam v = this;
v = base.ParamLoad();
}
}
public class clsJson<T>{
public T ParamLoad(string IniName = "") {
T param = default (T);
param = deserialize(json);
return param;
}
} splitcontainerで上下分割してて、
最大化させてもpanel1の方は縦幅(height)は変わらないようにしたいのだけど
どのプロパティで設定できるのでしょうか 初期化を隠蔽したい?
なら隠しメンバーに初期化済みフラグを持つことだな。 ピクチャーボックスに線を書くとか丸を書くとかした後にクリックで線を選択出来たりとかします?
エクセルで言うオートシェイプ見たいな感じで 出来るよ
日本じゃコード例殆ど無いけど海外ならそこそこ見つかる そりゃスクラッチで作ればできるだろうな
>>798のような質問をしてるレベルならまず無理だが >>798
円や直線みたいな単純な図形でアンチエイリアスとかも不要なら
確かVBer向けのシェイプコントロールってのがあったはずだから、それを使えば一発だね
http://www.atmarkit.co.jp/fdotnet/dotnettips/781winlineshape/winlineshape.html
描画するんじゃなくて子コントロールを加える形になると思うけど シングルトンパターン実装が面倒だからstatic実装をしてしまう私は雑魚なのでしょうか
いつインスタンスが作られるかぐらいの差しかないんじゃないのぉぉぉお起動時に一度だけ呼ぶ使われ方ならぁぁぁあ >>803
グローバル変数を作る目的でシングルトンにするくらいなら、Globalクラスでも作ってそのstaticフィールドとして持たせて共有したほうがマシ
シングルトンが用いられる大抵のケースでは、アプリでクラスAのインスタンスが一つしか必要とされないという要件を、
誤ってクラスA側に持ち込んでしまい不必要な制限をクラスAに対して与えている
基本的にシングルトンはアンチパターンであり、使うべきではないと考えておけばいい グローバル変数が必要になったケースというのが今までにない気がする ログとかデバッグ用情報とかあったほうがよくね?
引数にログ渡すのも面倒やし すべてのインスタンスをグローバル神クラスに突っ込む方法で管理してる現場も
案外良かったよ
リークの類に強いのがよかった
ひと目でわかるし >>803
C#のstaticクラス導入の理由の少なくとも一つがそれだったはずだから
いいんじゃないですか
>>805
おおむねその通りだと思うけど、質問の答えになってない気がするw えーリソースひとつしか無いのにあちこちで呼ばれて困るわ。セマフォ使うにもシングルトンにしないと意味ないし。 そこでPrism.Unity等のDIコンテナですよ そういやDIコンテナってどういう仕組みになってんのか全然わからん
コンストラクタの引数をインターフェイスにするだけで、登録済みのオブジェクトを自動的に注入してくれるわけだけど・・・・
あれってコンストラクタの呼び出し側は一体どんな仕組みになってるの?
そもそも引数のインターフェースを増やそうが減らそうがコンパイルエラーが起きないって、呼び出す側は一体どうなってるのかしら >>812
普通にリフレクションで引数の情報取ったりコンストラクタ呼んでインスタンス作ったり簡単にできる >>813
ありがとう
リフレクションは全然使ってなかったので勉強してくるよ デバッグ用に良さそうと思ってたら
winformにそのものがあるしね リフレクションはウンコみたいな依存関係を作る元凶だからな
まともなヤツならまず使わない こうやってクソみたいな依存関係のあるクソコードが量産されていくのがよくわかる 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 )
とかボソッと言ってみる。真に受けないでね。 オレはケンカなんか売ってない
バカが真人間になるように矯正してるだけだからな
バカはオレにケンカ売ってるつもりらしいな ■ このスレッドは過去ログ倉庫に格納されています