「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part136
http://mevius.5ch.net/test/read.cgi/tech/1520057345/
■コードを貼る場合は↓を使いましょう。
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
探検
ふらっと C#,C♯,C#(初心者用) Part137
レス数が1000を超えています。これ以上書き込みはできません。
2018/04/06(金) 17:40:19.48ID:oKXVP34zM
2018/04/06(金) 17:40:50.10ID:oKXVP34zM
(*゚∀゚)v2get!
2018/04/06(金) 18:51:49.77ID:+Q3Wd1R20
ワッチョイ付きGJ
2018/04/06(金) 22:54:25.33ID:e2Dy7HRM0
2018/04/06(金) 23:04:09.92ID:mLoQW3Pc0
2018/04/06(金) 23:16:26.79ID:5BPKzXhXa
まあ、最初から言ってるように、抽象的な質問には抽象的な答えしか返しようがないw
例外に対処するイディオム的な物を教えてくれ、と言ってるように聞こえるけど
そんなものはないとしか...
例外に対処するイディオム的な物を教えてくれ、と言ってるように聞こえるけど
そんなものはないとしか...
2018/04/07(土) 04:26:23.93ID:1UMv7o170
なかなか意図するところが伝わってないのですが、「例外処理をループの中に閉じ込めて、
例外が発生しなかった場合だけループを抜ける」という書き方を知りたかったのです
処理の内容とかはどうでも良くて、ループの囲い方とその抜け出し方を
なので、以前レスいただいたように、whileで無限ループを作って、tryブロック内にbreakを
置いてループを抜ける、という回答で私には十分でした
試してみれば一発で分かる話だったのですが、tryブロックから外側のループを直接抜ける
ことができると思っていなかったので、それに気づかなかったということです
皆様お付き合いいただいてありがとうございました
また質問をした際には付き合っていただけると幸いです
例外が発生しなかった場合だけループを抜ける」という書き方を知りたかったのです
処理の内容とかはどうでも良くて、ループの囲い方とその抜け出し方を
なので、以前レスいただいたように、whileで無限ループを作って、tryブロック内にbreakを
置いてループを抜ける、という回答で私には十分でした
試してみれば一発で分かる話だったのですが、tryブロックから外側のループを直接抜ける
ことができると思っていなかったので、それに気づかなかったということです
皆様お付き合いいただいてありがとうございました
また質問をした際には付き合っていただけると幸いです
2018/04/07(土) 12:22:01.31ID:mY3UUgcs0
困っているわけじゃないんだけどちょっと気になってることがあるので分かる方がいたら教えてください
次のコードを実行すると y に true が代入されますが、これはどういうときに使うのでしょうか
string x = null;
bool y = x is var z; // y に true が代入される
次のコードを実行すると y に true が代入されますが、これはどういうときに使うのでしょうか
string x = null;
bool y = x is var z; // y に true が代入される
2018/04/07(土) 13:18:31.43ID:pLXvASH10
private void button1_Click(object sender, EventArgs e)
{
if (sender is Button b)
{
}
}
方法: as 演算子と is 演算子を使用して安全にキャストする (C# プログラミング
ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/types/how-to-safely-cast-by-using-as-and-is-operators
{
if (sender is Button b)
{
}
}
方法: as 演算子と is 演算子を使用して安全にキャストする (C# プログラミング
ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/types/how-to-safely-cast-by-using-as-and-is-operators
2018/04/07(土) 15:27:01.26ID:Uoh/XEtya
チラシの裏
C#の構造体にこんな落とし穴が存在することをついさっき知った
http://ufcpp.net/study/csharp/resource/readonlyness/#this-rewrite
C#の構造体にこんな落とし穴が存在することをついさっき知った
http://ufcpp.net/study/csharp/resource/readonlyness/#this-rewrite
2018/04/07(土) 16:25:57.16ID:jbOaYf+S0
public class Test
{
public int Id{get;set;}
public string Text{get;set;}
public string Other{get;set;}
}
このようなクラスを他プロジェクトやライブラリで
ICollectionの型として使い回したい場合
どのような依存をすればいいのでしょうか?
インターフェースでこの型実装を強制させるとかでしょうか?
インターフェースを使わないで他の参照方法のが望ましいのでしょうか?
{
public int Id{get;set;}
public string Text{get;set;}
public string Other{get;set;}
}
このようなクラスを他プロジェクトやライブラリで
ICollectionの型として使い回したい場合
どのような依存をすればいいのでしょうか?
インターフェースでこの型実装を強制させるとかでしょうか?
インターフェースを使わないで他の参照方法のが望ましいのでしょうか?
2018/04/07(土) 16:37:35.07ID:Y4t1vYpsM
継承
2018/04/07(土) 18:27:15.12ID:7KARL849a
>>11
悪口言いたくないんだけど、俺様用語が多過ぎて何を言ってるのか全然分からないよw
悪口言いたくないんだけど、俺様用語が多過ぎて何を言ってるのか全然分からないよw
2018/04/07(土) 19:44:44.45ID:jbOaYf+S0
>>13
List〈Test〉等を他のプロジェクトでも扱いたいのでTest型で返す関数を作成して
それをこれをパッケージした時に他のプロジェクトでも受け取れるようにしたいって事ですね
public Test GetTest();
みたいな関数でTest型を使いまわせるようにしたいです
List〈Test〉等を他のプロジェクトでも扱いたいのでTest型で返す関数を作成して
それをこれをパッケージした時に他のプロジェクトでも受け取れるようにしたいって事ですね
public Test GetTest();
みたいな関数でTest型を使いまわせるようにしたいです
2018/04/07(土) 19:53:33.05ID:jbOaYf+S0
>>12
Abstractって指摘も入ってるので
型クラス(Test)を実装しておき
これをベースにして
public Test GetTest();
を継承先に実装するようにするのが一番賢い設計ですかね・・・?
機能というよりはC♯を使った設計の質問と少し抽象的な話なのでスレチだったらすいません
Abstractって指摘も入ってるので
型クラス(Test)を実装しておき
これをベースにして
public Test GetTest();
を継承先に実装するようにするのが一番賢い設計ですかね・・・?
機能というよりはC♯を使った設計の質問と少し抽象的な話なのでスレチだったらすいません
2018/04/07(土) 20:14:36.36ID:7KARL849a
2018/04/07(土) 20:27:35.94ID:jbOaYf+S0
>>16
dll状態だと戻り値Test型って何?ってならないかと思って構造どうすればいいのか悩んでましたけど
そもそもそういう事を考えること自体がおかしかったかもしれないです・・・
Test型のみを他のプロジェクトに流用させたい時とかも考えていたんですけど
そもそもその設計自体がおかしいと思い至りました
dll状態だと戻り値Test型って何?ってならないかと思って構造どうすればいいのか悩んでましたけど
そもそもそういう事を考えること自体がおかしかったかもしれないです・・・
Test型のみを他のプロジェクトに流用させたい時とかも考えていたんですけど
そもそもその設計自体がおかしいと思い至りました
2018/04/09(月) 11:45:33.84ID:xaQ7bksS0
>>11
もうちょっと掘り下げて質問し直します
EntityFrameworkを使ってSQLにTest型の入出力をするクラスと
WebからスクレイピングしてTest型を返すクラスを作りたいのですが
ここでTest型を両方で共通で使いたいと思ってます
Test型はプロパティが減ることは無いですが追加はしたいものとします
この時Test型はどのように実装するのが好ましいのでしょうか?
今だとSQLに接続したい時とスクレイピングする時に読み込むクラスが分けれないので困っています
もうちょっと掘り下げて質問し直します
EntityFrameworkを使ってSQLにTest型の入出力をするクラスと
WebからスクレイピングしてTest型を返すクラスを作りたいのですが
ここでTest型を両方で共通で使いたいと思ってます
Test型はプロパティが減ることは無いですが追加はしたいものとします
この時Test型はどのように実装するのが好ましいのでしょうか?
今だとSQLに接続したい時とスクレイピングする時に読み込むクラスが分けれないので困っています
2018/04/09(月) 11:56:58.59ID:xaQ7bksS0
2018/04/09(月) 23:41:29.92ID:XPDmd+wz0
C#というよりクラスタイプoop全般の話だと思うのですが、クラスを呼んだ時のパラメータは、コンストラクタに与えるのが良いのでしょうか、メソッドに与えるのが良いのでしょうか
両方できるので無造作に使ってるのですがOO的に間違った事をしていそうで
よろしくお願いします
両方できるので無造作に使ってるのですがOO的に間違った事をしていそうで
よろしくお願いします
2018/04/09(月) 23:43:55.56ID:fSLWGn340
クラスを呼ぶってなに?
2018/04/09(月) 23:44:42.97ID:MCzflE3YM
場合によるのでその都度考えてください
2018/04/10(火) 06:59:42.37ID:EnsNk18IM
>>21
インスタンスを作るのとメソッドをコールすることと意識が混ざっている素人で失礼しました
インスタンスを作る時にパラメータを渡すのと、メソッドの引数にパラメータを渡すの、oo的にはどちらが正しいのかお聞きしたかったです
インスタンスを作るのとメソッドをコールすることと意識が混ざっている素人で失礼しました
インスタンスを作る時にパラメータを渡すのと、メソッドの引数にパラメータを渡すの、oo的にはどちらが正しいのかお聞きしたかったです
2018/04/10(火) 07:04:03.54ID:EnsNk18IM
2018/04/10(火) 12:42:18.35ID:KG4vxU3va
>>24
正直何が聞きたいのかよく分からんけど、
いろいろ想像してみると、たぶん本当に聞きたいことはコンストラクタ云々じゃなくて
あるデータをプロパティとしてオブジェクトに持たせるかどうかをどういう基準で決めるか、
じゃないのかな。
例えばSystem.Timers.TimerにはpublicなプロパティIntervalがあるけど、
これをprivateかprotectedにしてユーザーからアクセスできないようにして、
Startメソッドの引数として与える仕様でも同じじゃないのかと
正直何が聞きたいのかよく分からんけど、
いろいろ想像してみると、たぶん本当に聞きたいことはコンストラクタ云々じゃなくて
あるデータをプロパティとしてオブジェクトに持たせるかどうかをどういう基準で決めるか、
じゃないのかな。
例えばSystem.Timers.TimerにはpublicなプロパティIntervalがあるけど、
これをprivateかprotectedにしてユーザーからアクセスできないようにして、
Startメソッドの引数として与える仕様でも同じじゃないのかと
2018/04/10(火) 20:54:09.92ID:i+408CBT0
2018/04/10(火) 23:02:10.41ID:IMFDPHVza
そのパラメーターが変更可能なのかどうかでやり方がいろいろある
インスタンスを作るときに最初に決めたパラメーターを変える必要がないもしくは変えたくないなら
コンストラクタで渡してしまえばいい
毎回変えるかもしれないならメソッドで渡せばいい
インスタンスを作るときに最初に決めたパラメーターを変える必要がないもしくは変えたくないなら
コンストラクタで渡してしまえばいい
毎回変えるかもしれないならメソッドで渡せばいい
2018/04/10(火) 23:36:50.93ID:v03YChI+M
2018/04/10(火) 23:44:32.77ID:yYP5pHxz0
>>20
教科書的にはメソッドの引数しかありえない
教科書的にはメソッドの引数しかありえない
2018/04/11(水) 00:46:06.20ID:qa2FEnRqa
>>26
基本的には全部引数でも間違いではない
あくまで関数が主であって、オブジェクトは関数のコンテキストに過ぎない、と考えるのが今時のプログラミング
端的に言えば、毎回同じ引数を渡すのが面倒だと思うならクラスにすることを検討するというだけの簡単な話
基本的には全部引数でも間違いではない
あくまで関数が主であって、オブジェクトは関数のコンテキストに過ぎない、と考えるのが今時のプログラミング
端的に言えば、毎回同じ引数を渡すのが面倒だと思うならクラスにすることを検討するというだけの簡単な話
2018/04/11(水) 00:50:03.90ID:mkq9MyW9a
>>26
いや、プロパティとして持つべきデータかの判断は一般的にはそんなに難しくないはず。
上に例に挙げたTimerだって、Startの引数でIntervalを指定する方式だと
問題や不自然さがあることはちょっと考えれば分かるはず
いや、プロパティとして持つべきデータかの判断は一般的にはそんなに難しくないはず。
上に例に挙げたTimerだって、Startの引数でIntervalを指定する方式だと
問題や不自然さがあることはちょっと考えれば分かるはず
2018/04/11(水) 01:12:44.96ID:KJoDibHNM
>>31
別に問題も不自然さも無いよ
System.Timers.TimerやSystem.Windows.Forms.Timerのインターバルがプロパティなのは、デザイナで設定できる必要があるからだ
実際、デザイナに貼れないSystem.Threading.Timerはコンストラクタかメソッドで周期を設定する
(ライブラリではなく)アプリケーションの開発に関して言えば、データクラス以外でプロパティを使う必要があるケースは稀だよ
データクラスを除けば、一度設定した値を取り出したくなるのは殆どの場合設計が間違っている
別に問題も不自然さも無いよ
System.Timers.TimerやSystem.Windows.Forms.Timerのインターバルがプロパティなのは、デザイナで設定できる必要があるからだ
実際、デザイナに貼れないSystem.Threading.Timerはコンストラクタかメソッドで周期を設定する
(ライブラリではなく)アプリケーションの開発に関して言えば、データクラス以外でプロパティを使う必要があるケースは稀だよ
データクラスを除けば、一度設定した値を取り出したくなるのは殆どの場合設計が間違っている
2018/04/11(水) 01:25:13.83ID:nomvJ3n3M
>>20
・コンストラクタで渡す
var a = new Test(1, "A");
・メソッドで渡す
var b = new Test().SetId(2).SetName("B");
・オブジェクト初期化子で渡す
var c = new Test{
id = 3,
name = "C",
};
通常はコンストラクタで、メソッドチェーンはファクトリパターンでよく使う
オブジェクト初期化子は閉じてるクラスの可読性を上げたいときに使う
まあ統一性さえ確保出来ていればどれを選んでも大差ないよ
・コンストラクタで渡す
var a = new Test(1, "A");
・メソッドで渡す
var b = new Test().SetId(2).SetName("B");
・オブジェクト初期化子で渡す
var c = new Test{
id = 3,
name = "C",
};
通常はコンストラクタで、メソッドチェーンはファクトリパターンでよく使う
オブジェクト初期化子は閉じてるクラスの可読性を上げたいときに使う
まあ統一性さえ確保出来ていればどれを選んでも大差ないよ
2018/04/11(水) 01:44:35.49ID:mkq9MyW9a
>>32
System.Threading.Timerがプロパティを持たないのは何か意図があると思うが
使ったことがないのでよくわからない。(軽量であることが「コンセンプトだから?
あるいんた単に設計者の頭が古いだけかもしれない}
TimerのIntervalをプロパティとして実装しなかった場合。
(1) タイマー動作時にIntervallを変更するためにはStartを実行することになるが、
OOP的に不自然
(2) そもそもTimerオブジェクトは、少なくとも動作時にはIntervalの値を保持している。
だったらこれをプロパティとして公開する方が自然
System.Threading.Timerがプロパティを持たないのは何か意図があると思うが
使ったことがないのでよくわからない。(軽量であることが「コンセンプトだから?
あるいんた単に設計者の頭が古いだけかもしれない}
TimerのIntervalをプロパティとして実装しなかった場合。
(1) タイマー動作時にIntervallを変更するためにはStartを実行することになるが、
OOP的に不自然
(2) そもそもTimerオブジェクトは、少なくとも動作時にはIntervalの値を保持している。
だったらこれをプロパティとして公開する方が自然
2018/04/11(水) 02:01:15.23ID:nomvJ3n3M
>>34
動作中にIntervalの値を変えられると困る場合、
Start時のみ設定可能にするのは別に不自然でもないよ
OOPの目的はメンテナンス性と事前の徹底したバグ潰しだから、値を変更できるルートを予め絞っておくことは理に適ってる
動作中にIntervalの値を変えられると困る場合、
Start時のみ設定可能にするのは別に不自然でもないよ
OOPの目的はメンテナンス性と事前の徹底したバグ潰しだから、値を変更できるルートを予め絞っておくことは理に適ってる
2018/04/11(水) 02:46:11.71ID:mkq9MyW9a
>>35
現実と違う仮定を置いたら何でも言える
現実と違う仮定を置いたら何でも言える
2018/04/11(水) 07:04:30.38ID:Q5HB2TyRM
色々とアドバイスありがとうございます
統一性があれば、後はデザパタに従うか等で決定するのが一般的と解釈しました
田舎の中小1人情シスでコードレビューもされないので世間の動向が分からず参考になります
都会の大手の人は切磋琢磨し洗練されたコードを書くんだろうなと憧れます
統一性があれば、後はデザパタに従うか等で決定するのが一般的と解釈しました
田舎の中小1人情シスでコードレビューもされないので世間の動向が分からず参考になります
都会の大手の人は切磋琢磨し洗練されたコードを書くんだろうなと憧れます
2018/04/11(水) 07:52:53.54ID:Q5HB2TyRM
>>28
あまり我流過ぎるとチーム開発の時に混乱するという心配がありまして
あまり我流過ぎるとチーム開発の時に混乱するという心配がありまして
2018/04/11(水) 11:00:26.66ID:uvPDHOSBM
2018/04/12(木) 20:03:06.85ID:XQKU/nO90
見積り終わってるのに時間かけても無駄
一円の利益にもならない
今回の開発で黒字でなければ2回目はない
よって一番時間がかからない方法が正義
一円の利益にもならない
今回の開発で黒字でなければ2回目はない
よって一番時間がかからない方法が正義
2018/04/12(木) 20:52:33.85ID:bR5mzWUWM
業務系はそれでいいのかもね
保守するのは自分でも自社でもない
ならどんなに汚いコードでも早くしあげたほうが勝ち
ただし納品された顧客はとんでもない借金を背負うことになる
罪悪感ってないのかね
保守するのは自分でも自社でもない
ならどんなに汚いコードでも早くしあげたほうが勝ち
ただし納品された顧客はとんでもない借金を背負うことになる
罪悪感ってないのかね
2018/04/12(木) 21:50:50.18ID:XQKU/nO90
2018/04/12(木) 21:55:35.29ID:kW0JyjC+0
まーた始まった
2018/04/12(木) 21:57:30.18ID:XQKU/nO90
>>43
お前なんか全身elseで強化した俺の敵じゃねぇ
お前なんか全身elseで強化した俺の敵じゃねぇ
2018/04/12(木) 22:06:57.86ID:kW0JyjC+0
>>44
ナマ言ってすみませんでした
ナマ言ってすみませんでした
2018/04/13(金) 01:45:08.04ID:JNl7+QPK0
VisualStrudioのC#でPS4を入力を表示するソフトを作りたいんだけども、
どんなライブラリが便利かな?
どんなライブラリが便利かな?
2018/04/13(金) 06:13:51.49ID:Om81X5Te0
2018/04/13(金) 07:25:42.50ID:ko86uHhA0
日本語でOK
2018/04/13(金) 18:47:05.89ID:GNeQyvWjM
PS4を窓の外に出力する
入力すならまずはアマゾンで注文
入力すならまずはアマゾンで注文
2018/04/14(土) 14:59:27.41ID:x6wpDOBa0
作画ソフトを作成したいのですが
解像度より大きな領域を扱うことになりそうです
10%~800%まで拡大縮小ができて
編集操作を行う必要があるのですが
どのような造りにしたら良いのでしょうか?
自分でスクロールバーを置いて編集領域は自前で描画するのでしょうか?
PictureBoxのようなコントロールでスクロール操作までできてしまうのでしょうか?
解像度より大きな領域を扱うことになりそうです
10%~800%まで拡大縮小ができて
編集操作を行う必要があるのですが
どのような造りにしたら良いのでしょうか?
自分でスクロールバーを置いて編集領域は自前で描画するのでしょうか?
PictureBoxのようなコントロールでスクロール操作までできてしまうのでしょうか?
2018/04/14(土) 15:03:33.67ID:A6JgIv/D0
ドロー系?
ペイント系?
ペイント系?
2018/04/14(土) 15:08:53.93ID:x6wpDOBa0
2018/04/14(土) 15:26:50.36ID:whWbsAFN0
>>49
入力酢?
入力酢?
2018/04/14(土) 16:20:27.70ID:411sIKLXa
2018/04/14(土) 17:09:28.19ID:D8vt8UcC0
>>50
PictureBoxにスクロールバー表示するのは
https://dobon.net/vb/dotnet/graphics/scrollimage.html
例ではコードでプロパティ設定しているけどデザイナで設定しても同じようにできる
PictureBoxにスクロールバー表示するのは
https://dobon.net/vb/dotnet/graphics/scrollimage.html
例ではコードでプロパティ設定しているけどデザイナで設定しても同じようにできる
2018/04/14(土) 17:16:13.98ID:A7r7eR+xa
模造紙レベルのでっかいpitureboxで画像のまま編集は現実的じゃないけどね
実際は表示部分だけ都度計算して描画することになる
ドロー系にしてもまあ普通は向いてない
C++でやるような内容だよ
実際は表示部分だけ都度計算して描画することになる
ドロー系にしてもまあ普通は向いてない
C++でやるような内容だよ
2018/04/14(土) 18:55:16.11ID:A6JgIv/D0
論理座標とワールド座標、デバイス座標をよく理解すべき
2018/04/14(土) 19:31:26.26ID:x6wpDOBa0
2018/04/14(土) 20:40:54.18ID:iGVhaI1m0
すいません、PS4のコントローラをPCに接続して、
入力ボタンを表示したいのです。
入力ボタンを表示したいのです。
2018/04/14(土) 21:18:11.42ID:whWbsAFN0
2018/04/14(土) 23:01:59.31ID:iGVhaI1m0
配置が違うだけなのか。
でも認識させるにはDirectXのラッパーとか使うしか無さそうなのね。
でも認識させるにはDirectXのラッパーとか使うしか無さそうなのね。
2018/04/17(火) 01:46:03.23ID:kRrGnVcd0
出来ましたー、ありがとうございます。
DirectInput
http://nanoappli.com/blog/archives/4772
Xinput
https://gist.github.com/kb10uy/7368358
DirectInput
http://nanoappli.com/blog/archives/4772
Xinput
https://gist.github.com/kb10uy/7368358
2018/04/17(火) 13:28:00.94ID:NEdohK8t0
Task.Factory.StartNew(またはTask.Run)で生成したスレッドの優先度を変える方法はあるのでしょうか。
2018/04/17(火) 14:11:36.85ID:NEdohK8t0
63ですがスレッドプールを使わず、スレッドで対応することにしました。
2018/04/17(火) 16:42:17.15ID:joazaAE7M
なぜレガシィな方向へ走るw
66デフォルトの名無しさん (ワッチョイ 33f9-LJHW)
2018/04/17(火) 17:42:06.89ID:NEdohK8t0 >>65
Taskだと処理中に割り込み?が割と入ってきて、処理時間が遅延してしまうのです。
スレッドレベルで優先度を上げたいと思いまして。
結局Threadにして優先度を上げても割り込みは入ってくるのですが、多少マシになったような気がします。
Taskだと処理中に割り込み?が割と入ってきて、処理時間が遅延してしまうのです。
スレッドレベルで優先度を上げたいと思いまして。
結局Threadにして優先度を上げても割り込みは入ってくるのですが、多少マシになったような気がします。
2018/04/17(火) 18:11:29.55ID:xGjbcgxza
どんだけタイムクリティカルな要件なのよww
2018/04/17(火) 21:11:51.39ID:kHPr9dOS0
パソコンぶん投げてPLCにしよう
2018/04/17(火) 23:58:42.15ID:zXGef27d0
picでも使えよ
2018/04/18(水) 00:12:24.46ID:WXSfEMqB0
>>66
それ単にスレッド生成で遅延しているなんてオチじゃないよな?
それ単にスレッド生成で遅延しているなんてオチじゃないよな?
2018/04/18(水) 10:23:12.22ID:+D/RfByR0
受託案件なのでC#で作らざるを得ないのです。
自分自身はファーム屋なので、マイコンでやりたいんですけどね。
>>70
まだ遅延の原因はわかってませんです
生成時だけの遅延じゃないので、違うとは思いますが・・・
自分自身はファーム屋なので、マイコンでやりたいんですけどね。
>>70
まだ遅延の原因はわかってませんです
生成時だけの遅延じゃないので、違うとは思いますが・・・
2018/04/18(水) 12:14:14.43ID:wyULW0oVM
プロセスの優先度もあげるといいらしいぞ
2018/04/18(水) 12:31:04.61ID:WeKuLBkMM
糞多い要素群にlinqで遅延実行+ループとか?
2018/04/18(水) 18:10:56.40ID:jY7uFFSia
>>71
Win32で作る
Win32で作る
75デフォルトの名無しさん (ワッチョイ ff7f-RdoA)
2018/04/18(水) 21:09:40.32ID:unjr58vW0 >>71
GCやJITは対策してる?
GCやJITは対策してる?
2018/04/19(木) 18:59:16.22ID:Yr3hu/ey0
ユーザーコントロールのプロパティをデザイン時のプロパティウィンドウでコンボボックスにしたく
人様のサイトで恐縮なのですが、以下をほぼコピペしました。
http://blog.okazuki.jp/entry/20070207/1170820895
が、テキストボックスのままで選択肢になりません。
公開プロパティに、なにか別の宣言が要りましたでしょうか?
人様のサイトで恐縮なのですが、以下をほぼコピペしました。
http://blog.okazuki.jp/entry/20070207/1170820895
が、テキストボックスのままで選択肢になりません。
公開プロパティに、なにか別の宣言が要りましたでしょうか?
2018/04/19(木) 19:15:06.26ID:Yr3hu/ey0
継承ユーザーコントロールだったのですが、継承元にも
[System.ComponentModel.TypeConverter(typeof(~ が必要だっただけみたいです。
すみませんでした。
[System.ComponentModel.TypeConverter(typeof(~ が必要だっただけみたいです。
すみませんでした。
2018/04/19(木) 19:48:23.98ID:Yr3hu/ey0
引き続きすみません。
たとえばユーザーコントロールに
Folder
File
という2つのstring型の公開プロパティを用意します。
IDEのプロパティウィンドウからFolderを設定(通常のテキストボックス)すると
そのフォルダ内のファイルを舐めてFileの選択肢にしたいのです。
TypeConverterで、静的な候補が出て選択できるところまでは出来たんですが
動的に候補を変更する場合、どうするんでしょうか。
IDEのプロパティウィンドウに、どうアクセスしたらいいのか、そこが分かれば何とかなる気がしてるんですが。
たとえばユーザーコントロールに
Folder
File
という2つのstring型の公開プロパティを用意します。
IDEのプロパティウィンドウからFolderを設定(通常のテキストボックス)すると
そのフォルダ内のファイルを舐めてFileの選択肢にしたいのです。
TypeConverterで、静的な候補が出て選択できるところまでは出来たんですが
動的に候補を変更する場合、どうするんでしょうか。
IDEのプロパティウィンドウに、どうアクセスしたらいいのか、そこが分かれば何とかなる気がしてるんですが。
2018/04/20(金) 01:01:44.37ID:xYBhqDqu0
>>78
Visual Studio .NET プロパティ ブラウザによるコンポーネントの本格的な RAD 化
https://msdn.microsoft.com/ja-jp/library/aa302334.aspx#vsnetpropbrow_topic04
このドロップダウンでできると思う
Visual Studio .NET プロパティ ブラウザによるコンポーネントの本格的な RAD 化
https://msdn.microsoft.com/ja-jp/library/aa302334.aspx#vsnetpropbrow_topic04
このドロップダウンでできると思う
2018/04/20(金) 05:10:41.06ID:OZAtcLZg0
初歩的な質問で申し訳ないのですが、
戻り値なしのメソッドと、引数なしのメソッドはどういう状況で使用するのでしょうか?
戻り値なしのメソッドは
その後にどこかに代入したりする予定はなく出力が目的の場合に使用すると
読んだのですがその通りですか?
万が一、後で代入したくなった場合に備えて取り敢えず戻り値は設定しておいたりしないのでしょうか?
引数なしのメソッドは
引数がない(=変数宣言がない?)とそのメソッド自体、動いてくれないイメージがあるのですが、実際は動きますよね
何も値を与えられていないのに動くのはどうしてですか?
宜しくお願いします・・・
戻り値なしのメソッドと、引数なしのメソッドはどういう状況で使用するのでしょうか?
戻り値なしのメソッドは
その後にどこかに代入したりする予定はなく出力が目的の場合に使用すると
読んだのですがその通りですか?
万が一、後で代入したくなった場合に備えて取り敢えず戻り値は設定しておいたりしないのでしょうか?
引数なしのメソッドは
引数がない(=変数宣言がない?)とそのメソッド自体、動いてくれないイメージがあるのですが、実際は動きますよね
何も値を与えられていないのに動くのはどうしてですか?
宜しくお願いします・・・
2018/04/20(金) 05:52:22.55ID:6mS8vUfV0
>>80
オーバーロードで検索してみると良い
オーバーロードで検索してみると良い
2018/04/20(金) 06:02:00.71ID:OZAtcLZg0
>>80
例えば
int Add(int a, int b) {
int c;
c = a + b;
return c;
}
というメソッドですと、Add(3, 5)ならaとbにそれぞれ3、5が入りc=8となると思うのですが、
abc = xyz,Add()といった風に使用しても、cの値も何も返ってこないのに、
引数なしのコードを見かける様な・・・
例えば
int Add(int a, int b) {
int c;
c = a + b;
return c;
}
というメソッドですと、Add(3, 5)ならaとbにそれぞれ3、5が入りc=8となると思うのですが、
abc = xyz,Add()といった風に使用しても、cの値も何も返ってこないのに、
引数なしのコードを見かける様な・・・
2018/04/20(金) 06:29:51.46ID:wjKqEKEv0
>>80
デフォルト引数で統合しなされ
デフォルト引数で統合しなされ
2018/04/20(金) 09:05:47.03ID:3LwLCVWq0
2018/04/20(金) 09:40:55.97ID:9jg3Q7S00
2018/04/20(金) 09:50:08.64ID:3LwLCVWq0
>>85
君がうまい説明してあげてね
君がうまい説明してあげてね
2018/04/20(金) 10:06:30.92ID:9jg3Q7S00
2018/04/20(金) 11:57:10.77ID:DKeEixVwd
>>80
メソッドは外注さんへの作業手順書みたいなもん
引数は、その作業に必要な情報がある場合に外部から渡すための窓口
情報不要なら省略できる
引数なし=こっちから情報渡さなくても作業できるよね?みたいな感じ
メソッド内で作業が完了したあと、なんか返事してほしい場合は戻り値をつかう
返事不要の場合void
戻り値なし=作業さえしてくれたら結果レポートいらね!
メソッドコール(外注さんへ仕事依頼)したら作業はちゃんとされるので、結果のレポートを使って、さらになんか作業をしたいなら戻り値よこせよ!って作業手順書に書いておけばいいし、仕事さえしてくれたら、返事不要なら戻り値いらない
メソッドは外注さんへの作業手順書みたいなもん
引数は、その作業に必要な情報がある場合に外部から渡すための窓口
情報不要なら省略できる
引数なし=こっちから情報渡さなくても作業できるよね?みたいな感じ
メソッド内で作業が完了したあと、なんか返事してほしい場合は戻り値をつかう
返事不要の場合void
戻り値なし=作業さえしてくれたら結果レポートいらね!
メソッドコール(外注さんへ仕事依頼)したら作業はちゃんとされるので、結果のレポートを使って、さらになんか作業をしたいなら戻り値よこせよ!って作業手順書に書いておけばいいし、仕事さえしてくれたら、返事不要なら戻り値いらない
2018/04/20(金) 11:59:20.85ID:o6RSJKQdd
>>80
コントロールにupdateってメソッドがあるだろ?
これは自身の再描画をするだけのメソッドなんだから引数を取りようがない
また再描画するだけなのに失敗するわけないんだから戻り値もいらない
無理やり成否を返すこともできるが、失敗する可能性があるメソッドに様変わりし、呼び出し元で失敗を意識した実装にしなきゃいけないから負担を強いることになる
って感じかな
コントロールにupdateってメソッドがあるだろ?
これは自身の再描画をするだけのメソッドなんだから引数を取りようがない
また再描画するだけなのに失敗するわけないんだから戻り値もいらない
無理やり成否を返すこともできるが、失敗する可能性があるメソッドに様変わりし、呼び出し元で失敗を意識した実装にしなきゃいけないから負担を強いることになる
って感じかな
90デフォルトの名無しさん (オッペケ Sr3b-goBS)
2018/04/20(金) 12:23:49.11ID:9v7e203Yr 引数のとりようも戻り値の返しようもなんぼでもあるわ
へんな忖度みたいな真似すんなボケ
へんな忖度みたいな真似すんなボケ
2018/04/20(金) 12:38:55.75ID:9jg3Q7S00
2018/04/20(金) 12:44:06.99ID:yZlfbYWOM
オブジェクトとは何かね
2018/04/20(金) 12:52:07.95ID:wBOVlPyYM
2018/04/20(金) 12:58:41.12ID:luJyaFhBa
2018/04/20(金) 13:08:12.31ID:9jg3Q7S00
2018/04/20(金) 13:26:58.95ID:luJyaFhBa
2018/04/20(金) 13:48:46.74ID:o6RSJKQdd
>>91
0と1?何を言ってるのかわからん
14時に集合ってメール出して、全員からわかったみたいな返信きてもうざいだろ?
だから、14時集合(返信不要)ってメールをおくる方が受け取る側も返信しなくていいし、送る側も無駄な受信を減らせるしでwinwin
この辺りは経験だったりセンスだろうな
0と1?何を言ってるのかわからん
14時に集合ってメール出して、全員からわかったみたいな返信きてもうざいだろ?
だから、14時集合(返信不要)ってメールをおくる方が受け取る側も返信しなくていいし、送る側も無駄な受信を減らせるしでwinwin
この辺りは経験だったりセンスだろうな
2018/04/20(金) 14:03:32.43ID:0EVFmTU60
>>95
成否の観点では単にフィールドの値を設定するメソッドを鑑みても
メモリに書き込み失敗の概念があっても、代入に失敗の概念はない
設定前の値を返すにしても、わざわざ退避する処理を強制するのか?
想定外の発生は基本的に例外をぶん投げるものだし
常人が気にしない様な事を考えて躓いてそうである
成否の観点では単にフィールドの値を設定するメソッドを鑑みても
メモリに書き込み失敗の概念があっても、代入に失敗の概念はない
設定前の値を返すにしても、わざわざ退避する処理を強制するのか?
想定外の発生は基本的に例外をぶん投げるものだし
常人が気にしない様な事を考えて躓いてそうである
2018/04/20(金) 19:05:49.61ID:W6WTRmLV0
関数型プログラミングの才能があるな
2018/04/20(金) 20:30:59.54ID:kti4nAgp0
>>95
戻り値がないのは常に「成功」を返す関数と考えて良い
C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない
C言語とかgoみたいに例外という概念がない言語は、成功したかどうかが戻り値に入ってることが多い
それでも絶対に失敗しないか、失敗したらプログラムが強制終了するような処理は戻り値がない場合もある
戻り値がないのは常に「成功」を返す関数と考えて良い
C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない
C言語とかgoみたいに例外という概念がない言語は、成功したかどうかが戻り値に入ってることが多い
それでも絶対に失敗しないか、失敗したらプログラムが強制終了するような処理は戻り値がない場合もある
2018/04/20(金) 21:05:01.73ID:Yi5F0BBw0
>C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない
えぇ…
えぇ…
102デフォルトの名無しさん (ワッチョイ 9a7f-fvqh)
2018/04/20(金) 21:14:39.58ID:7WlEIf7002018/04/20(金) 21:42:51.61ID:9jg3Q7S00
2018/04/20(金) 21:52:31.13ID:7WlEIf700
2018/04/20(金) 22:00:49.23ID:kti4nAgp0
2018/04/20(金) 22:22:51.74ID:UaVetxYYM
関数という言葉に惑わされてるということかな
メソッドは数学で言う関数そのものじゃない
(y=x+1とかそういうのじゃない)
やることを順番に書いてあるもの
サブルーチン
戻り値が定義されてたそれを返すだけ
ほかの言語で戻り値がないものは関数と区別してる言語もあるけど
わざわざ二種類つくるより戻り値なしで共通にしてある
メソッドは数学で言う関数そのものじゃない
(y=x+1とかそういうのじゃない)
やることを順番に書いてあるもの
サブルーチン
戻り値が定義されてたそれを返すだけ
ほかの言語で戻り値がないものは関数と区別してる言語もあるけど
わざわざ二種類つくるより戻り値なしで共通にしてある
2018/04/20(金) 23:07:04.14ID:0EVFmTU60
2018/04/20(金) 23:38:50.80ID:iIb0CR1w0
いろいろ調べたり考えたりしたのですが、解決出来ないので質問します。
https://dotnetfiddle.net/SoCII1
このようなコードがあって
List<ITest>にいれていったときに
ListのXだけを全て足して返す関数は出来たのですが、今後ITestのプロパティは増える予定で、それぞれに足して返す関数をつけたいです。
そのときに似たようなコードになるので一つに纏めようとしたのですが中々できず困っています。どのような書き方をすればいいでしょうか?
https://dotnetfiddle.net/SoCII1
このようなコードがあって
List<ITest>にいれていったときに
ListのXだけを全て足して返す関数は出来たのですが、今後ITestのプロパティは増える予定で、それぞれに足して返す関数をつけたいです。
そのときに似たようなコードになるので一つに纏めようとしたのですが中々できず困っています。どのような書き方をすればいいでしょうか?
2018/04/21(土) 02:21:21.95ID:lHgu/nQp0
>>108
基本的にはプロパティを動的に指定するのはリフレクションとかDictionaryを駆使とか、何らかの形でコストを払うことになると思う
状況にもよるけど、コンパイル時に確定してるならT4テンプレートとかコード生成とかで対応するのが一番正しいんじゃないかな
基本的にはプロパティを動的に指定するのはリフレクションとかDictionaryを駆使とか、何らかの形でコストを払うことになると思う
状況にもよるけど、コンパイル時に確定してるならT4テンプレートとかコード生成とかで対応するのが一番正しいんじゃないかな
2018/04/21(土) 02:34:40.78ID:m0t/bmNLa
>>108
そんなものは自作しなくてもList自身(正確にはIEnumerable<T>だけど)が持ってるw
名前もそのまんまSumだからよくMSDNを見てみ
https://msdn.microsoft.com/ja-jp/library/6sh2ey19.aspx
そんなものは自作しなくてもList自身(正確にはIEnumerable<T>だけど)が持ってるw
名前もそのまんまSumだからよくMSDNを見てみ
https://msdn.microsoft.com/ja-jp/library/6sh2ey19.aspx
2018/04/21(土) 03:42:29.63ID:MaG6OThU0
>>110
んー、エスパーだけど、質問者はプロパティをforeachみたいに回して全てにsumするようなのをプロパティの数に限らず1行で書きたいってことじゃね?
んー、エスパーだけど、質問者はプロパティをforeachみたいに回して全てにsumするようなのをプロパティの数に限らず1行で書きたいってことじゃね?
2018/04/21(土) 07:59:48.29ID:z4AHgN+yd
>>103
メソッドの戻り値とコンピュータの世界は全く関係がない
低級のマシン語をわかりやすくするための高級言語なんで初心者用スレで~というよりは見当違いなことを言ってる
っで、結果とは低級レベルでの結果とメソッドレベルの結果のどちらをさしている?
低級レベルでの結果が表に出てこないのは普通のこと
メソッドレベルで見てもメールの送信済マークを含めてないのでメソッド戻り値の返さない
メソッドの戻り値とコンピュータの世界は全く関係がない
低級のマシン語をわかりやすくするための高級言語なんで初心者用スレで~というよりは見当違いなことを言ってる
っで、結果とは低級レベルでの結果とメソッドレベルの結果のどちらをさしている?
低級レベルでの結果が表に出てこないのは普通のこと
メソッドレベルで見てもメールの送信済マークを含めてないのでメソッド戻り値の返さない
2018/04/21(土) 08:37:04.35ID:i7kmKmol0
2018/04/21(土) 10:09:06.82ID:XwcbmKc5a
連続時間的な関数ってあります?
2018/04/21(土) 10:52:04.99ID:WnG+wEwt0
連続時間 is 何
2018/04/21(土) 11:00:42.32ID:k3YYD8ov0
エポック秒のことかなぁ
2018/04/21(土) 12:09:05.27ID:Y1+gKOzZa
アナログメーター的なやつです
2018/04/21(土) 12:39:56.06ID:k3YYD8ov0
>>117
プログレスバーでググってみてはどうか
プログレスバーでググってみてはどうか
2018/04/21(土) 13:49:43.77ID:gbvJ8fZ/a
時空連続体と空目した
2018/04/21(土) 18:22:05.73ID:V5ZTEj450
プログレスバーってもろデジタルメーターじゃないですか
数百~数千の筋繊維を一本の糸で表現できるような関数はないですかね
数百~数千の筋繊維を一本の糸で表現できるような関数はないですかね
2018/04/21(土) 18:29:18.80ID:LQq77Lfe0
you!画像ファイル扱っちゃいなyo!
2018/04/21(土) 18:52:17.79ID:rKiuu7+10
2018/04/22(日) 00:35:03.08ID:XfnBBJY5M
プリンタの印刷設定の縦横を変更したいです。
DefaultPageSettings.Landscape プロパティから変えられるのは確認しましたが
一時的なものではなく、プログラムが終了したあとも変わったままにしておきたいのですが
なにか方法はないでしょうか?
http://bbs.wankuma.com/index.cgi?mode=al2&;namber=2377&KLOG=2
このサイトも参考にしてSetHdevmodeなどもやってみましたが、プログラム終了後にもとに戻ってしまいます。
Windows7,10 64bitです
DefaultPageSettings.Landscape プロパティから変えられるのは確認しましたが
一時的なものではなく、プログラムが終了したあとも変わったままにしておきたいのですが
なにか方法はないでしょうか?
http://bbs.wankuma.com/index.cgi?mode=al2&;namber=2377&KLOG=2
このサイトも参考にしてSetHdevmodeなどもやってみましたが、プログラム終了後にもとに戻ってしまいます。
Windows7,10 64bitです
124デフォルトの名無しさん (ワッチョイ 4ee8-9jjH)
2018/04/22(日) 00:38:42.31ID:2TRizD7z0 筋繊維を糸で表現ってそれもう物理演算じゃん
2018/04/22(日) 01:10:17.94ID:6eouzp2p0
何がしたいのかよう分からん
>数百~数千の筋繊維を一本の糸で表現できるような関数
が欲しいなら
「アナログメーター」なんて単語は出てこんと思うのだが
なんか特殊な知識が必要なことやってるなら
なおさらキチンと説明しないといかんだろう
>数百~数千の筋繊維を一本の糸で表現できるような関数
が欲しいなら
「アナログメーター」なんて単語は出てこんと思うのだが
なんか特殊な知識が必要なことやってるなら
なおさらキチンと説明しないといかんだろう
2018/04/22(日) 02:16:18.41ID:I1dKrIqPa
>>123
次回そのプログラムを起動した時も同じ設定が適用されるようにしたい、
という意味なら、Landscape を永続化すればいいだけでしょう。
同じ設定が他のプログラムにも適用されるようにしたい、って意味なら、
たぶんそんなことは出来ないんじゃないかと...
よく知らんけど
次回そのプログラムを起動した時も同じ設定が適用されるようにしたい、
という意味なら、Landscape を永続化すればいいだけでしょう。
同じ設定が他のプログラムにも適用されるようにしたい、って意味なら、
たぶんそんなことは出来ないんじゃないかと...
よく知らんけど
2018/04/22(日) 07:35:23.33ID:XfnBBJY5M
2018/04/22(日) 09:24:44.12ID:RctEGmkE0
他のプログラムでも同じ設定を使いたいんならプリンタドライバの設定変更以外に方法はない
てかそれってC#関係ないよね
てかそれってC#関係ないよね
2018/04/22(日) 19:36:51.14ID:YjWQK7FP0
[[['[] ]]] { {] ]][ '[][][] [][] [][][] [] '[] []
2018/04/22(日) 21:23:13.30ID:AB//w8nmp
c#勉強始めたての者です。
indexofで文字列を検索しようとしているのですが、長文を検索するとエラーが出てしまいます。
MSDNを見ると戻り値がint32とあり、戻り値がintの範囲を超えるとlongエラーになるように推測していますが対応方法はあるのでしょうか。
indexofで文字列を検索しようとしているのですが、長文を検索するとエラーが出てしまいます。
MSDNを見ると戻り値がint32とあり、戻り値がintの範囲を超えるとlongエラーになるように推測していますが対応方法はあるのでしょうか。
2018/04/22(日) 21:24:53.81ID:AB//w8nmp
すみません上記文中のlongは誤植ですので読み飛ばしてください。
132デフォルトの名無しさん (ワッチョイ 4703-goBS)
2018/04/22(日) 21:30:18.18ID:PsQCMKRd0 そう言われるともうlongしか見えない
2018/04/22(日) 21:37:33.88ID:hhQLBFvv0
文字数がintに収まるように文字列を切り出しながら検索すればいいんじゃないか
もちろん切れ目に検索対象の文字列が有るときの対策して切り出さなきゃならんけど
もちろん切れ目に検索対象の文字列が有るときの対策して切り出さなきゃならんけど
2018/04/22(日) 22:10:29.71ID:VNNE7LSc0
ありがとうございます。
matchメソッドというのを見つけました。
全然見つからなかったのに投稿し出来すぐ見つかるものですね。
matchで出来なかったらint分割にトライしようと思います。
matchメソッドというのを見つけました。
全然見つからなかったのに投稿し出来すぐ見つかるものですね。
matchで出来なかったらint分割にトライしようと思います。
2018/04/22(日) 22:23:25.89ID:f9F/Sp5R0
フォーム上のコントロールを、プログラムから参照するいい方法はないでしょうか
SplitContainer上に配置した合計20個のチェックボックスについて、textをファイルから
読み込んだものに動的に変更したいと考えています
手元の書籍(作って覚えるc#)では、forループの中で
splitContainer1.Panel2.Controls[i].Text = mistakeText;
という形でやっていましたが、今回自分で用意したフォームはほかにもテキストボックスや
ラベルがあり、うまくチェックボックスを対象としてくれません
デザイン画面で配置した順番にやや依拠しているようですが、最後においたものほど添字が
小さそうだ、程度しかわかりません
今後デザインを変更する、あるいはチェックボックスを増やす可能性を考えると、何らかの
プロパティで順番を指定できるといいなと思いますが、発見できませんでした
Form1.Designer.cs のメンバ変数宣言欄に記載がある順番のように思えますが、IDEが
自動生成したコードを並べ替えるのも何やら気持ち悪く、今の所手を出していません
今回はチェックボックスですが、ほかにもラベルを順に参照するとか、テキストボックスを
順に参照する方法などあれば、教えていただけると助かります
なお、今回のフォームでは、とりあえずチェックボックスの名前は初期値(checkBox1など)に
なっています
SplitContainer上に配置した合計20個のチェックボックスについて、textをファイルから
読み込んだものに動的に変更したいと考えています
手元の書籍(作って覚えるc#)では、forループの中で
splitContainer1.Panel2.Controls[i].Text = mistakeText;
という形でやっていましたが、今回自分で用意したフォームはほかにもテキストボックスや
ラベルがあり、うまくチェックボックスを対象としてくれません
デザイン画面で配置した順番にやや依拠しているようですが、最後においたものほど添字が
小さそうだ、程度しかわかりません
今後デザインを変更する、あるいはチェックボックスを増やす可能性を考えると、何らかの
プロパティで順番を指定できるといいなと思いますが、発見できませんでした
Form1.Designer.cs のメンバ変数宣言欄に記載がある順番のように思えますが、IDEが
自動生成したコードを並べ替えるのも何やら気持ち悪く、今の所手を出していません
今回はチェックボックスですが、ほかにもラベルを順に参照するとか、テキストボックスを
順に参照する方法などあれば、教えていただけると助かります
なお、今回のフォームでは、とりあえずチェックボックスの名前は初期値(checkBox1など)に
なっています
2018/04/22(日) 22:25:29.08ID:tqpEX+7y0
>>135
if (Controls[i] is CheckBox)
if (Controls[i] is CheckBox)
2018/04/22(日) 22:43:50.37ID:VtQV/Dmoa
>>135
根本的に考え違いをしてると思う。
たぶんありもしないものをあるはずだと勝手に思い込んでる。
コントロールをテーブル参照したいなら自分で明示的にテーブル(配列)を
宣言しましょう。
デザイナには君が欲しいと思っているものを忖度して自動で作ってくれるような
都合のいい機能は存在しない。
根本的に考え違いをしてると思う。
たぶんありもしないものをあるはずだと勝手に思い込んでる。
コントロールをテーブル参照したいなら自分で明示的にテーブル(配列)を
宣言しましょう。
デザイナには君が欲しいと思っているものを忖度して自動で作ってくれるような
都合のいい機能は存在しない。
2018/04/22(日) 23:18:57.35ID:f9F/Sp5R0
2018/04/22(日) 23:35:35.52ID:Kp2niQOT0
2018/04/22(日) 23:50:44.34ID:f9F/Sp5R0
2018/04/23(月) 00:02:33.07ID:Xa6TKCtV0
>>140
意味がわからない
何がしたいの?
①コントロールを特定する必要がある
②複数のコントロールに共通の処理がしたい
②にしか目が行ってないけど①をやらなきゃいけない時点で
②の方法なんてエレガントにできたってウンコブリブリじゃん
意味がわからない
何がしたいの?
①コントロールを特定する必要がある
②複数のコントロールに共通の処理がしたい
②にしか目が行ってないけど①をやらなきゃいけない時点で
②の方法なんてエレガントにできたってウンコブリブリじゃん
2018/04/23(月) 02:11:14.44ID:kNAX3uRd0
オムツの取り替えまでやって欲しい要介護は大人しくVBやってろ
2018/04/23(月) 03:09:44.29ID:0OUySOiKa
>>140
だから、配列が欲しいなら配列を自分で作ろうよ。
配列が欲しい、でもなんだか自分で配列を書くのは嫌だ。
この発想がおかしい。
var cbs = new[] {CheckBox1, CheckBox2, ...};
これ書くのがそんなに面倒?
変な方向に努力する方が余程面倒でしょ
ローカル変数じゃなくてメンバ変数かプロパティとして実装する場合だって手間は大差ないよ
だから、配列が欲しいなら配列を自分で作ろうよ。
配列が欲しい、でもなんだか自分で配列を書くのは嫌だ。
この発想がおかしい。
var cbs = new[] {CheckBox1, CheckBox2, ...};
これ書くのがそんなに面倒?
変な方向に努力する方が余程面倒でしょ
ローカル変数じゃなくてメンバ変数かプロパティとして実装する場合だって手間は大差ないよ
2018/04/23(月) 06:08:01.85ID:wp3u/AuE0
2018/04/23(月) 06:12:48.73ID:Xa6TKCtV0
2018/04/23(月) 07:30:25.22ID:wp3u/AuE0
>>145
自動でやってくれると言うか、Controls[n] の n に相当する部分を、何らかのプロパティで
持っているのではないかと思ったのです
それがわかれば、IDEでプロパティを書き換えてやればそれで済むな、と
あるいはそれがなければ、例えば
for (int i = 0; i < CBOX_ELEMENTS; i++) {
string s = "checkBox" + (i+1).ToString();
Controls(s).Text = ...
}
みたいな形で指定できないかな、と思っていたのですが、これは無理そうですし
自動でやってくれると言うか、Controls[n] の n に相当する部分を、何らかのプロパティで
持っているのではないかと思ったのです
それがわかれば、IDEでプロパティを書き換えてやればそれで済むな、と
あるいはそれがなければ、例えば
for (int i = 0; i < CBOX_ELEMENTS; i++) {
string s = "checkBox" + (i+1).ToString();
Controls(s).Text = ...
}
みたいな形で指定できないかな、と思っていたのですが、これは無理そうですし
147デフォルトの名無しさん (アウアウカー Sa43-AqIk)
2018/04/23(月) 07:45:09.58ID:7CTglbRxa 配列作って突っ込んどくのが何より簡単だし自由だろ
2018/04/23(月) 08:09:08.34ID:voecBiJS0
>>146
インデクサじゃ駄目なの?
インデクサじゃ駄目なの?
2018/04/23(月) 08:16:30.00ID:C4a+50u5M
>>146
ちがくね?
お前がやりたいのって別のデータとid(?)が一致する項目にデータを入れていきたいんじゃねーの?
でもそれってコントロールを特定する必要があるんだよね?
コントロールとデータを紐付ける何かはあるの?
ちがくね?
お前がやりたいのって別のデータとid(?)が一致する項目にデータを入れていきたいんじゃねーの?
でもそれってコントロールを特定する必要があるんだよね?
コントロールとデータを紐付ける何かはあるの?
2018/04/23(月) 08:33:16.26ID:KdhM7QliM
GetAllControlsのカウント取るとかそういう?
2018/04/23(月) 08:37:13.12ID:+9lDlXeaM
Type.GetPropertiesの方かな
2018/04/23(月) 09:14:18.74ID:y08K2+qf0
VB6はコントロール配列があったけどなー。.Netの世界にはないからの。
2018/04/23(月) 12:01:51.66ID:joGGyVH30
ttps://dobon.net/vb/dotnet/control/findcontrolbyname.html
名前で探せばいいのでは?
名前で探せばいいのでは?
2018/04/23(月) 12:30:43.09ID:b1ST+81Ba
だから配列に突っ込めば済む話を何でわざわざより面倒な方法で解決しようとするのw
2018/04/23(月) 12:34:22.72ID:HUKatAJtr
2018/04/23(月) 12:39:13.94ID:HUKatAJtr
>>154
まあ一言でいうと、わざわざ自分で配列を作らなくても、それを実現する方法はすでに存在するだろうと思ってたのです
配列作ったら「そんなことしなくてもこう書けば一発で参照できるのに」って言われる方法があるんじゃないかと
まあ一言でいうと、わざわざ自分で配列を作らなくても、それを実現する方法はすでに存在するだろうと思ってたのです
配列作ったら「そんなことしなくてもこう書けば一発で参照できるのに」って言われる方法があるんじゃないかと
2018/04/23(月) 12:39:38.75ID:+9lDlXeaM
>>155
その下にインデクサによる説明もあるだろw
その下にインデクサによる説明もあるだろw
158デフォルトの名無しさん (ワッチョイ 9a7f-fvqh)
2018/04/23(月) 13:33:10.44ID:48XgAlPp0 public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Name ).ToArray();
}
private CheckBox[] checkBoxes;
}
{
public Form1()
{
InitializeComponent();
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Name ).ToArray();
}
private CheckBox[] checkBoxes;
}
2018/04/23(月) 17:06:56.96ID:FWk6fNJV0
public class B : private A
{
}
みたいなこと C# じゃ出来ないんだっけ?
{
}
みたいなこと C# じゃ出来ないんだっけ?
2018/04/23(月) 17:10:12.77ID:BY7S8wKYd
>>159
継承元をprotectedにすれば継承したクラスからしかアクセスできないようにはできる
継承元をprotectedにすれば継承したクラスからしかアクセスできないようにはできる
2018/04/23(月) 17:25:36.44ID:b1ST+81Ba
>>159
何言ってるのかわかりませんw
何言ってるのかわかりませんw
2018/04/23(月) 18:05:17.14ID:BY7S8wKYd
そのクラス経由でしかアクセスできないようにしたいってことじゃないの?
2018/04/23(月) 18:18:07.68ID:CCSIsfHWM
ゆとりしか居ないのかなぁ
C#はprivate継承はサポートしてないよ
フィールドに持たせて移譲メソッド書くしかない
C#はprivate継承はサポートしてないよ
フィールドに持たせて移譲メソッド書くしかない
2018/04/23(月) 18:31:05.83ID:VMRJeQmYd
>>163
ゆとりなんてもうオッサンやでおじいちゃん?
ゆとりなんてもうオッサンやでおじいちゃん?
2018/04/23(月) 18:38:07.42ID:BY7S8wKYd
これ参考にすればいいのかな
http://ufcpp.net/study/csharp/oo_conceal.html
protected internal 同一プロジェクト内のクラス内部、または、派生クラスの内部からのみアクセス可能
private protected (C# 7.2 以降)同一プロジェクト内のクラス内部、かつ、派生クラスの内部からのみアクセス可能
こういうこと?
http://ufcpp.net/study/csharp/oo_conceal.html
protected internal 同一プロジェクト内のクラス内部、または、派生クラスの内部からのみアクセス可能
private protected (C# 7.2 以降)同一プロジェクト内のクラス内部、かつ、派生クラスの内部からのみアクセス可能
こういうこと?
2018/04/23(月) 18:52:13.60ID:Xa6TKCtV0
2018/04/23(月) 21:02:25.52ID:wp3u/AuE0
皆様いろいろありがとうございました
>>158
書いてくださった方法が、ほぼ私が求めていたものを完璧に実現しています
抱かれてもいいくらい惚れました
ただ、試してみたところピックアップされる順番は必ずしもコントロールを配置した
順番通りではなく、はっきりした法則性も見いだせませんでした
テストプログラムを書いて、インデックスと見た目を一致させるようデザイナで
コントロールを並べ替えようかとも思いましたが、後日コントロールを追加した際
悩むことになりそうなのでやめておきました
>>153
結局この方法でコントロールを検索し、発見したコントロールをリストに追加するという
方法で対応することにしました
>>154
配列に突っ込むにも、コード上に直接 checkBox1 とか checkBox2 とかのリテラルを
埋め込みたくなかったので、検索した上で配列を作ることにしました
>>148, 150, 151
実は書いていることがわからないレベルなので、これから勉強します
「作って覚える」は一通りやったので、「独習c#」を紐解いてみます
>>166
これで解決しました
158の方法で解決するかと思っていたのですが、やってみたところバラバラの順番でした
皮肉でもなんでもなく、コントロールの座標でソートとか、なぜそういう操作をしたいのだろうと
推測したのか教えていただけると嬉しいです
今後も質問すると思いますので、疑問点がわかりやすい文章を意識する必要があるので
>>158
書いてくださった方法が、ほぼ私が求めていたものを完璧に実現しています
抱かれてもいいくらい惚れました
ただ、試してみたところピックアップされる順番は必ずしもコントロールを配置した
順番通りではなく、はっきりした法則性も見いだせませんでした
テストプログラムを書いて、インデックスと見た目を一致させるようデザイナで
コントロールを並べ替えようかとも思いましたが、後日コントロールを追加した際
悩むことになりそうなのでやめておきました
>>153
結局この方法でコントロールを検索し、発見したコントロールをリストに追加するという
方法で対応することにしました
>>154
配列に突っ込むにも、コード上に直接 checkBox1 とか checkBox2 とかのリテラルを
埋め込みたくなかったので、検索した上で配列を作ることにしました
>>148, 150, 151
実は書いていることがわからないレベルなので、これから勉強します
「作って覚える」は一通りやったので、「独習c#」を紐解いてみます
>>166
これで解決しました
158の方法で解決するかと思っていたのですが、やってみたところバラバラの順番でした
皮肉でもなんでもなく、コントロールの座標でソートとか、なぜそういう操作をしたいのだろうと
推測したのか教えていただけると嬉しいです
今後も質問すると思いますので、疑問点がわかりやすい文章を意識する必要があるので
168デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/23(月) 21:07:14.52ID:QriAiZTC0 今日からC#勉強し始めたけど、
結構ネスト深くなる言語っぽいね、これ。こんな…
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
try
{
checked
{
sbyte a = 64;
sbyte b = 65;
sbyte c = (sbyte)(a + b);
}
}
catch (OverflowException ex)
{
Console.Write(ex.Message);
}
}
}
}
結構ネスト深くなる言語っぽいね、これ。こんな…
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
try
{
checked
{
sbyte a = 64;
sbyte b = 65;
sbyte c = (sbyte)(a + b);
}
}
catch (OverflowException ex)
{
Console.Write(ex.Message);
}
}
}
}
2018/04/23(月) 21:09:42.34ID:b1ST+81Ba
170デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/23(月) 21:09:53.25ID:QriAiZTC0 namespaceとかcheckedがブロックなのが何かなぁ…
2018/04/23(月) 21:27:15.55ID:wp3u/AuE0
172デフォルトの名無しさん (ワッチョイ 9a7f-fvqh)
2018/04/23(月) 21:37:46.50ID:48XgAlPp02018/04/23(月) 21:45:21.31ID:Xa6TKCtV0
>>167
おそらく配置したコントロールから欲しい情報は座標とサイズぐらいしかない
それらの特定情報は別ファイルにある
なのでコントロールが上から
もしくは左からか順番に取得できれば
別ファイルに記述した通りの順番で情報を並べることができる
Controlsで取得できる順番はよく知らないけど
作った順かあるいわなんの特徴もなくランダムか何かを保証するものではないのかな?と
おそらく配置したコントロールから欲しい情報は座標とサイズぐらいしかない
それらの特定情報は別ファイルにある
なのでコントロールが上から
もしくは左からか順番に取得できれば
別ファイルに記述した通りの順番で情報を並べることができる
Controlsで取得できる順番はよく知らないけど
作った順かあるいわなんの特徴もなくランダムか何かを保証するものではないのかな?と
2018/04/23(月) 22:10:47.18ID:48XgAlPp0
>>173
Controlsが返す順番は保証されてないけど、自分でソートすれば良い。
(1)TabIndex順 (各CheckBoxにタブオーダー(TabIndex)を設定しておく)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.TabIndex ).ToArray();
(2)Tag順 (各CheckBoxのTagに数値を設定しておく)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Tag ).ToArray();
(3-1)Location順(左から)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.X ).ThenBy( x=> x.Location.Y ).ToArray();
(3-2)Location順(上から)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.Y ).ThenBy( x=> x.Location.X ).ToArray();
Controlsが返す順番は保証されてないけど、自分でソートすれば良い。
(1)TabIndex順 (各CheckBoxにタブオーダー(TabIndex)を設定しておく)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.TabIndex ).ToArray();
(2)Tag順 (各CheckBoxのTagに数値を設定しておく)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Tag ).ToArray();
(3-1)Location順(左から)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.X ).ThenBy( x=> x.Location.Y ).ToArray();
(3-2)Location順(上から)
this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.Y ).ThenBy( x=> x.Location.X ).ToArray();
2018/04/23(月) 22:33:20.75ID:fnmaDcrK0
2018/04/23(月) 22:53:14.98ID:pYJnxPYX0
WPFのサンプルでありそうな話だ
2018/04/23(月) 23:04:57.82ID:0nhwdYRFa
2018/04/24(火) 00:40:53.09ID:U7B9av/W0
>>168
そのtry意味ないんだけど。。
そのtry意味ないんだけど。。
2018/04/24(火) 00:55:02.77ID:P/LpDfjz0
>>178
ネストのイメージ書きたかっただけだろうよ
ネストのイメージ書きたかっただけだろうよ
2018/04/24(火) 06:02:26.80ID:PLNFE8AC0
181デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/24(火) 11:44:27.10ID:MJ0NRymv0182デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/24(火) 12:45:33.19ID:MJ0NRymv0 うぇぇ、C#、goto文使えるし…
183デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/24(火) 13:15:16.40ID:MJ0NRymv0 うーん、string x = "10"; に対して
x.toString(); するんじゃなくて、int.Parse(x); するのか…。
xオブジェクトにintegerを吐き出させるのではなく、
integerオブジェクトにxオブジェクトを与えてintegerを吐き出させる…。
これは初めての体験だな…。
x.toString(); するんじゃなくて、int.Parse(x); するのか…。
xオブジェクトにintegerを吐き出させるのではなく、
integerオブジェクトにxオブジェクトを与えてintegerを吐き出させる…。
これは初めての体験だな…。
2018/04/24(火) 13:18:45.32ID:Ajvhvjmq0
何もかも間違っててワロタw
185デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/24(火) 13:34:52.91ID:MJ0NRymv0 なにゆえ?
186デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/24(火) 13:45:01.31ID:MJ0NRymv0 expression-bodied関数は、なんかエロいな…
187デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/24(火) 13:46:08.52ID:MJ0NRymv0 やってる事は違うけど、考え方的にはCのマクロに近いのかな…
188デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/24(火) 13:50:59.68ID:MJ0NRymv0 LINQ…、エロいな…。
189デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/24(火) 13:53:53.94ID:MJ0NRymv0 関数名がアッパーキャメルなのは感心せんなぁ…
2018/04/24(火) 14:00:18.73ID:a0zqzGgA0
ここ質問スレなんで日記は他所でな
191デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/24(火) 14:04:20.23ID:MJ0NRymv0 なんだよ、ToString()メソッドあるじゃねぇかよ…。
192デフォルトの名無しさん (ワッチョイ 47c9-8E8L)
2018/04/24(火) 14:05:02.22ID:MJ0NRymv02018/04/24(火) 14:39:12.39ID:5gRbnpaG0
VisualStudioでC#のフォームアプリを開発するときに
プロジェクトのプロパティから
出力の種類を「コンソールアプリ」にして
デバッグ用のConsole.WriteLineを出力できるようにしてるんだけど
リリースするときは、種類を「Windowsアプリ」にするだけで
コード中のConsole.WriteLineはコメントアウトとかしなくても
大丈夫ですか?
プロジェクトのプロパティから
出力の種類を「コンソールアプリ」にして
デバッグ用のConsole.WriteLineを出力できるようにしてるんだけど
リリースするときは、種類を「Windowsアプリ」にするだけで
コード中のConsole.WriteLineはコメントアウトとかしなくても
大丈夫ですか?
2018/04/24(火) 15:12:41.47ID:aRAC41/V0
>>193
デバッグ用に文字列を出したいなら、using System.Diagnostics;して、Debug.WriteLine()とか使うべき。
これならリリースビルドにするだけで無効になるからコメントアウトも不要。
リリースビルドでも使いたいなら、Trace.WriteLine()。
デバッグ用に文字列を出したいなら、using System.Diagnostics;して、Debug.WriteLine()とか使うべき。
これならリリースビルドにするだけで無効になるからコメントアウトも不要。
リリースビルドでも使いたいなら、Trace.WriteLine()。
2018/04/24(火) 17:00:53.50ID:Le/zmSZT0
>>193
パイプで繋ぐとみえちゃうよ
パイプで繋ぐとみえちゃうよ
2018/04/24(火) 17:22:41.52ID:5gRbnpaG0
2018/04/24(火) 19:15:00.82ID:QP8ofl3+M
2018/04/24(火) 20:32:35.47ID:AF96232m0
引数の文字列が、データグリッドに含まれていない場合だけ追加したいんですが、追加されません。
何が原因でしょうか?
void AddToDataGrid(string[] strs)
{
bool exists = false;
foreach(string str in strs)
{
for(int i = 0; i <= view.Rows.Count; i++)
{
if(str == view[0, i].Value.ToString())
exists = true;
}
if(!exists)
{
view.Rows.Add(str);
}
}
}
何が原因でしょうか?
void AddToDataGrid(string[] strs)
{
bool exists = false;
foreach(string str in strs)
{
for(int i = 0; i <= view.Rows.Count; i++)
{
if(str == view[0, i].Value.ToString())
exists = true;
}
if(!exists)
{
view.Rows.Add(str);
}
}
}
2018/04/24(火) 20:43:20.78ID:Ajvhvjmq0
2018/04/24(火) 20:48:40.81ID:AF96232m0
>>199
view.Rows.Add(str);
だけだと正常に追加されるので、条件判定かループあたりに原因があると思っています。
フラグの位置がおかしいので以下に修正してもダメでした。
void AddToDataGrid(string[] strs)
{
foreach(string str in strs)
{
bool exists = false;
for(int i = 0; i <= view.Rows.Count; i++)
{
if(str == view[0, i].Value.ToString())
exists = true;
}
if(!exists)
{
view.Rows.Add(str);
}
}
}
view.Rows.Add(str);
だけだと正常に追加されるので、条件判定かループあたりに原因があると思っています。
フラグの位置がおかしいので以下に修正してもダメでした。
void AddToDataGrid(string[] strs)
{
foreach(string str in strs)
{
bool exists = false;
for(int i = 0; i <= view.Rows.Count; i++)
{
if(str == view[0, i].Value.ToString())
exists = true;
}
if(!exists)
{
view.Rows.Add(str);
}
}
}
2018/04/24(火) 20:53:14.94ID:ZpST366k0
>>200
exist=trueでブレークポイントを置いてデバッグ実行すればわかるのでは?
exist=trueでブレークポイントを置いてデバッグ実行すればわかるのでは?
2018/04/24(火) 20:54:05.17ID:UZOTbxqf0
そもそも exists = true; の行に到達してないというオチな気がする
2018/04/24(火) 20:55:27.49ID:UZOTbxqf0
2018/04/24(火) 21:00:23.35ID:PfeXTBpB0
>>200
for(int i = 0; i < view.Rows.Count; i++)//Rows.Count以下じゃなく未満
{
bool exists = false;//ここに移動
if(str == Convert.ToString(view[0, i].Value))//ToString()だとValueがnullのときエラー
for(int i = 0; i < view.Rows.Count; i++)//Rows.Count以下じゃなく未満
{
bool exists = false;//ここに移動
if(str == Convert.ToString(view[0, i].Value))//ToString()だとValueがnullのときエラー
2018/04/24(火) 21:12:02.89ID:UZOTbxqf0
>>204はとってもそれっぽい
で、例外が握りつぶされるような場所でAddToDataGridが使われてるせいで気づけてないとか
こういう場合自分はtry{...}catch(Exception exception){throw;}で囲って
throwの直前にブレークポイントを置いたりしてるけどもっとうまい方法があったら誰か教えてちょ
で、例外が握りつぶされるような場所でAddToDataGridが使われてるせいで気づけてないとか
こういう場合自分はtry{...}catch(Exception exception){throw;}で囲って
throwの直前にブレークポイントを置いたりしてるけどもっとうまい方法があったら誰か教えてちょ
2018/04/24(火) 21:26:25.44ID:UZOTbxqf0
207デフォルトの名無しさん (ワッチョイ 4ee8-9jjH)
2018/04/24(火) 21:31:25.92ID:zd8+57fN0 全一
FXきた
FXきた
2018/04/24(火) 21:36:01.31ID:PfeXTBpB0
>>206
フラグよく見ていないからとりあえず
if(str == Convert.ToString(view[0, i].Value))
{exists = true;break}
に変更で
フラグよく見ていないからとりあえず
if(str == Convert.ToString(view[0, i].Value))
{exists = true;break}
に変更で
2018/04/24(火) 21:38:44.73ID:AF96232m0
みなさん本当にありがとうございます。
結局原因はわからず仕舞いでしたが、最終的に以下の方法で打開しました。
void AddToDataGrid(string[] strs)
{
foreach(string str in strs)
{
bool exists = false;
for(int i = 0; i < view.Rows.Count; i++)
{
if(Convert.ToString(view[0,i].Value) == str)
exists = true;
}
if(!exists)
{
view.Rows.Add(name);
}
}
}
結局原因はわからず仕舞いでしたが、最終的に以下の方法で打開しました。
void AddToDataGrid(string[] strs)
{
foreach(string str in strs)
{
bool exists = false;
for(int i = 0; i < view.Rows.Count; i++)
{
if(Convert.ToString(view[0,i].Value) == str)
exists = true;
}
if(!exists)
{
view.Rows.Add(name);
}
}
}
2018/04/24(火) 21:49:35.82ID:UZOTbxqf0
211デフォルトの名無しさん (ワッチョイ 9a98-9jjH)
2018/04/25(水) 15:12:14.28ID:lzwohvOS0 オブジェクト指向のプログラミングでは
変数じゃなくてプロパティにアクセスさせるべき
みたいな事をよく聞くんだけど
・プログラムの開始時にあるフラグ(true/false)を決めて、その後一切変更されることがない
・そのフラグには、コード中の様々な所からアクセスがある
って場合は、プロパティじゃなくてpublicな変数でフラグを定義してもいいんですか?
オブジェクト指向がよくわかってないせいか
プロパティを経由するのがどうしても遠回りというか
一つ余分な作業を挟んでるように感じてしまう・・・
変数じゃなくてプロパティにアクセスさせるべき
みたいな事をよく聞くんだけど
・プログラムの開始時にあるフラグ(true/false)を決めて、その後一切変更されることがない
・そのフラグには、コード中の様々な所からアクセスがある
って場合は、プロパティじゃなくてpublicな変数でフラグを定義してもいいんですか?
オブジェクト指向がよくわかってないせいか
プロパティを経由するのがどうしても遠回りというか
一つ余分な作業を挟んでるように感じてしまう・・・
2018/04/25(水) 15:30:51.28ID:eqJJBtIM0
変数は、公開しちゃダメ
その変数に、誰かが代入するかも知れないと考えると、
その変数に代入しているか、すべての場所を確かめないといけなくなるから、
プログラミングできなくなる
だから、プロパティで代入禁止に設定する
ただし、絶対に代入できない定数なら、公開してもよい
その変数に、誰かが代入するかも知れないと考えると、
その変数に代入しているか、すべての場所を確かめないといけなくなるから、
プログラミングできなくなる
だから、プロパティで代入禁止に設定する
ただし、絶対に代入できない定数なら、公開してもよい
213デフォルトの名無しさん (ワッチョイ 9a98-9jjH)
2018/04/25(水) 16:03:36.81ID:lzwohvOS0214デフォルトの名無しさん (ワッチョイ 9a98-9jjH)
2018/04/25(水) 16:12:23.29ID:lzwohvOS02018/04/25(水) 16:13:38.42ID:VelEInRI0
>>211
212は読まなくていい
フィールドだってreadonly修飾子で代入禁止できるが、212はそんなことも分かってないから
プロパティがフィールドと違う点は大ざっぱに
* 派生クラスでオーバーライドできる
* プロパティから構造体を返すとコピーされる
の2点
この2つの特性が必要ない(または避けたい)場合にフィールドを選択してよい
判断できないならプロパティを選択する
212は読まなくていい
フィールドだってreadonly修飾子で代入禁止できるが、212はそんなことも分かってないから
プロパティがフィールドと違う点は大ざっぱに
* 派生クラスでオーバーライドできる
* プロパティから構造体を返すとコピーされる
の2点
この2つの特性が必要ない(または避けたい)場合にフィールドを選択してよい
判断できないならプロパティを選択する
2018/04/25(水) 16:15:28.83ID:ym3YbVtBd
IOption使っとけ
2018/04/25(水) 16:51:44.20ID:I8kFq/qw0
>>211
>>215はどこかのコピペじゃないならすごい分かりやすくて尊敬
一つだけ補足すると、↓のようなこともあるからクラスがpublicの場合は
現状だけでなく将来の変更の可能性も考えてフィールドかプロパティか判断したほうが良い
public フィールドをプロパティに変える (2016/05/16追記)
https://qiita.com/chocolamint/items/f04665ce2db211abb2d2#public-%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%82%92%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E3%81%AB%E5%A4%89%E3%81%88%E3%82%8B-20160516%E8%BF%BD%E8%A8%98
あと>>212も善意で答えてるのは分かるんだけど
代入できるかどうかだけを判断基準にしてる時点でズレてて
定数の説明も参考にならない気がするから割と真面目に>>212は読まないほうが良いと思う
すまぬ>>212
>>215はどこかのコピペじゃないならすごい分かりやすくて尊敬
一つだけ補足すると、↓のようなこともあるからクラスがpublicの場合は
現状だけでなく将来の変更の可能性も考えてフィールドかプロパティか判断したほうが良い
public フィールドをプロパティに変える (2016/05/16追記)
https://qiita.com/chocolamint/items/f04665ce2db211abb2d2#public-%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%82%92%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E3%81%AB%E5%A4%89%E3%81%88%E3%82%8B-20160516%E8%BF%BD%E8%A8%98
あと>>212も善意で答えてるのは分かるんだけど
代入できるかどうかだけを判断基準にしてる時点でズレてて
定数の説明も参考にならない気がするから割と真面目に>>212は読まないほうが良いと思う
すまぬ>>212
2018/04/25(水) 17:43:22.74ID:lzwohvOS0
>>215
>* プロパティから構造体を返すとコピーされる
これが、全然分からんのだけど
classの代わりにstructを使った場合の話であってる?
今の自分が考えたところで、どうせちゃんと理解出来ない気もするけど
>* プロパティから構造体を返すとコピーされる
これが、全然分からんのだけど
classの代わりにstructを使った場合の話であってる?
今の自分が考えたところで、どうせちゃんと理解出来ない気もするけど
2018/04/25(水) 17:44:09.08ID:EO6K8yEq0
2018/04/25(水) 17:48:51.21ID:eqJJBtIM0
オブジェクト指向では、変数は公開しない。
公開できるのは、処理(関数)だけ
クラス内を開発する人と、そのクラスを使う人は、別の会社・人を想定しているから、
変数にアクセスさせたら、絶対にダメ
クラス内を作っている開発者は、後で付け加えられる処理を予想できないから。
クラス内を開発した後に、別人が変数にアクセスして、動きを変えたらバグる
異なる会社間での開発を可能にする、
オブジェクト指向の大原則・カプセル化
公開できるのは、処理(関数)だけ
クラス内を開発する人と、そのクラスを使う人は、別の会社・人を想定しているから、
変数にアクセスさせたら、絶対にダメ
クラス内を作っている開発者は、後で付け加えられる処理を予想できないから。
クラス内を開発した後に、別人が変数にアクセスして、動きを変えたらバグる
異なる会社間での開発を可能にする、
オブジェクト指向の大原則・カプセル化
2018/04/25(水) 17:50:35.02ID:ClmIY1xNa
プロパティから構造体を返すとコピーってのは意味わかんないね
コピーされるのは右辺がプロパティだろうがフィルドだろうが同じだよw
>>211
少なくともパブリックなメンバーに関しては、あえてフィールドを使う理由はないって
理解でいいと思うよ。例外はアンマネージドコードの呼び出しで使う型を定義する場合ぐらい。
フォールドのプロパティーに対して優位な点は
(1) 軽量である
(2) 簡潔に書ける
このぐらいしかない。
(1)が重要なケースなんかまずない。
(2)については、古いC#はともかく今のC#は儒分簡潔に書けるようになって来てる。
コピーされるのは右辺がプロパティだろうがフィルドだろうが同じだよw
>>211
少なくともパブリックなメンバーに関しては、あえてフィールドを使う理由はないって
理解でいいと思うよ。例外はアンマネージドコードの呼び出しで使う型を定義する場合ぐらい。
フォールドのプロパティーに対して優位な点は
(1) 軽量である
(2) 簡潔に書ける
このぐらいしかない。
(1)が重要なケースなんかまずない。
(2)については、古いC#はともかく今のC#は儒分簡潔に書けるようになって来てる。
2018/04/25(水) 17:59:38.62ID:ClmIY1xNa
>>220
カプセル化っていのは、触る必要がないもの、触られては困るものを隠すこと。
この質問にはほとんど関係ない話w
フィールドをプロパティにしようが、触る必要がない文脈で触られることを防げるわけじゃないw
せいぜいセッターで値が適切かどうかチェックできる程度
カプセル化っていのは、触る必要がないもの、触られては困るものを隠すこと。
この質問にはほとんど関係ない話w
フィールドをプロパティにしようが、触る必要がない文脈で触られることを防げるわけじゃないw
せいぜいセッターで値が適切かどうかチェックできる程度
2018/04/25(水) 18:00:19.55ID:EO6K8yEq0
2018/04/25(水) 18:04:12.14ID:EO6K8yEq0
>>222
質問者は
>オブジェクト指向のプログラミングでは
>変数じゃなくてプロパティにアクセスさせるべき
>みたいな事をよく聞くんだけど
で書いて始めてんじゃん。だから、カプセル化の説明した方がまずいいんじゃねぇか??
質問者は
>オブジェクト指向のプログラミングでは
>変数じゃなくてプロパティにアクセスさせるべき
>みたいな事をよく聞くんだけど
で書いて始めてんじゃん。だから、カプセル化の説明した方がまずいいんじゃねぇか??
2018/04/25(水) 18:09:53.61ID:ClmIY1xNa
2018/04/25(水) 18:14:14.76ID:EO6K8yEq0
>>224
>オブジェクト指向のプログラミングでは
>変数じゃなくてプロパティにアクセスさせるべき
>みたいな事をよく聞くんだけど
を質問者が引き合いに出した以上、質問者はここからはしっかりわかってなくて、色々ごちゃ混ぜになってると
思われる。だから、そっから説明しなきゃ、おそらく習得できない。
>オブジェクト指向のプログラミングでは
>変数じゃなくてプロパティにアクセスさせるべき
>みたいな事をよく聞くんだけど
を質問者が引き合いに出した以上、質問者はここからはしっかりわかってなくて、色々ごちゃ混ぜになってると
思われる。だから、そっから説明しなきゃ、おそらく習得できない。
2018/04/25(水) 18:17:11.69ID:lzwohvOS0
自分はオブジェクト指向じゃない言語をちょっとだけやってたんだけど
そういう言語では、コードの最初の方に
public bool JudgFlag = true
って1行書いて、それにどこからでもアクセスするみたいな感じだと思うんだ
(全部独学だからこれも正解なのか知らんけど)
でも、オブジェクト指向ではこれやったらダメなんだよね?
ってのが知りたい
後、俺マジで初心者だから
質問文で聞きたいことが正確に表現できてる保証ないwすまん
そういう言語では、コードの最初の方に
public bool JudgFlag = true
って1行書いて、それにどこからでもアクセスするみたいな感じだと思うんだ
(全部独学だからこれも正解なのか知らんけど)
でも、オブジェクト指向ではこれやったらダメなんだよね?
ってのが知りたい
後、俺マジで初心者だから
質問文で聞きたいことが正確に表現できてる保証ないwすまん
2018/04/25(水) 18:20:06.19ID:EO6K8yEq0
>>225だった・・
2018/04/25(水) 18:22:03.13ID:ClmIY1xNa
2018/04/25(水) 18:26:03.04ID:eqJJBtIM0
>変数じゃなくてプロパティにアクセスさせるべき
これが異なる会社間での開発を可能にする、
オブジェクト指向の大原則・カプセル化
どの教科書にも書いてある
その理由は、クラス内を開発している会社・人と、
そのクラスを使う会社・人は、異なっているから
オブジェクト指向では、これらの2つの立場からの見方が大切。
君はどちらの開発者ですか?
クラスを作る方・使う方?
クラス内を開発しているのは、過去だから、
そこから未来の、クラスを使う人の動きを予測できない
だから、変数に直接触らせたらダメ。
そこまで予測して、クラス内を作れないから
これが異なる会社間での開発を可能にする、
オブジェクト指向の大原則・カプセル化
どの教科書にも書いてある
その理由は、クラス内を開発している会社・人と、
そのクラスを使う会社・人は、異なっているから
オブジェクト指向では、これらの2つの立場からの見方が大切。
君はどちらの開発者ですか?
クラスを作る方・使う方?
クラス内を開発しているのは、過去だから、
そこから未来の、クラスを使う人の動きを予測できない
だから、変数に直接触らせたらダメ。
そこまで予測して、クラス内を作れないから
2018/04/25(水) 18:31:21.63ID:lzwohvOS0
2018/04/25(水) 18:31:24.51ID:eqJJBtIM0
2018/04/25(水) 18:36:43.91ID:Y4/R4Zt40
>俺が1人で小規模な開発してるだけだから
>いまいちオブジェクト指向のメリットを感じる場面が少ないのかな
まあこれだな
>>212の言ってる事は、OOPの「思想」としては間違いなく正しい
但し、単独での小規模開発という状況を前提にするなら「現実的なメリット」は無いに等しい
>いまいちオブジェクト指向のメリットを感じる場面が少ないのかな
まあこれだな
>>212の言ってる事は、OOPの「思想」としては間違いなく正しい
但し、単独での小規模開発という状況を前提にするなら「現実的なメリット」は無いに等しい
2018/04/25(水) 18:37:15.31ID:EO6K8yEq0
235デフォルトの名無しさん (ワッチョイ 4703-AlOi)
2018/04/25(水) 18:47:02.51ID:yqUO4I2d0 おまえら変数は公開しちゃだめだけど、プロパティやgetter/setterなら公開してもいいって思っとるやろw
2018/04/25(水) 18:48:12.94ID:ClmIY1xNa
>>231
どこの世界でも教条的(思い込みが激しいともいう)人はいるからねw
外部から取得/設定してもらう必要がある値をフィールドではなくプロパティにしたからって
ヒューマンエラーを減らす効果なんかないのは事実
ただ機能がより少ないフィールドをあえて使うことないでしょってだけの話
オブジェクトの公開するデータは必ずしもいつも変数に入っているわけではなく、
何らかの処理の結果を返す場合もあって、その場合はプロパティになるから、
だったら全部プロパティの方が統一感があるという考え方はあるかもしれない
どこの世界でも教条的(思い込みが激しいともいう)人はいるからねw
外部から取得/設定してもらう必要がある値をフィールドではなくプロパティにしたからって
ヒューマンエラーを減らす効果なんかないのは事実
ただ機能がより少ないフィールドをあえて使うことないでしょってだけの話
オブジェクトの公開するデータは必ずしもいつも変数に入っているわけではなく、
何らかの処理の結果を返す場合もあって、その場合はプロパティになるから、
だったら全部プロパティの方が統一感があるという考え方はあるかもしれない
2018/04/25(水) 18:49:19.77ID:s99z6Kr1M
>>233
嘘おしえるなよ
嘘おしえるなよ
2018/04/25(水) 19:04:09.02ID:lzwohvOS0
まとめると
「1人で小規模なコード書いてるだけなら
public bool JudgFlag = true
を書き換えたらダメなことぐらい自明だから、フィールドに1行書いて終わりでいい
若干雑だけど楽」
って考え方と
「いや、自分で決めたルールを自分で忘れることもあるから
ちゃんとプロパティにして触れない様にすべき
多少面倒でもコストを払うメリットがある」
って考えの対立なのかな
get;set;とか全く意味がわからなかった頃の嫌なイメージのせいで
プロパティを書く事が、「面倒・難しい」って体が拒否反応しちゃうんだよね
自動プロパティとか実装されてる今の時代に
何言ってんだって笑われそうだけど
まあ、でも色々モヤモヤしてた所がスッキリしました
ありがとう
「1人で小規模なコード書いてるだけなら
public bool JudgFlag = true
を書き換えたらダメなことぐらい自明だから、フィールドに1行書いて終わりでいい
若干雑だけど楽」
って考え方と
「いや、自分で決めたルールを自分で忘れることもあるから
ちゃんとプロパティにして触れない様にすべき
多少面倒でもコストを払うメリットがある」
って考えの対立なのかな
get;set;とか全く意味がわからなかった頃の嫌なイメージのせいで
プロパティを書く事が、「面倒・難しい」って体が拒否反応しちゃうんだよね
自動プロパティとか実装されてる今の時代に
何言ってんだって笑われそうだけど
まあ、でも色々モヤモヤしてた所がスッキリしました
ありがとう
2018/04/25(水) 19:24:43.78ID:q/XXvHKQd
>>236
処理の結果を返すならメソッドにしろよ
処理の結果を返すならメソッドにしろよ
2018/04/25(水) 20:11:47.21ID:ClmIY1xNa
2018/04/25(水) 20:30:49.45ID:XWOG1WtT0
フォーム間のデータ受け渡しのやり方について教えてください
プログラムを起動して、最初にForm1でパラメータなどを設定、次にForm2で設定した
パラメータを元にデータを編集したいとします
(Form1で編集済みのデータをForm2に表示する、でもいいです)
このときにデータを受け渡すのは、program.cs で Application.Run(new Form1()); と
呼び出す前に
1. Form2 のインスタンスを作っておいて、それを Form1 の引数として与えてやる
2. 必要なデータのインスタンスを Main() 内に用意しておいて、そのインスタンスを
Form1 と Form2 のそれぞれに送る
3. どっちもダメで他の方法がある
のどれが良いのでしょうか。
Form1 の中で Form2 のインスタンスを作成して、Form2 に送るという方法も考えましたが、
そうすると Form1 が不要になったときに Dispose() すると Form2 も落ちてしまいます。
プログラムを起動して、最初にForm1でパラメータなどを設定、次にForm2で設定した
パラメータを元にデータを編集したいとします
(Form1で編集済みのデータをForm2に表示する、でもいいです)
このときにデータを受け渡すのは、program.cs で Application.Run(new Form1()); と
呼び出す前に
1. Form2 のインスタンスを作っておいて、それを Form1 の引数として与えてやる
2. 必要なデータのインスタンスを Main() 内に用意しておいて、そのインスタンスを
Form1 と Form2 のそれぞれに送る
3. どっちもダメで他の方法がある
のどれが良いのでしょうか。
Form1 の中で Form2 のインスタンスを作成して、Form2 に送るという方法も考えましたが、
そうすると Form1 が不要になったときに Dispose() すると Form2 も落ちてしまいます。
242デフォルトの名無しさん (ワッチョイ 5bd2-8E8L)
2018/04/25(水) 20:44:39.30ID:3+niHUT+0 【マイトLーヤとPS4】 FFとDQの最新作、VR開発は危険、プレーヤーの日常感覚を損なうおそれ
http://rosie.5ch.net/test/read.cgi/liveplus/1524621704/l50
http://rosie.5ch.net/test/read.cgi/liveplus/1524621704/l50
2018/04/25(水) 21:00:51.62ID:q/XXvHKQd
>>240
それは右座標を計算して返しただけであって処理を実行するのとは違う
面倒だからここ読んで
https://msdn.microsoft.com/ja-jp/library/ms229054(v=vs.100).aspx
それは右座標を計算して返しただけであって処理を実行するのとは違う
面倒だからここ読んで
https://msdn.microsoft.com/ja-jp/library/ms229054(v=vs.100).aspx
2018/04/25(水) 21:06:28.54ID:XHhjs7vi0
2018/04/25(水) 21:09:48.37ID:ckNZ5jJB0
メッセージキューを勉強中なんですが、
MSMQとMessageQueueクラスって何が違うんでしょうか?
MSMQとMessageQueueクラスって何が違うんでしょうか?
2018/04/25(水) 21:17:11.34ID:XWOG1WtT0
>>244
ありがとうございます
この場合、もう二度と Form1 を使わないという状況であれば、Form2 の ShowDialog を
呼び出す前に this.Hide(); で隠しておいて、戻ってきたら this.Dispose(); でしょうか
Hide() だけで処理を抜けるコードを書き忘れて、いつまでもプログラムが残り続けるバグを
やったので、二度と戻ってこないフォームは Dispose() したいのです
ありがとうございます
この場合、もう二度と Form1 を使わないという状況であれば、Form2 の ShowDialog を
呼び出す前に this.Hide(); で隠しておいて、戻ってきたら this.Dispose(); でしょうか
Hide() だけで処理を抜けるコードを書き忘れて、いつまでもプログラムが残り続けるバグを
やったので、二度と戻ってこないフォームは Dispose() したいのです
2018/04/25(水) 21:18:56.58ID:XWOG1WtT0
今思ったのですが、そういう使い方だとむしろ Form2 を非表示で実行しておいて、
その中で Form1 を呼び出すべき?
で、Form1 を抜けたら this.Show(); とか
その中で Form1 を呼び出すべき?
で、Form1 を抜けたら this.Show(); とか
2018/04/25(水) 21:20:04.33ID:ClmIY1xNa
>>243
頭悪そうだけど、単にバッキングフィールドの値をそのまま返すのではないケースを
「何らかの処理の結果を返す」と言っている。
処理 = 高価な処理ではない。
重かろうが単なる足し算だろうが処理は処理だ
頭悪そうだけど、単にバッキングフィールドの値をそのまま返すのではないケースを
「何らかの処理の結果を返す」と言っている。
処理 = 高価な処理ではない。
重かろうが単なる足し算だろうが処理は処理だ
2018/04/25(水) 22:11:10.02ID:jHFwiJ5Yd
Applicationに共通のパラメータ持って、Form1とForm2で共有しちゃダメなんか
2018/04/25(水) 22:17:09.52ID:fPsUNFh1a
使い方次第じゃないかなとは思う
双方で同時に書き換えたりするならやめたほうがいい
それ以前にタダクソダサイと思う
双方で同時に書き換えたりするならやめたほうがいい
それ以前にタダクソダサイと思う
2018/04/25(水) 22:41:48.50ID:TqrgnB+10
シングルトンの出番だ
2018/04/25(水) 23:10:10.54ID:Kx9WW2Xx0
>>216
これやろ
これやろ
253デフォルトの名無しさん (アウアウカー Sa43-AqIk)
2018/04/25(水) 23:38:15.43ID:8cfef6Y0a もう親フォーム作れば?
2018/04/26(木) 14:36:05.39ID:ooZK6FZP0
自作ツールをソースコード付きで公開したいのですが、
パブリックドメインソフトにするのが最善ですか?
パブリックドメインソフトにするのが最善ですか?
2018/04/26(木) 15:37:00.65ID:s8t3AsxEM
.netで簡単に実現できる機能(メールや圧縮、画像処理等)をネイティブCのアプリで利用したいです。VC++6.0の(C++ではなく)C言語で作るコンソールアプリでです。
C#で作っでdllを作って、C++のdllでそれをコールする関数を公開すれば実現可能ですが、もっといいやり方ないでしょうか?
C#で作っでdllを作って、C++のdllでそれをコールする関数を公開すれば実現可能ですが、もっといいやり方ないでしょうか?
2018/04/26(木) 15:39:07.13ID:B934JXdmM
>>254
今のOSSはMITライセンスでGithubに晒すのが主流
今のOSSはMITライセンスでGithubに晒すのが主流
2018/04/26(木) 16:34:09.89ID:+C2ovlRwM
>>255
つ C++/CLI
つ C++/CLI
2018/04/26(木) 17:05:43.31ID:B934JXdmM
2018/04/26(木) 19:19:32.70ID:leQJqI/Q0
2018/04/26(木) 20:39:08.13ID:8i3JVbEw0
皆様ありがとうございました
決まりきった定番の書き方はない、と理解すれば良さそうですね
自分で色々試してみます
決まりきった定番の書き方はない、と理解すれば良さそうですね
自分で色々試してみます
2018/04/26(木) 21:03:55.12ID:8i3JVbEw0
今度はインデクサについて教えてください
https://ideone.com/TlRwJS
例として上記のようなコードを書いてみました
これで、インデクサを使って例えば anml["whale"] とすれば1が返ってくるような、
そういうものを作りたいと思います
(classified, lifeの各プロパティはユニークではなく、specificのみユニークとします)
本を紐解きながら書こうとしたのですが、animalsクラスの中ではリストになっていないので
書く場所はなさそうです。でもMainメソッドでは利用したい側なので、ここに実装することも
できない気がします。
多分インデクサの考え方そのものがわかっていません。どなたか教えていただけると
嬉しいです。
https://ideone.com/TlRwJS
例として上記のようなコードを書いてみました
これで、インデクサを使って例えば anml["whale"] とすれば1が返ってくるような、
そういうものを作りたいと思います
(classified, lifeの各プロパティはユニークではなく、specificのみユニークとします)
本を紐解きながら書こうとしたのですが、animalsクラスの中ではリストになっていないので
書く場所はなさそうです。でもMainメソッドでは利用したい側なので、ここに実装することも
できない気がします。
多分インデクサの考え方そのものがわかっていません。どなたか教えていただけると
嬉しいです。
2018/04/26(木) 21:18:02.97ID:i4ujFDqn0
ListじゃなくてDictionaryを使えばOK
2018/04/26(木) 21:54:22.87ID:IFgymZMf0
anml.FindIndex(_ => _.specific == "whale")でよくね?
264デフォルトの名無しさん (ワッチョイ 19e3-Im5u)
2018/04/27(金) 03:52:18.55ID:3sBZO5RI0 インデクサてのは自作のクラスにつけるプロパティみたいなものだから、List<animals>を内蔵するクラス作って
public int this[string p]{
get{ /* ここに検索して結果を返すコード書く */ }
}
でおkなんじゃねか?知らんけど。
public int this[string p]{
get{ /* ここに検索して結果を返すコード書く */ }
}
でおkなんじゃねか?知らんけど。
2018/04/27(金) 07:42:26.78ID:vWqu6ayt0
>>262
すいません、理解のレベルが低いので、具体的にどう実装すればよいのかわかりませんでした
var anml = new Dictionary<animals, string>;
としてディクショナリは実装できたとして、要素追加の際 Add メソッドをどう書くのか、理解が
追いついていないようです
>>263
この書き方で、求めている操作は実現できそうです
ラムダ式の理解が怪しいのは勉強するとして、毎回これを書くと面倒&間違えそうなのですが、
これは「十分に簡潔な書き方」なのか、それとも「メソッド等でさらに簡潔に書ける」のか、どちら
でしょうか。
>>264
この場合、各プロパティにアクセスする際は anml[i].specific とかではなくて anml(i, specific)等
メソッドを介してアクセスすることになるのでしょうか?
すいません、理解のレベルが低いので、具体的にどう実装すればよいのかわかりませんでした
var anml = new Dictionary<animals, string>;
としてディクショナリは実装できたとして、要素追加の際 Add メソッドをどう書くのか、理解が
追いついていないようです
>>263
この書き方で、求めている操作は実現できそうです
ラムダ式の理解が怪しいのは勉強するとして、毎回これを書くと面倒&間違えそうなのですが、
これは「十分に簡潔な書き方」なのか、それとも「メソッド等でさらに簡潔に書ける」のか、どちら
でしょうか。
>>264
この場合、各プロパティにアクセスする際は anml[i].specific とかではなくて anml(i, specific)等
メソッドを介してアクセスすることになるのでしょうか?
2018/04/27(金) 07:59:23.04ID:Ek6IpJbsa
2018/04/27(金) 08:18:37.17ID:3sBZO5RI0
番号が欲しいのかanimalsオブジェクトが欲しいのか
2018/04/27(金) 12:24:44.14ID:/0qPzcyMr
269デフォルトの名無しさん (ワッチョイ 93e3-cUH7)
2018/04/27(金) 23:13:48.06ID:9YiDAi7f0 Index番号が欲しいなら>>263で十分じゃないか?
見つからなかったとき例外吐くらしいから気をつけろい
見つからなかったとき例外吐くらしいから気をつけろい
2018/04/27(金) 23:15:15.73ID:9YiDAi7f0
まちがえた。例外じゃなくて-1だ。すんまそ。回線で首吊ってくる
2018/04/28(土) 01:50:07.49ID:E8vnEfND0
>>263
アンダーバーはやめとけ
アンダーバーはやめとけ
2018/04/28(土) 01:50:20.46ID:fiFvLr6Y0
XAMLファイルからボタンを削除した場合、CSコードの方に呼び出されることのないコールバック関数の宣言が残ってしまます
こういうのを効率よく削除する方法ってないのでしょうか?
こういうのを効率よく削除する方法ってないのでしょうか?
2018/04/28(土) 01:54:51.50ID:E8vnEfND0
>>272
WPF?
WPF?
2018/04/28(土) 02:32:39.82ID:fiFvLr6Y0
>>273
Xamarin.Formsで使っています
Xamarin.Formsで使っています
2018/04/28(土) 07:22:01.22ID:bL+b5OsrM
>>272
XML解析とリフレクション
XML解析とリフレクション
276デフォルトの名無しさん (ワッチョイ 112d-c97c)
2018/04/28(土) 12:46:33.34ID:5pWODy2i0 ここでいいのかわかりませんが、質問させてください。
C#でフレームワーク ASP.Net MVCで作っています。
テーブルのフォームをPOSTしたいのですが、
動的に作成した行をどのようにサーバー側で受け取ればよいのかわかりません。
<td>
<input class="form-control" id="no1" name="no2" type="text" value="" />
</td>
<td>
<input class="form-control" id="no2" name="no2" type="text" value="" />
</td>
このように、複数行があって、noの後ろの数値は、行を追加したら増えるように
javascriptで制御しています。
サーバー側の処理として、引数を
(string no1, string no2, ・・・)と列挙してすべて書けば、
POSTデータを受け取れることは確認済みです。
ただ、ユーザーの操作で行を何行追加するかもわからず、あらかじめ想定する
最大数の引数を列挙するのも現実的ではありません。
すべてのフォームデータを一挙に受け取って、
サーバー内部のロジックで処理する方法はないでしょうか。
C#でフレームワーク ASP.Net MVCで作っています。
テーブルのフォームをPOSTしたいのですが、
動的に作成した行をどのようにサーバー側で受け取ればよいのかわかりません。
<td>
<input class="form-control" id="no1" name="no2" type="text" value="" />
</td>
<td>
<input class="form-control" id="no2" name="no2" type="text" value="" />
</td>
このように、複数行があって、noの後ろの数値は、行を追加したら増えるように
javascriptで制御しています。
サーバー側の処理として、引数を
(string no1, string no2, ・・・)と列挙してすべて書けば、
POSTデータを受け取れることは確認済みです。
ただ、ユーザーの操作で行を何行追加するかもわからず、あらかじめ想定する
最大数の引数を列挙するのも現実的ではありません。
すべてのフォームデータを一挙に受け取って、
サーバー内部のロジックで処理する方法はないでしょうか。
277デフォルトの名無しさん (ワッチョイ 93d2-/ky+)
2018/04/28(土) 13:53:59.42ID:Jn+S73+O02018/04/28(土) 14:50:29.57ID:X/1aPQ6Ma
どうせJavaScript書いてるんならJavaScript側でJSONの配列に纏めてからAJAXでポストするのもアリ
2018/04/28(土) 21:58:22.96ID:4vnB69wL0
[[[ ][ ]]]\[[]] [[[]]]],[[[ [][] ]
2018/04/28(土) 22:36:40.95ID:vp8gWtwG0
Entity FrameworkでDBへのselectとかのリトライしたい場合ってどのようにすべきでしょうか
一時的なエラーだったりしたらもう一回トライとかしたいのです
例外全キャッチするのも無駄なのかなぁと思いまして
一時的なエラーだったりしたらもう一回トライとかしたいのです
例外全キャッチするのも無駄なのかなぁと思いまして
2018/04/28(土) 23:02:28.71ID:8LDPRSMfM
普通のRDBなら一時的なエラーなんか滅多にないだろ
400でいいよそんなもん
400でいいよそんなもん
2018/04/28(土) 23:05:27.66ID:yGhXA9la0
Azure相手だと普通にあるで
2018/04/28(土) 23:08:01.89ID:E8vnEfND0
>>280
DbExecutionStrategy
DbExecutionStrategy
2018/04/28(土) 23:33:01.91ID:vp8gWtwG0
2018/04/29(日) 20:34:09.03ID:My7UiDyw0
[[[ []]]]*[[ [][] ][] } } {} [[[
2018/05/02(水) 19:00:22.89ID:As5kU4Fr0
とりあえず、連休ぐらいゆっくりな
オマエラ
オマエラ
2018/05/03(木) 10:44:28.97ID:9ar3mEaia
連休は機械学習でずっと計算させる予定
人間は休む
人間は休む
2018/05/03(木) 13:02:24.11ID:Nqnp2049M
人間はILコードを覚えてハンドアセンブル出きるようになるべき
2018/05/03(木) 13:26:57.92ID:YEWKmWCr0
winformの左辺や上辺をドラッグするとフォームのサイズが変わらずにフォームが移動してしまいますが
サイズを変更するように設定するプロパティなどはありますでしょうか
コードを書く必要がありますか?
サイズを変更するように設定するプロパティなどはありますでしょうか
コードを書く必要がありますか?
2018/05/03(木) 14:32:14.37ID:hvfEvXXP0
2018/05/03(木) 14:41:33.60ID:Nqnp2049M
>>290
情報処理試験のCASLとかも?
情報処理試験のCASLとかも?
2018/05/03(木) 14:46:31.58ID:hvfEvXXP0
2018/05/03(木) 14:47:30.87ID:1IvMgmqBM
次元が違うだろ
ILは高級なオブジェクト指向言語
そもそも機械語に似せることを意図されていない
ILは高級なオブジェクト指向言語
そもそも機械語に似せることを意図されていない
2018/05/03(木) 14:51:41.82ID:hvfEvXXP0
>>293
ハードウェアマシン語とプログラム言語との間に、なぜ仮想マシンと仮想的な言語(IL/JVM)が採用されるようになったのか?そこが今でも判然としないのです…
ハードウェアマシン語とプログラム言語との間に、なぜ仮想マシンと仮想的な言語(IL/JVM)が採用されるようになったのか?そこが今でも判然としないのです…
2018/05/03(木) 15:42:16.53ID:+UDEH62l0
>>294
ドライバは何故存在するの?つってる様なもんだぞそれ
ドライバは何故存在するの?つってる様なもんだぞそれ
2018/05/03(木) 15:45:53.15ID:hvfEvXXP0
2018/05/03(木) 16:06:28.64ID:+UDEH62l0
仮想マシンに焦点を絞るなら、ハードウェアの差異を吸収する為では
(.netはJavaVMほどあちこちに移植されてないというだけで)
ILに関して言えば、複数の言語(C#、VB.net、F#、他)を共通のフレームワーク上で動かせる様にする為
(.netはJavaVMほどあちこちに移植されてないというだけで)
ILに関して言えば、複数の言語(C#、VB.net、F#、他)を共通のフレームワーク上で動かせる様にする為
2018/05/03(木) 16:13:17.79ID:ioUmuI6x0
>>297
それならハードウェアや言語の統一を目指したほうが建設的なのでは?
それならハードウェアや言語の統一を目指したほうが建設的なのでは?
2018/05/03(木) 16:19:16.65ID:+UDEH62l0
>>298
不可能だろう
収斂進化により表面上似た様な機能を搭載する事はあっても、内部構造は特許なり権利なり絡んで来るから同じに出来ないし
JavaScript+CSS3ですらブラウザベンダ間で足並み揃えられないのに、言語の統一なんて出来る訳が無い
不可能だろう
収斂進化により表面上似た様な機能を搭載する事はあっても、内部構造は特許なり権利なり絡んで来るから同じに出来ないし
JavaScript+CSS3ですらブラウザベンダ間で足並み揃えられないのに、言語の統一なんて出来る訳が無い
2018/05/03(木) 16:37:31.89ID:hvfEvXXP0
現状、中間言語側でも少なくとも JVM/.net framework にわかれちゃっているからねえ…
2018/05/03(木) 18:59:07.03ID:OyWVOyw+0
>>300
LLVMの中間コードをご存知でない?
LLVMの中間コードをご存知でない?
2018/05/03(木) 19:06:23.30ID:hvfEvXXP0
>>301
LLVM はコンパイラの中で完結しているのではないかな?
LLVM はコンパイラの中で完結しているのではないかな?
2018/05/03(木) 19:12:34.62ID:R63QgqLH0
?
2018/05/03(木) 19:15:49.37ID:OyWVOyw+0
>>302
コンパイラ開発者はとりあえずLLVM-IRに変換すればいいし最終段で機械語に変換するか直接実行するか他の言語のコードに変換するかは自由
というか最初と最後だけ作ればいいわけだから寧ろLLVM-IRが中心
コンパイラ開発者はとりあえずLLVM-IRに変換すればいいし最終段で機械語に変換するか直接実行するか他の言語のコードに変換するかは自由
というか最初と最後だけ作ればいいわけだから寧ろLLVM-IRが中心
2018/05/03(木) 19:22:47.84ID:hvfEvXXP0
2018/05/03(木) 19:24:37.99ID:R63QgqLH0
すまん、途中から意味分からん
2018/05/03(木) 19:27:41.50ID:kS9rU1V5a
.netは仮想マシンなんかつかってないじゃん
2018/05/03(木) 19:42:37.77ID:hvfEvXXP0
>>307
https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA_(%E5%85%B1%E9%80%9A%E8%A8%80%E8%AA%9E%E5%9F%BA%E7%9B%A4)
仮想マシン VES は定義されているようだ
https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA_(%E5%85%B1%E9%80%9A%E8%A8%80%E8%AA%9E%E5%9F%BA%E7%9B%A4)
仮想マシン VES は定義されているようだ
2018/05/03(木) 19:45:56.40ID:Vq5AVdhm0
おい!初心者の内容じゃねーぞw
2018/05/03(木) 20:04:38.77ID:kS9rU1V5a
>>308
VESは最終段階のコンパイラだよ
VESは最終段階のコンパイラだよ
2018/05/03(木) 20:12:05.92ID:OyWVOyw+0
JITコンパイルはVMとしては認めない派閥が存在することは認める
2018/05/03(木) 20:31:23.35ID:GKu15pasa
https://www.slideshare.net/ufcpp/ss-34533225
このスライドの67枚目の「良い例」のコードってこれで本当にいいの?
MSDNのParallel.Forの解説には
---
localFinally デリゲートはスレッドごとに 1 回呼び出され、各スレッドのローカル状態に対して最後の操作を行います。 このデリゲートは、同時に複数のスレッドで呼び出される可能性があります。したがって、共有変数へのアクセスを同期する必要があります。
---
と書いてあるから、countはアトミックに操作しないとまずい気がするんだけど
https://msdn.microsoft.com/ja-jp/library/dd783299(v=vs.100).aspx
このスライドの67枚目の「良い例」のコードってこれで本当にいいの?
MSDNのParallel.Forの解説には
---
localFinally デリゲートはスレッドごとに 1 回呼び出され、各スレッドのローカル状態に対して最後の操作を行います。 このデリゲートは、同時に複数のスレッドで呼び出される可能性があります。したがって、共有変数へのアクセスを同期する必要があります。
---
と書いてあるから、countはアトミックに操作しないとまずい気がするんだけど
https://msdn.microsoft.com/ja-jp/library/dd783299(v=vs.100).aspx
2018/05/03(木) 21:13:05.22ID:L6Rknns90
2018/05/03(木) 21:46:41.74ID:GKu15pasa
2018/05/03(木) 21:48:43.65ID:ygisZEFQM
そうだねだからどうしたの
資料公開してる本人に言えばいいんじゃないの
資料公開してる本人に言えばいいんじゃないの
2018/05/03(木) 22:02:53.69ID:nzAwdXFB0
大して変わんねーよ
そんなに処理分けたきゃ
別exeにしてキックしろよ
後はできるならOSがうまくやるし
OSがうまくできなかったらそりゃできないんだろうよw
そんなに処理分けたきゃ
別exeにしてキックしろよ
後はできるならOSがうまくやるし
OSがうまくできなかったらそりゃできないんだろうよw
2018/05/03(木) 22:05:27.65ID:WY9OnNQR0
どうした発作か
2018/05/03(木) 23:06:32.43ID:L6Rknns90
319デフォルトの名無しさん (ワッチョイ 2f03-eBll)
2018/05/03(木) 23:38:41.22ID:aADwc6210 おバカwebを鵜呑みにしない有望な>>312なんやからもう少し優しくレスしてやれよw
2018/05/04(金) 00:16:38.85ID:Xm9CVOioa
この例だとForよりAggregate使ったほうがいいな
2018/05/04(金) 00:37:22.14ID:pvqh60Bra
2018/05/04(金) 02:08:40.41ID:DbHU5BaK0
C♯でJavaScriptで生成されてるチャットサイトからコメントビューアを作りたいのですが、JavaScriptが生成したHTMLを取得するのに適したライブラリってどれでしょうか?
Formアプリで作る予定ですが
webBrowserコントロールが一番手軽でしょうか?
Formアプリで作る予定ですが
webBrowserコントロールが一番手軽でしょうか?
2018/05/04(金) 02:10:39.64ID:DbHU5BaK0
2018/05/04(金) 02:53:44.45ID:JYHlDWX6M
javascriptで生成といっても生成元になるデータを何処かでリクエストしてる筈
そっちを解析して直接的にHttpClientでgetしたほうがええよ
そっちを解析して直接的にHttpClientでgetしたほうがええよ
2018/05/04(金) 04:15:13.73ID:DbHU5BaK0
ありがとうございます
単純にセッションが必要っぽそうだったのでHttpClientでもいけそうです
使い方調べ直します
単純にセッションが必要っぽそうだったのでHttpClientでもいけそうです
使い方調べ直します
2018/05/04(金) 16:58:55.69ID:wDfbuSiA0
おバカwebと言えば↓みたいに日本語と英語で全く逆のことが書いてあったりする
基本的にwebに書いてあることは疑ってかかったほうが良さそうね
日本語
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/best-practices-strings#recommendations_for_string_usage
> 比較のために文字列を正規化する場合は、String.ToUpperInvariant メソッドではなく String.ToLowerInvariant メソッドを使用します。
英語
https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices-strings#recommendations_for_string_usage
> Use the String.ToUpperInvariant method instead of the String.ToLowerInvariant method when you normalize strings for comparison.
(グーグル翻訳) 比較のために文字列を正規化するときは、String.ToLowerInvariantメソッドの代わりにString.ToUpperInvariantメソッドを使用します。
基本的にwebに書いてあることは疑ってかかったほうが良さそうね
日本語
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/best-practices-strings#recommendations_for_string_usage
> 比較のために文字列を正規化する場合は、String.ToUpperInvariant メソッドではなく String.ToLowerInvariant メソッドを使用します。
英語
https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices-strings#recommendations_for_string_usage
> Use the String.ToUpperInvariant method instead of the String.ToLowerInvariant method when you normalize strings for comparison.
(グーグル翻訳) 比較のために文字列を正規化するときは、String.ToLowerInvariantメソッドの代わりにString.ToUpperInvariantメソッドを使用します。
2018/05/04(金) 17:22:00.73ID:0gwAiFk4d
2018/05/04(金) 19:43:22.77ID:RYlEGIXb0
グラフィックの扱いについて教えてください
panelに複数の画像イメージを貼り付けたいと思います
(トランプのカードを任意の枚数置くような感じです)
WidthとHeightをpanelのサイズに合わせて、Bitmapオブジェクトを
作ってそこに必要な画像を貼り付けて、最後にPaintイベントでその
ビットマップを Graphics.DrawImage で表示すれば良さそうだ、という
認識です
問題はBitmapオブジェクトに画像を貼り付けることで、メソッドを
調べても、Bitmapオブジェクトの任意の場所に任意のイメージを
貼り付けるものはなさそうです
そもそも用意した画像は Image.FromFile で準備しているのですが、
Imageオブジェクトを貼り付けられるのは Graphics.DrawImage
メソッドになるので、そもそも Bitmap オブジェクトを用意すると
いう発想が間違っているような気もします
多分いろいろ間違って認識しているので、どこから考え直せばよいか
教えていただけると嬉しいです
panelに複数の画像イメージを貼り付けたいと思います
(トランプのカードを任意の枚数置くような感じです)
WidthとHeightをpanelのサイズに合わせて、Bitmapオブジェクトを
作ってそこに必要な画像を貼り付けて、最後にPaintイベントでその
ビットマップを Graphics.DrawImage で表示すれば良さそうだ、という
認識です
問題はBitmapオブジェクトに画像を貼り付けることで、メソッドを
調べても、Bitmapオブジェクトの任意の場所に任意のイメージを
貼り付けるものはなさそうです
そもそも用意した画像は Image.FromFile で準備しているのですが、
Imageオブジェクトを貼り付けられるのは Graphics.DrawImage
メソッドになるので、そもそも Bitmap オブジェクトを用意すると
いう発想が間違っているような気もします
多分いろいろ間違って認識しているので、どこから考え直せばよいか
教えていただけると嬉しいです
2018/05/04(金) 19:54:32.04ID:EvkA5vHv0
>>328
ベースの画像のいくつかの任意の位置に画像を貼り付ける描画ならそれで間違っていないけど
https://msdn.microsoft.com/ja-jp/library/system.drawing.graphics.drawimage(v=vs.110).aspx
https://msdn.microsoft.com/ja-jp/library/558kfzex(v=vs.110).aspx
どこを勘違いして悩んでいるのかいまいちわからない
とりあえずBitmap オブジェクトはImageオブジェクトの一種
他にMetaFileとかあるから
そしてGraphics.DrawImageメソッドを使って貼り付けてもベースのBitmap オブジェクトはBitmap オブジェクトのまま
ベースの画像のいくつかの任意の位置に画像を貼り付ける描画ならそれで間違っていないけど
https://msdn.microsoft.com/ja-jp/library/system.drawing.graphics.drawimage(v=vs.110).aspx
https://msdn.microsoft.com/ja-jp/library/558kfzex(v=vs.110).aspx
どこを勘違いして悩んでいるのかいまいちわからない
とりあえずBitmap オブジェクトはImageオブジェクトの一種
他にMetaFileとかあるから
そしてGraphics.DrawImageメソッドを使って貼り付けてもベースのBitmap オブジェクトはBitmap オブジェクトのまま
2018/05/04(金) 20:25:52.55ID:RYlEGIXb0
>>329
私の認識は、最終的に描画したいビットマップを用意して、それを Paint イベントで
描画するというものです
Panel1_Paint(object sender, PaintEventArgs e) {
e.Graphics.DrawImage(canvas, 0, 0);
}
で、上記の例で Bitmap canvas; とでもして用意したビットマップに、任意の画像を
貼り付ける方法を知りたいのです
例えば256x256ピクセルのサイズで用意したビットマップに、32x32ピクセルの
画像を3個位貼り付けた canvas を用意したいというものです
「そうではなくて、最終的に描画したいものはGraphicsオブジェクトで用意して、
Paintイベントで毎回描画するのだ」というのが正なのかもしれません
Panel1_Paint(省略) {
e.Graphics.DrawImage(image_1, image_1_x, image_1_y);
e.Graphics.DrawImage(image_2, image_2_x, image_2_y);
...
}
といった感じで
でもなんだか、毎回Paintイベントハンドラに描画処理を全部書くのは変な感じがして、
描画したい画像を用意するのと、実際に描画するのは別の処理ではないかと思っている
次第です
私の認識は、最終的に描画したいビットマップを用意して、それを Paint イベントで
描画するというものです
Panel1_Paint(object sender, PaintEventArgs e) {
e.Graphics.DrawImage(canvas, 0, 0);
}
で、上記の例で Bitmap canvas; とでもして用意したビットマップに、任意の画像を
貼り付ける方法を知りたいのです
例えば256x256ピクセルのサイズで用意したビットマップに、32x32ピクセルの
画像を3個位貼り付けた canvas を用意したいというものです
「そうではなくて、最終的に描画したいものはGraphicsオブジェクトで用意して、
Paintイベントで毎回描画するのだ」というのが正なのかもしれません
Panel1_Paint(省略) {
e.Graphics.DrawImage(image_1, image_1_x, image_1_y);
e.Graphics.DrawImage(image_2, image_2_x, image_2_y);
...
}
といった感じで
でもなんだか、毎回Paintイベントハンドラに描画処理を全部書くのは変な感じがして、
描画したい画像を用意するのと、実際に描画するのは別の処理ではないかと思っている
次第です
2018/05/04(金) 20:30:54.11ID:Ad2tmUBO0
描画したい画像を用意するのと、それを描画するのは当然別の処理だ。
でもアニメーションさせたいとか画像の変更を即座に描画に反映させたいとかなら、用意した足で再描画させるしかないだろ?
でもアニメーションさせたいとか画像の変更を即座に描画に反映させたいとかなら、用意した足で再描画させるしかないだろ?
2018/05/04(金) 20:36:30.50ID:EvkA5vHv0
>>330
何でイベントでやるのか知らないけど複数の描画を同時にやるメソッドはなかったと思うよ
https://dobon.net/vb/dotnet/graphics/index.html
Bitmap canvas=new Bitmap(x,y);
Graphics g = Graphics.FromImage(canvas);
Graphics.DrawImage(image_1, image_1_x, image_1_y);
Graphics.DrawImage(image_2, image_2_x, image_2_y);
何でイベントでやるのか知らないけど複数の描画を同時にやるメソッドはなかったと思うよ
https://dobon.net/vb/dotnet/graphics/index.html
Bitmap canvas=new Bitmap(x,y);
Graphics g = Graphics.FromImage(canvas);
Graphics.DrawImage(image_1, image_1_x, image_1_y);
Graphics.DrawImage(image_2, image_2_x, image_2_y);
2018/05/04(金) 20:38:50.67ID:EvkA5vHv0
あ、ごめん
Graphics g = Graphics.FromImage(canvas);
g.DrawImage(image_1, image_1_x, image_1_y);
g.DrawImage(image_2, image_2_x, image_2_y);
だった
Graphics g = Graphics.FromImage(canvas);
g.DrawImage(image_1, image_1_x, image_1_y);
g.DrawImage(image_2, image_2_x, image_2_y);
だった
2018/05/04(金) 20:49:55.24ID:RYlEGIXb0
>>331
アニメーションさせたいとか、そういう意図はないです
単に、描画したい画像を用意するのに、Bitmapオブジェクトにさらに画像を
貼り付ける方法がわからなくて悩んでいます
>>332
イベントでやってるのは、単に参考にしたサイトで「Paintイベントハンドラで
処理する」と書いてあったので、それを鵜呑みにしただけです
https://dobon.net/vb/dotnet/graphics/drawimage.html
これを見て気づきましたが、そもそもパネルに直接描こうとするのが間違いで、
パネルにPictureBoxを貼り付けた上でそこに置けば良いのかな?
アニメーションさせたいとか、そういう意図はないです
単に、描画したい画像を用意するのに、Bitmapオブジェクトにさらに画像を
貼り付ける方法がわからなくて悩んでいます
>>332
イベントでやってるのは、単に参考にしたサイトで「Paintイベントハンドラで
処理する」と書いてあったので、それを鵜呑みにしただけです
https://dobon.net/vb/dotnet/graphics/drawimage.html
これを見て気づきましたが、そもそもパネルに直接描こうとするのが間違いで、
パネルにPictureBoxを貼り付けた上でそこに置けば良いのかな?
2018/05/04(金) 20:54:32.05ID:EvkA5vHv0
>>334
どっちでも同じだと思う
Graphics g = Graphics.FromImage(panel1.BackGroundImage);
でやれば直接パネルに書き込めるし
ただ大きい画像を表示して画像の表示位置をスクロールさせたいのならパネルの上にPictureBoxが基本
とりあえず書いて動かしてみたら
どっちでも同じだと思う
Graphics g = Graphics.FromImage(panel1.BackGroundImage);
でやれば直接パネルに書き込めるし
ただ大きい画像を表示して画像の表示位置をスクロールさせたいのならパネルの上にPictureBoxが基本
とりあえず書いて動かしてみたら
2018/05/04(金) 21:05:17.61ID:aP3h8uSia
2018/05/04(金) 21:11:39.38ID:RYlEGIXb0
>>336
実現したいことは、「任意の画像を任意の場所に配置したイメージを、panelに描画したい」です
これは明確で、それを実装するための方法でどう悩んでいるかが正しく伝わらないと、答える方も
こちらのレベルがわからなくて困るかと思ってました
実現したいことがちゃんと伝わっていませんでしたか
それ以前の問題でしたね。。。
実現したいことは、「任意の画像を任意の場所に配置したイメージを、panelに描画したい」です
これは明確で、それを実装するための方法でどう悩んでいるかが正しく伝わらないと、答える方も
こちらのレベルがわからなくて困るかと思ってました
実現したいことがちゃんと伝わっていませんでしたか
それ以前の問題でしたね。。。
2018/05/04(金) 21:43:04.80ID:pJ6Zbbxdp
ファイル読んでバインドするだけちゃうのか?
2018/05/04(金) 22:52:54.89ID:IMcj9GIN0
>>337
dobon.netにあるじゃん
dobon.netにあるじゃん
2018/05/05(土) 01:53:47.84ID:US1Viqbq0
bmp1が配置先のイメージ、
bmp2がbmp1に配置したいイメージだとしたら以下になる
Graphics g = Graphics.FromImage(bmp1);
g.DrawImage(bmp2, x, y); // bmp1の(x, y)にbmp2を書き込む
g.Dispose();
pictureBox1.Image = bmp1;
これだけでパネルにbmp1が表示される
bmp2がbmp1に配置したいイメージだとしたら以下になる
Graphics g = Graphics.FromImage(bmp1);
g.DrawImage(bmp2, x, y); // bmp1の(x, y)にbmp2を書き込む
g.Dispose();
pictureBox1.Image = bmp1;
これだけでパネルにbmp1が表示される
2018/05/05(土) 01:54:36.93ID:US1Viqbq0
あ、パネルにPictureBox貼ってる前提ね
2018/05/05(土) 05:38:36.94ID:LRJiKh0v0
>>340
ありがとうございます
思っていることが問題なく実現できました
できるようになってみると、一体何を悩んでいたのか、自分でもわからなくなってしまいました
多分、DrawImage で書き込む先がVRAMだと思い込んでいたのでしょう
ありがとうございます
思っていることが問題なく実現できました
できるようになってみると、一体何を悩んでいたのか、自分でもわからなくなってしまいました
多分、DrawImage で書き込む先がVRAMだと思い込んでいたのでしょう
2018/05/06(日) 01:21:02.23ID:dl2mQyCb0
private void Form1_ResizeBegin(object sender, EventArgs e)
{
leftEdge = this.Left;
rightEdge = this.Right;
topEdge = this.Top;
bottomEdge = this.Bottom;
}
private void Form1_ResizeEnd(object sender, EventArgs e)
{
if ((rightEdge < this.Right) && (topEdge > this.Top))
{
// 処理に入らない
}
}
このコードでフォームを右上にドラッグして拡大した場合に処理に入らないのですがどこがおかしいでしょうか
{
leftEdge = this.Left;
rightEdge = this.Right;
topEdge = this.Top;
bottomEdge = this.Bottom;
}
private void Form1_ResizeEnd(object sender, EventArgs e)
{
if ((rightEdge < this.Right) && (topEdge > this.Top))
{
// 処理に入らない
}
}
このコードでフォームを右上にドラッグして拡大した場合に処理に入らないのですがどこがおかしいでしょうか
2018/05/06(日) 01:31:51.93ID:HfMj07lt0
右上にってことは事後の方が top の値が小さくなってるからじゃないの?
2018/05/06(日) 01:32:20.44ID:HfMj07lt0
ああ、そう書いてあるのか。失礼。
2018/05/06(日) 01:40:54.74ID:LGFxrhOP0
>>343
イベント有効になっている?
Form1_ResizeEndのメソッドに処理が入っているかそこから確認
int leftEdge, rightEdge,topEdge ,bottomEdge;
public Form1()
{
InitializeComponent();
this.ResizeBegin += Form1_ResizeBegin;
this.ResizeEnd += Form1_ResizeEnd;
}
private void Form1_ResizeBegin(object sender, EventArgs e)
{
this.Text = "start";
leftEdge = this.Left;
rightEdge = this.Right;
topEdge = this.Top;
bottomEdge = this.Bottom;
}
private void Form1_ResizeEnd(object sender, EventArgs e)
{
this.Text = String.Format("{0}:{1}", (rightEdge < this.Right), (topEdge > this.Top));
if ((rightEdge < this.Right) && (topEdge > this.Top))
{
this.Text = "OK";
}
}
これで動いた
イベント有効になっている?
Form1_ResizeEndのメソッドに処理が入っているかそこから確認
int leftEdge, rightEdge,topEdge ,bottomEdge;
public Form1()
{
InitializeComponent();
this.ResizeBegin += Form1_ResizeBegin;
this.ResizeEnd += Form1_ResizeEnd;
}
private void Form1_ResizeBegin(object sender, EventArgs e)
{
this.Text = "start";
leftEdge = this.Left;
rightEdge = this.Right;
topEdge = this.Top;
bottomEdge = this.Bottom;
}
private void Form1_ResizeEnd(object sender, EventArgs e)
{
this.Text = String.Format("{0}:{1}", (rightEdge < this.Right), (topEdge > this.Top));
if ((rightEdge < this.Right) && (topEdge > this.Top))
{
this.Text = "OK";
}
}
これで動いた
2018/05/06(日) 01:45:28.35ID:mBsERy4z0
private void DataGridViewFilter()
{
BindingSource objBind;
DataTable objData;
string strFilter;
objData = (DataTable)DataGridView1.DataSource;
if (IsNothing(objData) == false)
{
objBind = new BindingSource();
objBind.DataSource = objData;
strFilter = "Color like '%" + txt_Condition.Text + "%'";
objBind.Filter = strFilter;
}
}
{
BindingSource objBind;
DataTable objData;
string strFilter;
objData = (DataTable)DataGridView1.DataSource;
if (IsNothing(objData) == false)
{
objBind = new BindingSource();
objBind.DataSource = objData;
strFilter = "Color like '%" + txt_Condition.Text + "%'";
objBind.Filter = strFilter;
}
}
2018/05/06(日) 02:05:39.13ID:dl2mQyCb0
>>346
ご回答ありがとうございます
イベントは有効です
左や上や左上への拡大縮小ドラッグは正常なのですが左下や右上がおかしいです
提供していただいたコードを試したのですが、何故かは分からないのですが rightEdge < this.Right がfalseになっています
もう少し調べてみます
ご回答ありがとうございます
イベントは有効です
左や上や左上への拡大縮小ドラッグは正常なのですが左下や右上がおかしいです
提供していただいたコードを試したのですが、何故かは分からないのですが rightEdge < this.Right がfalseになっています
もう少し調べてみます
2018/05/06(日) 02:22:41.56ID:xovvhFEya
申し訳ないけど、問題を再現できるそのまんまのコードを提示していない時点で
確実に原因はあなたの勘違いにあると断言できる
確実に原因はあなたの勘違いにあると断言できる
350デフォルトの名無しさん (ワッチョイ 8a98-XJxX)
2018/05/06(日) 05:58:39.10ID:CBGkbUql0 Listを値渡しすべき所が参照渡しになってたせいで
くっそハマったんだけど
こういうのって、C#の解説本1冊読めば
注意しろって書いてあるもんなの?
参照渡し云々って単語はかろうじて知ってて
↓のサイトをたまたま見つけて、偶然解決出来たけど
https://webbibouroku.com/Blog/Article/list-copy
エラーや例外にならないバグが怖すぎる・・・
くっそハマったんだけど
こういうのって、C#の解説本1冊読めば
注意しろって書いてあるもんなの?
参照渡し云々って単語はかろうじて知ってて
↓のサイトをたまたま見つけて、偶然解決出来たけど
https://webbibouroku.com/Blog/Article/list-copy
エラーや例外にならないバグが怖すぎる・・・
2018/05/06(日) 06:08:47.32ID:994JP5I00
そんなものここで聞けば3秒で解決するし
2018/05/06(日) 08:39:03.59ID:j24ysXtO0
c#って物体X(?)は全部参照渡しになるよね
2018/05/06(日) 08:48:15.69ID:6gN3mvyQ0
>>350
それ値渡しじゃない
それ値渡しじゃない
2018/05/06(日) 09:09:18.32ID:9GXSG5IC0
イメージの配置はできるようになりましたが、いろいろ触っていると、チラツキが
気になるようになってきました
テストしてみたところ、下記のレベルでもチラツキが発生します
private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = Graphics.FromImage(canvas);
g.FillEllipse(bg_brush, x, y, radius, radius);
x += 5;
g.FillEllipse(fg_brush, x, y, radius, radius);
count++;
g.Dispose();
pictureBox1.Image = canvas;
if (count == 10)
{
count = 0;
timer1.Stop();
}
}
timer1.Intervalは100msにしてあります
チラつきを押さえるには、フォームの DoubleBufferd を true にすると良いと見ましたが、
true にしても false にしても変わりないようです
そもそも PictureBox は内部処理でダブルバッファリングを行っているとも見ました
まだなにかできることはあるのでしょうか
気になるようになってきました
テストしてみたところ、下記のレベルでもチラツキが発生します
private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = Graphics.FromImage(canvas);
g.FillEllipse(bg_brush, x, y, radius, radius);
x += 5;
g.FillEllipse(fg_brush, x, y, radius, radius);
count++;
g.Dispose();
pictureBox1.Image = canvas;
if (count == 10)
{
count = 0;
timer1.Stop();
}
}
timer1.Intervalは100msにしてあります
チラつきを押さえるには、フォームの DoubleBufferd を true にすると良いと見ましたが、
true にしても false にしても変わりないようです
そもそも PictureBox は内部処理でダブルバッファリングを行っているとも見ました
まだなにかできることはあるのでしょうか
2018/05/06(日) 09:36:21.79ID:9GXSG5IC0
書いてませんでしたが、bg_brushは背景色の、fg_brushは前景色のブラシです
Brush bg_brush = new SolidBrush(SystemColors.Control);
Brush fg_brush = new SolidBrush(Color.Black);
で定義しています
Brush bg_brush = new SolidBrush(SystemColors.Control);
Brush fg_brush = new SolidBrush(Color.Black);
で定義しています
2018/05/06(日) 09:54:38.21ID:RTzVBomo0
canvasはどんな風に設定しているの?
2018/05/06(日) 10:06:54.11ID:9GXSG5IC0
canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height);
として定義しています
として定義しています
2018/05/06(日) 10:36:38.03ID:RTzVBomo0
DoubleBufferdとか触らずともこっちではちらつかないけどなあ
ちらつくってのはどういうふうに見えることを言ってるの?
panelやpictureBoxのサイズやradiusの値もさらしてみては?
ちらつくってのはどういうふうに見えることを言ってるの?
panelやpictureBoxのサイズやradiusの値もさらしてみては?
2018/05/06(日) 10:50:11.40ID:IbwjU9Qn0
どこで何やってんの不明瞭だから当てずっぽうだが
下手に自前描画してるチラつくなら大体OnPaintBackgroundのせい
下手に自前描画してるチラつくなら大体OnPaintBackgroundのせい
2018/05/06(日) 10:55:03.54ID:9GXSG5IC0
https://ideone.com/s4ddqO
これが全コードです
空のWindowsフォームアプリケーションで生成されたフォームに、ボタンとパネル、
PictureBoxを配置しただけの状態です
パネルとPictureBoxは、DockをFillにしてウィンドウサイズに合わせてあります
これが全コードです
空のWindowsフォームアプリケーションで生成されたフォームに、ボタンとパネル、
PictureBoxを配置しただけの状態です
パネルとPictureBoxは、DockをFillにしてウィンドウサイズに合わせてあります
2018/05/06(日) 10:56:51.16ID:9GXSG5IC0
これで、timer1のIntervalを50msにすると、はっきり分かる程度にちらつきます
2018/05/06(日) 13:14:55.43ID:gzoDeGmX0
垂直同期しろ。
2018/05/06(日) 13:31:21.62ID:o/aLqSU5a
2018/05/06(日) 15:35:36.42ID:MOQB+J+Ha
解決のヒントにはならないだろうけど
ちらつきって何かということについて
すでに表示されてるものが一瞬透明に見えるから表示がおかしく見えること
たとえば半径100の円が横に5ドット動くとする
普通に考えたらほとんどの円に背景は隠れたままだけど何も考えないで適当にやると
背景が一瞬見えてしまう
一度円を消してなにもない状態を表示して
次に円を書いてるから問題がある
何もない状態を表示しなければいい
ちらつきって何かということについて
すでに表示されてるものが一瞬透明に見えるから表示がおかしく見えること
たとえば半径100の円が横に5ドット動くとする
普通に考えたらほとんどの円に背景は隠れたままだけど何も考えないで適当にやると
背景が一瞬見えてしまう
一度円を消してなにもない状態を表示して
次に円を書いてるから問題がある
何もない状態を表示しなければいい
2018/05/06(日) 18:19:28.93ID:9GXSG5IC0
2018/05/06(日) 18:22:22.08ID:gzoDeGmX0
だからハードの違いだって言ってんだろw
2018/05/06(日) 18:25:15.44ID:w10wIaHya
2018/05/06(日) 18:30:35.56ID:gzoDeGmX0
アホばっかり。
2018/05/06(日) 18:55:10.27ID:9GXSG5IC0
>>367
カクカクした動きとチラつきを同一視しているわけではありません
>>364
が書いたように、今回の例だと黒い円が一瞬消えているような感じがします
移動量の x += 10; をもっと少なくすれば目立たなくなりますが、それでも
なんとなく嫌な感じがします
でも言葉で説明するのは難しいですね
低フレームレートの認識を誤解していたようですが、インターバルを100msとか
50msとかだとディスプレイのリフレッシュレート(あるいは人間の認識力)に比べて
低すぎるので、かえって目立ってしまうということでしょうか?
確かに、インターバルを思い切って5msとかにしてみると、チラつきは軽減されてきた
気がします
カクカクした動きとチラつきを同一視しているわけではありません
>>364
が書いたように、今回の例だと黒い円が一瞬消えているような感じがします
移動量の x += 10; をもっと少なくすれば目立たなくなりますが、それでも
なんとなく嫌な感じがします
でも言葉で説明するのは難しいですね
低フレームレートの認識を誤解していたようですが、インターバルを100msとか
50msとかだとディスプレイのリフレッシュレート(あるいは人間の認識力)に比べて
低すぎるので、かえって目立ってしまうということでしょうか?
確かに、インターバルを思い切って5msとかにしてみると、チラつきは軽減されてきた
気がします
2018/05/06(日) 19:33:59.43ID:7/UIZFPx0
ちょっと改変して逆にチラツキをわかるようにしてみた
https://ideone.com/3X8oJh
WinFormプロジェクトを新規で作って元のソースを全部消したうえで、このソースを既存の項目として追加
上がPictureBoxで下がPanel
>>369
PictureBoxのダブルバッファがデフォルトで有効なのは知っているのを確認したので
その上でPanelはデフォルトでダブルバッファが有効だというのを念頭に入れてコードを実行してほしい
同じオブジェクトの動きだが、うちで確認する限りは下はあきらかにチラツキがあって上は目立たない
>>364
>何もない状態を表示しなければいい
というわけで先に描画して動いた部分だけを消すという動作を実現してみたつもり
だったんだけど、移動量を大きくするとカクツキがどうしても目立ってしまってうまくいかない。ギブアップw
>>369
もっとGDI+の動作を把握するとかゲームなどでの実装方法を探すかした方がいいと思う
残念ながら俺の知識ではここまで
https://ideone.com/3X8oJh
WinFormプロジェクトを新規で作って元のソースを全部消したうえで、このソースを既存の項目として追加
上がPictureBoxで下がPanel
>>369
PictureBoxのダブルバッファがデフォルトで有効なのは知っているのを確認したので
その上でPanelはデフォルトでダブルバッファが有効だというのを念頭に入れてコードを実行してほしい
同じオブジェクトの動きだが、うちで確認する限りは下はあきらかにチラツキがあって上は目立たない
>>364
>何もない状態を表示しなければいい
というわけで先に描画して動いた部分だけを消すという動作を実現してみたつもり
だったんだけど、移動量を大きくするとカクツキがどうしても目立ってしまってうまくいかない。ギブアップw
>>369
もっとGDI+の動作を把握するとかゲームなどでの実装方法を探すかした方がいいと思う
残念ながら俺の知識ではここまで
2018/05/06(日) 19:37:36.72ID:7/UIZFPx0
ごめん
>Panelはデフォルトでダブルバッファが有効だというのを念頭に入れて
Panelはデフォルトでダブルバッファが無効だというのを念頭に入れて
の間違い
>Panelはデフォルトでダブルバッファが有効だというのを念頭に入れて
Panelはデフォルトでダブルバッファが無効だというのを念頭に入れて
の間違い
2018/05/06(日) 20:17:55.74ID:LW3/RgRJa
うーんw
>>360のコード自体がダブルバッファリングの実装なので、
少なくともGDI+を使う限り、これで本当にちらつくなら何をやってもちらつき回避は不可能。
何度も言うけど、少なくとも俺の環境では低フレームレート特有の不自然さはあっても
フリッカーは確認できない
しつこいようだけど、俺は質問者がちらつき(フリッカー)がどういう現象か
理解してないだけのように思う
>>360のコード自体がダブルバッファリングの実装なので、
少なくともGDI+を使う限り、これで本当にちらつくなら何をやってもちらつき回避は不可能。
何度も言うけど、少なくとも俺の環境では低フレームレート特有の不自然さはあっても
フリッカーは確認できない
しつこいようだけど、俺は質問者がちらつき(フリッカー)がどういう現象か
理解してないだけのように思う
2018/05/06(日) 20:20:58.90ID:j24ysXtO0
まあ、unity使ってもDirectX使ってもスクロールとかなめらかにならないしね
グラボも汚いってのも考慮に入れる
市販のゲームでもスクロールしてるときはカクカクグシャグシャはデフォ
グラボも汚いってのも考慮に入れる
市販のゲームでもスクロールしてるときはカクカクグシャグシャはデフォ
2018/05/06(日) 20:21:41.45ID:9GXSG5IC0
>>370
ありがとうございます
私が確認しても、確かに上下で明らかにチラつきが違い、下ははっきりとわかります
上はほとんどわからないレベルですね
PictureBoxもPanelも、どちらも出来上がったビットマップを貼り付けているのですから
同じ表示になりそうな気がしますが違いますね
これをちゃんと理解できれば解決できそうです
ありがとうございます
私が確認しても、確かに上下で明らかにチラつきが違い、下ははっきりとわかります
上はほとんどわからないレベルですね
PictureBoxもPanelも、どちらも出来上がったビットマップを貼り付けているのですから
同じ表示になりそうな気がしますが違いますね
これをちゃんと理解できれば解決できそうです
2018/05/06(日) 20:36:30.01ID:LW3/RgRJa
2018/05/06(日) 20:39:37.09ID:9GXSG5IC0
2018/05/06(日) 20:49:20.18ID:7/UIZFPx0
https://ideone.com/PNPIlj
蛇足だろうけどnew BitmapじゃなくPictureBox.Imageを直接描き変えるもの
>>376
370で何をしたかったかというと「ダブルバッファリングではこれ以上改善できない」事の証明
>panelを置いてその上にpictureBox1を置いてます
それは多分関係ない。panelに背景を設定すると話が変わると思うけど
実際に改善するには移動量を少なくして滑らかに見せるくらいしかおもいつかない
消える側の方でなく進行方向側でカクついているんだよなあ・・・
蛇足だろうけどnew BitmapじゃなくPictureBox.Imageを直接描き変えるもの
>>376
370で何をしたかったかというと「ダブルバッファリングではこれ以上改善できない」事の証明
>panelを置いてその上にpictureBox1を置いてます
それは多分関係ない。panelに背景を設定すると話が変わると思うけど
実際に改善するには移動量を少なくして滑らかに見せるくらいしかおもいつかない
消える側の方でなく進行方向側でカクついているんだよなあ・・・
2018/05/06(日) 21:02:31.57ID:9GXSG5IC0
>>377
試してみました
>>370と変わらない感じですね
これまで質問してきた趣旨とは変わってしまいますが、
Graphics g = Graphics.FromImage(pictureBox1.Image);
これでビットマップを書き換えた後に pictureBox1.Image を書き換えていないと
いうことは、いちいち canvas ビットマップを用意して細工しなくてもよかったと
いうことでしょうか
で、本質ですが、ご提供いただいたテストプログラムでは明らかにチラつきの
改善が見られるということはダブルバッファリングは機能している、これ以上
気になるのであれば、それは滑らかさの問題であってチラつきの問題ではない、
と認識するのが良さそうですね
試してみました
>>370と変わらない感じですね
これまで質問してきた趣旨とは変わってしまいますが、
Graphics g = Graphics.FromImage(pictureBox1.Image);
これでビットマップを書き換えた後に pictureBox1.Image を書き換えていないと
いうことは、いちいち canvas ビットマップを用意して細工しなくてもよかったと
いうことでしょうか
で、本質ですが、ご提供いただいたテストプログラムでは明らかにチラつきの
改善が見られるということはダブルバッファリングは機能している、これ以上
気になるのであれば、それは滑らかさの問題であってチラつきの問題ではない、
と認識するのが良さそうですね
2018/05/06(日) 21:19:50.71ID:IbwjU9Qn0
下PanelはBackgroundImage使ってるのが悪いんじゃねえかなあ
canvasはPanelのPaintで描画するようにして
PanelのDoubleBufferedをtrueにするかOnPaintBackgroundの無効化でチラ付かなくなったよ
あとチラつきとは関係ないけどお行儀的には再描画はTickで
Invalidate(true)呼び出してPaintのタイミングはフレームワークに任せるべし
Tick毎に無駄にImage/BackgroundImageに突っ込んでるから結果的に自分で再描画してるけど
canvasはPanelのPaintで描画するようにして
PanelのDoubleBufferedをtrueにするかOnPaintBackgroundの無効化でチラ付かなくなったよ
あとチラつきとは関係ないけどお行儀的には再描画はTickで
Invalidate(true)呼び出してPaintのタイミングはフレームワークに任せるべし
Tick毎に無駄にImage/BackgroundImageに突っ込んでるから結果的に自分で再描画してるけど
2018/05/06(日) 21:52:55.18ID:LW3/RgRJa
2018/05/06(日) 23:08:48.35ID:s/HjZ7Qd0
>>350
それは参照渡しになってたわけじゃない
C#の参照渡しはhoge(ref list)のようにrefがつく
あなたがハマったのは参照の値渡しでインスタンスは複製されないということ
ぺらぺらの入門書とかだとわからんが、ジェネリックやクラスをちゃんと学べる程度の本なら載ってるはず
それは参照渡しになってたわけじゃない
C#の参照渡しはhoge(ref list)のようにrefがつく
あなたがハマったのは参照の値渡しでインスタンスは複製されないということ
ぺらぺらの入門書とかだとわからんが、ジェネリックやクラスをちゃんと学べる程度の本なら載ってるはず
2018/05/06(日) 23:23:27.04ID:gzoDeGmX0
グラボの性能差だから、ちらつき。
383デフォルトの名無しさん (ワッチョイ 8a7f-NrvC)
2018/05/06(日) 23:49:17.66ID:5astaXB20 >>350
List固有の問題ではなく、classは全て参照型だからだ。
だから、=で代入しても同じオブジェクトを指すだけ。
ちなみにstructは値型。こっちなら=で代入したらオブジェクトが複製される。
List固有の問題ではなく、classは全て参照型だからだ。
だから、=で代入しても同じオブジェクトを指すだけ。
ちなみにstructは値型。こっちなら=で代入したらオブジェクトが複製される。
2018/05/07(月) 01:29:04.63ID:inVQGvpaa
>>360をFPSと速度を変えられるようにしてみたけど
思ったより面白くもないし動作も滑らかじゃないなw
どっちにしろやっぱりフリッカーは発生しない
https://ideone.com/E3V57h
ところで、タイトルバーをドラッグしたりすると画面の更新が止まる問題を
回避する方法ってなかったっけ?
思ったより面白くもないし動作も滑らかじゃないなw
どっちにしろやっぱりフリッカーは発生しない
https://ideone.com/E3V57h
ところで、タイトルバーをドラッグしたりすると画面の更新が止まる問題を
回避する方法ってなかったっけ?
2018/05/07(月) 01:32:11.28ID:inVQGvpaa
ああ、今思ったけど、FPSは本当は実測した値を表示すべきだねw
>>384はタイマーのインターバルから計算した理論値で実測値じゃない
>>384はタイマーのインターバルから計算した理論値で実測値じゃない
2018/05/07(月) 01:32:57.05ID:3karsGmmp
グラボやドライバーの違いで発生する問題を自分のところじゃ発生しないからって頭ごなしに否定する奴はどうして生きてるんだろうな?
2018/05/07(月) 01:42:18.83ID:inVQGvpaa
>>386
それは君が勝手にそう思ってるだけw
そんな問題はWin9xの時代だって存在しなかったよ
っていうか、言っちゃわるいけどフリッカーが発生する原因を理解していればそんな間抜けな台詞は
出てこない
それは君が勝手にそう思ってるだけw
そんな問題はWin9xの時代だって存在しなかったよ
っていうか、言っちゃわるいけどフリッカーが発生する原因を理解していればそんな間抜けな台詞は
出てこない
2018/05/07(月) 01:43:57.94ID:inVQGvpaa
なんか垂直同期(笑)とか書いてるのもいたけど、
頭の中80年代で止まってるんじゃなかろうかw
頭の中80年代で止まってるんじゃなかろうかw
389デフォルトの名無しさん (ワッチョイ de8a-a7mP)
2018/05/07(月) 04:32:44.15ID:S2Y5gzQd0 DataGridViewで、複数のカラムを基準にソートするにはどうしたらいいでしょうか。
以下のようなイメージです。
元データ
------
4 2
1 4
2 1
5 4
6 7
1 3
1 6
これを、カラムのヘッダーセルのクリック操作だけで、以下のように出来るようにしたいです。
------
1 3
1 4
1 6
2 1
4 2
5 4
6 7
以下のようなイメージです。
元データ
------
4 2
1 4
2 1
5 4
6 7
1 3
1 6
これを、カラムのヘッダーセルのクリック操作だけで、以下のように出来るようにしたいです。
------
1 3
1 4
1 6
2 1
4 2
5 4
6 7
2018/05/07(月) 06:24:03.69ID:SlIACPlK0
プロパティだけでは無理
各列のSortModeはAutomatic以外にして
ColumnHeaderClickイベントで自分でソートする必要がある
実際にどうやってソートするかはDataGridViewに表示してるデータをどうやっているか次第
ところで下の状態で1番目の方のカラムヘッダをクリックしたらどうなるの?
とか色々場合があってUIというかUX?を決定するのが結構面倒
各列のSortModeはAutomatic以外にして
ColumnHeaderClickイベントで自分でソートする必要がある
実際にどうやってソートするかはDataGridViewに表示してるデータをどうやっているか次第
ところで下の状態で1番目の方のカラムヘッダをクリックしたらどうなるの?
とか色々場合があってUIというかUX?を決定するのが結構面倒
2018/05/07(月) 06:43:05.39ID:UbBhnDZYM
さすがに垂直同期はネタだろ
釣られる奴がいるとは思わなかったけど w
釣られる奴がいるとは思わなかったけど w
2018/05/07(月) 07:18:03.31ID:3karsGmmp
ググって事実を知ったんだな。そんなに悔しいのか?
2018/05/07(月) 08:25:49.50ID:H7YotaIo0
>>389-390
複数列でのソートは、Kotlin なら、
配列.sortedWith(compareBy({ 列1 }, { 列2 }))
C# は、よく知らないけど、こういう感じ?
配列.OrderBy(列1).ThenBy(列2)
複数列でのソートは、Kotlin なら、
配列.sortedWith(compareBy({ 列1 }, { 列2 }))
C# は、よく知らないけど、こういう感じ?
配列.OrderBy(列1).ThenBy(列2)
2018/05/07(月) 14:38:50.30ID:iApxgodj0
教えてください
キャストが上手くできずに困っています
具体的には、VisualStudioでデバッグのウォッチウィンドウに
Enumerable.Empty<int>() is IEnumerable<object>
と入力するとtrueと表示されるので少なくとも条件が整えば
IEnumerable<int> は IEnumerable<object> に
キャストできるとおもうのですが、プログラム上で安直に
Console.WriteLine(Enumerable.Empty<int>() is IEnumerable<object>);
を実行すると画面にFalseと表示されてしまいます
ウォッチウィンドウ上とプログラム上で何か条件の違いがあって
このようなことが起こっているのだとは思いますが、理解が不十分で解決方法が分かりません
そもそもIEnumerable<T>のTは共変なのでintがobjectにアップキャストできる以上
IEnumerable<int>も無条件でIEnumerable<object>にキャストできると
思っていたのですが、この部分に何か誤解があるのでしょうか
VisualStudio15.6.7、コンソールアプリ、ターゲットフレームワーク4.7.1でテストしています
よろしくお願いします
キャストが上手くできずに困っています
具体的には、VisualStudioでデバッグのウォッチウィンドウに
Enumerable.Empty<int>() is IEnumerable<object>
と入力するとtrueと表示されるので少なくとも条件が整えば
IEnumerable<int> は IEnumerable<object> に
キャストできるとおもうのですが、プログラム上で安直に
Console.WriteLine(Enumerable.Empty<int>() is IEnumerable<object>);
を実行すると画面にFalseと表示されてしまいます
ウォッチウィンドウ上とプログラム上で何か条件の違いがあって
このようなことが起こっているのだとは思いますが、理解が不十分で解決方法が分かりません
そもそもIEnumerable<T>のTは共変なのでintがobjectにアップキャストできる以上
IEnumerable<int>も無条件でIEnumerable<object>にキャストできると
思っていたのですが、この部分に何か誤解があるのでしょうか
VisualStudio15.6.7、コンソールアプリ、ターゲットフレームワーク4.7.1でテストしています
よろしくお願いします
2018/05/07(月) 18:57:27.81ID:cAXvX5WKa
>>394
値型は不変だったような
http://ufcpp.net/study/csharp/sp4_variance.html#value
イミディエイトだとs演算子がtrueを返す理由は分かりませんw
何でしょうね
値型は不変だったような
http://ufcpp.net/study/csharp/sp4_variance.html#value
イミディエイトだとs演算子がtrueを返す理由は分かりませんw
何でしょうね
2018/05/07(月) 21:52:56.92ID:iApxgodj0
>>395
レスどうもありがとうございます。その後色々と試してみると、プログラムで
Console.WriteLine((Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184);
を実行すると画面には184と表示され、教えていただいとことと辻褄が合うように思います
また、これまでの結果から考えてウォッチウィンドウで
(Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184
の値を調べれば4649と表示されるのかなと思いきや「メモリを読み取ることができません」と表示されたので、
こちらの挙動はおっしゃる通り分からない(バグ?)と考えるしかなさそうです
ジェネリックでないIEnumerableはLINQが使えないのでこれまで
if (x is IEnumerable<object> enumerableObject)
{
...
}
と書く場面があったのですが、これではIEnumerable<値型>が拾えなさそうなので
if (x is IEnumerable enumerable)
{
var enumerableObject = enumerable as IEnumerable<object> ?? enumerable.Cast<object>();
...
}
とでも書いておこうかと思います(今のプログラムではxがジェネリックでないIEnumerableになることはないのですが)
もっと良い方法があれば教えてもらえると嬉しいです
レスどうもありがとうございます。その後色々と試してみると、プログラムで
Console.WriteLine((Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184);
を実行すると画面には184と表示され、教えていただいとことと辻褄が合うように思います
また、これまでの結果から考えてウォッチウィンドウで
(Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184
の値を調べれば4649と表示されるのかなと思いきや「メモリを読み取ることができません」と表示されたので、
こちらの挙動はおっしゃる通り分からない(バグ?)と考えるしかなさそうです
ジェネリックでないIEnumerableはLINQが使えないのでこれまで
if (x is IEnumerable<object> enumerableObject)
{
...
}
と書く場面があったのですが、これではIEnumerable<値型>が拾えなさそうなので
if (x is IEnumerable enumerable)
{
var enumerableObject = enumerable as IEnumerable<object> ?? enumerable.Cast<object>();
...
}
とでも書いておこうかと思います(今のプログラムではxがジェネリックでないIEnumerableになることはないのですが)
もっと良い方法があれば教えてもらえると嬉しいです
397デフォルトの名無しさん (ワッチョイ faeb-r3te)
2018/05/09(水) 00:08:06.32ID:98vw71AM0 名前空間A と名前空間A.B がある場合に、A.B内からAのクラスを扱うにはどうすればいいのですか?
2018/05/09(水) 01:14:34.94ID:KTiGjU5t0
>>321
Aをusingすればよい
Aをusingすればよい
2018/05/09(水) 01:15:21.71ID:KTiGjU5t0
なんかすげーレス間違えたけど
>>397宛
>>397宛
2018/05/09(水) 01:47:53.29ID:lSrhXmV/0
そもそも名前空間ってどうやって扱うのが正しいの?
401デフォルトの名無しさん (ワッチョイ faeb-a7mP)
2018/05/09(水) 02:09:09.87ID:98vw71AM0 >>399
クラスとは違って、やはりそうやって使うものなのですか
クラスとは違って、やはりそうやって使うものなのですか
2018/05/09(水) 02:25:39.99ID:PD0iDBLsp
完全表記しても良いんだよ?
2018/05/09(水) 17:57:38.22ID:8iDq54Sd0
嫌なら全部同じ名前空間内に入れ込んでしまえ
悩まなくて済むぞ
悩まなくて済むぞ
2018/05/09(水) 18:15:06.67ID:GFIhYWfG0
別に名前空間分ける意味ないよな。
2018/05/09(水) 18:19:36.14ID:nbiQ9nbF0
分業の為の仕組み
2018/05/09(水) 19:48:53.19ID:lSrhXmV/0
2018/05/09(水) 19:49:33.69ID:D7X0frHnM
C#好きだけどnamespaceでネスト一つ深くなるのはあかんわ
2018/05/09(水) 20:08:50.17ID:4zjT3ksId
>>406
全て自分で書くコードならいいんだけどね。サードパーティのライブラリのクラスと衝突する可能性なんていくらでもあるから。
全て自分で書くコードならいいんだけどね。サードパーティのライブラリのクラスと衝突する可能性なんていくらでもあるから。
2018/05/09(水) 20:10:07.14ID:QZYGN7xi0
>>406
書き分けのために命名が歪むのは良くない
NM1.Class/NM2.Class
NM1Class/NM2Class
単にプリフィクス付けるだけなら
名前空間があろうとなかろうとやってる事は同じ
書き分けのために命名が歪むのは良くない
NM1.Class/NM2.Class
NM1Class/NM2Class
単にプリフィクス付けるだけなら
名前空間があろうとなかろうとやってる事は同じ
2018/05/09(水) 20:22:37.87ID:SavMNDDu0
>>406
むしろ同じ名前でも被らないようにする仕組みなんだが...
むしろ同じ名前でも被らないようにする仕組みなんだが...
2018/05/09(水) 20:54:59.54ID:EkWsGx0u0
やたら長い名前付けて重複を避けるのさ。
ダイビングがかったるいって?
最初のusingに書くだけだから大丈夫。
ダイビングがかったるいって?
最初のusingに書くだけだから大丈夫。
2018/05/09(水) 21:00:22.54ID:EHFfoX53a
>>406
自分(同じチーム)で同じ名前の違うクラスが必要になるケースは
少ないが(ないことはない)他人が書いたライブラリで既に使われているのと
同じ名前が必要になるケースなんかいくらでもあるよw
例えばSystem.Drawing.Point以外のPointが使えなかったら困るでしょ
あと、名前空間の目的は名前のバッティングの回避だけじゃない。
むしろ一番の目的は分類と整理でしょ。
名前空間が使えないライブラリは全部のファイルをデスクトップに置くできない人と同じ
適切に命名され適切な階層構造をもった名前空間は索引の機能を持つし、
コードのコンテキストを明確にする。
System.Drawing.PointがPointだけで2Dグラフィックの座標だと分かるのは、
プログラマはそれがSystem.Drawing内の型だと知っているから
自分(同じチーム)で同じ名前の違うクラスが必要になるケースは
少ないが(ないことはない)他人が書いたライブラリで既に使われているのと
同じ名前が必要になるケースなんかいくらでもあるよw
例えばSystem.Drawing.Point以外のPointが使えなかったら困るでしょ
あと、名前空間の目的は名前のバッティングの回避だけじゃない。
むしろ一番の目的は分類と整理でしょ。
名前空間が使えないライブラリは全部のファイルをデスクトップに置くできない人と同じ
適切に命名され適切な階層構造をもった名前空間は索引の機能を持つし、
コードのコンテキストを明確にする。
System.Drawing.PointがPointだけで2Dグラフィックの座標だと分かるのは、
プログラマはそれがSystem.Drawing内の型だと知っているから
2018/05/10(木) 00:36:27.80ID:yXMj8vMdM
using エイリアス ディレクティブ でggr
2018/05/10(木) 01:45:10.65ID:m/SOSTAZ0
>>412
普通にdrawingのcolorとmediaのcolorがバッティングしてるじゃん
それと自作のcolorとこれまた別の奴の作ったcolorがバッティングするだけでもう面倒臭くて死にそうになる
普通にdrawingのcolorとmediaのcolorがバッティングしてるじゃん
それと自作のcolorとこれまた別の奴の作ったcolorがバッティングするだけでもう面倒臭くて死にそうになる
2018/05/10(木) 01:55:25.02ID:m/SOSTAZ0
もっというとwpfでも別のcolor作ってんじゃん
バッティングうぜぇんだよ
こんな簡単なクラスでもう再利用効かないんだから名前空間まで作って管理するなよバカっタレかよ
当のMSからもうまともなことやってねぇっていうかできないんだから
いい加減ファンタジー設計はやめるべき
いや、もうファンタジーじゃないな
メルヘンの領域まで入ってる
バッティングうぜぇんだよ
こんな簡単なクラスでもう再利用効かないんだから名前空間まで作って管理するなよバカっタレかよ
当のMSからもうまともなことやってねぇっていうかできないんだから
いい加減ファンタジー設計はやめるべき
いや、もうファンタジーじゃないな
メルヘンの領域まで入ってる
2018/05/10(木) 02:19:31.02ID:di97fd/ta
>>414-415
何を言ってるのか意味がわからねいよ。
何を言ってるのか意味がわからねいよ。
2018/05/10(木) 02:30:05.52ID:yIfUPK8/0
この程度で死ぬほど面倒臭がってたら、プログラミング自体が向いてないな。
2018/05/10(木) 04:06:02.42ID:R4f/WJPq0
C#8.0のpreviewきましたねえ
https://github.com/dotnet/csharplang/wiki/vNext-Preview
https://github.com/dotnet/csharplang/wiki/vNext-Preview
2018/05/10(木) 07:27:01.34ID:1WB9uyi8M
>>416
バカじゃん
何でwinformにcolorあるのにwpfでも作ったの?
再利用できてないじゃん
役に立たないじゃん
名前空間分けてそれで?
新しいもの作ったら元気一杯に捨ててるじゃん
ってとこに集約する
バカじゃん
何でwinformにcolorあるのにwpfでも作ったの?
再利用できてないじゃん
役に立たないじゃん
名前空間分けてそれで?
新しいもの作ったら元気一杯に捨ててるじゃん
ってとこに集約する
2018/05/10(木) 07:37:29.76ID:CKE2Ak/10
Color構造体とColorsクラスの事かな?
2018/05/10(木) 07:48:33.05ID:M9xdMPFN0
こいついつものアレだろ
触るな
触るな
2018/05/10(木) 08:08:52.60ID:1WB9uyi8M
>>421
反論できないならcolorクラスはもう作らせないぞ
反論できないならcolorクラスはもう作らせないぞ
2018/05/10(木) 09:17:58.68ID:l4uhHAvqa
全く話題になってないけどC#7.3も正式リリースされたぞ
念願の where T : Enum
念願の where T : Enum
2018/05/10(木) 09:36:24.91ID:EV77m/Hv0
2018/05/10(木) 09:51:09.75ID:2wmh3oy2M
2018/05/10(木) 10:30:56.59ID:Yjx9MaDJp
つか、同じ名前で違う用途に割り当てる方が難儀だろ普通は名前変える。
2018/05/10(木) 12:33:21.16ID:kan/O/6Ed
>>426
だから世の中にどんだけクラスが存在すると思ってんの?
だから世の中にどんだけクラスが存在すると思ってんの?
2018/05/10(木) 12:51:46.30ID:YLAKf1v1a
普通の初心者だったらSystem.IOのPathとWPFのPathが競合することが気になると思う
2018/05/10(木) 12:53:40.23ID:YLAKf1v1a
イギリスだったらつづりはcolour
2018/05/10(木) 19:43:14.60ID:M5rAF93d0
コロワァ
2018/05/10(木) 20:53:17.15ID:Yjx9MaDJp
>>427
自前クラスを組み込むクラスの組み合わせだけ考えりゃよかんべよ。
自前クラスを組み込むクラスの組み合わせだけ考えりゃよかんべよ。
2018/05/10(木) 22:10:03.44ID:R4f/WJPq0
>>431
日本語で
日本語で
2018/05/11(金) 00:30:31.25ID:F4aYSsq30
>>424
WPF「WinFormなんて爺さんのクラスなんて使えるかよ」
WPF「WinFormなんて爺さんのクラスなんて使えるかよ」
2018/05/11(金) 00:58:40.04ID:TW3IXpUfa
>>433
WinFormsが定年間近の爺さんだとしたらWPFは35歳無職童貞だな
WinFormsが定年間近の爺さんだとしたらWPFは35歳無職童貞だな
2018/05/11(金) 13:52:55.21ID:sq5ITweXM
drawimageって自分でクリッピングしないとはみ出たら遅い?
2018/05/11(金) 14:13:09.38ID:NZxgVNkdp
formとwpfで、似て非なる部品ってどうにかならんの?
ネットで使い方調べる時、紛らわしいんだよな。
ネットで使い方調べる時、紛らわしいんだよな。
2018/05/11(金) 14:36:21.57ID:SfoScckv0
>>433
UWP「そろそろWPFさんにはご退場願おうか」
UWP「そろそろWPFさんにはご退場願おうか」
2018/05/11(金) 15:23:07.83ID:oUtXC/5od
>>437
メーカー「そろそろUWP用のコントロールつくっか?」
メーカー「そろそろUWP用のコントロールつくっか?」
2018/05/11(金) 16:30:16.71ID:DPTi05MZM
親フォームからnewした子フォームは親とは非同期ですか?それとも同期処理となりますか?
2018/05/11(金) 16:50:42.60ID:Kz4/xaqBM
正しい言葉の使い方では非同期だけど、たぶん君が言ってるのは同期か非同期かではなくて同じスレッドかどうかだろう
それでいえば同じスレッド
それでいえば同じスレッド
2018/05/11(金) 17:48:49.51ID:n/c4W3DX0
つか、聞きたいのは、モーダルかモードレスかじゃね?
2018/05/11(金) 17:56:35.27ID:+Mrz0iyE0
ここで質問するときは自分が何をやりたいかを書いてもらった方がいいな
>>439
>>441の意味なら
方法 : Windows フォームをモーダルおよびモードレスで表示する
https://msdn.microsoft.com/ja-jp/library/39wcs2dh(v=vs.110).aspx
>>439
>>441の意味なら
方法 : Windows フォームをモーダルおよびモードレスで表示する
https://msdn.microsoft.com/ja-jp/library/39wcs2dh(v=vs.110).aspx
2018/05/11(金) 19:52:53.18ID:7YPYpwobM
444デフォルトの名無しさん (ワッチョイ 4b9f-ZOQu)
2018/05/11(金) 20:39:18.87ID:A7KRRugp0 ポータブルアプリの設定ファイルを扱うなら何がスタンダードですか?
XmlSerializer使ってxmlファイルにするか
Win32API経由でレガシーなiniファイルにするか。
やっぱ前者ですかね?
XmlSerializer使ってxmlファイルにするか
Win32API経由でレガシーなiniファイルにするか。
やっぱ前者ですかね?
2018/05/11(金) 20:42:59.37ID:H5+wAeJBM
>>444
今時はJSON
今時はJSON
2018/05/11(金) 21:30:53.62ID:wYle0Ioy0
>>444
セオリー通りappsettings.jsonやろ普通
セオリー通りappsettings.jsonやろ普通
2018/05/11(金) 21:55:14.15ID:F4aYSsq30
2018/05/11(金) 21:57:27.82ID:wYle0Ioy0
>>447
キチガイ
キチガイ
2018/05/11(金) 22:04:41.45ID:F4aYSsq30
2018/05/11(金) 22:08:27.43ID:KxM4SNOx0
yamlとかtomlもまぁアリだな
jsonはtailing commaがちょっと煩い
jsonはtailing commaがちょっと煩い
2018/05/11(金) 22:08:43.32ID:wYle0Ioy0
ごめんキチガイに触ってしまった
2018/05/11(金) 22:09:55.64ID:o64e7/8Ad
>>450
C#ならappsettings.jsonで良くね?IOptionとの相性いいし
C#ならappsettings.jsonで良くね?IOptionとの相性いいし
2018/05/11(金) 22:11:29.14ID:KxM4SNOx0
454444 (ワッチョイ 4b9f-ZOQu)
2018/05/11(金) 23:25:00.79ID:A7KRRugp0 なるほど、今時はJSONですか。
ただ、少し調べて見たところweb系の構成ファイルとして使う?みたいで自分の思ってるのとは違うのかなと感じました。
後出しになってしまって申し訳ないんですが、自分のイメージしてるのはFormアプリで例えば「最前面に表示する/しない」だとか「昇順/降順で並べる」みたいな、チェックボックスやラジオボタンの選択内容を起動時に読み込み、終了時に書き込みする想定です。
appsettings.jsonは読み込みしかなさそうだったのですが、書き込みってありますか?自分でjson形式にコンバートしてベタに書き込みしろってことですかね?
ただ、少し調べて見たところweb系の構成ファイルとして使う?みたいで自分の思ってるのとは違うのかなと感じました。
後出しになってしまって申し訳ないんですが、自分のイメージしてるのはFormアプリで例えば「最前面に表示する/しない」だとか「昇順/降順で並べる」みたいな、チェックボックスやラジオボタンの選択内容を起動時に読み込み、終了時に書き込みする想定です。
appsettings.jsonは読み込みしかなさそうだったのですが、書き込みってありますか?自分でjson形式にコンバートしてベタに書き込みしろってことですかね?
2018/05/11(金) 23:28:06.24ID:gh5GwZAv0
>>454
その用途ならアプリ外からエディタで編集させることなんて無いだろうから、正直なんでも良いと思う
その用途ならアプリ外からエディタで編集させることなんて無いだろうから、正直なんでも良いと思う
2018/05/11(金) 23:31:25.65ID:fVy+Ps+50
jsonならNewtonSoftがあるけどyamlシリアライザだとどれがデファクトなんだ?
2018/05/11(金) 23:31:53.13ID:fVy+Ps+50
jsonならNewtonSoftがあるけどyamlシリアライザだとどれがデファクトなんだ?
2018/05/11(金) 23:33:44.23ID:KxM4SNOx0
2018/05/12(土) 00:31:10.54ID:wbfjgNFba
前も書いたけど騙されたらダメwww
.NETには標準のシリアライザがいくつも存在するんだから、特に理由がないかぎり
あえて外様を使うとか頭の悪い中学生じみてる
.NETには標準のシリアライザがいくつも存在するんだから、特に理由がないかぎり
あえて外様を使うとか頭の悪い中学生じみてる
460デフォルトの名無しさん (ワッチョイ cbe8-k37M)
2018/05/12(土) 03:56:46.76ID:ek+Myn8j0 var exts = {".jpeg", ".jpg", ".png", ".gif"};
var f = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories)
.Where(c => exts.All(extension => !c.EndsWith(extension)))
.ToArray();
extsの拡張子以外のファイルを抽出したいんだけど
大文字小文字区別せずに拡張子だけを比較する方法ないですか?
もっと効率いい方法ある気が・・・
var f = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories)
.Where(c => exts.All(extension => !c.EndsWith(extension)))
.ToArray();
extsの拡張子以外のファイルを抽出したいんだけど
大文字小文字区別せずに拡張子だけを比較する方法ないですか?
もっと効率いい方法ある気が・・・
461デフォルトの名無しさん (ワッチョイ cbe8-k37M)
2018/05/12(土) 04:18:13.81ID:ek+Myn8j0 !c.ToLower().EndsWith(extension)
で対応します
で対応します
462デフォルトの名無しさん (ワッチョイ 039d-uwJI)
2018/05/12(土) 05:18:29.02ID:V3QYZkJA0 >.NETには標準のシリアライザがいくつも存在するんだから、特に理由がないかぎり
>あえて外様を使うとか頭の悪い中学生じみてる
いくつもあるの? どんなのがあるのか三つくらい教えてください。
ビルドするごとに消えるのでは使いにくいというか何度もビルドするのは普通だとおもうので
それでは使い物にならないので、ビルドしても消えないものがいい。
>あえて外様を使うとか頭の悪い中学生じみてる
いくつもあるの? どんなのがあるのか三つくらい教えてください。
ビルドするごとに消えるのでは使いにくいというか何度もビルドするのは普通だとおもうので
それでは使い物にならないので、ビルドしても消えないものがいい。
2018/05/12(土) 06:12:38.61ID:Qc7Beiuka
>>459
今時その認識は正直ヤバい
今の.NETの標準のシリアライザはJSON.NET
Core系では完全に標準シリアライザとしてフレームワークで使われてるし、MSDNにもJSONならJSON.NET使えと書いてる
今時その認識は正直ヤバい
今の.NETの標準のシリアライザはJSON.NET
Core系では完全に標準シリアライザとしてフレームワークで使われてるし、MSDNにもJSONならJSON.NET使えと書いてる
2018/05/12(土) 06:16:13.33ID:9vavBtpKM
2018/05/12(土) 06:20:19.72ID:9vavBtpKM
>>463
DataContractJsonSerializer でなくJson.net のソースは?
DataContractJsonSerializer でなくJson.net のソースは?
2018/05/12(土) 06:29:12.76ID:hwxaPbIq0
設定ファイルは、csv, yaml, json。
Java系のant, maven などは、XML。
Mac系は、property file
chef, vagrant では、Ruby。
Gradle では、Groovy
Haxe のserializer は、数個のプログラミング言語に渡って機能するし、
json, xml みたいに型情報が無くなったりしない
もちろん、Ruby, Groovy も、
プログラミング言語自体が設定ファイルだから、そのまま使える
Java系のant, maven などは、XML。
Mac系は、property file
chef, vagrant では、Ruby。
Gradle では、Groovy
Haxe のserializer は、数個のプログラミング言語に渡って機能するし、
json, xml みたいに型情報が無くなったりしない
もちろん、Ruby, Groovy も、
プログラミング言語自体が設定ファイルだから、そのまま使える
2018/05/12(土) 07:13:07.72ID:Qc7Beiuka
>>465
https://msdn.microsoft.com/ja-jp/library/system.web.script.serialization.javascriptserializer(v=vs.110).aspx
なんか勘違いしてるみたいだけど、DataContract系は通信に使うもので
ファイルの読み書きに使うことを想定されているもんじゃないよ
https://msdn.microsoft.com/ja-jp/library/system.web.script.serialization.javascriptserializer(v=vs.110).aspx
なんか勘違いしてるみたいだけど、DataContract系は通信に使うもので
ファイルの読み書きに使うことを想定されているもんじゃないよ
2018/05/12(土) 07:21:14.10ID:UP+Hygq+M
DataContractSerializerは絶対にファイルに書いちゃダメってわけではないけど、データのスキーマがあらかじめ決まってる場合には使えない
あくまで書く側と読む側とで解釈が共通でありさえすれればよくて、その中身を人間は気にしないよ、ってときに使う
あくまで書く側と読む側とで解釈が共通でありさえすれればよくて、その中身を人間は気にしないよ、ってときに使う
469444 (ワッチョイ 4b9f-ZOQu)
2018/05/12(土) 07:26:10.70ID:4i84e4IV0 調べが足りずすみません。
NewtonsoftのJSON.NETというのを使えばいいみたいですね。
.NET標準のXmlSerializerと同じような感じの使い方ですね。
ちなみに、XMLはやめた方が良いと意見ありましたが、
どういった理由からでしょうか?
NewtonsoftのJSON.NETというのを使えばいいみたいですね。
.NET標準のXmlSerializerと同じような感じの使い方ですね。
ちなみに、XMLはやめた方が良いと意見ありましたが、
どういった理由からでしょうか?
2018/05/12(土) 07:35:16.58ID:Qc7Beiuka
XMLは全世界共通の汎用データ交換フォーマットであることが採用する唯一の理由であり、
JSONが主流になった時点で既に存在意義が失われているから
JSONが主流になった時点で既に存在意義が失われているから
2018/05/12(土) 07:45:11.57ID:hwxaPbIq0
XML は、JSON よりも可読性が高いから、人が見る・書く設定ファイル。
例えば、アプリのフォームのデザインの設定ファイルに使う
人が見ない、単にコンピューター間のデータの受け渡しには、JSON
XMLを使うと、ややこしい
例えば、アプリのフォームのデザインの設定ファイルに使う
人が見ない、単にコンピューター間のデータの受け渡しには、JSON
XMLを使うと、ややこしい
2018/05/12(土) 07:52:19.68ID:yKmgHprg0
473デフォルトの名無しさん (ワッチョイ 039d-uwJI)
2018/05/12(土) 08:08:53.44ID:V3QYZkJA0 XMLは可読性がわるい。つまり直観が効かない。機械向きで非人間的だから設定ファイルには不向き。
たしかに寄ってたかってよく考えてあるのは解る。それには感心するが、寄ってたかって考えすぎると
たいていは失敗する。その代表的な例としてはXMLもっとも良い例のひとつだろう。つまり駄作だなとおもう。
たしかに寄ってたかってよく考えてあるのは解る。それには感心するが、寄ってたかって考えすぎると
たいていは失敗する。その代表的な例としてはXMLもっとも良い例のひとつだろう。つまり駄作だなとおもう。
2018/05/12(土) 08:28:20.91ID:YrlOJuyZ0
jsonはいい加減コメントの使用を本家が認めるべきだわな
475デフォルトの名無しさん (ワッチョイ 8d03-XovT)
2018/05/12(土) 08:45:40.67ID:tydT0Seq0 >>471
XMLが読みやすいってwサヴァン症候群なんおまえ?w
XMLが読みやすいってwサヴァン症候群なんおまえ?w
2018/05/12(土) 08:49:00.82ID:KCIDKf2Q0
コメントがあると独自スキーマを作り始めるからわざと外したと言っているけど病的だわ
これだから実務屋でない奴は
これだから実務屋でない奴は
2018/05/12(土) 08:50:11.44ID:KCIDKf2Q0
そいつC#スレとPythonスレでよく見かけるが
サヴァンかどうかはともかく発達障害は煩ってるぞ
サヴァンかどうかはともかく発達障害は煩ってるぞ
2018/05/12(土) 08:52:02.93ID:Y49XSW9o0
>>460
EndsWithの第二引数は使えない?
EndsWithの第二引数は使えない?
2018/05/12(土) 08:57:27.63ID:vhGL8v7ea
>>476
悪名高いJSONライセンス(Good, not Evil)も作ってるからなぁ
悪名高いJSONライセンス(Good, not Evil)も作ってるからなぁ
2018/05/12(土) 09:22:58.61ID:9vavBtpKM
>>467
THX
THX
2018/05/12(土) 09:36:45.26ID:15xgRckc0
2018/05/12(土) 09:37:39.20ID:btyZbm2S0
XMLのタグの対応って言うけど
JSONも例えば}が数階層のどっかで一つ消えたら人間に対応できなくなるよね
JSONも例えば}が数階層のどっかで一つ消えたら人間に対応できなくなるよね
2018/05/12(土) 09:45:59.03ID:iloBjJ0sM
データの規模が大きくなったらXMLのほうが断然有利
JSONとXHTMLを等価変換するスクリプトを書いてJSONだけでウェブサイトを構築する実験を社内でやった事があるがJSONのスコアは酷いものだった
JSONはネストが深くなると使い物にならん
JSONとXHTMLを等価変換するスクリプトを書いてJSONだけでウェブサイトを構築する実験を社内でやった事があるがJSONのスコアは酷いものだった
JSONはネストが深くなると使い物にならん
2018/05/12(土) 09:49:55.91ID:15xgRckc0
>>483
どんな点で有利なのかすら書けないクズ
どんな点で有利なのかすら書けないクズ
2018/05/12(土) 09:51:04.77ID:56F0arFd0
何のデータも示さずjsonは使い物にならないと言われてもねー
2018/05/12(土) 09:56:29.74ID:iloBjJ0sM
データは自社の資産だから常識的に勝手には公表できない
実験方法は簡単にだけど示したのだからデータが欲しければ実験して検証すればいい
逆にJSONが優れていると言うなら
根拠無しではなくデータなり検証方法を示してほしいね
実験方法は簡単にだけど示したのだからデータが欲しければ実験して検証すればいい
逆にJSONが優れていると言うなら
根拠無しではなくデータなり検証方法を示してほしいね
2018/05/12(土) 09:58:57.02ID:yKmgHprg0
2018/05/12(土) 10:00:05.00ID:vhGL8v7ea
https://www.infoq.com/news/2013/08/xml-json-performance
同じくらいのパフォーマンスというならまぁ納得出来る
クソみたいなパーサ使わにゃネスト深さでパフォーマンスが悪化するわけねーだろ
同じくらいのパフォーマンスというならまぁ納得出来る
クソみたいなパーサ使わにゃネスト深さでパフォーマンスが悪化するわけねーだろ
2018/05/12(土) 10:00:18.08ID:56F0arFd0
2018/05/12(土) 10:00:46.67ID:My8LWy2ka
XHTMLって死んだ技術だと思うが
10年ぐらい前の世界かな?
xmlが見やすいって人は初めて見た
10年ぐらい前の世界かな?
xmlが見やすいって人は初めて見た
2018/05/12(土) 10:08:59.85ID:iloBjJ0sM
2018/05/12(土) 10:10:42.69ID:vhGL8v7ea
再現するJSONとXMLを一個ずつ用意すれば終わるのに自分以外の人間が必要か?
プログラミングやったことありますか?
プログラミングやったことありますか?
2018/05/12(土) 10:19:11.86ID:iloBjJ0sM
>>492
あんたは論外
パフォーマンスの話なんて誰もしてない
今はみんな生産性、可読性、保守性の話をしてるんだよ
それを測るためにJSONとXHTMLを等価変換するツールを作った
グループAの人達にはJSONでタグ打ちさせてそのJSONをツールでXHTMLに変換した
グループBの人達にはXHTMLで直接タグ打ちさせた
完成するまでの時間や完成したXHTMLのバグ密度など様々なメトリクスを計測したら直接タグ打ちしたグループBのほうがスコアが高かった
グループAとグループBのスコア差はネスト数が深いほど大きくなった
そういう話な
パフォーマンス比較なんてくだらん話は他所でやってくれ
あんたは論外
パフォーマンスの話なんて誰もしてない
今はみんな生産性、可読性、保守性の話をしてるんだよ
それを測るためにJSONとXHTMLを等価変換するツールを作った
グループAの人達にはJSONでタグ打ちさせてそのJSONをツールでXHTMLに変換した
グループBの人達にはXHTMLで直接タグ打ちさせた
完成するまでの時間や完成したXHTMLのバグ密度など様々なメトリクスを計測したら直接タグ打ちしたグループBのほうがスコアが高かった
グループAとグループBのスコア差はネスト数が深いほど大きくなった
そういう話な
パフォーマンス比較なんてくだらん話は他所でやってくれ
2018/05/12(土) 10:21:37.68ID:My8LWy2ka
>>493
人間のやることじゃないことを人間にさせて比較する意味がよくわからない
人間のやることじゃないことを人間にさせて比較する意味がよくわからない
2018/05/12(土) 10:22:19.67ID:7mnYG5Gia
2018/05/12(土) 10:22:47.54ID:vhGL8v7ea
>>493
人間がやる意味が分からん
人間がやる意味が分からん
2018/05/12(土) 10:25:26.75ID:FqtFYlf30
流石にこれは擁護できんわw
2018/05/12(土) 10:25:55.10ID:My8LWy2ka
テキストデータをバイナリエディタで書かせるような意味不明な実験を
やって悦にいる会社に勤めてかわいそうとしか思えない
上が暗愚だと下が苦労する
やって悦にいる会社に勤めてかわいそうとしか思えない
上が暗愚だと下が苦労する
2018/05/12(土) 10:26:11.54ID:iloBjJ0sM
馬鹿しかいないのか
人間がやる意味がないとか言ってる連中は実験の趣旨を全く理解してない
だから思考停止してノータイムでボタン押すのやめろって言ってるんだよ
ほんと馬鹿の相手するの疲れるな
人間がやる意味がないとか言ってる連中は実験の趣旨を全く理解してない
だから思考停止してノータイムでボタン押すのやめろって言ってるんだよ
ほんと馬鹿の相手するの疲れるな
2018/05/12(土) 10:28:00.46ID:vhGL8v7ea
こいつはなかなか面白いな, 素でこのコミュ力ならなかなかの逸材だし作っているならよく理解している
2018/05/12(土) 10:30:21.85ID:My8LWy2ka
2018/05/12(土) 10:31:58.09ID:My8LWy2ka
いや面白いな
どこかの技術系のサイトでネタにしてくれないかな
どこかの技術系のサイトでネタにしてくれないかな
2018/05/12(土) 10:32:26.46ID:yKmgHprg0
結局、手動で設定するファイルであるなら
jsonもxmlもゴミだろ?
なんの話してんの?
jsonもxmlもゴミだろ?
なんの話してんの?
2018/05/12(土) 10:36:00.72ID:My8LWy2ka
2018/05/12(土) 10:37:02.56ID:vhGL8v7ea
深くて3階層程度でそんなに行数多くないならJSONは苦痛は少ないかな
2018/05/12(土) 10:37:30.03ID:yKmgHprg0
2018/05/12(土) 10:38:25.47ID:15xgRckc0
>>506
それが無意味に思えるなんて幸せなやつだな
それが無意味に思えるなんて幸せなやつだな
2018/05/12(土) 10:39:01.19ID:yKmgHprg0
>>507
だってjsonもxmlもいらねーもんよ
だってjsonもxmlもいらねーもんよ
2018/05/12(土) 10:39:07.44ID:PQYWGVmCd
>>506
xlsとかwwwバージョン管理システム使ったことすらなさそうだな
xlsとかwwwバージョン管理システム使ったことすらなさそうだな
2018/05/12(土) 10:39:44.13ID:vhGL8v7ea
残念だけどXMLはクソオブクソだけどXLSとかCSVはそれをはるかに上回るクソなの
2018/05/12(土) 10:39:58.36ID:yKmgHprg0
>>509
csvでもいいよ
csvでもいいよ
2018/05/12(土) 10:40:08.84ID:15xgRckc0
>>508
C#やめた方がいいよ
C#やめた方がいいよ
2018/05/12(土) 10:40:21.22ID:yKmgHprg0
>>510
理由は?
理由は?
2018/05/12(土) 10:40:23.88ID:NuxM0Gnx0
せめてxlsxにしてくれ
2018/05/12(土) 10:41:06.38ID:PQYWGVmCd
>>511
反論する気すら起きんわ
反論する気すら起きんわ
2018/05/12(土) 10:41:21.27ID:yKmgHprg0
db(Sqlite)もあるぞ
2018/05/12(土) 10:41:32.86ID:wBO8DWf8M
>>493の実験は「XHTMLのデータはJSONで記述するには適さない」ということを示しているだけだな
そりゃXHTMLのスキーマはXMLで表現しやすいように設計されてるんだから、
JSONだと属性とコンテンツの区別がなかったりして記述しづらいのは当たり前だ
JSONにはJSONに適したスキーマ設計がある
そりゃXHTMLのスキーマはXMLで表現しやすいように設計されてるんだから、
JSONだと属性とコンテンツの区別がなかったりして記述しづらいのは当たり前だ
JSONにはJSONに適したスキーマ設計がある
2018/05/12(土) 10:41:52.87ID:15xgRckc0
やっぱGitすら使えなさそうだな
2018/05/12(土) 10:43:33.27ID:yKmgHprg0
>>518
gitでcsvの差分見れないの?
gitでcsvの差分見れないの?
2018/05/12(土) 10:44:43.29ID:15xgRckc0
>>519
Gitでsqliteの差分見るのかい?
Gitでsqliteの差分見るのかい?
2018/05/12(土) 10:45:36.20ID:vhGL8v7ea
2018/05/12(土) 10:45:58.87ID:yKmgHprg0
2018/05/12(土) 10:46:25.99ID:iloBjJ0sM
>>504
VSCodeのセッティングはネストが浅くて比較的読みやすいし、VSCodeによるコード生成がうまく機能してるからね
VSCodeのセッティングはネストが浅くて比較的読みやすいし、VSCodeによるコード生成がうまく機能してるからね
2018/05/12(土) 10:47:06.15ID:15xgRckc0
>>522
もはや何を言っているのかわからん
もはや何を言っているのかわからん
2018/05/12(土) 10:47:34.43ID:yKmgHprg0
>>521
ビジネスでExcel入ってない環境とかあるの?
ビジネスでExcel入ってない環境とかあるの?
2018/05/12(土) 10:47:44.90ID:kT5GzpcRa
エクセルからマスターや設定をインポートするようになってるシステムは壊しそうで怖いわ
うっかりレイアウトがズレてて正しくデータが取れなくなるとかよくある
バージョン管理の問題にも関連するけど、再現性が乏しいんだよエクセルは
うっかりレイアウトがズレてて正しくデータが取れなくなるとかよくある
バージョン管理の問題にも関連するけど、再現性が乏しいんだよエクセルは
2018/05/12(土) 10:47:54.11ID:WIOr5zBad
>>522
おれsqliteのバイナリをテキストエディタで書き換える能力ないのよ
おれsqliteのバイナリをテキストエディタで書き換える能力ないのよ
2018/05/12(土) 10:48:23.30ID:yKmgHprg0
>>524
DB同士のデータの比較したことねーの?
DB同士のデータの比較したことねーの?
2018/05/12(土) 10:48:28.96ID:My8LWy2ka
>>517
そこの会社の内部の抗争があるんだと思う
いまどきxhtmlを使ってる派閥がいて
そいつらが不利になったので意味不明なテストでxhtmlすげーをやって
何も考えないやつがそれに賛同したと
エジソンが高圧送電は危険だと言って動物を殺す実験をしたようなもの
そこの会社の内部の抗争があるんだと思う
いまどきxhtmlを使ってる派閥がいて
そいつらが不利になったので意味不明なテストでxhtmlすげーをやって
何も考えないやつがそれに賛同したと
エジソンが高圧送電は危険だと言って動物を殺す実験をしたようなもの
2018/05/12(土) 10:48:32.15ID:15xgRckc0
>>525
いくらでもあるよ
いくらでもあるよ
2018/05/12(土) 10:48:32.71ID:vhGL8v7ea
>>525
開発は仮想のLinux上とか普通にあるから
開発は仮想のLinux上とか普通にあるから
2018/05/12(土) 10:49:49.02ID:15xgRckc0
>>528
json vs xmlの比較とは全く異なる次元のものを持ち込んで比較しようとするクズ
json vs xmlの比較とは全く異なる次元のものを持ち込んで比較しようとするクズ
2018/05/12(土) 10:50:39.51ID:yKmgHprg0
>>531
openoffice入れろよ
openoffice入れろよ
2018/05/12(土) 10:51:17.57ID:15xgRckc0
>>533
こいつdotnet newすら打ったことなさそうだな
こいつdotnet newすら打ったことなさそうだな
2018/05/12(土) 10:51:39.21ID:yKmgHprg0
2018/05/12(土) 10:51:42.38ID:vhGL8v7ea
>>533
開発用システムでXLS読むために入れるとか本末転倒
開発用システムでXLS読むために入れるとか本末転倒
2018/05/12(土) 10:52:47.54ID:yKmgHprg0
2018/05/12(土) 10:53:32.62ID:15xgRckc0
>>535
専用ツールがないと編集できないものなんてイラネ
専用ツールがないと編集できないものなんてイラネ
2018/05/12(土) 10:53:45.26ID:iloBjJ0sM
>>506
Excelの場合はそもそもツリーデータ構造を表現するためのスタンダードなフォーマットが無いので比較する以前の段階
まずはツリー形式のデータ構造を表現するためのフォーマットのデファクトスタンダードを業界全体で決めてくれ
比較はその後に回していいんじゃないかな
Excelの場合はそもそもツリーデータ構造を表現するためのスタンダードなフォーマットが無いので比較する以前の段階
まずはツリー形式のデータ構造を表現するためのフォーマットのデファクトスタンダードを業界全体で決めてくれ
比較はその後に回していいんじゃないかな
2018/05/12(土) 10:54:09.51ID:15xgRckc0
>>537
Linux使ったことないやろ
Linux使ったことないやろ
2018/05/12(土) 10:55:07.24ID:NuxM0Gnx0
vscodeのsettings.jsonとか見せたら発狂しそう
2018/05/12(土) 10:55:50.61ID:vhGL8v7ea
>>537
客は会社のシステム部門なんで別にExcel喜ばれないですむしろ殴られそうです
客は会社のシステム部門なんで別にExcel喜ばれないですむしろ殴られそうです
2018/05/12(土) 11:00:04.65ID:vhGL8v7ea
あとXLSXはともかくXLSをC#から弄ったことないんだけどExcelなしで読めるの?
COM使って読むとか言わないよね?
COM使って読むとか言わないよね?
2018/05/12(土) 11:08:10.26ID:iloBjJ0sM
>>517
やっとちゃんと読んでレスしてる人が来た
確かにもともとXMLをベースに考案されたデータ構造なのでXMLに有利と言えるかもしれない
しかしそれを認めると議論の発端である「jsonはxmlより優れている」という命題を「対象次第ではxmlのほうが有利である」という命題で最初から否定することになってしまう
本当に「jsonはxmlより優れている」なら対象がXHTMLだろうとなんであろうともjsonのスコアが高くなっていなければおかしい
やっとちゃんと読んでレスしてる人が来た
確かにもともとXMLをベースに考案されたデータ構造なのでXMLに有利と言えるかもしれない
しかしそれを認めると議論の発端である「jsonはxmlより優れている」という命題を「対象次第ではxmlのほうが有利である」という命題で最初から否定することになってしまう
本当に「jsonはxmlより優れている」なら対象がXHTMLだろうとなんであろうともjsonのスコアが高くなっていなければおかしい
2018/05/12(土) 11:23:55.86ID:P5sx5scC0
なんでもかんでもExcelでやりたいVBAer()さんはVBAスレにおかえりください
事務員さんの常識はプログラマには通用しません
事務員さんの常識はプログラマには通用しません
2018/05/12(土) 11:30:46.95ID:15xgRckc0
2018/05/12(土) 11:33:52.89ID:5EDA9IkjM
>>465
横から失礼。マイクロソフトの人もそう言ってるよ
横から失礼。マイクロソフトの人もそう言ってるよ
2018/05/12(土) 11:34:13.72ID:FqtFYlf30
>>543
OLEDB使えばExcelインストール無しでも読めるで
OLEDB使えばExcelインストール無しでも読めるで
2018/05/12(土) 11:34:57.85ID:5EDA9IkjM
>>469
一言でいえば古い。
一言でいえば古い。
2018/05/12(土) 11:36:20.02ID:FqtFYlf30
この手の議論はUI入力とデータ保持を同一のものとして考えちゃうから平行線だわな
2018/05/12(土) 11:40:59.55ID:My8LWy2ka
2018/05/12(土) 12:09:17.30ID:iloBjJ0sM
>>551
残念だけど君には話が通じないね
残念だけど君には話が通じないね
553デフォルトの名無しさん (ワッチョイ cbe8-k37M)
2018/05/12(土) 12:44:54.52ID:ek+Myn8j0554デフォルトの名無しさん (ワッチョイ 4b9f-BsV1)
2018/05/12(土) 12:51:51.95ID:XqIGE8bt02018/05/12(土) 13:25:14.58ID:UZR1Ryt2a
>>550
それ以前の話でしょw
設定データをユーザーが編集したいなんてかなり特殊な前提でありかつ質問者も
そんな要件を一言も上げてないのにアホかと、
.NET標準のシリアライザではなくあえて外様を使う理由はと聞いて、返って来た明確な答えは
結局「そっちの方が目新しいから」だけ。
中学生じみてるよと言ってるそばからこれだ。
プログラマ板みたいな話になっちゃうけど、本当今じゃプログラマって知能指数が低い奴が
やる仕事になってることを実感するよ
それ以前の話でしょw
設定データをユーザーが編集したいなんてかなり特殊な前提でありかつ質問者も
そんな要件を一言も上げてないのにアホかと、
.NET標準のシリアライザではなくあえて外様を使う理由はと聞いて、返って来た明確な答えは
結局「そっちの方が目新しいから」だけ。
中学生じみてるよと言ってるそばからこれだ。
プログラマ板みたいな話になっちゃうけど、本当今じゃプログラマって知能指数が低い奴が
やる仕事になってることを実感するよ
2018/05/12(土) 13:26:52.97ID:My8LWy2ka
json,.netを使うのは早くて使いやすいからだと思う
使いやすいと書くとまた難癖つけられそうだけどw
使いやすいと書くとまた難癖つけられそうだけどw
2018/05/12(土) 14:59:39.27ID:d5Fp40ymM
>>556
どういう観点で見たときの使いやすいなのか説明が無いよね?
どういう観点で見たときの使いやすいなのか説明が無いよね?
2018/05/12(土) 15:01:04.84ID:15xgRckc0
>>555
Microsoftの基本的なライブラリもJSON.netに依存してる
https://www.nuget.org/packages/Microsoft.Extensions.DependencyModel/
Microsoftの基本的なライブラリもJSON.netに依存してる
https://www.nuget.org/packages/Microsoft.Extensions.DependencyModel/
2018/05/12(土) 15:05:00.44ID:AEXJFe1f0
自分が json を使うとしたら、
・周りが使ってるから
・xml と比較して見た目が好み
って程度の理由だなあ。
どっちが優れてるかの比較なんてそれ自体がズレてるような。
・周りが使ってるから
・xml と比較して見た目が好み
って程度の理由だなあ。
どっちが優れてるかの比較なんてそれ自体がズレてるような。
2018/05/12(土) 15:35:45.32ID:KCIDKf2Q0
暇そうだな
同じヒマでも俺は運動してたけど
同じヒマでも俺は運動してたけど
2018/05/12(土) 15:49:43.76ID:F4kLnVK3p
シリアライズ出来れば何でもいいよ。
562デフォルトの名無しさん (ワッチョイ cbe8-k37M)
2018/05/12(土) 16:47:10.12ID:ek+Myn8j0 結局Windowsのフォームアプリの設定ファイルは何が適してるんだよ
jsonでもxmlでも大差ないよ好きな方どうぞって結論でいいの?
jsonでもxmlでも大差ないよ好きな方どうぞって結論でいいの?
2018/05/12(土) 16:54:33.55ID:gqffA4Jja
>>562
そもそも今時フォームアプリなんか採用する時点で全力で時代に背を向けてるんだからどうでもいいよ
そもそも今時フォームアプリなんか採用する時点で全力で時代に背を向けてるんだからどうでもいいよ
2018/05/12(土) 17:04:25.00ID:I6pHI0GBa
2018/05/12(土) 17:37:38.32ID:AiYRYzWlM
Settings使え+1
2018/05/12(土) 17:53:54.95ID:5EDA9IkjM
>>562
configファイルにjson形式で書き込む
configファイルにjson形式で書き込む
2018/05/12(土) 17:58:28.95ID:UZR1Ryt2a
>>564-565
質問者は「ポータブルアプリの設定ファイル」と言ってる。
ポータブルアプリがUSBメモリに入れて持ち歩くような物のことを言ってるなら、
Settingsは明らかに不適切
あと、個人的にあんまりアプリケーション設定使ったことないんで勘違いしてるかもしれんが、
これって結構制限も多いしいろいろ面倒だよね
質問者は「ポータブルアプリの設定ファイル」と言ってる。
ポータブルアプリがUSBメモリに入れて持ち歩くような物のことを言ってるなら、
Settingsは明らかに不適切
あと、個人的にあんまりアプリケーション設定使ったことないんで勘違いしてるかもしれんが、
これって結構制限も多いしいろいろ面倒だよね
568444 (ワッチョイ 4b9f-ZOQu)
2018/05/12(土) 21:13:35.08ID:4i84e4IV0 質問者ですが、こんなに荒れてしまうとは、、、申し訳ない。
おっしゃるように通常のWindowsフォームアプリならSettingsがデザイナで設定できるし楽なんですが、
ファイルの格納先がローカル(Roamingだったかな?)になるのでUSBメモリなどに持ち運んで使うポータブルアプリとしては採用できないというところでの質問でした。
特に設定ファイルの可読性を求めないようであれば、
形式としては古いが追加ライブラリ不要のXMLか、
スタンダードな形式だが別途追加ライブラリ必要なJSONか、
好きな方を選べって感じですかね。。
おっしゃるように通常のWindowsフォームアプリならSettingsがデザイナで設定できるし楽なんですが、
ファイルの格納先がローカル(Roamingだったかな?)になるのでUSBメモリなどに持ち運んで使うポータブルアプリとしては採用できないというところでの質問でした。
特に設定ファイルの可読性を求めないようであれば、
形式としては古いが追加ライブラリ不要のXMLか、
スタンダードな形式だが別途追加ライブラリ必要なJSONか、
好きな方を選べって感じですかね。。
2018/05/12(土) 21:31:41.93ID:9vavBtpKM
ユーザー定義リソースにしてexeに直接書き込むって方法もあるよ
2018/05/12(土) 21:32:18.31ID:FqtFYlf30
>>568
USBで運ぶポータブルアプリ程度ならApplicationSettings保存でもいいんじゃないの?
USBで運ぶポータブルアプリ程度ならApplicationSettings保存でもいいんじゃないの?
2018/05/12(土) 21:33:56.53ID:yKmgHprg0
exeの直下でいいよな
572デフォルトの名無しさん (アウアウカー Sa11-4Ye1)
2018/05/12(土) 21:48:32.28ID:euW2BAe4a アプリケーションスコープにするとアプリから書き込みできないよ
2018/05/12(土) 22:03:47.45ID:fKL1gupm0
>>571
でもアクセスの速度違うときあるからね。
でもアクセスの速度違うときあるからね。
2018/05/13(日) 14:47:14.23ID:ySggkKZM0
すいません。
初心者なのでこちらに移動してきました。
MVC的な設計で
初期設定値を入力するフォーム
↓
初期設定値を格納するクラス
というのを作りたいのですが、
A.
クラス側に各変数のプロパティを作成
フォームからプロパティを介してクラスの変数に値を代入
B.
クラス側にフォームの初期値を取りに行くメソッドを作成
クラスからメソッドを実行してフォームに値を取りに行く
のどちらが良いのでしょう?
自分ではAの方がよさそうな気がするのですが、一般的な設計としてこうするというのがあったら教えてください。
初心者なのでこちらに移動してきました。
MVC的な設計で
初期設定値を入力するフォーム
↓
初期設定値を格納するクラス
というのを作りたいのですが、
A.
クラス側に各変数のプロパティを作成
フォームからプロパティを介してクラスの変数に値を代入
B.
クラス側にフォームの初期値を取りに行くメソッドを作成
クラスからメソッドを実行してフォームに値を取りに行く
のどちらが良いのでしょう?
自分ではAの方がよさそうな気がするのですが、一般的な設計としてこうするというのがあったら教えてください。
2018/05/13(日) 16:02:40.98ID:GQV4/ETF0
ケツの穴から手をつっこんで奥歯をがたがたみたいなBよりA
2018/05/13(日) 16:26:25.12ID:N5R39axQ0
2018/05/13(日) 16:39:15.74ID:i7PAGBqeM
>>574
// form
void btnSaveInitialSettings_Click(object sender, EventArgs e) {
try { this.SaveInitialSettings(); }
catch(...) { ... }
}
void SaveInitialSettings() {
var initialSettings = this.GetInitialSettings();
var reaction =
this.initialSettingsController.SaveInitialSettings(initialSettings);
reaction?.Invoke(this);
}
// controller
Action<IInitialSettingsView> SaveInitialSettings(InitialSettings initialSettings) {
this.initialSettingsService.SaveInitialSettings(initialSettings);
return view => view.Refresh();
}
// form
void btnSaveInitialSettings_Click(object sender, EventArgs e) {
try { this.SaveInitialSettings(); }
catch(...) { ... }
}
void SaveInitialSettings() {
var initialSettings = this.GetInitialSettings();
var reaction =
this.initialSettingsController.SaveInitialSettings(initialSettings);
reaction?.Invoke(this);
}
// controller
Action<IInitialSettingsView> SaveInitialSettings(InitialSettings initialSettings) {
this.initialSettingsService.SaveInitialSettings(initialSettings);
return view => view.Refresh();
}
2018/05/13(日) 18:54:27.05ID:kDeIpxe/p
初心者は出来上がってから検討すりゃいいんだよ。
つうか、プロ目指してるなら、先ずは完成させる癖を付けないとな。
万年アマチュアでいいのなら些末な問題で盛り上がればいいさ。
つうか、プロ目指してるなら、先ずは完成させる癖を付けないとな。
万年アマチュアでいいのなら些末な問題で盛り上がればいいさ。
2018/05/13(日) 20:18:25.58ID:QhZTiQlx0
まず終わらせろ、Facebookのにいちゃんも言ってたべな。
2018/05/13(日) 20:30:10.29ID:i7PAGBqeM
Facebookにいちゃんが誰かわからんがそいつが言うまず終わらせろ、とお前が考えるまず終わらせろは別物だと思うぞ
ユニットテストとリファクタリング込みでまず終わらせろ、って言ってるならマトモだけど、将来のことなにも考えずまず終わらせろって言うならただの害悪
ユニットテストとリファクタリング込みでまず終わらせろ、って言ってるならマトモだけど、将来のことなにも考えずまず終わらせろって言うならただの害悪
2018/05/13(日) 20:32:15.38ID:23x2pXKw0
>>580
リファクタリングなんか完成した後にバージョンアップする機会があったらやればいいんだよ。
リファクタリングなんか完成した後にバージョンアップする機会があったらやればいいんだよ。
2018/05/13(日) 20:35:20.07ID:kDeIpxe/p
将来が有るかどうかなんて、売れてから考えろw
タイムイズマネーだ。無駄なリソース費やしてる暇が会ったら次の案件片付けろ。
タイムイズマネーだ。無駄なリソース費やしてる暇が会ったら次の案件片付けろ。
2018/05/13(日) 20:36:03.21ID:N5R39axQ0
2018/05/13(日) 20:37:25.10ID:+qfB7sI70
仕様通りの動きだけど汚いコードと
仕様通りの動きじゃないけど綺麗なコード
を同じ時間で仕上げたとして、どっちが優れているかと言えば前者だよな
仕様通りの動きじゃないけど綺麗なコード
を同じ時間で仕上げたとして、どっちが優れているかと言えば前者だよな
2018/05/13(日) 20:58:57.32ID:9JUaags60
2018/05/13(日) 21:04:34.41ID:kDeIpxe/p
まあ、熟練者になれば、素早く仕様通りのコードを綺麗に仕上げて来るからな。
初心者は先ず動くコード、次に仕様通り、最後に綺麗なコードでいいよ。
時間掛かるのはこの際問題にしないw
初心者は先ず動くコード、次に仕様通り、最後に綺麗なコードでいいよ。
時間掛かるのはこの際問題にしないw
2018/05/13(日) 21:04:59.21ID:N5R39axQ0
リピーターが多い汚いコードと
リピーターが少ない綺麗なコード
後者はゴミだよね
リピーターが少ない綺麗なコード
後者はゴミだよね
2018/05/13(日) 21:14:50.20ID:i7PAGBqeM
世の中の多くのバカが勘違いしてるんだけど
綺麗なコード==間違えやすい製造に時間がかかるコード
じゃないんだよね
綺麗なコードはバグが少ないし製造も早い
汚くても動くコードを早く書け!なんて言ってるやつは根本的に何かがズレてる
そんな方針でコーディングしたら汚くて動かないコードを時間をかけて作る羽目になる
綺麗なコード==間違えやすい製造に時間がかかるコード
じゃないんだよね
綺麗なコードはバグが少ないし製造も早い
汚くても動くコードを早く書け!なんて言ってるやつは根本的に何かがズレてる
そんな方針でコーディングしたら汚くて動かないコードを時間をかけて作る羽目になる
2018/05/13(日) 21:19:44.86ID:kDeIpxe/p
洗練された華麗なコードとインデント揃っただけの綺麗なコードを混同してるばか発見
2018/05/13(日) 21:22:07.78ID:asXlnx2Ka
>>574
UI(Form)がモデル(何か仕事をするクラス)の参照を持つのは問題ないが、
逆は良くない。理由は、
(1) 役割分担があいまいになる
厨房の人間が1分おきにウェイターに注文を確認するのは適切な役割分担と言えるか?
(2) つぶしがきかない
Formの参照を握ってFormのメンバーを操作するクラスは、UIをWPFやUWPに
変更しても使いまわしできるか?
UI(Form)がモデル(何か仕事をするクラス)の参照を持つのは問題ないが、
逆は良くない。理由は、
(1) 役割分担があいまいになる
厨房の人間が1分おきにウェイターに注文を確認するのは適切な役割分担と言えるか?
(2) つぶしがきかない
Formの参照を握ってFormのメンバーを操作するクラスは、UIをWPFやUWPに
変更しても使いまわしできるか?
2018/05/13(日) 21:59:31.92ID:ySggkKZM0
2018/05/13(日) 22:02:31.19ID:ySggkKZM0
>>590
UIがデータ格納用クラスのインスタンスを生成
UIがプロパティを介してデータ格納用クラスの変数に代入
UIがコントローラにデータ格納用クラスのインスタンスを渡す
みたいな感じでよろしいでしょうか?
UIがデータ格納用クラスのインスタンスを生成
UIがプロパティを介してデータ格納用クラスの変数に代入
UIがコントローラにデータ格納用クラスのインスタンスを渡す
みたいな感じでよろしいでしょうか?
2018/05/13(日) 22:27:53.20ID:asXlnx2Ka
>>592
>UIがデータ格納用クラスのインスタンスを生成
誰がモデルのインスタンスを生成するかはケースバイケースだしどうでもよろしい
>UIがプロパティを介してデータ格納用クラスの変数に代入
重箱の隅をつつくようだが、オブジェクトのプロパティやメソッドを操作する時に
「データ格納用クラスの変数に代入 」なんていう内部の実装を意識する必要はない。
必要はない、というか意識しなくても使えるように作るのがカプセル化。
>UIがコントローラにデータ格納用クラスのインスタンスを渡す
俺がMVCを理解してないだけの可能性もあるが、少なくともWindows Formでは
VとCを分けたりしないのが普通と思う。コントローラなんてイラネ
>UIがデータ格納用クラスのインスタンスを生成
誰がモデルのインスタンスを生成するかはケースバイケースだしどうでもよろしい
>UIがプロパティを介してデータ格納用クラスの変数に代入
重箱の隅をつつくようだが、オブジェクトのプロパティやメソッドを操作する時に
「データ格納用クラスの変数に代入 」なんていう内部の実装を意識する必要はない。
必要はない、というか意識しなくても使えるように作るのがカプセル化。
>UIがコントローラにデータ格納用クラスのインスタンスを渡す
俺がMVCを理解してないだけの可能性もあるが、少なくともWindows Formでは
VとCを分けたりしないのが普通と思う。コントローラなんてイラネ
594デフォルトの名無しさん (アウアウカー Sa11-+fqb)
2018/05/13(日) 23:13:35.13ID:TUC5Idjma 話蒸し返して悪いんだが、xmlシリアライザーって今使ってるとやばいの?業務アプリの設定ファイルほぼこれで今までやってたんだが。。
とりあえず今やってる案件JSONで見直してみるか
一人で開発やってるとついついこういうのに遅れがちになるなぁ
とりあえず今やってる案件JSONで見直してみるか
一人で開発やってるとついついこういうのに遅れがちになるなぁ
2018/05/13(日) 23:15:02.41ID:F2hiJGIV0
>>594
どんな用途で?
どんな用途で?
2018/05/13(日) 23:22:29.79ID:KKJavIw30
csvとJSONなら圧倒的に後者のがメリットあるけど、
xmlとJSONなら規模がでかくない限りどっちでも良いや
xmlとJSONなら規模がでかくない限りどっちでも良いや
2018/05/13(日) 23:33:10.62ID:R40HLbPBa
2018/05/13(日) 23:37:31.23ID:OUJCfbgi0
599デフォルトの名無しさん (ワッチョイ cbe8-k37M)
2018/05/13(日) 23:38:24.99ID:PSHb3apy02018/05/13(日) 23:40:15.36ID:u4TQvgwd0
Ant, Maven とか、Java系は、XML。
Android 画面の設定ファイルとか
Windows でも、XAML で画面設定する
プロジェクトの設定ファイルも
JSON を設定ファイルに使うのは、JavaScript を使ったもの。
例えば、Node.js を含んだ、VS Code
他には、プログラミング言語自体が設定ファイルになるもの。
Ruby, Groovy, Haxe
Android 画面の設定ファイルとか
Windows でも、XAML で画面設定する
プロジェクトの設定ファイルも
JSON を設定ファイルに使うのは、JavaScript を使ったもの。
例えば、Node.js を含んだ、VS Code
他には、プログラミング言語自体が設定ファイルになるもの。
Ruby, Groovy, Haxe
2018/05/13(日) 23:48:46.83ID:i7PAGBqeM
2018/05/13(日) 23:57:11.22ID:F2hiJGIV0
2018/05/13(日) 23:57:32.58ID:OUJCfbgi0
2018/05/14(月) 00:04:35.25ID:3eK20qHjM
2018/05/14(月) 00:05:32.49ID:wCRTCiuQ0
素のJSONはコメントが使えないので設定ファイルには使い辛い。
2018/05/14(月) 00:17:32.79ID:gDWY5JTja
川俣さんのことを馬鹿にする人が2chには多いけど、この記事の趣旨は正しいと思う
http://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_18/extremecs_18_02.html
特定の技術への信仰と「俺スゲー」っていう間抜けな自己陶酔が結びついてる奴ってよくいるし、
このスレにも時々そんなのが出るけど、そういう奴のいうことは真に受けない方がいいですw
http://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_18/extremecs_18_02.html
特定の技術への信仰と「俺スゲー」っていう間抜けな自己陶酔が結びついてる奴ってよくいるし、
このスレにも時々そんなのが出るけど、そういう奴のいうことは真に受けない方がいいですw
2018/05/14(月) 00:18:47.47ID:Wjyh58JD0
>>604
まあ普通はjson使うがな
まあ普通はjson使うがな
608デフォルトの名無しさん (ワッチョイ 4b9f-ZOQu)
2018/05/14(月) 07:03:43.68ID:oC/RgBRx0 つか業務で使うなら余程のことがない限り枯れた技術の方が安定する
2018/05/14(月) 07:06:02.02ID:Wjyh58JD0
>>608
COBOLとか?
COBOLとか?
2018/05/14(月) 07:55:56.39ID:zbYXMED5M
COBOLは実際優れてるんだよなあ
低品質なPGでもほぼ完璧に見積工数通りに仕上がるし、バグもほとんど出ない
金持ちな客からきっちり工数見合いで金取れるならSIerにとってこれほど好都合な言語はない
低品質なPGでもほぼ完璧に見積工数通りに仕上がるし、バグもほとんど出ない
金持ちな客からきっちり工数見合いで金取れるならSIerにとってこれほど好都合な言語はない
611デフォルトの名無しさん (オッペケ Sr21-XDJ1)
2018/05/14(月) 08:01:56.16ID:wRU00x5/r バグでないのはアカンやろw
612デフォルトの名無しさん (アウアウカー Sa11-ZOQu)
2018/05/14(月) 08:12:24.86ID:I+nT90nna それはバグが摘出できていないだけでは
2018/05/14(月) 08:30:53.44ID:6WkSgDmyr
工数が低減できるかどうかよりも見積が精確にできることの方が管理者にとっては重要ってわけだね
2018/05/14(月) 09:03:36.07ID:coszmN5L0
バグが出ないに総ツッコミでワロタ
2018/05/14(月) 09:45:10.45ID:tQHKR4rj0
大体この時間にABENDしますって
異常停止をルーチンワーク化して運用している所があったな
異常停止をルーチンワーク化して運用している所があったな
2018/05/14(月) 10:05:11.99ID:TQ68xzma0
現場運用だと稀によくある
開発側がそれを織り込んじゃダメだけど
開発側がそれを織り込んじゃダメだけど
617デフォルトの名無しさん (アウアウカー Sa11-+fqb)
2018/05/14(月) 19:19:28.87ID:M+KhV3wka2018/05/14(月) 20:12:46.13ID:CBd8Qc4H0
SVGやMathMLのような外部の名前区間が出てくるとか、Xamlのようにかっちりしたものを書きたい場合はXMLが有利
文字列や数値しか出てこないような簡単な構造ならJSONの方が便利なことも多い。
Trueなのかtrueなのかとか考えなくても良くて、エディタがサポートしてくれるし、エスケープの仕様とかがシンプルで、ファイルも小さい。逆に言うとその程度なのでわざわざ切り替えるほどでもないとは思う
文字列や数値しか出てこないような簡単な構造ならJSONの方が便利なことも多い。
Trueなのかtrueなのかとか考えなくても良くて、エディタがサポートしてくれるし、エスケープの仕様とかがシンプルで、ファイルも小さい。逆に言うとその程度なのでわざわざ切り替えるほどでもないとは思う
2018/05/14(月) 20:37:51.15ID:5czuzhWO0
>>593
VCわけないんですか。
うーん・・・。
いろいろな設計方法があるということですね。
インスタンスの生成順として
A→B
A→C
とAからCにBのインスタンスを渡す方法は分かるのですが、
C→A
A→B
とインスタンスを生成した時、CにBのインスタンスを返すことって可能なのでしょうか?
VCわけないんですか。
うーん・・・。
いろいろな設計方法があるということですね。
インスタンスの生成順として
A→B
A→C
とAからCにBのインスタンスを渡す方法は分かるのですが、
C→A
A→B
とインスタンスを生成した時、CにBのインスタンスを返すことって可能なのでしょうか?
620デフォルトの名無しさん (アウアウカー Sa11-ZOQu)
2018/05/14(月) 20:54:23.97ID:g5WxNsfna デリゲート
621デフォルトの名無しさん (ワッチョイ f5d2-uwJI)
2018/05/14(月) 20:59:59.56ID:IVWzojCa0 【マンモグラフィー】おっぱい挟んで癌検査…必要?
http://egg.5ch.net/test/read.cgi/bio/1517115639/l50
【ペットフード】告発したら3人組に棍棒で襲われた
http://egg.5ch.net/test/read.cgi/hosp/1517110484/l50
【アマルガム】水銀を歯に? 厚労省『暴動が怖い』
http://mao.5ch.net/test/read.cgi/doctor/1517058870/l50
http://egg.5ch.net/test/read.cgi/bio/1517115639/l50
【ペットフード】告発したら3人組に棍棒で襲われた
http://egg.5ch.net/test/read.cgi/hosp/1517110484/l50
【アマルガム】水銀を歯に? 厚労省『暴動が怖い』
http://mao.5ch.net/test/read.cgi/doctor/1517058870/l50
622デフォルトの名無しさん (ワッチョイ c5eb-uwJI)
2018/05/14(月) 21:00:16.16ID:qPzo5Sk002018/05/14(月) 21:35:43.16ID:1pddwh+ma
>>619
何でわざわざ話を複雑にするの?
class C
{
A a;
B b;
public C()
{
a = new A(this);
b = new B(a);
}
}
例えばこれじゃダメなの?
何でわざわざ話を複雑にするの?
class C
{
A a;
B b;
public C()
{
a = new A(this);
b = new B(a);
}
}
例えばこれじゃダメなの?
2018/05/14(月) 21:38:33.33ID:Ju2ea7rBa
DIコンテナとか諸々のイディオムを知らない初心者だからまぁしゃあない
MVCでもMVVMでもいいからチュートリアル的なものをひとつやっとくとだいぶ違うとは思う
MVCでもMVVMでもいいからチュートリアル的なものをひとつやっとくとだいぶ違うとは思う
2018/05/14(月) 21:40:59.32ID:orCVIDzn0
2018/05/14(月) 23:18:38.41ID:coszmN5L0
馬鹿なこと考えないでジャンケンゲームでも作ってろって
2018/05/14(月) 23:19:52.93ID:6thsxJoDM
2018/05/14(月) 23:24:11.06ID:LQsoSslkM
なんだか要領を得ないからわからないけど
Bを操作するメソッドをAに用意してCがA経由でBを操作するのはだめなのか?
Bを操作するメソッドをAに用意してCがA経由でBを操作するのはだめなのか?
2018/05/14(月) 23:36:29.55ID:0rMMZwm+0
MVC をわかってないような奴に、何も教えられない
まず、無料のRails チュートリアルで、MVC webアプリの設計から学べ
まず、無料のRails チュートリアルで、MVC webアプリの設計から学べ
2018/05/15(火) 00:01:41.20ID:NfuIoln0a
Railsってモデルがフォームの構造に依存するからなあ
あんなのAccessのフォームなんかと同レベルだよ
変な癖がつくから初心者には適さない
あんなのAccessのフォームなんかと同レベルだよ
変な癖がつくから初心者には適さない
2018/05/15(火) 00:21:50.03ID:joJAW/ym0
>>629
スレチ
スレチ
632デフォルトの名無しさん (ワッチョイ 039d-uCqk)
2018/05/15(火) 06:26:55.76ID:bIQIvbQJ0 MVVMを理解するには何からはじめたらいいの?
2018/05/15(火) 07:15:54.13ID:OnclRViVM
634デフォルトの名無しさん (ワッチョイ 039d-uCqk)
2018/05/15(火) 07:32:22.06ID:bIQIvbQJ0 やってみたけど難し過ぎて手に負えなかったってことだね。
2018/05/15(火) 07:36:31.19ID:IL2LN/1vM
>>632
Vue.jsあたりかな
XAMLはテンプレートやコマンドバインディングが複雑すぎて本質を掴みづらい
WebのMVVM系フレームワークのほうがずっと見通しが良くてMVVMの本質を素直に実装してる
Vue.jsあたりかな
XAMLはテンプレートやコマンドバインディングが複雑すぎて本質を掴みづらい
WebのMVVM系フレームワークのほうがずっと見通しが良くてMVVMの本質を素直に実装してる
2018/05/15(火) 07:43:57.19ID:dqMabmxz0
まずはUNDOなりマクロを実装するのに何が必要か
考えると、「C」の動きが見えて来るかと思うけどね
GOFの最初の章にも説明はあるよ
考えると、「C」の動きが見えて来るかと思うけどね
GOFの最初の章にも説明はあるよ
2018/05/15(火) 07:48:40.53ID:WESx87C+0
2018/05/15(火) 07:52:16.57ID:WESx87C+0
>>625
ご指摘を受けてメインのフォーム上でインスタンス管理しようとしているのですが、
アクセシビリティの一貫性というエラーが出てきています。
public partial class ExaminationForm : Form
{
public InitialSettingForm initialSettingForm;
public InitialValues initialValues;
で最後の行にアクセシビリティ一貫性のエラーが・・・。
3行目のpublicをinternalにするとエラー消えるのですがなんでだろう。
ご指摘を受けてメインのフォーム上でインスタンス管理しようとしているのですが、
アクセシビリティの一貫性というエラーが出てきています。
public partial class ExaminationForm : Form
{
public InitialSettingForm initialSettingForm;
public InitialValues initialValues;
で最後の行にアクセシビリティ一貫性のエラーが・・・。
3行目のpublicをinternalにするとエラー消えるのですがなんでだろう。
2018/05/15(火) 07:56:03.82ID:jP3S3vDhM
そのビューの入出力項目と隠し項目とユースケースを抽出するだけだよ
ログイン画面だったら
入出力項目として
・ユーザーid
・パスワード
隠し項目は無し
ユースケースは
・ログインする
なので
class LoginViewModel {
public string UserId { get; set; }
public string Password { get; set; }
public void Login() {
// login impl
}
}
こうなる
あとはViewがVMを監視するために変更通知イベントなどを実装しましょう
それだけ
ログイン画面だったら
入出力項目として
・ユーザーid
・パスワード
隠し項目は無し
ユースケースは
・ログインする
なので
class LoginViewModel {
public string UserId { get; set; }
public string Password { get; set; }
public void Login() {
// login impl
}
}
こうなる
あとはViewがVMを監視するために変更通知イベントなどを実装しましょう
それだけ
2018/05/15(火) 07:59:07.77ID:5QugQ9oMM
>>632へのレスな↑
2018/05/15(火) 07:59:13.31ID:4jNLOtgZa
>>638
InitialValuesクラスがinternalなんだろ
publicに変えれば意図通りになる
言っちゃ悪いけど正しい設計とか気にするレベルじゃないと思うよ
まずは汚くてもいいから一本何か形にできるようになってから考えればいい
InitialValuesクラスがinternalなんだろ
publicに変えれば意図通りになる
言っちゃ悪いけど正しい設計とか気にするレベルじゃないと思うよ
まずは汚くてもいいから一本何か形にできるようになってから考えればいい
2018/05/15(火) 08:38:53.30ID:WESx87C+0
>>641
ああああああああ!
そこなのかあああ!
classってデフォルトでinternalになるんですね。
というかinternalって省略されるから気づきませんでした。
ここで半日費やしてたのでものすごく助かりました。
ありがとうございます。m(__)m
ああああああああ!
そこなのかあああ!
classってデフォルトでinternalになるんですね。
というかinternalって省略されるから気づきませんでした。
ここで半日費やしてたのでものすごく助かりました。
ありがとうございます。m(__)m
2018/05/15(火) 08:42:40.68ID:WESx87C+0
>>641
一本ゲーム作ったんですが、form1(初期値)、form2(ゲーム)にほとんどぶっこんだオブジェクト指向ほぼ無視プログラムになってしまったので、
ゲーム内のデータ管理とform2だけでも分離しようとして悪戦苦闘しています。
はるか昔にBasicやったぐらいなので、インスタンスの参照渡しとかその辺がうまく実装できなくて・・・。
勉強用に買った本にもインスタンスの参照渡しなんて全く書いてないし・・・。(´・ω・`)
一本ゲーム作ったんですが、form1(初期値)、form2(ゲーム)にほとんどぶっこんだオブジェクト指向ほぼ無視プログラムになってしまったので、
ゲーム内のデータ管理とform2だけでも分離しようとして悪戦苦闘しています。
はるか昔にBasicやったぐらいなので、インスタンスの参照渡しとかその辺がうまく実装できなくて・・・。
勉強用に買った本にもインスタンスの参照渡しなんて全く書いてないし・・・。(´・ω・`)
2018/05/15(火) 08:47:43.78ID:WESx87C+0
あれでも
//インスタンス生成
InitialValues initialValues = new InitialValues();
//インスタンスの参照渡し
initialSettingForm.InitialValuesPointer = initialValues;
としているのに
フィールド”InitialValues"は割り当てらせません。常に規定値nullを返します。
となります。
実際にnull値が入ってるようで、initialSettingFormにインスタンスの参照は渡せていない模様・・・。
newしてるのになんで割り当てられませんと出るのでしょう??
//インスタンス生成
InitialValues initialValues = new InitialValues();
//インスタンスの参照渡し
initialSettingForm.InitialValuesPointer = initialValues;
としているのに
フィールド”InitialValues"は割り当てらせません。常に規定値nullを返します。
となります。
実際にnull値が入ってるようで、initialSettingFormにインスタンスの参照は渡せていない模様・・・。
newしてるのになんで割り当てられませんと出るのでしょう??
2018/05/15(火) 08:55:56.96ID:WESx87C+0
//インスタンス生成
×InitialValues initialValues = new InitialValues();
↓
this.initialValues = new InitialValues();
でした。すいません。
×InitialValues initialValues = new InitialValues();
↓
this.initialValues = new InitialValues();
でした。すいません。
2018/05/15(火) 09:03:30.06ID:WESx87C+0
2018/05/15(火) 09:34:05.49ID:IdD83PdN0
>>643
C++ 以外のすべての言語で、インスタンスの参照渡しだろ
C++ 以外のすべての言語で、インスタンスの参照渡しだろ
2018/05/15(火) 10:42:46.03ID:WESx87C+0
>>647
初代MSX-Basicでゲーム作ってた頃以来のプログラミングなので(;^_^A
初代MSX-Basicでゲーム作ってた頃以来のプログラミングなので(;^_^A
2018/05/15(火) 10:47:12.03ID:WESx87C+0
アホな質問ですが、
Class InitialValue
に初期値を全部詰め込み、必要であればコントローラから参照しているのですが、
インスタンスの参照をinitialValueとすると
initialValue.StartPointX+hoge
などインスタンスの参照がくどくて読みづらい。
いっそiVとかしたいのですが、自分にしかわからない省略は良くないと聞いたもので・・・。
initialValue.StartPointX
initValue.StartPointX
iV.StartPointX
どれが読みやすいコードでしょうか?
Class InitialValue
に初期値を全部詰め込み、必要であればコントローラから参照しているのですが、
インスタンスの参照をinitialValueとすると
initialValue.StartPointX+hoge
などインスタンスの参照がくどくて読みづらい。
いっそiVとかしたいのですが、自分にしかわからない省略は良くないと聞いたもので・・・。
initialValue.StartPointX
initValue.StartPointX
iV.StartPointX
どれが読みやすいコードでしょうか?
2018/05/15(火) 12:29:44.99ID:2i/hB9LUM
2018/05/15(火) 13:05:19.58ID:WESx87C+0
>>650
えええ!
データはデータクラスで一元管理じゃないんですか?
そうしないとフォームなどからデータクラスを変更した時に、
コントロールクラス側でその通知を受け取って
もう一度データクラスからコントロールクラスにコピーする仕組みが必要になってきますよね。
えええ!
データはデータクラスで一元管理じゃないんですか?
そうしないとフォームなどからデータクラスを変更した時に、
コントロールクラス側でその通知を受け取って
もう一度データクラスからコントロールクラスにコピーする仕組みが必要になってきますよね。
2018/05/15(火) 14:10:34.54ID:l7Fk1Hkl0
自分がアホだと分かってる割には自分の判断を信じてるのな
アホ草
アホ草
653デフォルトの名無しさん (ワッチョイ cba5-A5aB)
2018/05/15(火) 14:32:03.09ID:bP9crr2Q0 勉強のためにプロが書いた大きなプログラムを見たんだが
変数が全部4桁英数字でランダムに発生させてるような文字列だった
僕ら初心者には「これ何の変数だっけ?」と分かりにくいだけなんだけど
大きなプログラムだと万が一、変数がダブったりするのを避けるためにそうするんですかね?
変数一覧表かなにか作るんですか?
変数が全部4桁英数字でランダムに発生させてるような文字列だった
僕ら初心者には「これ何の変数だっけ?」と分かりにくいだけなんだけど
大きなプログラムだと万が一、変数がダブったりするのを避けるためにそうするんですかね?
変数一覧表かなにか作るんですか?
2018/05/15(火) 14:38:53.82ID:WESx87C+0
2018/05/15(火) 14:54:54.48ID:oubZzl5I0
>>653
変な変数名は難読化されてるだけ
変な変数名は難読化されてるだけ
2018/05/15(火) 15:26:01.82ID:UPWhPqGh0
>>653
当然だよ。変数使うには課長級の決済が必要。変数管理台帳ファイルに全部記録されている。
当然だよ。変数使うには課長級の決済が必要。変数管理台帳ファイルに全部記録されている。
657デフォルトの名無しさん (ワッチョイ 2da5-A5aB)
2018/05/15(火) 17:20:29.21ID:nA4SMkbe02018/05/15(火) 18:44:33.69ID:Fj6Vms3Xa
>>654
変数名が妥当かどうか聞いてるんじゃなかったの?w
そのInitialValueとやらのクラスを使う実装方法が妥当かどうかは実現すべき仕様を誰も知らないので
誰にも分からないと思うよw
ローカル変数の命名に関しては、型名InitialValueをそのまま変数名にしても
何をやってるのか理解できるような文脈なら変数名をivにしても同じことでしょう。
だったら短い方がいい。
ただしローカル変数でも説明的な名前の方が適切な場合もあるので馬鹿の一つ覚えはダメ。
情況に応じて柔軟に
変数名が妥当かどうか聞いてるんじゃなかったの?w
そのInitialValueとやらのクラスを使う実装方法が妥当かどうかは実現すべき仕様を誰も知らないので
誰にも分からないと思うよw
ローカル変数の命名に関しては、型名InitialValueをそのまま変数名にしても
何をやってるのか理解できるような文脈なら変数名をivにしても同じことでしょう。
だったら短い方がいい。
ただしローカル変数でも説明的な名前の方が適切な場合もあるので馬鹿の一つ覚えはダメ。
情況に応じて柔軟に
2018/05/15(火) 19:35:30.36ID:9ix52upSr
>>656
初心者が真に受けるからやめれ
初心者が真に受けるからやめれ
2018/05/16(水) 10:08:34.12ID:5p+fPd0U0
int[] intData = new int[10];
int intThread = -3; // 閾値
int intCount = 0;
for (int i = 0; i < intData.Length; i++)
{
if (intThread >= 0)
{
if (intData[i] > intThread)
{
// 処理
intCount++;
}
}
else if (intThread < 0)
{
if (intData[i] < intThread)
{
// 処理
intCount++;
}
}
}
閾値がプラスとマイナスで条件式を変えたいんだけど、
中の処理が一回で済む書き方ってあります?
int intThread = -3; // 閾値
int intCount = 0;
for (int i = 0; i < intData.Length; i++)
{
if (intThread >= 0)
{
if (intData[i] > intThread)
{
// 処理
intCount++;
}
}
else if (intThread < 0)
{
if (intData[i] < intThread)
{
// 処理
intCount++;
}
}
}
閾値がプラスとマイナスで条件式を変えたいんだけど、
中の処理が一回で済む書き方ってあります?
2018/05/16(水) 10:48:11.15ID:6eYS9/+hd
=を含まない条件式。
そして閾値というキーワード。
まとめない方がいいよ。
そして閾値というキーワード。
まとめない方がいいよ。
2018/05/16(水) 11:18:13.11ID:XvxRw+U50
>>660
せめてCountメソッドにしとけと思うぐらい。
せめてCountメソッドにしとけと思うぐらい。
2018/05/16(水) 11:47:06.88ID:B7aMvtuba
>>660
単に同じ処理を2回書く無駄をなくしたいだけなら&&と||を使って
条件式をまとめるだけ
if((threshold >= 0 && x > threshold) || (threshold < 0 && x < threshold))
{
....
}
値が不変のはずのthresholdの符号をループで毎回評価する無駄が許せないなら
Func<int, bool> predicate = x => x > threshold;
if (threshold < 0) predicate = x => x < thredhold;
....
if (predicate(x))
{
....
}
単に同じ処理を2回書く無駄をなくしたいだけなら&&と||を使って
条件式をまとめるだけ
if((threshold >= 0 && x > threshold) || (threshold < 0 && x < threshold))
{
....
}
値が不変のはずのthresholdの符号をループで毎回評価する無駄が許せないなら
Func<int, bool> predicate = x => x > threshold;
if (threshold < 0) predicate = x => x < thredhold;
....
if (predicate(x))
{
....
}
664デフォルトの名無しさん (アウアウカー Sa11-+fqb)
2018/05/16(水) 12:22:33.98ID:CHLBL3ILa async/awaitって呼び出しのネストが深くなると、大元の呼び出しで波線が立ってすごくもどかしいんですが、気にしなくていいでしょうか?それとも呼び出しのやり方を見直したほうがいいのでしょうか
2018/05/16(水) 12:29:36.06ID:+dukoeHCd
>>664
ネスト関係なくね?
ネスト関係なくね?
666デフォルトの名無しさん (ブーイモ MM19-9jLD)
2018/05/16(水) 13:23:25.14ID:v6bC0eDAM >>660
カウントをCountメソッドにして引数に突っ込むラムダ式を閾値によって切り替える
カウントをCountメソッドにして引数に突っ込むラムダ式を閾値によって切り替える
2018/05/16(水) 14:23:23.94ID:mC1mbnpn0
ごめん。Count以外の処理もあるんだね。おらの回答は無視してくれ。
2018/05/16(水) 14:55:11.81ID:c5ZU3C2K0
dataGridViewのデータソースをBindingListにしています。
この時にデータの絞込を実装する方法はあるのでしょうか。
この時にデータの絞込を実装する方法はあるのでしょうか。
2018/05/16(水) 19:51:48.39ID:oU1pyBE30
670デフォルトの名無しさん (ワッチョイ 1a61-XGZI)
2018/05/17(木) 00:16:57.84ID:OeNqnCBl0 すいません。ちょっと教えてください。
//Form1にて
Form2 f = new Form2();
f.show();
this.visible=false;
としてForm2を開いて、Form1を非表示にします。
//Form2にて
Form1 f = new Form1();
f.visible=true;
this.visible=false;
としてForm1に戻った場合、先程form1で入力した内容が消えてしまいます。
form1の内容を消さずにform2からform1に戻る方法を教えてください。
//Form1にて
Form2 f = new Form2();
f.show();
this.visible=false;
としてForm2を開いて、Form1を非表示にします。
//Form2にて
Form1 f = new Form1();
f.visible=true;
this.visible=false;
としてForm1に戻った場合、先程form1で入力した内容が消えてしまいます。
form1の内容を消さずにform2からform1に戻る方法を教えてください。
2018/05/17(木) 00:28:09.71ID:yjgdFlmp0
>>670
Form1 f = 「new」 Form1();
新しいForm1を作ったんだから前のはVisible=false;のままで表示されていない
例えばこうする
//Form1にて
Form2 f = new Form2(this);//Form2のコンストラクタの引数にForm1の参照を渡す
f.show();
this.visible=false;
//Form2にて
private Form1 form1;
//コンストラクタ
public Form2(Form1 f)
{
InitializeComponent();
form1=f;
}
//戻る処理
form1.Visible=true;
this.Visible=false;
Form1 f = 「new」 Form1();
新しいForm1を作ったんだから前のはVisible=false;のままで表示されていない
例えばこうする
//Form1にて
Form2 f = new Form2(this);//Form2のコンストラクタの引数にForm1の参照を渡す
f.show();
this.visible=false;
//Form2にて
private Form1 form1;
//コンストラクタ
public Form2(Form1 f)
{
InitializeComponent();
form1=f;
}
//戻る処理
form1.Visible=true;
this.Visible=false;
2018/05/17(木) 00:35:36.78ID:hTaKG8n8a
>>670
目の前の問題を解決するよりまずインスタンスとは何かちゃんと理解した方がいいねw
目の前の問題を解決するよりまずインスタンスとは何かちゃんと理解した方がいいねw
673デフォルトの名無しさん (ワッチョイ 1a61-XGZI)
2018/05/17(木) 00:41:03.31ID:OeNqnCBl0 ありがとうございました。
大変助かりました。
大変助かりました。
2018/05/17(木) 00:45:08.18ID:hTaKG8n8a
もっと簡単にこれでもできるよw
var f2 = new Form2();
f2.Shown += (s, ev) => Hide();
f2.ShowDialog(this);
Show();
var f2 = new Form2();
f2.Shown += (s, ev) => Hide();
f2.ShowDialog(this);
Show();
2018/05/17(木) 21:40:59.40ID:Kw1Q24F60
class Program
{
TargetOpe targetOpe = new TargetOpe();
static void Main(string[] args)
{
Target [] target= targetOpe.InitializeTarget();
Console.WriteLine(target[1].x);
}
}
Target [] target= targetOpe.InitializeTarget();の行のtargeOpeで
静的でないフィールド、メソッド、またはプロパティ 'Program.targetOpe' で、オブジェクト参照が必要です
のエラーがでます。
newしてるのになんででしょう?
{
TargetOpe targetOpe = new TargetOpe();
static void Main(string[] args)
{
Target [] target= targetOpe.InitializeTarget();
Console.WriteLine(target[1].x);
}
}
Target [] target= targetOpe.InitializeTarget();の行のtargeOpeで
静的でないフィールド、メソッド、またはプロパティ 'Program.targetOpe' で、オブジェクト参照が必要です
のエラーがでます。
newしてるのになんででしょう?
2018/05/17(木) 21:46:08.12ID:xJtGZ4kt0
>>675
静的メソッドだから
静的メソッドだから
2018/05/17(木) 23:37:38.13ID:03oIkg7y0
C#初心者です。
ある変数のその時々の値によって呼ぶメソッドを変えたいため初歩的にifやswitchで分岐させていたのですが、毎回分岐させるのもどうかと思い変数が変わるタイミングでデリゲートに代入して呼び出す方法を試してみました。
しかしながらパフォーマンステストを行ったところ、10程度の条件分岐であればifでメソッド呼び出し >>> デリゲートで呼び出しという結果でした。
速度を重視しつつ動的に呼び出すメソッドを変えるという場合はデリゲートではなく毎回条件分岐を行ったほうが良いということなのでしょうか?
ある変数のその時々の値によって呼ぶメソッドを変えたいため初歩的にifやswitchで分岐させていたのですが、毎回分岐させるのもどうかと思い変数が変わるタイミングでデリゲートに代入して呼び出す方法を試してみました。
しかしながらパフォーマンステストを行ったところ、10程度の条件分岐であればifでメソッド呼び出し >>> デリゲートで呼び出しという結果でした。
速度を重視しつつ動的に呼び出すメソッドを変えるという場合はデリゲートではなく毎回条件分岐を行ったほうが良いということなのでしょうか?
2018/05/17(木) 23:45:29.87ID:xJtGZ4kt0
>>677
どんな用途で?
どんな用途で?
2018/05/17(木) 23:47:12.44ID:fnhXcK68M
2018/05/17(木) 23:49:51.73ID:8WFSeAEB0
くだらねーパフォーマンスとくだらねー暗号化の話題が大好きだよな
681デフォルトの名無しさん (ワッチョイ 75eb-KqYp)
2018/05/18(金) 01:57:49.78ID:3OrmdyFD0 パフォーマンスは重要だよ
だけど、そんなのを語る以前に、コンピュータの仕組みについての素養を極端に欠く人が多すぎるんだよ
最近のC#入門書はよく出来ていて、大抵の本が最低限の仕組みが知識が身につくようページを割いて解説してるわけだけど・・・・分かっていない人ほど読み飛ばすんだな
その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ
だけど、そんなのを語る以前に、コンピュータの仕組みについての素養を極端に欠く人が多すぎるんだよ
最近のC#入門書はよく出来ていて、大抵の本が最低限の仕組みが知識が身につくようページを割いて解説してるわけだけど・・・・分かっていない人ほど読み飛ばすんだな
その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ
682デフォルトの名無しさん (ワッチョイ aa9d-zw5z)
2018/05/18(金) 02:22:20.29ID:tl8rJsN/0 >その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ
ありえないことなんてないだろ。頭硬すぎじゃねーの。「コンピュータはこうあるべきだ」とかに縛られてると新しい発想のソフトが生まれない。
ありえないことなんてないだろ。頭硬すぎじゃねーの。「コンピュータはこうあるべきだ」とかに縛られてると新しい発想のソフトが生まれない。
683デフォルトの名無しさん (ワッチョイ 75eb-KqYp)
2018/05/18(金) 02:48:57.75ID:3OrmdyFD0 新しいものができたってのならいいけど、言うこと為すこと高卒様じゃあ・・・・
2018/05/18(金) 03:11:25.94ID:eSpLSQVO0
>>677
条件次第なのでなんとも言えない
インライン展開とかCPUのキャッシュとかまで関わってくる可能性がある
気にしなければいけないほどパフォーマンスを気遣うなら、JITの結果を比較したほうがいいけど、多くはそこまでするほどではない
条件次第なのでなんとも言えない
インライン展開とかCPUのキャッシュとかまで関わってくる可能性がある
気にしなければいけないほどパフォーマンスを気遣うなら、JITの結果を比較したほうがいいけど、多くはそこまでするほどではない
2018/05/18(金) 04:39:51.09ID:rO+HsCUo0
デリゲート使ってる時点で初心者じゃないだろw
2018/05/18(金) 07:16:45.92ID:tpc+hoQ/0
>>685
いや、初心者がググった知識で背伸びしてるんだろ
いや、初心者がググった知識で背伸びしてるんだろ
687デフォルトの名無しさん (ワッチョイ 5ae3-+Nwo)
2018/05/18(金) 07:25:31.73ID:40IvU0mB0 デリゲートとラムダ式ってちゃうの?
2018/05/18(金) 07:56:30.88ID:mGKF1mXv0
2018/05/18(金) 08:01:25.12ID:mGKF1mXv0
public class TargetOperation
{
Target[] target = new Target[Constants.MaximumNumberOfTarget];
public Target[] InitializeTarget()
{
for (int i = 0; i < Constants.MaximumNumberOfTarget; i++)
{
target[i] = new Target();
target[i].x = 100;
}
}
return target;
}
{
Target[] target = new Target[Constants.MaximumNumberOfTarget];
public Target[] InitializeTarget()
{
for (int i = 0; i < Constants.MaximumNumberOfTarget; i++)
{
target[i] = new Target();
target[i].x = 100;
}
}
return target;
}
2018/05/18(金) 08:05:21.79ID:mGKF1mXv0
最後の行で
クラス、構造体、またはインターフェイス メンバーの宣言でトークン 'return' が無効です。
です。
またアホなことをしてそうな気がしますが、昨夜からわからず・・・。
クラス、構造体、またはインターフェイス メンバーの宣言でトークン 'return' が無効です。
です。
またアホなことをしてそうな気がしますが、昨夜からわからず・・・。
2018/05/18(金) 08:09:16.96ID:WjwLG2oV0
2018/05/18(金) 08:15:13.01ID:SuBLVM61M
>>677
サンプルコードと結果貼れよ
サンプルコードと結果貼れよ
2018/05/18(金) 08:34:05.30ID:Yy5wJYpea
デリゲート使うくらいならストラテジパターン使うけど
2018/05/18(金) 09:57:58.57ID:crDPuGzZM
>>683
こんにちは猿の学校卒様
こんにちは猿の学校卒様
695デフォルトの名無しさん (ワッチョイ 6e8a-/w+O)
2018/05/18(金) 22:42:24.82ID:6iumh9Vb0 DataGridViewのセルのValueを取得すると、既定の型がObject型なんですが、既定の型をstringに変更する方法はありますか?
今はConvert.ToStringで変換してるんですが、記述数が多くなりすぎて参ってます。
今はConvert.ToStringで変換してるんですが、記述数が多くなりすぎて参ってます。
2018/05/18(金) 22:48:37.44ID:/dMxgLqhM
As string
697デフォルトの名無しさん (アウアウカー Sa4d-5W05)
2018/05/19(土) 01:23:31.00ID:5ZvwKnWja C#初心者でフォームアプリを作っているんですが
例えばあるクラスAが非同期で外部機器を延々ポーリングしていて、トリガーが発生したらクラスBの処理を行いたいといった場合
・クラスAにクラスBのインスタンスを渡して、クラスBのメソッドを呼び出す
・クラスAに宣言したデリゲート(evemt?)にクラスBのメソッドをコールバック関数として登録し、クラスAはデリゲートを実行する
どちらが一般的なコーディングなんでしょうか
後者だと複数実行したい処理があるとかなり冗長な気がするんですが、他にセオリーあれば教えて頂きたいです
よろしくお願いします
例えばあるクラスAが非同期で外部機器を延々ポーリングしていて、トリガーが発生したらクラスBの処理を行いたいといった場合
・クラスAにクラスBのインスタンスを渡して、クラスBのメソッドを呼び出す
・クラスAに宣言したデリゲート(evemt?)にクラスBのメソッドをコールバック関数として登録し、クラスAはデリゲートを実行する
どちらが一般的なコーディングなんでしょうか
後者だと複数実行したい処理があるとかなり冗長な気がするんですが、他にセオリーあれば教えて頂きたいです
よろしくお願いします
2018/05/19(土) 01:32:36.76ID:VIvIbG0Fa
女?
2018/05/19(土) 01:53:30.54ID:ZECHChrda
>>697
前者
デリゲートは現段階で呼び出し先が定まってなくて後でアドホックに処理を差し込みたいときに使うも
最初から呼ぶ相手が決まってるならそんなまどろっこしいことをしないで直接メソッドを呼べばよい
前者
デリゲートは現段階で呼び出し先が定まってなくて後でアドホックに処理を差し込みたいときに使うも
最初から呼ぶ相手が決まってるならそんなまどろっこしいことをしないで直接メソッドを呼べばよい
2018/05/19(土) 02:13:21.77ID:FwiHY2dca
>>697
騙されちゃダメwww
そういうのはイベントで実装する。
何故か?
前者で作っちゃったら、その外部デバイスをポーリングしてるクラス(普通はそのデバイスの名前を付けると思うけど)、
前者で作っちゃったら他に流用できないよ
騙されちゃダメwww
そういうのはイベントで実装する。
何故か?
前者で作っちゃったら、その外部デバイスをポーリングしてるクラス(普通はそのデバイスの名前を付けると思うけど)、
前者で作っちゃったら他に流用できないよ
2018/05/19(土) 02:22:01.39ID:6pEEqPiCM
>>700
YAGNI
もしそれが必要になったらそのとき変更すればいい
そして、ほとんどの場合において結局必要にならない
職業プログラマじゃないとアプリのコードを目にする機会って少ないから、
.NET Framework自体のクラスのような不特定多数向けの設計を真似してしまいがち
一般に、アプリケーションプログラミングにおいては無駄な拡張性は極力組み込まずに必要最小限のコードでコンパクトに実装するのが正解
そのほうが結果的に変更時のコストも小さくなるよ
YAGNI
もしそれが必要になったらそのとき変更すればいい
そして、ほとんどの場合において結局必要にならない
職業プログラマじゃないとアプリのコードを目にする機会って少ないから、
.NET Framework自体のクラスのような不特定多数向けの設計を真似してしまいがち
一般に、アプリケーションプログラミングにおいては無駄な拡張性は極力組み込まずに必要最小限のコードでコンパクトに実装するのが正解
そのほうが結果的に変更時のコストも小さくなるよ
2018/05/19(土) 02:27:56.45ID:FwiHY2dca
>>701
YAGNIなんか関係ない
アホか
必要もない仕様変更を想定して寛容に複雑にするのは愚かだが、
抽象度の高い(つまり汎用性も高い)方のクラスにより具体的(つまりそのプログラムでしか利用できない)クラスの
参照を持たせて依存させるなんてもっと愚かだ
YAGNIなんか関係ない
アホか
必要もない仕様変更を想定して寛容に複雑にするのは愚かだが、
抽象度の高い(つまり汎用性も高い)方のクラスにより具体的(つまりそのプログラムでしか利用できない)クラスの
参照を持たせて依存させるなんてもっと愚かだ
2018/05/19(土) 02:32:39.74ID:6pEEqPiCM
2018/05/19(土) 02:38:49.87ID:FwiHY2dca
>>703
たぶん言っても無駄な人だと思うけど、普通はViewをModelに依存させるように作るのであって
ModelをViewに依存させない(Modelの参照をViewが持ってはダメ)なのと同じ。
こんな基本が分からない奴が回答する側に回ってはダメだと思うw
たぶん言っても無駄な人だと思うけど、普通はViewをModelに依存させるように作るのであって
ModelをViewに依存させない(Modelの参照をViewが持ってはダメ)なのと同じ。
こんな基本が分からない奴が回答する側に回ってはダメだと思うw
2018/05/19(土) 02:40:16.65ID:FwiHY2dca
2018/05/19(土) 02:40:41.00ID:6pEEqPiCM
あと、仮に>>700の想定が正しいとするなら、抽象化すべきはクラスBではなくAの方でしょ
例えばAのデバイス依存部分だけをIDeviceインターフェイスとして切り出して委譲するとかね
Aにイベントを持たせるんだと、別のデバイスを監視するクラスCができたら
AのイベントとCのイベントをそれぞれ個別にイベントハンドリングしなきゃいけなくなる
ちゃんと頭使おうね
例えばAのデバイス依存部分だけをIDeviceインターフェイスとして切り出して委譲するとかね
Aにイベントを持たせるんだと、別のデバイスを監視するクラスCができたら
AのイベントとCのイベントをそれぞれ個別にイベントハンドリングしなきゃいけなくなる
ちゃんと頭使おうね
2018/05/19(土) 02:47:51.94ID:6pEEqPiCM
>>705
揚げ足取るようで悪いけど、Viewの参照をModelが持つこと自体は何の問題もないよ
というか、そうしないとMからVへの変化通知が実現できない
イベントを使うにしても結局参照は持ってるよ
MVPといって、IViewのようなインターフェイスを通してMからVを呼ぶパターンもあるね
なるべく疎にしたいのは型同士の依存関係の話で、参照するのがダメなわけじゃない
揚げ足取るようで悪いけど、Viewの参照をModelが持つこと自体は何の問題もないよ
というか、そうしないとMからVへの変化通知が実現できない
イベントを使うにしても結局参照は持ってるよ
MVPといって、IViewのようなインターフェイスを通してMからVを呼ぶパターンもあるね
なるべく疎にしたいのは型同士の依存関係の話で、参照するのがダメなわけじゃない
2018/05/19(土) 02:58:10.85ID:FwiHY2dca
2018/05/19(土) 03:03:16.45ID:FwiHY2dca
まあ質問者の>>697に言うけど、実際書いてみれば
イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。
Bが仮にAでしか利用しないクラスだとしても、普通はAはイベントを発行するだけ、
Bはそのイベントを受信して何か処理をする、ってやった方がずっと分かりやすい
イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。
Bが仮にAでしか利用しないクラスだとしても、普通はAはイベントを発行するだけ、
Bはそのイベントを受信して何か処理をする、ってやった方がずっと分かりやすい
2018/05/19(土) 03:21:21.26ID:ZECHChrda
メソッド一つだけならイベントでもいいけど、少なくとも>>697はメソッドが複数あるときもあると言ってるんだからイベントは不適切でしょ
インターフェイスで纏めたほうが扱いやすい
あえてそこにインターフェイスを噛ませる必要があるかどうかはYAGNIの問題だが、それとはまた別の観点の判断だ
インターフェイスで纏めたほうが扱いやすい
あえてそこにインターフェイスを噛ませる必要があるかどうかはYAGNIの問題だが、それとはまた別の観点の判断だ
2018/05/19(土) 06:03:27.91ID:uNgfR/HH0
プログラムで使用するテキストデータを、excelで管理しています
closecXMLを使ってアクセスしていて、これ自体は無事に実装できました
テストが一通り終わって、テキストデータも確定したので、データの散逸や
改ざんを防ぐために実行ファイルに埋め込みたいのですが、リソースとして
取り扱うことってできないでしょうか
具体的には、
workbook = new XLWorkbook(filename);
として開いているところがあるのですが、このfilenameにリソースファイルの
名前を当てることができないのか調べています
string filename = "Properties.Resources.textdata.xlsx";
としてアクセスできれば簡単だと思っていたのですが、そうはいきませんでした
closecXMLを使ってアクセスしていて、これ自体は無事に実装できました
テストが一通り終わって、テキストデータも確定したので、データの散逸や
改ざんを防ぐために実行ファイルに埋め込みたいのですが、リソースとして
取り扱うことってできないでしょうか
具体的には、
workbook = new XLWorkbook(filename);
として開いているところがあるのですが、このfilenameにリソースファイルの
名前を当てることができないのか調べています
string filename = "Properties.Resources.textdata.xlsx";
としてアクセスできれば簡単だと思っていたのですが、そうはいきませんでした
2018/05/19(土) 06:14:14.58ID:gOuRua2dM
ユーザー定義リソースは何でも書けるよ。
2018/05/19(土) 06:37:08.02ID:uNgfR/HH0
具体的にどういう手順を踏めばよいのでしょう?
excelデータは1,000行以上あるので、取り込みではなく手入力が必要だと
ちょっと切ないです
でももう修正しないもの(修正するとしても部分的)ですから、機械的に
データを移行できるのであればそれでも問題ありません
excelデータは1,000行以上あるので、取り込みではなく手入力が必要だと
ちょっと切ないです
でももう修正しないもの(修正するとしても部分的)ですから、機械的に
データを移行できるのであればそれでも問題ありません
2018/05/19(土) 07:47:44.04ID:gOuRua2dM
静的に呼びだすなら5つのAPI
FindResource()
LoadResource()
SizeofResource()
LockResource()
FreeResource()
動的に更新するなら更に3つ
BeginUpdateResource()
EndUpdateResource()
UpdateResource()
FindResource()
LoadResource()
SizeofResource()
LockResource()
FreeResource()
動的に更新するなら更に3つ
BeginUpdateResource()
EndUpdateResource()
UpdateResource()
2018/05/19(土) 07:53:26.18ID:z3BmCHYgM
>>701
こういう奴が頻繁に現れるのを見るとYAGNIの罪は大きいなって思う
こういう奴が頻繁に現れるのを見るとYAGNIの罪は大きいなって思う
2018/05/19(土) 07:55:26.69ID:7BFPa/Jf0
別に複数でもそんな多くなければイベントでも問題ないんじゃねぇかな
2018/05/19(土) 08:03:52.08ID:uNgfR/HH0
>>714
ありがとうございます、それぞれのAPIについて調べてみます
ありがとうございます、それぞれのAPIについて調べてみます
2018/05/19(土) 08:13:32.92ID:7BFPa/Jf0
結局バランスの問題だな。もちろん人によってバランス違うけど。
イベントによって結果再利用性あがるけど、
>イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。
の通り、可読性の観点からしてもイベントの方が分かりやすいと思う。
これぐらいもYAGNIとかいってるようじゃ、極端すぎてバランス感覚おかしいんじゃねぇかな。
イベントによって結果再利用性あがるけど、
>イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。
の通り、可読性の観点からしてもイベントの方が分かりやすいと思う。
これぐらいもYAGNIとかいってるようじゃ、極端すぎてバランス感覚おかしいんじゃねぇかな。
2018/05/19(土) 09:36:48.03ID:ZECHChrda
2018/05/19(土) 10:02:26.30ID:35k9lSzB0
721デフォルトの名無しさん (アウアウカー Sa4d-5W05)
2018/05/19(土) 10:47:04.32ID:zmVeGZ3Ia >>697です
みなさん色々なご意見ありがとうございます
基本的にはイベント等で疎結合にしたクラス作りが望ましいが、ケースバイケースで状況に応じてどちらの実装でも問題はないといったところでしょうか
レスして頂いた内容は非常に参考になり、まさにその両者のいい分で自分もどちらが最適解なのか悩んでいましたが、結局状況を判断出来る私が決めて実装するしかないのかなと思いました
途中インターフェースをかましてすれば良いとのレスがありましたが、どういった実装をすればいいのか全くわかりませんでした。この方法でも検討してみたいので、すみませんが具体的な実装を教えて頂けないでしょうか
みなさん色々なご意見ありがとうございます
基本的にはイベント等で疎結合にしたクラス作りが望ましいが、ケースバイケースで状況に応じてどちらの実装でも問題はないといったところでしょうか
レスして頂いた内容は非常に参考になり、まさにその両者のいい分で自分もどちらが最適解なのか悩んでいましたが、結局状況を判断出来る私が決めて実装するしかないのかなと思いました
途中インターフェースをかましてすれば良いとのレスがありましたが、どういった実装をすればいいのか全くわかりませんでした。この方法でも検討してみたいので、すみませんが具体的な実装を教えて頂けないでしょうか
2018/05/19(土) 11:44:50.68ID:mNRmauI8a
>>721
interface IAlert {
void Set(Severity severity);
void Unset();
}
たとえば、あるアラートに対してこういうインターフェイスを定義する
クラスAはこれをコンストラクタで受け取り、温度センサーの値が閾値を超えたら危険度に応じた引数でSetメソッドを呼ぶ
温度が低下して閾値を割ったらUnsetを呼んで解除する
このIAlertインターフェイスを、具体的な実装、たとえばパトランプを操作するクラスが実装するわけ
こうしておけば、
パトランプじゃなくて画面でアラート状態を表示したくなったときにAに手を入れずにIAlertを実装するだけで済む
もちろん、パトランプしか想定しなくていいなら直接パトランプクラスのメソッドを呼んでもいいし、Unsetが必要ないならイベントでもいいかもね
ただしイベントの場合はBからAへの密結合が発生するとか、それを避けるなら追加で橋渡しのコードが都度必要になるといった懸念点もある
interface IAlert {
void Set(Severity severity);
void Unset();
}
たとえば、あるアラートに対してこういうインターフェイスを定義する
クラスAはこれをコンストラクタで受け取り、温度センサーの値が閾値を超えたら危険度に応じた引数でSetメソッドを呼ぶ
温度が低下して閾値を割ったらUnsetを呼んで解除する
このIAlertインターフェイスを、具体的な実装、たとえばパトランプを操作するクラスが実装するわけ
こうしておけば、
パトランプじゃなくて画面でアラート状態を表示したくなったときにAに手を入れずにIAlertを実装するだけで済む
もちろん、パトランプしか想定しなくていいなら直接パトランプクラスのメソッドを呼んでもいいし、Unsetが必要ないならイベントでもいいかもね
ただしイベントの場合はBからAへの密結合が発生するとか、それを避けるなら追加で橋渡しのコードが都度必要になるといった懸念点もある
2018/05/19(土) 11:49:58.15ID:F9kKaYLV0
>>695
拡張メソッドでも定義すれば
拡張メソッドでも定義すれば
724デフォルトの名無しさん (アウアウカー Sa4d-5W05)
2018/05/19(土) 12:01:43.59ID:hl18fyg5a2018/05/19(土) 12:20:10.98ID:35k9lSzB0
BASICしか経験がないど素人がC#始めたんだけど、
クラス間の参照の受け渡しというのが難しいです・・・。
クラスの参照を配列に入れて、それを受け渡しするとか動くコードはなんとかかけてるんだけど、
自分で一体何をしているのか分からなくなる時がある。
クラス間の参照の受け渡しというのが難しいです・・・。
クラスの参照を配列に入れて、それを受け渡しするとか動くコードはなんとかかけてるんだけど、
自分で一体何をしているのか分からなくなる時がある。
726デフォルトの名無しさん (ワッチョイ 75eb-/w+O)
2018/05/19(土) 13:04:35.48ID:uWI+Vuzc0 >>725
真っ先に直さなきゃならないのは、「スコープの広い配列にインスタンスを入れておけば、どこからでも全てのデータにすぐにアクセスできていいじゃん!」と思っちゃう点でさあ
C#のスキルの無さから設計までメチャクチャにしてるんじゃないのかねえ
真っ先に直さなきゃならないのは、「スコープの広い配列にインスタンスを入れておけば、どこからでも全てのデータにすぐにアクセスできていいじゃん!」と思っちゃう点でさあ
C#のスキルの無さから設計までメチャクチャにしてるんじゃないのかねえ
2018/05/19(土) 13:15:00.73ID:m/ZPa8pNM
BASIC系って悪い習慣を覚えちゃうよね
特にVBAはひどい
特にVBAはひどい
2018/05/19(土) 13:27:26.49ID:m/ZPa8pNM
>>722
それだと温度センサーがアラートをコントロールしているように解釈される
常識的に考えてアラートのコントロールは温度センサーの仕事ではないだろう
これは名前の問題であってインターフェースよりイベントを使えと言ってるわけではない
それだと温度センサーがアラートをコントロールしているように解釈される
常識的に考えてアラートのコントロールは温度センサーの仕事ではないだろう
これは名前の問題であってインターフェースよりイベントを使えと言ってるわけではない
2018/05/19(土) 14:08:44.26ID:35k9lSzB0
>>726
その通りです。
すべての変数をどこからでもアクセスしたい衝動にかられます。
Aのクラスの機能がA1とA2に分化できるから分けようと思うと、
AはCを参照してたからA1とA2両方にCのインスタンス参照を渡そうとなり、
結局機能は分けれたものの、どのクラスがどのクラスを参照してるのかがよくわからなくなってきました。
その通りです。
すべての変数をどこからでもアクセスしたい衝動にかられます。
Aのクラスの機能がA1とA2に分化できるから分けようと思うと、
AはCを参照してたからA1とA2両方にCのインスタンス参照を渡そうとなり、
結局機能は分けれたものの、どのクラスがどのクラスを参照してるのかがよくわからなくなってきました。
2018/05/19(土) 14:11:58.71ID:35k9lSzB0
値1、2個を渡すのは簡単なんですけど、
クラスのインスタンスを100個つくるためにその参照を配列にいれる
参照の入った配列をreturnで返す
とかしてるとなんの値をいじってるのかわけわかめです。
これまで値と参照の区別をして思考してこなかったからなのかなぁ。
クラスのインスタンスを100個つくるためにその参照を配列にいれる
参照の入った配列をreturnで返す
とかしてるとなんの値をいじってるのかわけわかめです。
これまで値と参照の区別をして思考してこなかったからなのかなぁ。
2018/05/19(土) 14:31:05.11ID:m/ZPa8pNM
>>730
オブジェクト指向で参照を共有することは少ない
共有するとしてもイミュータブル、ステートレスにして共有によるデメリットを消した上で共有する
長時間生存するインスタンスがあちこち参照しあって状態を刻々と変化させていくような設計が最悪のパターン
オブジェクト指向で参照を共有することは少ない
共有するとしてもイミュータブル、ステートレスにして共有によるデメリットを消した上で共有する
長時間生存するインスタンスがあちこち参照しあって状態を刻々と変化させていくような設計が最悪のパターン
2018/05/19(土) 15:29:17.89ID:7BFPa/Jf0
2018/05/19(土) 16:13:13.77ID:t/qQFhE80
休みだってのに暇な奴ら
2018/05/19(土) 16:13:20.90ID:35k9lSzB0
>>731
なるほどCを参照しているA1、A2はCと独立したオブジェクトじゃなくなってしまいますものね。
なるほどCを参照しているA1、A2はCと独立したオブジェクトじゃなくなってしまいますものね。
2018/05/19(土) 16:20:14.69ID:35k9lSzB0
Target[] target = new Target[Constants.MaximumNumberOfTarget];
public Target[] InitializeTarget()
{
for (int i = 0; i < Constants.MaximumNumberOfTarget; i++)
{
target[i] = new Target();
target[i].x = 100;
target[i].y = 100;
}
}
こういうふうにForm1のクラスでターゲットの座標100個発生させて表示させます。
public Target[] InitializeTarget()
{
for (int i = 0; i < Constants.MaximumNumberOfTarget; i++)
{
target[i] = new Target();
target[i].x = 100;
target[i].y = 100;
}
}
こういうふうにForm1のクラスでターゲットの座標100個発生させて表示させます。
2018/05/19(土) 16:23:28.77ID:35k9lSzB0
ターゲットをクリック出来たら消す
一定時間クリックできなかったら点滅させる
ゲーム終了後にターゲットの座標をテキストファイルに書き出す
などの処理がすべてForm1上に存在することになるのですが、
それでもいいのでしょうか?
これらの作業を無理にクラスに分けようとすると
ターゲットクラスインスタンスの参照100個を渡さなくてはいけなくなります。
一定時間クリックできなかったら点滅させる
ゲーム終了後にターゲットの座標をテキストファイルに書き出す
などの処理がすべてForm1上に存在することになるのですが、
それでもいいのでしょうか?
これらの作業を無理にクラスに分けようとすると
ターゲットクラスインスタンスの参照100個を渡さなくてはいけなくなります。
2018/05/19(土) 16:41:59.05ID:H4w+h7ji0
そんなミニゲームどう組んだっていいよ
2018/05/19(土) 16:44:12.66ID:5aQMcYYW0
739デフォルトの名無しさん (ワッチョイ 75eb-/w+O)
2018/05/19(土) 16:55:29.90ID:uWI+Vuzc0 どうせこの人は一生治んないよ
ただプログラムなんてちゃんと動けば目的達成できるんだし、まあ、これでも良いんじゃないの
ただプログラムなんてちゃんと動けば目的達成できるんだし、まあ、これでも良いんじゃないの
2018/05/19(土) 16:56:47.37ID:F+BrwfqWa
listやdictionaryを使ってないのかな
だったらまだそのアプリを作る段階まで届いてない
だったらまだそのアプリを作る段階まで届いてない
2018/05/19(土) 17:10:27.25ID:UwdEx54W0
まあ普通はエンジン部分だけ切り離すわな
2018/05/19(土) 17:20:42.40ID:35k9lSzB0
target class
にx,y,timeなどメンバ変数7個程度を入れてます。
このターゲットを表示するためForm1上にクラスのインスタンスを参照する配列を置くと、
表示とゲームのコントロールすべてがForm1上におくことになって見苦しいのかと思いました。
でもテトリスとか他のミニゲームみても同じような設計になってるんですね。
無理して別クラスにするよりもtargetクラスの配列に関連した、表示、ゲーム処理はForm1上に置いてみます。
(というか実際に配列を別クラスに切り分けたら、余計読みづらくなった・・・)
にx,y,timeなどメンバ変数7個程度を入れてます。
このターゲットを表示するためForm1上にクラスのインスタンスを参照する配列を置くと、
表示とゲームのコントロールすべてがForm1上におくことになって見苦しいのかと思いました。
でもテトリスとか他のミニゲームみても同じような設計になってるんですね。
無理して別クラスにするよりもtargetクラスの配列に関連した、表示、ゲーム処理はForm1上に置いてみます。
(というか実際に配列を別クラスに切り分けたら、余計読みづらくなった・・・)
2018/05/19(土) 17:22:57.84ID:35k9lSzB0
2018/05/19(土) 17:23:58.19ID:35k9lSzB0
2018/05/19(土) 17:27:35.68ID:9OoA3M8l0
>>736
何故そのような結論になるかわからない提示された仕様からだとテキスト出力クラスを作ろうって気になるかな
targetの渡し方はコンストラクタやメソッド引数にするかは自由
Hoge hoge = new Hoge();
bool Output(){
hoge.Set(target);
return hoge.Output();
}
何故そのような結論になるかわからない提示された仕様からだとテキスト出力クラスを作ろうって気になるかな
targetの渡し方はコンストラクタやメソッド引数にするかは自由
Hoge hoge = new Hoge();
bool Output(){
hoge.Set(target);
return hoge.Output();
}
2018/05/19(土) 17:28:05.32ID:m/ZPa8pNM
2018/05/19(土) 17:30:56.31ID:TbcarOIZ0
>>729
貴様にはpublicを禁止する呪いを掛ける
貴様にはpublicを禁止する呪いを掛ける
2018/05/19(土) 17:45:50.05ID:m/ZPa8pNM
それは呪いではなく祝福であった
2018/05/19(土) 17:52:30.85ID:F+BrwfqWa
そしてinternalを使い始めた!
ゴミグラマの出来上がり
ゴミグラマの出来上がり
750デフォルトの名無しさん (ワッチョイ 4103-y+IU)
2018/05/19(土) 18:14:06.88ID:RoboUWmL0 と、すでに出来あがったゴミグラマが申しておるようですが
2018/05/19(土) 18:20:19.09ID:35k9lSzB0
>>746
はい。
それやってみたのですが、フォーム2から初期設定値を初期値格納クラスに入れていて、
初期値格納クラスの参照、Targetクラスの参照、Targetクラス管理クラスの参照が入り乱れて書いている自分でもわけわかめになりました。
二つのプログラムを見比べた結果Form1でTarget管理させたほうがまだましなのかと・・・。
もっと規模の大きなプログラムだと違ってくるのかもしれないのですが。
はい。
それやってみたのですが、フォーム2から初期設定値を初期値格納クラスに入れていて、
初期値格納クラスの参照、Targetクラスの参照、Targetクラス管理クラスの参照が入り乱れて書いている自分でもわけわかめになりました。
二つのプログラムを見比べた結果Form1でTarget管理させたほうがまだましなのかと・・・。
もっと規模の大きなプログラムだと違ってくるのかもしれないのですが。
2018/05/19(土) 18:39:40.28ID:H4w+h7ji0
2018/05/19(土) 18:44:17.10ID:m/ZPa8pNM
>>751
入り乱れないよ
入り乱れないよ
2018/05/19(土) 18:44:51.84ID:t/qQFhE80
素人が責務に応じたクラスの分割を理解するなんて
一朝一夕どころか数ヶ月単位の時間が掛かると思うが、このやり取りそこまで続けるの?
一朝一夕どころか数ヶ月単位の時間が掛かると思うが、このやり取りそこまで続けるの?
755デフォルトの名無しさん (ワッチョイ 4103-y+IU)
2018/05/19(土) 18:46:55.05ID:RoboUWmL02018/05/19(土) 18:48:37.83ID:m/ZPa8pNM
>>754
理解しやすい構造になるわけだから素人も安心
理解しやすい構造になるわけだから素人も安心
2018/05/19(土) 18:49:08.43ID:t/qQFhE80
>>755
猿には聞いてねえから飼育員さんとママゴトしてな
猿には聞いてねえから飼育員さんとママゴトしてな
2018/05/19(土) 18:51:06.08ID:t/qQFhE80
759デフォルトの名無しさん (ワッチョイ 4103-y+IU)
2018/05/19(土) 18:54:14.32ID:RoboUWmL0 バカ、スレ潰し宣言wwwww
これはさすがの俺も意表をつかれた度と超えたバカwwwww
これはさすがの俺も意表をつかれた度と超えたバカwwwww
760デフォルトの名無しさん (ブーイモ MMa1-+Nwo)
2018/05/19(土) 20:59:50.70ID:gCADl0W/M C#のスレだと思ったのに。
2018/05/19(土) 21:13:55.60ID:35k9lSzB0
リストボックスの値を取得するのって
string Gender = this.Gender.SelectedItem.ToString();
の一文だけじゃだめなの?
なぜか値が取得できない。
string Gender = this.Gender.SelectedItem.ToString();
の一文だけじゃだめなの?
なぜか値が取得できない。
2018/05/19(土) 21:17:27.89ID:BEl4Etk9a
あたまがくらくらする
2018/05/19(土) 21:28:02.54ID:sYzD4mGA0
>>761
まず「Gender」が2つ出てくることに違和感はないのか
ListBoxは使ったことないけど
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.selecteditem(v=vs.110).aspx
string GenderStr = this.Gender.SelectedItem.ToString();
にでも変えれば動かないか?
まず「Gender」が2つ出てくることに違和感はないのか
ListBoxは使ったことないけど
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.selecteditem(v=vs.110).aspx
string GenderStr = this.Gender.SelectedItem.ToString();
にでも変えれば動かないか?
2018/05/19(土) 21:30:21.29ID:35k9lSzB0
2018/05/19(土) 21:32:29.68ID:35k9lSzB0
>>763
すいません。
ご親切にありがとうございます。
値を出力するクラスにwriteline書き忘れてました・・・。
値の取得は上のコードでOKでした。
朝から一日プログラミングして悪い頭が限界を超えているようです。
今日はもう寝ます。
すいません。
ご親切にありがとうございます。
値を出力するクラスにwriteline書き忘れてました・・・。
値の取得は上のコードでOKでした。
朝から一日プログラミングして悪い頭が限界を超えているようです。
今日はもう寝ます。
766デフォルトの名無しさん (ワッチョイ 4103-y+IU)
2018/05/19(土) 21:34:12.28ID:RoboUWmL0 教えたがりのバカ>>763の立場wwww
2018/05/20(日) 16:52:01.54ID:O/HF5kqh0
>>714
いろいろ調べてみましたが、私が探している解決策とは異なったようです
一番知りたいのは、埋め込みリソースに対し、通常のファイルアクセスのように
アクセスする方法はないのか、という点です
(XLWorkbookのコンストラクタには、ファイルパスを与えますので)
今回のデータは参照のみ必要ですので、リソースとして埋め込んだ場合に
変更が効かなくなっても問題ないと考えました
712で書かれた内容は、「自分でファイルフォーマットを定義して、それを読んで
切り貼りするコードを自分で書くべし」、ということでしょうか
そのために有用なのが714のAPIということですか
いろいろ調べてみましたが、私が探している解決策とは異なったようです
一番知りたいのは、埋め込みリソースに対し、通常のファイルアクセスのように
アクセスする方法はないのか、という点です
(XLWorkbookのコンストラクタには、ファイルパスを与えますので)
今回のデータは参照のみ必要ですので、リソースとして埋め込んだ場合に
変更が効かなくなっても問題ないと考えました
712で書かれた内容は、「自分でファイルフォーマットを定義して、それを読んで
切り貼りするコードを自分で書くべし」、ということでしょうか
そのために有用なのが714のAPIということですか
2018/05/20(日) 18:41:56.82ID:9fk8EC6VM
ないよ
一回テンポラリファイルに出力すればいい
使いたいライブラリがストリームを受け取るバージョンをサポートしてるならそっちを使ってテンポラリファイルは要らない
一回テンポラリファイルに出力すればいい
使いたいライブラリがストリームを受け取るバージョンをサポートしてるならそっちを使ってテンポラリファイルは要らない
2018/05/20(日) 19:32:08.73ID:QOdmSKaj0
2018/05/20(日) 19:59:07.95ID:O/HF5kqh0
771デフォルトの名無しさん (ワッチョイ aa9d-/w+O)
2018/05/21(月) 08:06:02.24ID:yxdsvVjy0 Json保存すると漢字が化ける。なぜばけるの? Jsonの問題なのか、StrreamReader
の問題なのか、StrreamWriterのもんだいなのか? 取り合えず、Read、Writeともに
shift_jisでEncode指定したら化けないようになったが、意味がよくわからない。
普通に考えるとStringにShift_JIsが入っていて、それを認識しているなら、Read
WirteにShift_jisを指定する必要はないと思うのだ。だからStringにはそういう情報は
入ってない筈だ。ファイルにSHiftJIsの属性がはいっているなら、Write側だけに指定
すればよいはずだ。ReadにもSHIFT_JISを指定しなければならないということはファイルにも
その属性は保存されていないということだ。Stringに属性を保存しておけばすべて丸く
収まるとおもうのだが、なぜそうしないのだろうか?
の問題なのか、StrreamWriterのもんだいなのか? 取り合えず、Read、Writeともに
shift_jisでEncode指定したら化けないようになったが、意味がよくわからない。
普通に考えるとStringにShift_JIsが入っていて、それを認識しているなら、Read
WirteにShift_jisを指定する必要はないと思うのだ。だからStringにはそういう情報は
入ってない筈だ。ファイルにSHiftJIsの属性がはいっているなら、Write側だけに指定
すればよいはずだ。ReadにもSHIFT_JISを指定しなければならないということはファイルにも
その属性は保存されていないということだ。Stringに属性を保存しておけばすべて丸く
収まるとおもうのだが、なぜそうしないのだろうか?
2018/05/21(月) 09:30:17.64ID:HN6x0Zrba
文字列の実装には内部的にUnicodeで扱うものとバイト列として扱うものとがある。
前者は入出力時にそれぞれバイト列->UnicodeとUnicode->バイト列をどのようにマッピングするか(i.e. エンコーディング)を指定する必要がある。
後者であればその必要はない。
一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。
後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。
一長一短だからどっちの実装もあり得るが.NETは内部Unicodeが標準的だということだ
文字列自身に自分のエンコーディング情報を埋め込むのはやめておけ
禄でもないことにしかならん
前者は入出力時にそれぞれバイト列->UnicodeとUnicode->バイト列をどのようにマッピングするか(i.e. エンコーディング)を指定する必要がある。
後者であればその必要はない。
一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。
後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。
一長一短だからどっちの実装もあり得るが.NETは内部Unicodeが標準的だということだ
文字列自身に自分のエンコーディング情報を埋め込むのはやめておけ
禄でもないことにしかならん
2018/05/21(月) 10:54:12.62ID:wG0UA8oX0
JSON はJavaScript だから、UTF-8
Ruby, Python もそう。
ネット上に流れるテキストも同じ
SHIFT_JIS を使う言語は、まずない。
PowerShell も、UTF-16
ここ数年は、Unicode に統一された。
それ以外の、SHIFT_JIS, EUC-JP は使わない
Ruby, Python もそう。
ネット上に流れるテキストも同じ
SHIFT_JIS を使う言語は、まずない。
PowerShell も、UTF-16
ここ数年は、Unicode に統一された。
それ以外の、SHIFT_JIS, EUC-JP は使わない
2018/05/21(月) 12:22:48.67ID:ZMitaTGGM
>>773
何言っても通じないとは思うが、お前の愛するRubyの文字列の扱いは他と異なっている
Rubyの文字列は内部的にはエンコーディング情報を持ったバイト列だ
特にWin環境では非常にトラブルの原因になりやすいゴミ仕様である
何言っても通じないとは思うが、お前の愛するRubyの文字列の扱いは他と異なっている
Rubyの文字列は内部的にはエンコーディング情報を持ったバイト列だ
特にWin環境では非常にトラブルの原因になりやすいゴミ仕様である
2018/05/21(月) 12:34:00.26ID:wG0UA8oX0
Ruby は各文字列に、エンコードを持てるから、すごい
例えば、文字列a がSHIFT_JIS で、b がUTF-8 として、
a + b
みたいに、文字列を連結すると、エンコードエラーになる
例えば、文字列a がSHIFT_JIS で、b がUTF-8 として、
a + b
みたいに、文字列を連結すると、エンコードエラーになる
2018/05/21(月) 12:36:23.24ID:ZMitaTGGM
>>775
うん。何一つメリットのないカス仕様だね。
うん。何一つメリットのないカス仕様だね。
2018/05/21(月) 12:50:56.22ID:0W5b/XyUM
>>770
ClosedXML.Excel.XLWorkbookコンストラクタにはStream取るのもあるんだけど
ClosedXML.Excel.XLWorkbookコンストラクタにはStream取るのもあるんだけど
778デフォルトの名無しさん (ワッチョイ aa9d-/w+O)
2018/05/21(月) 13:22:41.39ID:yxdsvVjy0 >SHIFT_JIS を使う言語は、まずない。
エクセルファイルをCSVにEportしたファイルだけど、
var sr = new StreamReader(fs, Encoding.GetEncoding("shift_jis"))
これでなら正常に読める。ということはエクセルはshift_jisだと思うが、、
エクセルファイルをCSVにEportしたファイルだけど、
var sr = new StreamReader(fs, Encoding.GetEncoding("shift_jis"))
これでなら正常に読める。ということはエクセルはshift_jisだと思うが、、
2018/05/21(月) 14:04:00.83ID:hRf5uVYXM
とりあえずそのRubyアスペに触るのを止めて
780デフォルトの名無しさん (ワッチョイ aa9d-/w+O)
2018/05/21(月) 15:12:20.28ID:yxdsvVjy0 >一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。
>後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。
前者はDefault unicode
後者はDefault bytecode
ということであれば、shift_jisなど他にもたくさんの文字コードが来る可能性があるのだから、コードを意識することにあまり違いはない
と思うが、、
>>775
その考え方の方が正しいと思う。
そもそもunicoeをディフォールトにするんだったら、漢字はそのまま表示できるんじゃないの?
其れなのにXcelは何でわざわざSHIFT_JISをつかうんだろ。
>後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。
前者はDefault unicode
後者はDefault bytecode
ということであれば、shift_jisなど他にもたくさんの文字コードが来る可能性があるのだから、コードを意識することにあまり違いはない
と思うが、、
>>775
その考え方の方が正しいと思う。
そもそもunicoeをディフォールトにするんだったら、漢字はそのまま表示できるんじゃないの?
其れなのにXcelは何でわざわざSHIFT_JISをつかうんだろ。
2018/05/21(月) 15:24:30.40ID:wG0UA8oX0
Windows も内部的には、UTF-16 だろ。
PowerShell, ブラウザも、UTF-8
保守費用が掛かるから、MS も、SHIFT_JIS を辞めたいはず
Excel など、長年使っている人が多いから、やめられないだけ
PowerShell, ブラウザも、UTF-8
保守費用が掛かるから、MS も、SHIFT_JIS を辞めたいはず
Excel など、長年使っている人が多いから、やめられないだけ
2018/05/21(月) 15:43:54.89ID:s3jYOwAha
>>780
Stringのエンコーディングが固定なら、IOのときだけ文字コードを意識すれば済む
素人のちょっとしたツールのレベルならともかく、一般的にはIとOの間(P)の部分がプログラムの殆どを占めるんだよ
Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ
Stringのエンコーディングが固定なら、IOのときだけ文字コードを意識すれば済む
素人のちょっとしたツールのレベルならともかく、一般的にはIとOの間(P)の部分がプログラムの殆どを占めるんだよ
Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ
2018/05/21(月) 21:17:05.23ID:83cG7/bYM
ビルドしても、ファイルできなくて意味わかんねえ
784デフォルトの名無しさん (ワッチョイ 55da-XbkE)
2018/05/21(月) 22:02:39.74ID:o82N7H0r02018/05/21(月) 22:04:28.66ID:ZCJ7EsPBa
漢字が文字化けするのは保存した文字コードと読み込んだ文字コード指定が違うから
それだけ
つまりやった側の間違い
どこで間違えたか手順を順に見直すべし
それだけ
つまりやった側の間違い
どこで間違えたか手順を順に見直すべし
786デフォルトの名無しさん (ワッチョイ 4103-y+IU)
2018/05/21(月) 22:11:44.14ID:KnpxsRSU0 やった側ってどの側だよw
2018/05/22(火) 00:01:50.29ID:1gACj0o60
sqliteとの連携に関して質問です
なんらかのクライアントで先にテーブルを作り、レコードもinsertしておいて、それを読み込むプログラムを作りたいのですが、既存のdbファイルはどこに配置すればよいのでしょうか
デバッグしてみたらno such tableと言うようなエラーが出たので、どうやら実行時に新たにdbファイルを作ってそれを読もうとしてしまっているようです
なんらかのクライアントで先にテーブルを作り、レコードもinsertしておいて、それを読み込むプログラムを作りたいのですが、既存のdbファイルはどこに配置すればよいのでしょうか
デバッグしてみたらno such tableと言うようなエラーが出たので、どうやら実行時に新たにdbファイルを作ってそれを読もうとしてしまっているようです
2018/05/22(火) 00:20:52.78ID:V2R/cizEa
>>787
どこもクソも決めるのはお前
SQLiteはDBのファイルパス指定して開けるだろ
SQLiteは普通のDBMSと違って、システムのどこかに共通のデータストアがあるみたいな考え方をしないんだよ
ファイルを名指しするのが基本
どこもクソも決めるのはお前
SQLiteはDBのファイルパス指定して開けるだろ
SQLiteは普通のDBMSと違って、システムのどこかに共通のデータストアがあるみたいな考え方をしないんだよ
ファイルを名指しするのが基本
789デフォルトの名無しさん (ブーイモ MMa1-+Nwo)
2018/05/22(火) 03:32:12.88ID:MRvdbbs3M Accessのmdbみたいな感じかいな?
790デフォルトの名無しさん (ワッチョイ ae9d-/w+O)
2018/05/22(火) 06:38:16.66ID:GCRmPVlZ0 >>785
「文字コードなんて意識する必要はない。機械に任せたほうがいい。」とは考えないのだろうか?
そもそもテキストとは文字コードによって表現された文字の集合体だ。テキストを保存するIOに
たいしてわざわざ文字コードの情報を削除して保存するのは何故なのだ。正気の沙汰とは思えんな。
「文字コードなんて意識する必要はない。機械に任せたほうがいい。」とは考えないのだろうか?
そもそもテキストとは文字コードによって表現された文字の集合体だ。テキストを保存するIOに
たいしてわざわざ文字コードの情報を削除して保存するのは何故なのだ。正気の沙汰とは思えんな。
791デフォルトの名無しさん (ワッチョイ ae9d-/w+O)
2018/05/22(火) 06:43:45.86ID:GCRmPVlZ0 >Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ
文字コードなんて本質的なことじゃない。だから混在してもかまわない。
それを人手でやろうとするから「混在する悪夢」が発生する。
そういう場合にこそ機械に自動的にやらせるべきだろう。
文字コードなんて本質的なことじゃない。だから混在してもかまわない。
それを人手でやろうとするから「混在する悪夢」が発生する。
そういう場合にこそ機械に自動的にやらせるべきだろう。
792デフォルトの名無しさん (ワッチョイ ae9d-/w+O)
2018/05/22(火) 06:51:24.64ID:GCRmPVlZ0 >日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。
>ちなみにBOMが付いていればUTFのCSVでも読み込める。
互換性のためならもっとほかの方法がある。アプリのためにコードを弄るなんて最悪の方法だろう。
>ちなみにBOMが付いていればUTFのCSVでも読み込める。
互換性のためならもっとほかの方法がある。アプリのためにコードを弄るなんて最悪の方法だろう。
2018/05/22(火) 07:58:03.61ID:j6MjsmBId
>>788
あざすぅ
あざすぅ
2018/05/22(火) 09:20:46.86ID:uYoKmc1Q0
ここにきて.NET CoreがWPF, Windows Formsを救済ってか
2018/05/22(火) 09:31:30.78ID:7LgkrdmnM
2018/05/22(火) 10:37:32.58ID:svO22mue0
public double Re { get; set; }
ってプロパティを省略して書くと見やすくていいんですが、
他クラスから参照するだけの変数だと、
Reは使用されていませんって警告がずっと出てうっとうしい。
何かいい手はないでしょうか?
ってプロパティを省略して書くと見やすくていいんですが、
他クラスから参照するだけの変数だと、
Reは使用されていませんって警告がずっと出てうっとうしい。
何かいい手はないでしょうか?
2018/05/22(火) 10:37:46.91ID:np9ncSKga
別に文字列を文字セット/エンコーディングごと抽象化するライブラリとか作ってくれて良いのよ?
既存文字列と互換性があって使い勝手, 拡張性と統一性と性能が担保されるなら普及もするだろう
でも曲がりなりにもそれ続けられてるのってRubyくらいで他に思い浮かばない
なんで無いのかと言うけど試されてないわけないんだよ, 現実的じゃないから普及してない
既存文字列と互換性があって使い勝手, 拡張性と統一性と性能が担保されるなら普及もするだろう
でも曲がりなりにもそれ続けられてるのってRubyくらいで他に思い浮かばない
なんで無いのかと言うけど試されてないわけないんだよ, 現実的じゃないから普及してない
2018/05/22(火) 10:58:36.99ID:sxJmXMb80
2018/05/22(火) 11:14:09.28ID:7Riaak3V0
WPFで
WindowStyle="None"
AllowsTransparency="True"
Background="#01FFFFFF"
でほぼ透明だけどマウスイベントを受け取るウィンドウを作ったのですが
これとおなじことをFormでやりたいのですがやりかたがわかりません
どのようにすればいいですか?
WindowStyle="None"
AllowsTransparency="True"
Background="#01FFFFFF"
でほぼ透明だけどマウスイベントを受け取るウィンドウを作ったのですが
これとおなじことをFormでやりたいのですがやりかたがわかりません
どのようにすればいいですか?
2018/05/22(火) 11:23:07.15ID:svO22mue0
>>798
できると思います。
データ格納フォルダB:Aフォームから値を取得
Cクラス:Bから値を取得
となってるのでsetもpublicでないと困るんですよね。
データ格納フォルダBの値はAから値取得した後なにも処理がないので、
「Reは使用されていません」って正しい警告なんですけどねぇ。
格納しているデータが10個あって警告10個もでるとさすがにうっとうしい。
できると思います。
データ格納フォルダB:Aフォームから値を取得
Cクラス:Bから値を取得
となってるのでsetもpublicでないと困るんですよね。
データ格納フォルダBの値はAから値取得した後なにも処理がないので、
「Reは使用されていません」って正しい警告なんですけどねぇ。
格納しているデータが10個あって警告10個もでるとさすがにうっとうしい。
2018/05/22(火) 12:14:32.87ID:CqasDiEMM
802デフォルトの名無しさん (ブーイモ MMde-+Nwo)
2018/05/22(火) 12:16:10.65ID:O9GDwfVPM BのコンストラクタにAからの値を受け付けて
public readonly double Reに渡すとかじゃだめなんね?
public readonly double Reに渡すとかじゃだめなんね?
2018/05/22(火) 12:36:59.84ID:2EZjLjzja
>>799
Formはウィンドウ全体のアルファはOpacityで指定できるけど、
背景だけ透過させるとかは簡単にはできなかったような
http://yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.php
>>800
そもそも>>796みたいな告なんか出ないと思うけど...
何か盛大に勘違いしてる予感...
Formはウィンドウ全体のアルファはOpacityで指定できるけど、
背景だけ透過させるとかは簡単にはできなかったような
http://yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.php
>>800
そもそも>>796みたいな告なんか出ないと思うけど...
何か盛大に勘違いしてる予感...
2018/05/22(火) 13:05:58.78ID:7Riaak3V0
2018/05/22(火) 13:21:14.65ID:svO22mue0
2018/05/22(火) 13:55:20.14ID:svO22mue0
もともとスタートアップだったform1からform2にスタートアップを変更したいと考えています。
Program.csの
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new InitialSettingForm1());
}
のForm1をForm2に変更したのですがどうもうまくいきません。
Program.csの
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new InitialSettingForm1());
}
のForm1をForm2に変更したのですがどうもうまくいきません。
2018/05/22(火) 14:00:09.60ID:svO22mue0
form1が出てからform2が表示されているような…。
試しに
public ExaminationForm1()
{
InitializeComponent();
MessageBox.Show("a");
}
と入れてみると
メッセージボックスが表示→okをクリック→form2が表示
となります。
他にも設定しなければいけないところがあるのでしょうか・・・。
試しに
public ExaminationForm1()
{
InitializeComponent();
MessageBox.Show("a");
}
と入れてみると
メッセージボックスが表示→okをクリック→form2が表示
となります。
他にも設定しなければいけないところがあるのでしょうか・・・。
2018/05/22(火) 14:01:17.37ID:svO22mue0
また変なことやってるのかなぁ・・・。
2018/05/22(火) 14:48:09.94ID:oCYWBo6GM
InitialSettingなのかExaminationなのかどっちだよ
ExaminationForm1のコンストラクタにブレークポイントおいて実行
ブレークしたら呼び出し履歴を確認する
ExaminationForm1のコンストラクタにブレークポイントおいて実行
ブレークしたら呼び出し履歴を確認する
2018/05/22(火) 17:11:30.57ID:svO22mue0
>>809
Debugで確認していったらどうもインスタンスの参照を渡せていないようです。
Debugで確認していったらどうもインスタンスの参照を渡せていないようです。
2018/05/22(火) 17:12:13.75ID:svO22mue0
public partial class Form1 : Form
{
Form2 form2;
Class1 class1;
public Form1()
{
InitializeComponent();
form2 = new Form2();
form2.Show();
class1 = new Class1();
form2.Pointer = class1;
}
}
{
Form2 form2;
Class1 class1;
public Form1()
{
InitializeComponent();
form2 = new Form2();
form2.Show();
class1 = new Class1();
form2.Pointer = class1;
}
}
2018/05/22(火) 17:12:47.68ID:svO22mue0
public partial class Form2 : Form
{
Class1 class1;
public Class1 Pointer
{
set
{
class1 = value;
}
}
public Form2()
{
InitializeComponent();
int i = class1.fuga();
MessageBox.Show(i.ToString());
}
}
{
Class1 class1;
public Class1 Pointer
{
set
{
class1 = value;
}
}
public Form2()
{
InitializeComponent();
int i = class1.fuga();
MessageBox.Show(i.ToString());
}
}
2018/05/22(火) 17:13:21.01ID:svO22mue0
public class Class1
{
public int hoge = 2222;
public int fuga()
{
return hoge;
}
}
{
public int hoge = 2222;
public int fuga()
{
return hoge;
}
}
2018/05/22(火) 17:16:54.99ID:svO22mue0
Form2で
int i = class1.fuga();
みたいなclass1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。
Form2にclass1の参照をきちんと渡せていないようなのですが、どこが悪いんでしょう・・・。
int i = class1.fuga();
みたいなclass1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。
Form2にclass1の参照をきちんと渡せていないようなのですが、どこが悪いんでしょう・・・。
2018/05/22(火) 17:33:33.27ID:2EZjLjzja
2018/05/22(火) 17:34:55.39ID:oCYWBo6GM
806から811で全然別物の質問になってるんだけど
Form1のコンストラクタの先頭とForm2のコンストラクタの先頭にそれぞれブレークポイントおいて
ブレークしたらF10キー1行ずつステップオーバーしていって
どういう順番で実行されてるか確認
Form1のコンストラクタの先頭とForm2のコンストラクタの先頭にそれぞれブレークポイントおいて
ブレークしたらF10キー1行ずつステップオーバーしていって
どういう順番で実行されてるか確認
2018/05/22(火) 20:59:34.16ID:36NNq4u4M
うるせーな一度答えると決めたら最後までニコニコヅラで相手しろよクソハゲ
2018/05/22(火) 21:22:06.95ID:sZHy65Kr0
2018/05/22(火) 21:56:59.84ID:nVwte2qB0
2018/05/23(水) 00:14:46.31ID:IEWpo6Tg0
>>819
ありがとうございます。m(__)m
その通りでした。
一個づつ追っていけば分かるはずなんですけど、
自分では思い込みがあって気づきませんでした。
本当に助かりました。
ありがとうございました。
ありがとうございます。m(__)m
その通りでした。
一個づつ追っていけば分かるはずなんですけど、
自分では思い込みがあって気づきませんでした。
本当に助かりました。
ありがとうございました。
2018/05/23(水) 00:17:07.19ID:IEWpo6Tg0
>>815
すいません。
文章の書き方が悪かったです。
812の下から4行目のように
Form2で
int i = class1.fuga();
class1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。
と書くべきでした。
すいません。
文章の書き方が悪かったです。
812の下から4行目のように
Form2で
int i = class1.fuga();
class1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。
と書くべきでした。
2018/05/23(水) 00:18:47.23ID:IEWpo6Tg0
>>816
これまたすいません、ブレークポイントで見て言ったら画面の生成順は問題ないことが分かって、
インスタンスの参照が渡っていないことが原因と分かり。811-813みたいな最小コードで実験してました。
これまたすいません、ブレークポイントで見て言ったら画面の生成順は問題ないことが分かって、
インスタンスの参照が渡っていないことが原因と分かり。811-813みたいな最小コードで実験してました。
823デフォルトの名無しさん (ワッチョイ 75eb-/w+O)
2018/05/23(水) 10:08:41.93ID:N3UaVe1J0 中学生ぐらいだったら教えてやってもいいけど、あんたいくつよ?
824デフォルトの名無しさん (ワッチョイ 76e8-HRP5)
2018/05/23(水) 10:10:09.13ID:QWeWgJFJ0 不安なメソッド内じゃ全部TryCatchで囲っちゃった方が良いです?
2018/05/23(水) 10:18:50.74ID:Mh8q82UX0
catch内で例外を握りつぶせば完璧
2018/05/23(水) 13:00:21.42ID:mO/AejLg0
メインの処理全体をtry~catchで括るだけさ。
2018/05/23(水) 18:48:37.98ID:hVcgEIrnM
ジェネリクスのListやHashSetを良く使うのですが、これで用が足りてしまうので自作までしたことありません
出来る企業や個人はバリバリ自作するのでしょうか
出来る企業や個人はバリバリ自作するのでしょうか
2018/05/23(水) 19:00:48.43ID:iQ1n/QEKM
2018/05/23(水) 23:29:00.27ID:l9NA/114M
ありもの使う方が良いと思うよ
2018/05/24(木) 00:22:57.92ID:Pwy3p0jE0
ありものでどうしても駄目な理由がある場合のみ、仕方なく自作だわね
2018/05/24(木) 00:28:40.71ID:crQGHj+ea
>>830
それも注意が必要だけどね
視野狭窄な小手先の技術に拘るプログラマは、くだらない問題に拘って「どうしても駄目だ」と思い込む(思い込もうとする)傾向がある
大抵そういうケースでは、視野を広げるとそもそも無理に手間をかけてまで解決する必要のない問題であることが多い
それも注意が必要だけどね
視野狭窄な小手先の技術に拘るプログラマは、くだらない問題に拘って「どうしても駄目だ」と思い込む(思い込もうとする)傾向がある
大抵そういうケースでは、視野を広げるとそもそも無理に手間をかけてまで解決する必要のない問題であることが多い
2018/05/24(木) 00:36:35.91ID:O9jHVcOl0
Dictionary クラスを継承して使いたくて、
これの各種インターフェイスを実装した中身 Dictionary クラスのラッパーを作った事あるなあ。
今思えば若かった。
これの各種インターフェイスを実装した中身 Dictionary クラスのラッパーを作った事あるなあ。
今思えば若かった。
2018/05/24(木) 07:54:06.51ID:YzRB3Rzod
2018/05/24(木) 14:34:00.01ID:q7DgX+HL0
たいていは英語力の無さに原因があるんだよな。
その機能を見つけられないとかだからさ。
その機能を見つけられないとかだからさ。
2018/05/24(木) 15:02:55.06ID:AHiLgPdDM
コンソールアプリです。
今までに自分が吐き出した標準出力を自分で取得する事は可能でしょうか?
このアプリ(A)は主に他のアプリ(B)から実行されることを想定しています。Aは普通にConsole.WriteLineで出力し、BがProcess.StandardOutput.ReadToEndで取得、ログを残します。
A単体で実行してログも残したい要求があります。 Console.WriteLineと同時にファイルに出力すればいいのですが、最後に一括で取得できればスマートかなと思ったのですが、いかがでしょうか?
今までに自分が吐き出した標準出力を自分で取得する事は可能でしょうか?
このアプリ(A)は主に他のアプリ(B)から実行されることを想定しています。Aは普通にConsole.WriteLineで出力し、BがProcess.StandardOutput.ReadToEndで取得、ログを残します。
A単体で実行してログも残したい要求があります。 Console.WriteLineと同時にファイルに出力すればいいのですが、最後に一括で取得できればスマートかなと思ったのですが、いかがでしょうか?
2018/05/24(木) 16:59:57.59ID:B2m5C+ouM
>>835
ウィンドウアプリです
ウィンドウアプリです
2018/05/24(木) 17:02:19.57ID:q7DgX+HL0
両方に出力する関数作って、その関数に置き換える事すら出来ない無能に何をアドバイスしろと?
2018/05/24(木) 17:11:45.68ID:iQu+wqIP0
Windowsで使えるteeコマンド探した方が早いんじゃねえか
2018/05/24(木) 17:19:25.14ID:EdBeTbDkM
PowerShellならデフォルトで用意されてるよ!>tee
2018/05/24(木) 17:19:52.49ID:AHiLgPdDM
2018/05/24(木) 19:35:28.68ID:MnVBsXE4d
TraceSource
2018/05/24(木) 20:33:40.60ID:hof73DG2a
正直何言ってるのかよく分からんけど、普通にリダイレクトするだけのような...
っていうか、普通はコマンドライン引数で出力先を切り替えるように作ると思うんだけど...
っていうか、普通はコマンドライン引数で出力先を切り替えるように作ると思うんだけど...
2018/05/24(木) 23:35:59.30ID:iQu+wqIP0
>>839
へえ知らなかったな
へえ知らなかったな
2018/05/25(金) 00:27:44.75ID:j/dB1L1+0
PowerShellはもっと流行るべき
2018/05/25(金) 00:39:09.38ID:N3c6aWbUa
PowerShellとか罰ゲームだろ
インタラクティブシェルとしては悪くないけど、まとまったスクリプト書こうとすると大嫌いになる
Add-TypeでインラインでC#書いたほうがマシだわ
特にC#erはソースの見た目がなんとなく似てるだけに地獄を見るんだよ
インタラクティブシェルとしては悪くないけど、まとまったスクリプト書こうとすると大嫌いになる
Add-TypeでインラインでC#書いたほうがマシだわ
特にC#erはソースの見た目がなんとなく似てるだけに地獄を見るんだよ
2018/05/25(金) 12:59:33.01ID:RzxaIECOd
>>842
名前付パイプでOkだよな
名前付パイプでOkだよな
2018/05/26(土) 00:52:48.69ID:grpyMBkE0
アプリ側で完結してないと、スクリプト操作とか変なバッチ叩かせてアプリ起動とか怪し過ぎるだろ。
業務アプリじゃねーんだw
業務アプリじゃねーんだw
2018/05/28(月) 00:24:44.02ID:2eqT73MR0
if (-100 <= clickPointXTemp && clickPointXTemp <= 100)
{
clickPointX[clickNumber] = clickPointXTemp;
MessageBox.Show(clickPointX[clickNumber].ToString() + "%");
MessageBox.Show(clickPointX[0].ToString() + "%");
MessageBox.Show(clickPointX[1].ToString() + "%");
MessageBox.Show(clickPointX[2].ToString() + "%");
clickNumber++;
}
{
clickPointX[clickNumber] = clickPointXTemp;
MessageBox.Show(clickPointX[clickNumber].ToString() + "%");
MessageBox.Show(clickPointX[0].ToString() + "%");
MessageBox.Show(clickPointX[1].ToString() + "%");
MessageBox.Show(clickPointX[2].ToString() + "%");
clickNumber++;
}
2018/05/28(月) 00:29:53.74ID:2eqT73MR0
クリックしてカーソルが-100<=clickPointXTemp<=100の位置にあるときに配列にその値を代入させているのですが、
クリックするとその場で配列に代入できても次のクリックで0になってしまいます。
1回目クリック
clickPointXTemp=10
[0]=10
[1]=0
[2]=0
2回目クリック
clickPointXTemp=30
[0]=0
[1]=30
[2]=0
2回目クリック
clickPointXTemp=100
[0]=0
[1]=0
[2]=100
なんでだろ・・・。
クリックするとその場で配列に代入できても次のクリックで0になってしまいます。
1回目クリック
clickPointXTemp=10
[0]=10
[1]=0
[2]=0
2回目クリック
clickPointXTemp=30
[0]=0
[1]=30
[2]=0
2回目クリック
clickPointXTemp=100
[0]=0
[1]=0
[2]=100
なんでだろ・・・。
2018/05/28(月) 00:30:12.40ID:2eqT73MR0
5時間ぐらい悩み中。。。
851デフォルトの名無しさん (アウアウカー Sa95-9DOT)
2018/05/28(月) 00:33:24.89ID:SRIgyUF4a データベースを使わないで、インデックスが共通する複数のデータ配列を作りたいときってどういう風な実装が最適なんでしょうか
var A = new int[x]
var B = new int[x]
var C = new int[x]
・
・
・
var E = new int[x]
みたいな感じです
var A = new int[x]
var B = new int[x]
var C = new int[x]
・
・
・
var E = new int[x]
みたいな感じです
2018/05/28(月) 00:33:25.48ID:MfVpzBU40
スコープが原因だろうから全体のソース出さないとエスパーだらけの回答になるよ
2018/05/28(月) 01:08:05.78ID:dlEIDhlNa
>>851
struct Hoge
{
int A;
int B;
int C;
int D;
int E;
}
....
var hogeArray = new Hoge[100];
struct Hoge
{
int A;
int B;
int C;
int D;
int E;
}
....
var hogeArray = new Hoge[100];
854デフォルトの名無しさん (アウアウカー Sa95-9DOT)
2018/05/28(月) 07:52:50.79ID:Mf7CKKuIa855デフォルトの名無しさん (オッペケ Sr05-cS+N)
2018/05/28(月) 12:27:04.88ID:YifI+gJdr 誰か>>852のエスパーたのむ
2018/05/28(月) 13:02:33.05ID:PWPrnTKxM
>>848-849へのレスだろ
2018/05/28(月) 13:47:49.05ID:i/nkRhbIM
2018/05/28(月) 15:55:38.64ID:W2eXy6T5M
エスパー能力ないと5chはこなせない
2018/05/28(月) 20:32:45.18ID:0z7zyrSed
複数のクラスで共通の変数定数を外出しして、
その変数クラスを継承するのって良し悪しで言うとどうでしょうか
is aなのかちと微妙な感じです
内臓名クラスを継承して動物クラスを作ってるような
has aなのでオブジェクトとして渡すべきですか?
その変数クラスを継承するのって良し悪しで言うとどうでしょうか
is aなのかちと微妙な感じです
内臓名クラスを継承して動物クラスを作ってるような
has aなのでオブジェクトとして渡すべきですか?
2018/05/28(月) 21:46:19.79ID:rs0fZbm/M
>>859
共通の変数などという低い抽象度でクラス設計を考えるのがそもそも間違ってる
実装からクラスを考えると必ず破綻するから、君の今の考え方のまま進む限りはいかなる選択肢も不正解
とはいえ最初から抽象度を上げて設計しろといっても初心者には無理な話だから、気にせず自分の思うように作ればいい
一通りモノ作れるようになったらオブジェクト指向モデリングの書籍を読むことをお勧めする
共通の変数などという低い抽象度でクラス設計を考えるのがそもそも間違ってる
実装からクラスを考えると必ず破綻するから、君の今の考え方のまま進む限りはいかなる選択肢も不正解
とはいえ最初から抽象度を上げて設計しろといっても初心者には無理な話だから、気にせず自分の思うように作ればいい
一通りモノ作れるようになったらオブジェクト指向モデリングの書籍を読むことをお勧めする
2018/05/28(月) 21:51:33.12ID:I0m/gtVC0
オブジェクト指向プログラミングしない方がいいもの作れるよ
関数で組む方法を極めた方がいい
関数で組む方法を極めた方がいい
2018/05/28(月) 21:56:33.33ID:dVAXJXVu0
2018/05/28(月) 22:18:11.40ID:rs0fZbm/M
2018/05/28(月) 22:21:17.59ID:dVAXJXVu0
>>863
キーワード提供、感謝しています
キーワード提供、感謝しています
2018/05/29(火) 12:48:47.90ID:dUPfr/v4M
どのプログラム言語を選ぶかでオブジェクト指向モデルの実現方法がかなり違う
2018/05/29(火) 12:57:47.07ID:Xt8fAcdVa
>>863の本くらいの抽象度になると実装方法にはほとんど依存しないよ
それどころかオブジェクト指向モデルすらも方法論全体の中では下層の方に位置付けられる
それどころかオブジェクト指向モデルすらも方法論全体の中では下層の方に位置付けられる
2018/05/29(火) 19:04:25.63ID:QoecqRn60
とりあえず入門レベルが終わったんだけど次はeffective c#4.0っての読めばいいですか?
2018/05/29(火) 19:05:12.69ID:upesQ40yM
6.0 7.0のでてるからそっちでいいよ
2018/05/29(火) 19:28:28.39ID:QoecqRn60
more effective C# 6.0 7.0ですか?
moreとついてるので前の本を読む必要があるかと思っていたんですが大丈夫そうならそちらを購入しようかと思います
moreとついてるので前の本を読む必要があるかと思っていたんですが大丈夫そうならそちらを購入しようかと思います
870デフォルトの名無しさん (ワッチョイ fb8a-HY9j)
2018/05/29(火) 21:07:37.85ID:FUNbZ4ty0 フォーム間でのデータのやりとりはどうするのが一般的なのでしょうか?
例えば、Form2の表示と同時に、Form1に入力済みのデータをForm2に表示させる場合、今は以下のようにしています。
class Form1
{
public object Data{get; set;}
var form2 = new Form2();
form2.Parent = this;
}
class Form2
{
public Form Parent{get; set;}
Load()
{
this.Data = Parent.Data;
}
}
例えば、Form2の表示と同時に、Form1に入力済みのデータをForm2に表示させる場合、今は以下のようにしています。
class Form1
{
public object Data{get; set;}
var form2 = new Form2();
form2.Parent = this;
}
class Form2
{
public Form Parent{get; set;}
Load()
{
this.Data = Parent.Data;
}
}
2018/05/29(火) 21:31:23.00ID:T0OOxyUA0
>>870
一般的とかいいやりかたって聞かれると逆に難しいんで自分のやりやすい形で
https://dobon.net/vb/dotnet/form/accessanotherformdata.html
コンストラクタやメソッドの引数でも渡せるし
一般的とかいいやりかたって聞かれると逆に難しいんで自分のやりやすい形で
https://dobon.net/vb/dotnet/form/accessanotherformdata.html
コンストラクタやメソッドの引数でも渡せるし
2018/05/29(火) 22:26:37.07ID:LfCUNSAB0
>>869
Apressお勧め
Apressお勧め
873デフォルトの名無しさん (ワッチョイ 13d2-XWWR)
2018/05/29(火) 22:58:12.01ID:G7p9dius02018/05/29(火) 23:11:52.08ID:5CF0lkGw0
ビジュアルスタジオでC#使ってると、どんどんコードスタイルが簡略化されていくんだよな。
2018/05/30(水) 13:41:56.71ID:Bf3z8rw50
SocketクラスのBeginConnectとかBeginReceiveとかに渡すコールバック関数を
staticで書いてあるのとそうでないのと両方見かけるんですけど
どっちが良いんでしょう?
staticで書いてあるのとそうでないのと両方見かけるんですけど
どっちが良いんでしょう?
2018/05/30(水) 14:44:18.44ID:LltEUg5c0
まあ、C#ならコールバックは登録解除を明示的に行うからスタティックである必要は無いけどな。
でもこれがイベントハンドラからのデリゲートなら話は別だ。
でもこれがイベントハンドラからのデリゲートなら話は別だ。
2018/05/30(水) 14:47:38.89ID:WVM+AecNM
>>875
そのSocketオブジェクトに合わせるのが正解
Socketを生で使うサンプルってスキルの低い業務ドカタが書いてたり書かれた時代が古かったりすることが多いので、
C#をよく理解してなくてCやVBの感覚でstaticにしないといけないと思ってるようなのが多い
そのSocketオブジェクトに合わせるのが正解
Socketを生で使うサンプルってスキルの低い業務ドカタが書いてたり書かれた時代が古かったりすることが多いので、
C#をよく理解してなくてCやVBの感覚でstaticにしないといけないと思ってるようなのが多い
2018/05/30(水) 15:03:40.50ID:Bf3z8rw50
2018/05/31(木) 15:19:11.21ID:AbqPsR3A0
TextBoxか、MaskedTextBoxに単位をつけたい。
小数点有りや無し、-の数値を入力できたりするものってできますか?
-2℃
14℃
25.5℃
2.5℃
小数点有りや無し、-の数値を入力できたりするものってできますか?
-2℃
14℃
25.5℃
2.5℃
2018/05/31(木) 18:15:14.92ID:Zw7Yk0+cM
テキストボックスの横にラベルで単位でも書いておこうぜ
□㌕
□㌕
2018/05/31(木) 18:16:46.93ID:Zw7Yk0+cM
小数点は
□.□㌕
な
□.□㌕
な
2018/05/31(木) 19:19:02.19ID:0ajP7AA9a
>>879
TextBoxクラスを継承
TextBoxクラスを継承
2018/05/31(木) 20:26:49.48ID:9/5XjJFR0
2018/05/31(木) 21:28:20.09ID:ygkZdVXVM
2018/06/01(金) 09:05:55.18ID:azdekr4p0
説明不足ごめんなさい。
出力ですが、最終的にはTextBoxの枠ごと印刷したいと考えております。
883の言う単位の入力補完だと思います。
MaskedTextBoxのマスクに####℃と記入し、
「-24.4」等のデータをデータベースから取り出して、入れたところMaskedTextBox.Textが244℃となってしまいました。
このテキストボックスを小数点有りの場合、なしの場合、負の符号が有りの場合なしの場合、「----」の場合、
1桁から5桁+「℃」としてTextBox.Textに出力したいと考えております。
できますか?
出力ですが、最終的にはTextBoxの枠ごと印刷したいと考えております。
883の言う単位の入力補完だと思います。
MaskedTextBoxのマスクに####℃と記入し、
「-24.4」等のデータをデータベースから取り出して、入れたところMaskedTextBox.Textが244℃となってしまいました。
このテキストボックスを小数点有りの場合、なしの場合、負の符号が有りの場合なしの場合、「----」の場合、
1桁から5桁+「℃」としてTextBox.Textに出力したいと考えております。
できますか?
2018/06/01(金) 09:13:09.12ID:gkm5sPLjM
TextBoxクラスを継承して自前で実装すればできる
2018/06/01(金) 09:47:05.22ID:czZmZo8za
TextBoxクラスを継承してTextプロパティを上書き
書式とか単位を属性に持たせれば汎用的に使える。
コピペされたときの場合も考慮すること
書式とか単位を属性に持たせれば汎用的に使える。
コピペされたときの場合も考慮すること
2018/06/01(金) 09:58:02.26ID:azdekr4p0
ありがとうございます。
なんとなく、それっぽいものが作れそうです。
なんとなく、それっぽいものが作れそうです。
2018/06/01(金) 10:22:08.86ID:XLd38QjBM
ユーザーコントロールでボーダーなしテキストボックスとラベル並べた方が楽な気がする
2018/06/01(金) 18:06:59.69ID:TnI3eVXu0
テキストボックスの描画や挙動を弄るの面倒くさいから汎用性を求めるんなら InputMan 買った方がいいよ
2018/06/01(金) 18:10:44.74ID:UBye49NJM
ライセンスとかテクリスとか面倒だから買わない
2018/06/01(金) 18:21:51.24ID:S7DUtxKdM
NuGetで参照できるオープンソースのWinFormsリッチコンポーネントって何が有名なの?
2018/06/01(金) 20:17:26.63ID:dZV2tAFxM
nugetは俺の鬼門
2018/06/01(金) 21:28:02.83ID:naL+ZRGN0
僕の半蔵門
895デフォルトの名無しさん (ワッチョイ fae3-mRcc)
2018/06/01(金) 23:18:54.61ID:fWGAwsr30 前門の虎 肛門の狼
896デフォルトの名無しさん (ワッチョイ d103-Y2aB)
2018/06/02(土) 00:25:46.86ID:A4SZL/oE0 寒っ
2018/06/02(土) 10:06:40.82ID:QJbZaU5f0
c#で穴ぼこメモリにしないように組むのって不可能?
2018/06/02(土) 10:27:51.87ID:nL4AUV2I0
可能だが、規模によっては現実的でない
パフォーマンスを気にするなら、別にボトルネックが存在していないかを見直す方が先
パフォーマンスを気にするなら、別にボトルネックが存在していないかを見直す方が先
2018/06/02(土) 10:30:12.89ID:rvy10L9Oa
OSの仕事
どうしても嫌でデカいbyte配列確保して中に文字や数字全部入れても無駄
どうしても嫌でデカいbyte配列確保して中に文字や数字全部入れても無駄
2018/06/02(土) 10:40:30.36ID:QJbZaU5f0
2018/06/02(土) 10:42:11.98ID:1ZPJADB4M
GCが勝手に詰めてくれるから気にしなくていい
ただし巨大なオブジェクトは専用の領域があって移動されないので断片化されやすいから注意
ただし巨大なオブジェクトは専用の領域があって移動されないので断片化されやすいから注意
2018/06/02(土) 11:05:50.81ID:msgJi+IZM
Spanとstackallocで我慢しなさい
2018/06/02(土) 11:10:29.54ID:rvy10L9Oa
2018/06/02(土) 11:12:27.29ID:msBkLZBc0
DMAが僕を呼んでいるから
2018/06/02(土) 11:18:59.70ID:J1HVezEsH
2018/06/02(土) 11:42:21.94ID:gRqFSsBQa
OSでメモリはブロックなどで管理されていて要求があったら
要求サイズに合わせてそのブロックの中のさらに細かいブロックなどを払いだしてる
こっちがどうしようとOSでブロックを作ってその中でやりくりしてる
例えそのブロックの中で断片化していて何か不都合あるのか?
要求サイズに合わせてそのブロックの中のさらに細かいブロックなどを払いだしてる
こっちがどうしようとOSでブロックを作ってその中でやりくりしてる
例えそのブロックの中で断片化していて何か不都合あるのか?
2018/06/02(土) 14:08:09.74ID:65ghWvPg0
使う予定の最大量の倍の空きメモリーあれば大体は気にならない。
いまどきのパソコンはアプリが使いたいメモリーサイズの数百倍は有るから気にするな。
いまどきのパソコンはアプリが使いたいメモリーサイズの数百倍は有るから気にするな。
2018/06/02(土) 14:25:15.68ID:QJbZaU5f0
リークしてると1ヶ月ぐらいで死ぬじゃん
現状自分でメモリ管理しないとどこで何が確保されてるのかわからないわけで
そういうの確実に管理したいときはc言語のがいいのかなぁ?と
現状自分でメモリ管理しないとどこで何が確保されてるのかわからないわけで
そういうの確実に管理したいときはc言語のがいいのかなぁ?と
2018/06/02(土) 14:34:09.78ID:gayBoTaI0
極めて厳密に管理したいならC/C++でアロケータを自前で書くというのはあり得る
しかしリークという点ではC#よりC/C++の方が遥かにやっちまい易いので, メモリ安全を確保する目的でC/C++で書くのは本末転倒のように思う
しかしリークという点ではC#よりC/C++の方が遥かにやっちまい易いので, メモリ安全を確保する目的でC/C++で書くのは本末転倒のように思う
2018/06/02(土) 14:39:58.23ID:I3vJQFJE0
リーク前提とかバカでしょ
911デフォルトの名無しさん (ワッチョイ 7a8a-sZ2J)
2018/06/02(土) 15:01:44.21ID:fV6b9MUi0 List#Containsの重複判定基準をEquals以外にすることはできないでしょうか?
ListにしたいクラスのEqualsが、別の目的用にオーバーライドされている為、Equalsを使うことができません。
ListにしたいクラスのEqualsが、別の目的用にオーバーライドされている為、Equalsを使うことができません。
2018/06/02(土) 15:43:20.19ID:QJbZaU5f0
>>909
c#は現在実行中のアプリのインスタンスを確認する方法はあるの?
c#は現在実行中のアプリのインスタンスを確認する方法はあるの?
2018/06/02(土) 15:47:01.32ID:XUNevU9ma
2018/06/02(土) 15:54:54.04ID:XUNevU9ma
まあ、Exists使うだけだよね
2018/06/02(土) 16:03:39.22ID:nL4AUV2I0
>>908
Webサービスか何かを想定してる?
だったらコーディングで対応するんでなく、ロードバランサで複数のアプリケーションサーバに振り分けて
サービスが止まらない様にしつつ、一部のサーバをオンメンテでリブートすべし
Webサービスか何かを想定してる?
だったらコーディングで対応するんでなく、ロードバランサで複数のアプリケーションサーバに振り分けて
サービスが止まらない様にしつつ、一部のサーバをオンメンテでリブートすべし
2018/06/02(土) 16:05:51.99ID:wt7oIb0Vp
C#スレでメモリーリークを心配するとか、どんだけ無能なんだよ。
2018/06/02(土) 16:12:14.89ID:5ltA6BNw0
普通はリークで死ぬ前にGen2GC連発して性能ガタ落ちになるんじゃ
どんだけ握ってんだよと
どんだけ握ってんだよと
2018/06/02(土) 18:04:04.45ID:QJbZaU5f0
実際にメモリリークが起こらないように気をつける術は昔ながらの方法しかない?
プロジェクトでnewするときはインスタンスマネージャー的なのを通して
可能な限りインスタンスを監視するとかそんなの?
プロジェクトでnewするときはインスタンスマネージャー的なのを通して
可能な限りインスタンスを監視するとかそんなの?
2018/06/02(土) 18:17:48.36ID:msgJi+IZM
マトモなコードを書くだけ
2018/06/02(土) 19:01:19.50ID:pCnJrSzQd
メモリリークさせようと思わないとなかなかできんよ
2018/06/02(土) 19:11:03.61ID:1ZPJADB4M
>>918
一時的なオブジェクトはもう必要ないなら握りっぱなしにしないで即座に使い捨てること
中途半端に握りっぱなしにしてるとGCの世代か昇格してメモリ使用量の増加やGCのパフォーマンス低下の原因になる
一方、単寿命オブジェクトのGCは爆速なので、newしたら積極的にすぐ放置すべき
一時的なオブジェクトはもう必要ないなら握りっぱなしにしないで即座に使い捨てること
中途半端に握りっぱなしにしてるとGCの世代か昇格してメモリ使用量の増加やGCのパフォーマンス低下の原因になる
一方、単寿命オブジェクトのGCは爆速なので、newしたら積極的にすぐ放置すべき
2018/06/02(土) 19:16:06.36ID:1ZPJADB4M
>>911
Any
Any
2018/06/02(土) 19:21:44.73ID:I3vJQFJE0
C#でメモリリークさせるコード書く奴がC/C++で無くせるとは到底思えないわ
2018/06/02(土) 19:25:12.19ID:QJbZaU5f0
>>921
うーん
爆速ではないなぁ
3分に1回動かしてる処理があるんだけど
強制GCせずにずっと動かしてるとき
メモリ使用量がかなりあがった状態でGCが動くと
3分に一度の処理のタイミングがズレちゃうんだよね
そこで強制GCも十分に一度ぐらいの頻度で動かしてる状態
うーん
爆速ではないなぁ
3分に1回動かしてる処理があるんだけど
強制GCせずにずっと動かしてるとき
メモリ使用量がかなりあがった状態でGCが動くと
3分に一度の処理のタイミングがズレちゃうんだよね
そこで強制GCも十分に一度ぐらいの頻度で動かしてる状態
2018/06/02(土) 19:29:07.89ID:pCnJrSzQd
だめだこいつ
2018/06/02(土) 19:31:42.56ID:QJbZaU5f0
>>925
なんかいい方法あるんですか?
なんかいい方法あるんですか?
927デフォルトの名無しさん (アウアウカー Sa5d-SvXf)
2018/06/02(土) 19:37:34.74ID:KX6MAuAea ちゃんと設計してればC#でメモリーリークなんて気にすることなんてあるか?
そんなガバガバ設計してるやつがCだったら大丈夫なんだけど、って馬鹿な話誰が信じるよ
そんなガバガバ設計してるやつがCだったら大丈夫なんだけど、って馬鹿な話誰が信じるよ
2018/06/02(土) 19:45:14.53ID:msgJi+IZM
2018/06/02(土) 20:14:13.22ID:fh+k246w0
以降放置でお願いいたします
2018/06/02(土) 20:28:22.93ID:iRadbqpq0
>メモリーリークなんて気にすること
ページフォルトを気にしないヴァカっていたな。
リークしていないが累積しすぎたページフォルトがOSを殺す
ページフォルトを気にしないヴァカっていたな。
リークしていないが累積しすぎたページフォルトがOSを殺す
2018/06/02(土) 20:30:41.21ID:+/nRHGaPa
C#でリークやらかす奴がC/C++でやらかさない道理がない
2018/06/02(土) 20:31:22.14ID:eSvYHUXNM
こいつもトンチキなので放置でいいです
2018/06/02(土) 20:50:00.44ID:wt7oIb0Vp
まあ、でもC#はメモリー管理を隠蔽しちゃったから、実はCやC++よりメモリー管理しにくいんだよな。
2018/06/02(土) 20:58:18.57ID:msgJi+IZM
C++出身のC#初心者にありがちだね
2018/06/02(土) 21:10:12.98ID:u/NNd5OV0
未確認飛行のSpan説明みてサンプルコード動かそうとしたんだけど
using System.Memory;すると
CS0305ジェネリック種類 'Memory<T>' を使用するには、1 型引数が必要です。
って叱られるのなんで?
VSもCoreも最新
using System.Memory;すると
CS0305ジェネリック種類 'Memory<T>' を使用するには、1 型引数が必要です。
って叱られるのなんで?
VSもCoreも最新
2018/06/02(土) 21:20:59.23ID:msgJi+IZM
SpanはSystem.Spanだ
2018/06/02(土) 21:33:12.83ID:u/NNd5OV0
System.Spanにしてもでてきおる
using static System.Memory<string>;
ってするとエラーは消えた
using static System.Memory<string>;
ってするとエラーは消えた
2018/06/03(日) 17:57:54.97ID:nwnHFAsS0
フォームアプリでマウスクリックでイベントをはっせいさせているのですが、
ある処理ループの実行中はこのクリックイベントの割り込み発生を禁止させたいです。
マウスクリック割り込みイベントを無効化、有効化する方法ってないでしょうか?
ある処理ループの実行中はこのクリックイベントの割り込み発生を禁止させたいです。
マウスクリック割り込みイベントを無効化、有効化する方法ってないでしょうか?
2018/06/03(日) 18:03:05.41ID:acSSis/XM
>>937
そうじゃないusing System;ってこと
そうじゃないusing System;ってこと
2018/06/03(日) 18:05:10.81ID:5sPxkTAt0
941デフォルトの名無しさん (アウアウカー Sa5d-SvXf)
2018/06/03(日) 18:07:49.08ID:qpwWeWwga2018/06/03(日) 18:08:39.42ID:imVGa92Ya
2018/06/03(日) 18:26:12.78ID:y7bK61pJa
処理中フラグ持っておいて
クリックイベントの入り口で処理中ならreturnするのでよくない?
bool 処理中=false;
クリックイベントの頭
if(処理中)return;
クリックイベントの入り口で処理中ならreturnするのでよくない?
bool 処理中=false;
クリックイベントの頭
if(処理中)return;
2018/06/03(日) 18:33:27.61ID:3EuqECGs0
lockで囲めば
2018/06/03(日) 18:43:15.37ID:acSSis/XM
ボタンからしか起動しない処理だと保証されてるなら-=+=でもフラグでもいいが
そうでないなら真面目に並列処理管理しないとね
そうでないなら真面目に並列処理管理しないとね
2018/06/03(日) 18:59:01.85ID:4vwgZnFjp
はあ?
クリックイベント自体を抑止したのか?
意味あるの?
クリックイベント自体を抑止したのか?
意味あるの?
2018/06/03(日) 19:18:23.10ID:bhcyF/oUa
処理ループの中でメッセージループを実装してGetMessage()でマウスイベントをフィルターかな?或いは読み捨てる
2018/06/03(日) 20:09:50.51ID:pjD3SZS60
え、連打対策してないの?
949デフォルトの名無しさん (アウアウカー Sa5d-SvXf)
2018/06/03(日) 20:15:38.36ID:OWt1glR4a 非同期で実行した場合とかの抑止とか?とエスパー
2018/06/03(日) 20:19:01.20ID:S4J0YpoT0
>>939
つまりSpanを使うのにusing System;さえすればいいってこと?
ごめんな、クソ素人過ぎて質問がまずいのか
http://ufcpp.net/study/csharp/resource/span/の
var s = "abcあいう亜以宇";
var sub = s.Substring(3, 3);
var span = s.AsReadOnlySpan().Slice(3, 3);
for (int i = 0; i < 3; i++)
{
Console.WriteLine((sub[i], span[i])); // あ、い、う が2つずつ表示される
}
を試したいんだけど、できないって話なんだ
つまりSpanを使うのにusing System;さえすればいいってこと?
ごめんな、クソ素人過ぎて質問がまずいのか
http://ufcpp.net/study/csharp/resource/span/の
var s = "abcあいう亜以宇";
var sub = s.Substring(3, 3);
var span = s.AsReadOnlySpan().Slice(3, 3);
for (int i = 0; i < 3; i++)
{
Console.WriteLine((sub[i], span[i])); // あ、い、う が2つずつ表示される
}
を試したいんだけど、できないって話なんだ
2018/06/03(日) 20:26:16.06ID:klvCZP9p0
2018/06/03(日) 20:50:59.76ID:H2Gh+VvdM
>>950
現時点ではAsReadOnlySpanが存在しないっぽいね
Stringはもともと読み取り専用だからAsSpanでReadOnlySpanになるってことだと思うけど
過渡期の記事はそのまま鵜呑みにしない方がいいぞ
現時点ではAsReadOnlySpanが存在しないっぽいね
Stringはもともと読み取り専用だからAsSpanでReadOnlySpanになるってことだと思うけど
過渡期の記事はそのまま鵜呑みにしない方がいいぞ
2018/06/03(日) 21:25:48.86ID:nwnHFAsS0
2018/06/03(日) 21:26:28.88ID:nwnHFAsS0
2018/06/03(日) 21:27:58.09ID:nwnHFAsS0
>>948
おっしゃる通りで、連打対策必要だったんですね。
フォームアプリだと必須の対策なんですね。
他で少し変な挙動してたのは連打対策してなかったことが原因のようです。
連打対策してみます。
というか、どうやればいいんだろ。
また、お勉強しなければ。
おっしゃる通りで、連打対策必要だったんですね。
フォームアプリだと必須の対策なんですね。
他で少し変な挙動してたのは連打対策してなかったことが原因のようです。
連打対策してみます。
というか、どうやればいいんだろ。
また、お勉強しなければ。
2018/06/03(日) 21:42:26.87ID:0r68Qt9D0
2018/06/03(日) 21:51:01.95ID:imVGa92Ya
2018/06/03(日) 21:56:36.02ID:imVGa92Ya
そもそもUIのデザイン論なんて大げさな話じゃなくても、
ユーザーの捜査に反応できない文脈では何らかの方法(通常はグレイアウト)でそれを
ユーザーに対して明示しないUIは問題あるでしょうww
そんなことにも思い至らない回答者は無視していいよw
ユーザーの捜査に反応できない文脈では何らかの方法(通常はグレイアウト)でそれを
ユーザーに対して明示しないUIは問題あるでしょうww
そんなことにも思い至らない回答者は無視していいよw
2018/06/03(日) 22:53:07.14ID:S4J0YpoT0
>>952
ありがとう、そういうこともあるんだな
勉強になった
10Gくらいの固定長テキストファイルから一行ずつ読み取って
最初の1-10文字はUSER ID、11はSEX・・・って分けてdbに突っ込んでるんだけど
StringBuilderでLength=0しつつappendするくらいじゃ、stringでsubstringするのとあまり変わらなかったんで
Span使えばマシになるのかなと思ったんだ
ありがとう、そういうこともあるんだな
勉強になった
10Gくらいの固定長テキストファイルから一行ずつ読み取って
最初の1-10文字はUSER ID、11はSEX・・・って分けてdbに突っ込んでるんだけど
StringBuilderでLength=0しつつappendするくらいじゃ、stringでsubstringするのとあまり変わらなかったんで
Span使えばマシになるのかなと思ったんだ
2018/06/03(日) 23:00:15.10ID:8gLBE5WNa
そんなもん丸ごとDBにロードしたほうが速いだろ
固定長ファイルのロードはどのDBMSでもコマンド一発でできる
固定長ファイルのロードはどのDBMSでもコマンド一発でできる
2018/06/03(日) 23:12:33.52ID:S4J0YpoT0
>>960
それなw
tempのカラムに一行まるごと突っ込んで、クエリでsubstrするやり方やってみる
https://stackoverflow.com/questions/12423991/import-fixed-width-text-file-into-sqlite
それなw
tempのカラムに一行まるごと突っ込んで、クエリでsubstrするやり方やってみる
https://stackoverflow.com/questions/12423991/import-fixed-width-text-file-into-sqlite
2018/06/03(日) 23:35:40.25ID:iikfdxhC0
10GBのデータだと読取よりDBMSへの書き込み方法がネックになりそう
2018/06/04(月) 06:33:56.69ID:mxEQUVjg0
>>962
細かくなるとdbスレ行きなんだろうけど
実際に書くところはC#なわけで、どこがボトルネックになってるのかザコ過ぎてわからんw
とりあえずsqliteつかってメモリ上dbにinsertでトランザクション管理しっかりやってってして30分くらいだったからまーいいかと
sql server expressだとbulk insertはわからんけどselectで並列処理されるみたいだから乗り換えてみる予定
細かくなるとdbスレ行きなんだろうけど
実際に書くところはC#なわけで、どこがボトルネックになってるのかザコ過ぎてわからんw
とりあえずsqliteつかってメモリ上dbにinsertでトランザクション管理しっかりやってってして30分くらいだったからまーいいかと
sql server expressだとbulk insertはわからんけどselectで並列処理されるみたいだから乗り換えてみる予定
2018/06/04(月) 11:04:17.43ID:MivBMbBxa
sql server expressはひっくるめたDBサイズが最大10 GBまでだったと思うが
2018/06/04(月) 11:06:49.27ID:UeJV2JW90
メモリしこたま積んでRedisかな
2018/06/04(月) 14:26:59.71ID:pPavJvQvM
Postgresでいいよ
ロード時に固定長レコードのフォーマットを指定できるから一時テーブルもC#もいらん
ロード時に固定長レコードのフォーマットを指定できるから一時テーブルもC#もいらん
967デフォルトの名無しさん (ワッチョイ cd24-sZ2J)
2018/06/04(月) 16:33:35.32ID:7NrmQXKK0 MonoのLinux版のインストールの仕方、ご教示いただけますと有難いです。宜しくお願い致します。
968デフォルトの名無しさん (ワッチョイ d6e8-NLsb)
2018/06/04(月) 16:48:48.54ID:aK/XyO250 米Microsoftが米GitHubを買収することで合意
http://www.itmedia.co.jp/news/articles/1806/04/news058.html
http://www.itmedia.co.jp/news/articles/1806/04/news058.html
2018/06/04(月) 20:38:58.19ID:UeJV2JW90
>>967
ちょまど神を信仰すると天啓が降るぞよ
ちょまど神を信仰すると天啓が降るぞよ
2018/06/04(月) 20:43:37.91ID:CVKZewtza
2018/06/04(月) 20:52:46.96ID:spHrXgPF0
UbuntuでもCentOSでもコマンド一発で入るがな
2018/06/04(月) 21:35:01.82ID:ztrCxIDM0
>>970
何言ってんの?
何言ってんの?
2018/06/04(月) 21:48:02.60ID:9+XsYcyB0
Windows.Forms で WndProc を override して自分のコードを加えているのですが
デバッガで進めていくと、その中に突入してしまいます。
InitializeComponent の中みたいに、デバッガが入らなくする宣言みたいなものなかったですか?
デバッガで進めていくと、その中に突入してしまいます。
InitializeComponent の中みたいに、デバッガが入らなくする宣言みたいなものなかったですか?
2018/06/04(月) 21:49:06.62ID:BHtXacEqa
>>973
debuggerstepthrough
debuggerstepthrough
2018/06/04(月) 21:56:07.60ID:Uz3WpYRO0
2018/06/04(月) 23:32:00.59ID:054Q3E4O0
メインクラスとシリアル通信クラスの2つを使っています
シリアル通信の受信完了でイベントをメイン側に発生させることら可能でしょうか。受信完了したらメイン側から受信データを取りに行くようにしたいのですが。
シリアル通信の受信完了でイベントをメイン側に発生させることら可能でしょうか。受信完了したらメイン側から受信データを取りに行くようにしたいのですが。
2018/06/05(火) 00:07:28.69ID:jE9yEXCCa
>>976
何でそうなるのw
発想が逆だってw
そのシリア通信を担当するクラスSがデータ受信を通知するイベントを発生させて
受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw
ついでに言えば受信データもEventArgs使って渡してしまえばいい
何でそうなるのw
発想が逆だってw
そのシリア通信を担当するクラスSがデータ受信を通知するイベントを発生させて
受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw
ついでに言えば受信データもEventArgs使って渡してしまえばいい
2018/06/05(火) 00:33:25.52ID:liKML/cX0
しょうがねえだろ初心者なんだから
2018/06/05(火) 07:18:51.35ID:ByFVOB9IM
>>977
やりたいのことはそれなんですよw
説明が下手ですいません
厳密にはデータを受けた事が分かったらメイン側は受信データの内容を解釈するクラスに送って処理分岐という形にしようかと思ってます。
用語や処理の知識がおいついてきてないので、あれを応用しようという感じにならず、調べるためのキーワードも出てこないです。
>>クラスSがデータ受信を通知するイベントを発生させて受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw
ここが具体的にどういう構文になるのでしょうか。
やりたいのことはそれなんですよw
説明が下手ですいません
厳密にはデータを受けた事が分かったらメイン側は受信データの内容を解釈するクラスに送って処理分岐という形にしようかと思ってます。
用語や処理の知識がおいついてきてないので、あれを応用しようという感じにならず、調べるためのキーワードも出てこないです。
>>クラスSがデータ受信を通知するイベントを発生させて受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw
ここが具体的にどういう構文になるのでしょうか。
2018/06/05(火) 08:07:17.14ID:D4M8TybKa
Signalを使っても作れるな。
2018/06/05(火) 09:11:21.09ID:GjVlFAo70
>>958
PCをあまり使い慣れてない人とか、ボタンはシングルクリックでいいのをダブルクリックしちゃったりとかあるんだよなこれが・・・
PCをあまり使い慣れてない人とか、ボタンはシングルクリックでいいのをダブルクリックしちゃったりとかあるんだよなこれが・・・
982デフォルトの名無しさん (アウアウカー Sa5d-SvXf)
2018/06/05(火) 09:29:57.56ID:nr/+sOXHa 非同期じゃないならボタンイネーブル切ればいいだけじゃね
983デフォルトの名無しさん (アウアウカー Sa5d-SvXf)
2018/06/05(火) 09:32:16.99ID:nr/+sOXHa すまん。忘れてくれ
2018/06/05(火) 10:35:58.82ID:l/0/VM/ma
状態をGUIだけに持たせておくのはおかしいといつか思うはず
2018/06/05(火) 12:11:20.04ID:vCTdp4Eha
>>979
class FrameReceivedEventArgs:EventArgs
{
public byte[] Frame{get; private set;}
....
}
class CommunicationPort
{
public even EventHandler<FrameReceivedEventArgs> FrameReceived;
....
}
class FrameDecoder
{
public FrameDecoder(CommunicationPort c}
{
c.FrameReceived += CommunicationPort_FrameReceived;
}
private void CommunicationPort_FrameReceived((object sender, FrameReceivedEventArgs e)
{
....
}
....
}
class FrameReceivedEventArgs:EventArgs
{
public byte[] Frame{get; private set;}
....
}
class CommunicationPort
{
public even EventHandler<FrameReceivedEventArgs> FrameReceived;
....
}
class FrameDecoder
{
public FrameDecoder(CommunicationPort c}
{
c.FrameReceived += CommunicationPort_FrameReceived;
}
private void CommunicationPort_FrameReceived((object sender, FrameReceivedEventArgs e)
{
....
}
....
}
2018/06/05(火) 12:44:05.86ID:eGZjT6RJM
2018/06/05(火) 12:51:41.81ID:eGZjT6RJM
2018/06/05(火) 12:55:30.14ID:vCTdp4Eha
何言ってるのかさっぱりわからん
よくわからん思考回路だな...
よくわからん思考回路だな...
2018/06/05(火) 13:09:28.12ID:GjVlFAo70
言い回しがようわからんが
>>985みたいなのするのが解放されないオブジェクトを量産するっていうのはなんとなくわかる
>>985みたいなのするのが解放されないオブジェクトを量産するっていうのはなんとなくわかる
2018/06/05(火) 13:11:38.32ID:vyKZFDS5a
>>988
分からないならイベントというものを正しく理解してないんじゃないかな
ボタンのクリックイベントをフォームが受け取れるのは、ボタンがフォームへの参照を(実際には間にデリゲートが入るので間接的にだが)持ってるから
基本的に、引数に渡ってきたものに自分自身を登録するのは避けたほうがいい
オブジェクトのライフタイムが非常に分かりにくくなるから
分からないならイベントというものを正しく理解してないんじゃないかな
ボタンのクリックイベントをフォームが受け取れるのは、ボタンがフォームへの参照を(実際には間にデリゲートが入るので間接的にだが)持ってるから
基本的に、引数に渡ってきたものに自分自身を登録するのは避けたほうがいい
オブジェクトのライフタイムが非常に分かりにくくなるから
2018/06/05(火) 13:53:28.61ID:UBCugO63M
reactive extensionsって.NET発祥なのに使う人少ないよね
992デフォルトの名無しさん (ワッチョイ cd24-lkdC)
2018/06/05(火) 15:23:49.06ID:n583dJR10993デフォルトの名無しさん (ワッチョイ cd24-lkdC)
2018/06/05(火) 15:24:19.24ID:n583dJR10 >>970
そうなんですか。。。
NET Coreっての調べてみます。どうも有難う御座います。
ちょど昨日 GUI って何だ??って検索したばかりでした。
3日前からプログラムの勉強をはじめたばかりで。。。
そうなんですか。。。
NET Coreっての調べてみます。どうも有難う御座います。
ちょど昨日 GUI って何だ??って検索したばかりでした。
3日前からプログラムの勉強をはじめたばかりで。。。
994デフォルトの名無しさん (ワッチョイ cd24-lkdC)
2018/06/05(火) 15:24:34.93ID:n583dJR102018/06/05(火) 16:15:32.44ID:vCTdp4Eha
2018/06/05(火) 16:16:25.51ID:vCTdp4Eha
あ、
× イベントの購読解除
〇 イベントの購読解除忘れ
× イベントの購読解除
〇 イベントの購読解除忘れ
2018/06/05(火) 19:31:17.11ID:70UTtyrn0
次スレたててみる
2018/06/05(火) 19:33:22.39ID:70UTtyrn0
2018/06/06(水) 00:18:56.95ID:+J9HGVUKa
>>995
想像力のない人だなあ
>>985だと、イベントハンドラの登録を解除しない限り、FrameDecoderが不要になっても
登録先のCommunicationPortよりも先にGCされることは絶対にない。
じゃあ不要になったらイベントハンドラを登録解除できるようにしよう。いつ解除する?
それはFrameDecoder自身には分からない。知っているとしたら、それは>>976のいうメインクラスだろう。
登録解除するにはFrameDecoderクラスのDisposeメソッドを呼べ、という仕様にするか?
結局、985のFrameDecoderを正しく扱うには、メインクラス側がそういうクラス外から見ただけでは想像できないFrameDecoderの気難しい仕様を理解した上で、
必要に応じて明示的な解放を行わなくてはならない。
そんなことをするくらいならメインクラス側で明示的に登録・登録解除をやったほうが遥かに素直で分かりやすい。
想像力のない人だなあ
>>985だと、イベントハンドラの登録を解除しない限り、FrameDecoderが不要になっても
登録先のCommunicationPortよりも先にGCされることは絶対にない。
じゃあ不要になったらイベントハンドラを登録解除できるようにしよう。いつ解除する?
それはFrameDecoder自身には分からない。知っているとしたら、それは>>976のいうメインクラスだろう。
登録解除するにはFrameDecoderクラスのDisposeメソッドを呼べ、という仕様にするか?
結局、985のFrameDecoderを正しく扱うには、メインクラス側がそういうクラス外から見ただけでは想像できないFrameDecoderの気難しい仕様を理解した上で、
必要に応じて明示的な解放を行わなくてはならない。
そんなことをするくらいならメインクラス側で明示的に登録・登録解除をやったほうが遥かに素直で分かりやすい。
1000デフォルトの名無しさん (アウアウカー Sa5d-SvXf)
2018/06/06(水) 00:26:33.34ID:D75pa1n0a 質問いいですか?
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 60日 6時間 46分 14秒
新しいスレッドを立ててください。
life time: 60日 6時間 46分 14秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 反撃の中居正広、一世一代の大勝負へ 元フジ女性アナとは「合意の上での性行為だった」と認識 ★11 [Ailuropoda melanoleuca★]
- 【芸能】永野芽郁、CM契約9社すべてから消える… 最後まで起用し続けていた『SK-II』には「見損なった」と愛用者から落胆の声も [冬月記者★]
- 【サッカー】鎌田大地フル出場のクリスタル・パレスがFAカップ初制覇!エゼの先制弾を守り切りマンチェスター・Cを撃破 [久太郎★]
- 【お笑い】『THE SECOND』、3代目王者はツートライブ! 囲碁将棋との決勝制し涙「うれしいな!」 [冬月記者★]
- 【新潟】温泉に入っていた少年の陰部を触る…シンガポール国籍の男を逮捕 [シャチ★]
- 【埼玉】SUV盗みヤードで解体し中東に輸出…グループのパキスタン人やアフガニスタン人ら男5人を逮捕、ほかにも外国籍の男8人を逮捕 [樽悶★]
- Z世代「あれ?プロレスって技を受けるほうが協力してない…?」 8万いいね [279254606]
- 統合失調症「原因不明です。急に発症します。治せません。一生妄想と現実の境目で苦しみます」こいつがあんまり重大視されてない謎 [851881938]
- おっさんの俺でもトー横キッズになれる?
- 75以上の老人👈こいつら、ハッキリ言って何の役に立つん?殺したほうが良くね? [181318991]
- 🏡😎
- 日本人のちいかわファンさん達が去ったあとのマックのカウンターwwwwwwwwwwwww [271912485]