ふらっと C#,C♯,C#(初心者用) Part131 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part130
https://mevius.2ch.net/test/read.cgi/tech/1500327645/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/ そうそうw
ボーリング処理ってなんだよ
わかるかよ
957 名前:デフォルトの名無しさん (ブーイモ MMba-d5PD)[sage] 投稿日:2017/09/07(木) 16:48:04.48 ID:CjGXGOTyM [2/2]
1秒毎にボーリング処理するなかであるクラスのメソッドを呼び出す場合、毎回newするのは悪手ですか?staticが基本でしょうか? 答え
普通のstaticで済む用途ならstaticで書いたほうがいい
負荷やリソースじゃなくて毎回newする意味がない
sin計算するとして毎回Mathインスタンスをnewしなくてはいけない設計だったら糞だなって思う 前スレ >>968 の ID:VpThhHIU0 さん。
助かりました。ありがとう。
その例外メッセージ後半が目に入っていませんでした。。おバカでした。
後半の方法で対応できたのですが。
この方法で派生先クラスをシリアライズすると、クラスの情報も一緒に出力されるんですね。
出力しない方法があったら知りたいです。もっと探せば見つかるかなあ。 前スレ>>975
> 1分以上止まっちゃってたことあるよ
その時の.Net Frameworkのバージョンいくつだったんだろ。
今はバックグラウンドGCとか、GCも改良されてて長期間止まり難くなってるけど。 改良されたとは言っても、全く止まらない訳じゃないから、
数100msecでも止まって欲しくない場合は、やっぱり手動でGCを制御する必要があるけどね。 >>4
答になってないよw
staticで済む用途ならstaticで書いたほうがいい、ではなくてそれはstaticで書かなきゃだめw
最初から言ってるように、毎回newするのと対立する方法は、
フィールドでインスタンスを持っておこくと。 >>9
意味が分からない
普通であろうがなかろうが、staticで書けるメソッドをインスタンスメソッドで書く意味はないし
やってはダメだろうに staticおじさんがまた大勝利してしまったと聞いて 前すれワッチョイとかいうのだったんだな
2chのシステムよく知らんので普通のスレで立てちゃったよ
やり方知らんしw
気に入らなかったら別のスレ立ててね おまいらに真実を話す。ポーリングって確かに打ったんだわ。スマホが勝手にボーリングに変換してたんだわ
ATOKあほすぎんだろ 変換はgoogleのが絶対いいな
流行りのワードも出てくるし
これ以外考えられないって性能になっちゃってないか? インスタンスをキープしたいのなら、ポーリングのクラスにフィールド設定してそこに置けば済むわけでstatic classは有り得ないわな
static classはグローバル参照がどうしても必要な設定値とか、拡張メソッドとか、Mathのようなライブラリで使うもので
不用意に使うとろくな事がない代物だ >>5
DataContractSerializer系じゃ無理なはず
飽くまでシリアライザなんでデシリアライズできなきゃならない
型情報が無くなったら元のどの型にデシリアライズすればいいか分からなくなっちゃう それでも書いた処理によってガベコレまでの一時メモリリークは起こるので強制ガベコレの管理はどうせ必要になる
誰かのライブラリ使ってて中がブラックボックスだったときにガベコレまでの一時メモリリークは気づけない
staticで変数用意してもそれがすべてと言い切れないなら意味がない
無駄な努力じゃねーかな? >>17
だいたいあっているけどstaticにしようとしていたのはメソッド ライブラリだったら内部の構造は考えられずガンガン使われるから
ポーリングクラスが1000個とか作られてつかえねーなって言われる
だったらstaticな要素にしといたほうがいい なんか昨日から変なところでstatic使えとか意味不明なこと言ってる人がいるけど、
Cのstatic付きのローカル変数と勘違いしてないか?w
それC#にはないよ
VBにはあるけどねw >>22
何の話をしているんだ
元の質問が別のclass内のメソッドを呼びたいが1秒ごとに呼び出すのに毎回インスタンスを作りたくないので
そのメソッドをstaticにしてインスタンス作らずに呼べるようにした方がいいかってものだった
だから上の方でそのインスタンスをフィールドで持っておけば済むって話になってんの >>23
だから、(これは質問者の質問のせいでもあるけど)話の最初からstaticなんて
まったく関係ない。そんなことは機能かれ俺自身が言ってるのよ
それとは別に、>>19とか>>21とか読むと、C#にもCのstaticなローカル変数が存在すると
勘違いしてるんじゃないかと >>24
誰もそんなことは言ってないのに
勝手にそう思ってるのはよくわかった
質問はstaticメソッドの話をしてるのはみんなわかってる >>27
じゃあ何の話をしてるの?
率直に言って>>21は何を言ってるのかさっぱり分からん
昨日から言ってるし>>23も言ってるように、そももも元の質問者の話とstaticは何の関係もない。
恐らく質問者は何か勘違いしてstaticと書いてるだけ >>28
え?
憶測だけど
イベント内で毎回生成される
var a=new ClassA();
a.Do(b);
を
staticメソッドのClassA.Do(b)にしようかということじゃないのか?
;初心者の質問なんてその程度だろ
どこからc++のstaticと勘違いしてるなんて変な主張が出てくるのかわからない インスタンスのフィールドでaを持てって話も出てるけど
そもそもインスタンス作る必要もないものをわざわざ保存しておく意味はないよ
それがなぜだか生成コストの話になりそっちに付き合って話したら妙な揚げ足取りみたいのに
絡まれていいことないわ >>29
何周遅れの話をしてるのよ。疲れるわ
だから、staticで書けるメソッドならstaticで書くのが当たり前で、
それをあえてインスタンスメソッドとして書くという選択肢は存在しない。
何が「え?」だよ。こっちが言いたいよw だからそこでおわってんだよ
でなんでc++のstaticが出てきたり
質問者が勘違いしてstaticって言ってるみたいなトンチンカンな話になるのかと
もうおとなしくしてればいいのに >昨日から言ってるし>>23も言ってるように、そももも元の質問者の話とstaticは何の関係もない。
>恐らく質問者は何か勘違いしてstaticと書いてるだけ
こういうこと書いててよく言えるな 「staticは関係ない」って書いている奴はC#の前に日本語勉強しろよ なんか日本語「も」不自由な人みたいだね
何言ってるのかさっぱり分からんw >>35
じゃあ
>>28の説明をまともにしてみろ 荒れてるので、名のりにくいのですが、私が質問者です。
>>23
この記載で、最適解はこれだと認識しました。
で、質問した時点では
>>29の憶測通り。
とりあえず個人的にはもう納得してるので、これで終わりにしてほしい。
皆さんありがとう >>31
それは大間違い。staticで書かなくても良いものは極力インスタンスメソッドにするべきだな >>38
理由を書けよw
いったいどういう育ち方したらそんな投げっぱなしのジャーマンなんだ? >>38-39
いつまで続けてるの?
質問者が終了を宣言してんだよ ワッチョイが無いとこの一連全部同一人物なんじゃないのと勘ぐっちゃうわ >>39
>>38は釣りじゃなく本気で言ってるなら(恐らくそうw)
関わっても時間の無駄にしかならないお方だ。暇つぶしにはいいかもしれないけどw
時々対面の世界でもこういうガチで盛大な勘違いをやらかしてる人がいるから困るよ本当w 前に会ったRuby使いはクラスメソッド(c#のstaticメソッド)は極力使わないで
インスタンスメソッドを使うべきだって言ってたのを思い出した
何らかの理由があるんだろうけど無視した どっちがいいって話じゃないけど、あとで実装を差し替える可能性があるなら
クラスメソッドを直接使わずにシングルトンにするって手法はある。 インスタンスってのは主に多重実行のための仕組みなんだから、ある程度適当に作ってもスレッドセーフな物が出来上がる
staticで作るなら、複数のスレッドから同時多数アクセスが有っても大丈夫なように組まないといけないし
それが面倒だから極力スタティックは避けるべきだと思うんだがな Taskでも内部でThreadPoolを使うから
(ThreadPool.SetMinThreads(実行したい数))は必要だけど
ThreadPool実行で実行して待ち合わせ
とTaskで実行して、Task.WhenAll
は何が違いますか?
そもそも、ThreadPoolは必要ないですけど気になったので、質問します。 極力staticメソッドを使うという方針を取ると
関数用クラスとデータ用クラスに分かれやすくオブジェクト指向の考え方からは離れやすい
OO的にはアンチパターンになる可能性もあるけどトレードオフを理解して方針を決めればいいと思うよ >>18
そうですね。
今回の場合、相手がアレで。向こうが予期しない要素を含むデータを送ると不正終了するらしく。
最初の質問前に時間がなかったのでデータクラスを完全に2つに分けて作ってしのいでたのですが、そのままにするしかないかも。。 >>47
既定ではスレッドプール使うってだけでTaskが後ろで何使うかは規定されてない
あとWhenAllはasync/await向けに作られてる >>50
規定なら同じですか?
async/await使わないならthread poolの方が良いのかな? >>49
Json扱うならJson.NET使うのが良いよ
基本ライブラリ以外使っちゃダメとか言われてるならSystem.Web.Script.Serialization名前空間 >>51
いや普通にTask実行Task.WhenAllで良いんじゃね >> 53
やっぱり、メソッド分けてasync/await使いたくなる気がする。
ThreadPoolの方がメソッド分けしない糞コードでも書きやすい。 わざわざ低位のThreadPoolを使うメリット無いだろ。
ちなみにTaskの方は生成時のオプションでThreadPool使わず専用スレッドを割り当てたりも出来る。 超低レベルな質問ですみません
wpfで実験しています
ボタンを押すとLabelが回転するというテストです
ボタンはトグル処理してあって押すと回転、もう一度押すと止まっるという作動です
int band = 0;
DispatcherTimer tim = new DispatcherTimer();
public void Rotet()
{
label01.Content = "自動回転";
tim.Start();
tim.Interval = TimeSpan.FromMilliseconds(10);
tim.Tick += Tim_Tick1;
}
public void Rotstop()
{
label01.Content = "自動回転停止";
tim.Stop();
} public void Tim_Tick1(object sender, EventArgs e)
{
band++;
label01.RenderTransform = new RotateTransform
{
Angle = band
};
}
10ミリ秒毎に1度回転するという作動を希望しています
が、トグルボタンを押してRotetを呼び出すたびに、band++での増加量が加算されてしまいます
5回Rotetを呼び出すと10ミリ秒毎に5増えます
増加量は常に1であって欲しいのですが、これの根本原因はなんでしょうか? >>56
Tickイベントのハンドラ登録だけを毎回してるから。
登録は1度だけにするか、毎回解除もするようにしないと。
後、質問とは関係ないけど、タイマーを開始するタイミングもおかしい。 >>58
どうもありがとうございます
今VS立ち上げられないので確認はあとになりますが、教えていただいた内容は把握できました
後、たしかにstartのタイミングおかしかったですね
こっちも直してみます
どうもありがとうございました >>58
今VS2017C#で修正確認できました
ありがとうございました >>55
既存のメソッドに手を加えずtaskにできますか? Macで開発されている方がいましたら環境を教えて欲しいです
visual studio for macはwindowsアプリを作らなければ不便はありませんか? >>61
TaskでもThreadPoolでもThreadでも同じだけど、
既存メソッドがスレッドセーフでないなら、一般的なマルチスレッド対策は必要。 インターフェイス(ICollection)を実装しています。
例えば、.Clear() メソッドを実装するときに、
public void ICollection<String[]>.Clear()
{
のように、public を付けると、怒られます。
修飾子 public がこの項目に対して有効ではありません。
合理的な理由でもあるのでしょうか。 >>63
ThreadPoolが長時間処理に向かないって書いてあったけど、それも嘘だと思う。
GUIアプリとかゲームなら表示を妨げるけど、データ処理だけやるなら変わらない。 >>65
それはThreadPoolは実行されるスレッド数を少なく抑えて処理を順番にこなすための仕組みだから。
長時間の処理だとThreadPoolの少ない実行スレッドの1つを占有してしまう。
ThreadPoolの実行スレッド数の上限を増やしても良いけど、それより専用のスレッドを割り当てたら方が良いだろう。
Taskの場合は、LongRunningオプションを付ければ、ThreadPoolではなく専用スレッドになる。 >>64
publicを付けたければICollection<>.を外せばいい。
インターフェイス名.メソッド名 の形のメソッド定義はインターフェイスメンバの明示的実装といって、
クラスとして見ると不可視だけどインターフェイスを通せばアクセスできるメソッド定義方式。
なのでpublicでもprivateでもないということでアクセスレベルを指定できない。 >>67
その処理以外やらないなら、どうでもよくね? まあ小さいプログラムで全部把握できて問題ないと判断できるなら好きにすればいいだろ 馬鹿でも使えるってのは重要
async/awaitなんて頭の良い奴しか使えない
しかも必要のない簡単なレベルの処理もある C#は馬鹿でもできちゃうけど
逆引きサンプルを適当に見つけてきてコピペするだけで完了
でもVC#使わないとGUIが作れない
VC#が作る雛形何なのかすら知らない
一からテキストエディタだけで作れるのはコマンドラインツールぐらいしかできない label内に複数行を表示すると、表示領域外にまで改行された行が表示されず、上部の行だけが表示されます
最下行基準で、入り切らない部分は上部の行をスクロールアウトさせて表示させたいのですがやり方が検索しても上手く探せませんでした
どういう方法がありますか? >>74
OnPaintをオーバーライドしてDrawString使って自分で実装するしかないでしょう >>76
ありがとうございます
自分にはかなり無理なんでtextboxの方でどうにかしてみます リファクタリングしてくれるサービスないかな?
糞長いコード書いて可読性やばいんだわ githubに上げてここにURL晒せばみんながボコボコに叩いてくれるよ class A{ public virtual void test(){} }
class B : A{ public override void test(){} }
var b = new B();
b.test();
bからAのtestを呼びたい場合はどうすればいいでしょうか。 >>81
まっとうな方法はない
MethodInfo使っても無理
ILGeneratorなどで(callvirtでなく)call命令を発行する必要がある >>81
これを実現したいのって、具体的にどういうケースなの?
差し支えない範囲で用途を教えて >>84
状況によって派生された処理ではなくオリジナルの処理をしたいだけです >>85
それはわかってるよー
その中身を聞いてるんだ 日本語で無駄なやり取りするより>>83みたいにURL1つ貼ってコレ見ろでいいじゃないの
設計がどうのとか言ってもしゃーないし >>83
これを見てもよくわかりません。
メソッドの内部からbaseで基底クラスのメソッドにアクセスできる方法はしっています。
質問は変数bからAのtestを呼ぶ方法です。 >>88
Bにベースクラスのtestを呼ぶメソッドが用意されていなければ普通の方法では不可能でしょう >>52
それだ! < System.Web.Script.Serialization
ありがとう。 overrideをnewに変えてBaseクラスにキャストしてから使えば
同じメソッド名でBaseクラスのを呼び出せる >>68
とてもわかりやすく有難うございました!
インターフェイスに実装方法が二種類あるとは知りませんでした。
明示的ではない方で実装したいと思います。
結構ぐぐったんですが、それについて述べられたページが見つからなかったし、
C#のハンドブックにも載っていなかったことなのでとてもためになりました。 ○次受けが多いほど退場率が早くなる。高くなる
直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は90万払ってる) 客:短期延長していい?
5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ
長時間労働 高稼働 高スキル要求が多い
フリーランスサイトを運営している零細ITの自称エージェントは労働市場から流れてくる案件を転売してるだけだった。
労働市場に加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募できる
eJobgo JIET JISA で検索
優良エージェント・優良サイト
首都圏IT(PE-BANK) クラウドテック プログラマーズ Listのselectで入力された値に応じてPropertyを指定したいのですが、もっとスマートなやり方がありそうなので教えてください
今は↓のように手作業で全パターンをチェックしていて、
class Product {
string Field1 ...
string Field2 ...
...
}
List<Product> list = ...
string input = ...
switch (input) {
case "Field1":
result = list.select(p => p.Field1);
break;
case "Field2":
result = list.select(p => p.Field2);
break;
...
と、続いて長いくて見辛いし手間
}
これを
result = list.select(p => p[input]);
こんな感じで入力された値に応じて返す方法を知りたいです >>97
お前何なの?
初心者じゃねーなら自分で勝手にやれよ >>102
その程度の差が問題になるくらいシビアなパフォーマンスを求められる場合ならばね class Product
{
string Field1 ...
string Field2 ...
...
private static Dictionary<string, Func<Product, string>> mSelectorTable
= new Dictionary<string, Func<Product, string>>()
{
{"Field1", p => p.Field1},
{"Field2", p => p.Field2},
...
}
public static Func<Product, string> GetSelector(string key)
{ return mSelectorTable[key]; }
}
...
var s = Product.GetSelector(input);
var result = list.select(s); >>105
わざわざ冗長な方法で書く必要もないだろ 無駄な時間ならいくらでもある人らが語る最適とは…? >>97
とにかくswitch文をなくしたいならGetPropertyとGetValue >>109
その遅さが問題になるくらいシビアなパフォーマンスを求められる場合ならね >>110
もしlinq自体を変な書き方と言っているのであれば論外やな >>111
GetPropertyとGetValueで一行で出来ました!ありがとうございます >>113
え?
linq流行ってると思ってるの?
いつリストラされてもおかしくない機能 Linqはいらないけどイテレーターパターンとλ式は要るよね こいつASP.NET Coreのテンプレ見たら発狂しそうだな Linq使わないでどうやってんの?
毎回foreach回してんの? こういう状況になると必ず単発ばっかりになるよねw
ビビリのくせに発言してんじゃねーよクズがw for使っている会社のおっちゃんにforeach楽ですよとそれとなく言ったら、遅いしそれに添字使えねえだろと叱られた >>135
匿名掲示板でもそんなビビリで大丈夫なのかお前w C#で使える軽量なWebブラウザコンポーネントを教えてください。
SHDocVwはAxImportしてもレジストリ編集しないとIE7相当でしか動作しないですし、Chromeだとインストールしないといけないので・・・・
exeと同じフォルダにdll置いておくだけで使えるのが欲しいのですが。 >>131
foreachってコレクションのアクセス順序保証してるんだっけ? 質問です。よろしくお願いします。
システムカラーを変数で指定するにはどうしたら良いでしょう?
SystemColors defBGC;
defBGC = SystemColors.ActiveCaption;
簡単に言うと↑のような事をやりたいのですが、宣言ではローカル変数として扱われますが、代入でエラーが出てしまいます
どのようにして代入すればよいのでしょうか? Linqが遅いって言う馬鹿はなんでC#使ってるの?
機械語で直接プログラミングでもしてろw >>140
そんな遅さじゃ無いよね?
下手すると10倍ってレベルだし それがシステムのボトルネックになる場合のみ気にしろ 10倍君って前にも暴れてたよーなと思ってログ検索したら100倍だった
IBMがどうとか言ってたから多分別人のバカだ いや、流石にそこまで遅くなる処理わざわざ使う意味ねーし
俺は遠慮させてもらうわ あ、ちょっと気になって
いまもそうなのかなぁと思って前書いたコードでやってみたけど
100倍も有り得る数字出るな
激遅いじゃん
これは普通に使ってると問題出るね >>145-146
そんなに遅いのが嫌なら別の言語やれよ低脳w >>147
お前の作るものが欠陥品過ぎて気になってないだけ >>148
どうしてC#使ってるの?ねえ?なんで?w IBMじゃなくてOracleだったわ
統計的結果がどーたらって
もう6年も前の話なんだなあ
いまだにこんなのが湧いてくるくらい、C#ユーザも新陳代謝してるんだな
感慨深い >>149
10倍も遅くならないから
でもlinqは普通に10倍ぐらいは遅いよ >>152
1ナノ秒が10倍遅いのと1秒が2倍遅いのとでは10倍の方が結果速いって例えは理解できる?
Linqは前者。てーのーくんにはわからないだろうな〜w >>139
SystemColorsの各プロパティが返すのはColor型だよ
システム色だけを代入できる型ってのはSystem.Drawingには存在しない
全部Color構造体で扱われる >>153
問題は同じ処理だとしてもネックになる箇所で同じ処理でも別の処理書かなきゃいけないじゃん
それも面倒だし
全体に散りばめたときに10倍っていうと流石に問題が起きる遅さだよね
linq禁止のがぶっちゃけ楽だねぇ >>150
C#は入りやすいし、色々作りやすいから好きだわ
GUIもちゃと作れるし、Unityでゲームも作れる
今後はxamarinでアプリ開発もできるようになるし
やったねC#! >>155
え?処理のかき分けが面倒なんだw
Linq禁止する方が面倒なのにな〜wてーのーくんは世界の人々がどうしてLinq使ってるか考えたことないの?ねえ? >>159
だってかき分けの工数見積りに入ってねーし http://qiita.com/wilfrem/items/0cbece30e278353eb941
LINQが遅いと言われてたので速度比較してみた
結論
LINQは遅いっていうのは、ボトルネックの考え方的に間違いである。
ただし、LINQの一部関数は遅いので改良の余地はありそう。 >>160
はー?そんなんだから底辺なだよ君はw
もっとさぁ勉強してきなさい >>163
実際二度手間じゃん
わざわざ遅い処理使う意味もよくわかんないし >>164
はあ?二度手間?これだから低脳はw
自分の考えとやってる事が手間になってるという現実にはやく気付こう?ね? >>166
は?実際二度手間じゃん
使わなければそれに悩むこともないし
しかもこれを使ったからといってそんなに手間が減るわけじゃないよ
でも、10倍遅いんだよ
リスクばっかり高いよね >>166
君も自分が確信犯で荒らしてる寂しいバカの共犯にとっくになってることに早く気づけ。
っていうかこんな幼稚なバカ相手にして何が楽しいんだ >>167
使い分けができない底辺プログラマーですって自己紹介してるようなものだよ?
それとも自分はそうですって認めちゃってるのかな?? >>169
え?どうやって使い分けるの?
見積りに必要なのに見積り時に出てこないじゃん
かき分けの工数が >>138
これ見る限り大丈夫じゃね
https://msdn.microsoft.com/ja-jp/library/aa664754(v=vs.71).aspx
>foreach が配列の要素を走査する順序は、次のように定義されます。1 次元配列の場合、要素はインデックス 0 から始まってインデックス Length ? 1 で終わるインデックスの昇順に走査されます。
>多次元配列の場合、要素は、最初に右端の次元のインデックスが増加し、次にその左側の次元のインデックスが増加し、さらにその左側の次元のインデックスが増加する、というように走査されます。 >>170
あ、やっぱり出来ないんだね
その歳で可哀想 $"{num:D4}"
こういうふうに書式を指定して数字を表示したいときに、この4の部分を変数に変えるのってどうすればいいの? >>174
多分無理
$"{num.ToString("D"+x)}"
みたいにそこだけToStringすれば? >>172
ん?でどうやるの?
答えられないのに煽りだけは一丁前なの? >>177
あれあれ?
さっきからてーのーくんの言ってること全部ブーメランしてるよ >>178
は?どこが?
このままだと負けちゃうからって変なこと言い出すなよw >>179
負けるとか何言ってるのかな?本当に頭悪いね〜w
使い分けができないのを言い訳にしないでまずはちゃんと勉強しなさい まあ、俺をやっつけたところでlinqがおっそいことは変わらないけどね
お前の作るものって全部ナチュラルに10倍遅いだろ
今時のPCだから大丈夫って?
いやー、俺の使うアプリでは遠慮して欲しいなw
メモ帳とかお前が作ると普通に起動に10倍かかるんだろ?w >>175
これ、前にも話題になったけど、
foreachが列挙する順序はコレクションの列挙子の実装に依存するよ。
>>171の記述は配列についてのもの >>182
Linq使うと起動に10倍も時間かかるんですか〜?w
無知を曝け出して恥ずかしくないの?あ、低脳だから気付いてないのかw private void Form1_Load(object sender, EventArgs e)
とForm1ロード時に実行されるイベントハンドラを
Form1上のボタンが押された時に再度実行したい時に
ボタンクリックのイベントハンドラに
Form1_Lord(null,null);
と書いて呼び出した場合、何かまずいことありますでしょうか?
今のところ、Form1_Load内でthis.はForm1として作動しているようですが、
Form1を明示的に指定したほうが良い気がしますが、
Form1_Lord(null,null);
のnullの部分にどう書くとForm1からの呼び出しという体になりますか?
やりたいことはボタンで追加した配列を再度読み込んでForm1_Lordを動かしたい
いわばForm1のリロードといった感じです
言葉を間違えてるかもしれませんが、よろしくお願いします >>184
でもお前が作ったもんって普通に遅いと思うよ
どこでもそういう遅い処理書いて全体に散りばめちゃってるとネックになるとこしかみないっしょ?
でもロードとかちょっとしたとこでも処理使い回してるから
いまるところで微妙に遅いっしょw
積もり積もってクソ遅いけど比較対象がないからバレにくいって感じ >>186
そうやって事実でないことを思い込みで事実だとして今までの人生を生きてきたのかな?
君の頭の中ではLinq使うと起動が10倍遅いんだもんね〜
そろそろ現実を見ようよ? >>185
よくやります。
自分は
Form1_Lord(this,null);
にして、呼ばれ側で e がNULLがどうか見て、自然なイベントか人為的イベントか区別したりしてます。 >>185
>>189
いや、そういう場合は今Form1_Loadに書いている処理を別の独立したメソッドHogeに移して、
FormのLoad、ButtonのClickそれぞれのイベントからHogeが呼ばれるようにしましょうよ
方法はラムダ式使って
this.Load += (s, e) => Hoge();
Button1.Click += (s, e) => Hoge();
でもいいし、ラムダ式が分からないならデザイナで追加したイベントハンドラから
Hogeを呼んでもい 決まった目的のために作られたイベントハンドラを別の目的に使うのはよくないよ
すでに書いたコードを実行したいだけなら別のメソッドにしたほうがいいというかすべきだよ
VSのリファクタリングが便利
メソッドにしたい部分を選んでおいてメソッドの抽出を行うだけ >>192
起動が10倍遅いって本気で思ってるんだ?呆れた >>190
>>191
どうもありがとうございます
やはり行儀悪そうですよね。スッキリもしてないし、なんとなくロジカルじゃない。
別メソッドに移してソレを呼び出す方向でいきます
>>189
どうもありがとうございます
「あぁここでリロードかからないから更新されないんだぁ〜」と気づいた時に応急処置的に使ったんですが、
「あ、結構ちゃんと動くw」のでこれ良いのかな?ってっ感じでしたが、人為的呼び出しを区別するという使い方もできるんですね
今は勉強中なので、私には裏技的なものはまだ早いですね varは宗教戦争
ラムダとlinqは新しい物に適応出来ない老害が喚いてるだけ >>198
えーあの遅さを老害で片付けるってなくね?
10倍だぜ10倍 頭の遅れも10倍のてーのーくんにはLinqが理解できないらしい することないからと言って初心者の質問スレで雑談するな。他行けよ Linq使うと起動が10倍遅くなると言う奴が言っちゃうんだ? >>191
うぉおお
リファクタリングスゴイ!
VSの機能もっとよく勉強しよう… DataGridViewのCellを複数行の文字列を表示するComboBoxにしようとしてるんですが
DataTableにComboBoxの列を挿入して
そのDataTableをViewのDataSourceとして使おうと思ってます
ここで困っているのですが、DataTableのComboBoxの列のDataTypeって
System.Stringでいいんでしょうか??
複数行の文字列をList<string>でまとめて渡そうとしてるんですが
「実行時にDataGridViewComboBoxCellの値が有効ではありません」エラーが出ます
DataTypeがListではなくstringなので当たり前の話のようにも思えますが
DataTypeで使えそうなのは他にSystem.Objectくらいで、これもエラーになります とりあえずDataTableにはComboBoxは入れない
もうなんというか全体によく分からん
そもそもComboBoxは表示じゃなくて選択のためのコントロールだと思うんだけど
ひょっとして単に数行にわたるデータをドロップダウンで表示したいってこと? 逆にDataTableにcomboboxで出力して型を確かめればいいんじゃないの
通常のcomboboxもObject.CollectionでList<string>は直に入れられない ComboBoxで複数選択肢を見せて
ユーザがドロップメニューから必要な選択肢を選んだときに
イベントハンドラでそれに対応する値を拾って・・・みたいな感じです Unityで以下のコードの[Dependency("Cat")]を
[Dependency("Dog")]や[Dependency("Fox")]のように
文字列の部分を動的に書き換えたいのですが
そのような事は可能でしょうか?
よろしくお願いします
public class Person
{
[Dependency("Cat")] //ここを動的に"Dog"や"Fox"に書き換えたいです
public IAnimal Pet { get; set; }
public void CallPet()
{
Pet.Cry();
}
} >>211
http://tnakamura.hatenablog.com/entry/20081029/1225239230
このページ?
> 今回はコードで依存性を注入しました。
> 属性を使った方法では、クラスを切り替えるにはコードを修正して
> リビルドする必要があるので、使う場面は少ないでしょう。
> 次は構成ファイルを使って依存性を注入する予定。 >>211
アノテーションやめてResolveするときにクラス名渡すようにすればいい
Resolve<T>(String)やBuildUp<T>(T, String)の
Stringのところにマッピング登録時に指定した名前を渡す 実装の動的切り替えが必要ということはそれはDIパターンでやるべきじゃないってことだよ
せっかく依存性を断ち切った筈なのに選り好みしちゃダメでしょ
設計を間違えてるんだよ
こういう場合は素直にFactoryパターンを使う
FactoryそのものはDIすればOK datagridviewに、エクセルのデータバーみたいなの表示させたいんですが、できますか? >>213
そうです
そのページを見た時に、文字列の部分をXMLファイルに書けば呼ぶクラスを外部のファイルに書けると思ったんです
続きがある事に気付かなかったので合わせて読もうと思います
ありがとうございます class hoge
{
public int a;
public void func(){++a;}
}
delegate void func();
var h = new hoge();
func f = h.func;
h = null;
f();
この場合f()は正常に実行されますか
hをnullにしただけではGCでお掃除されないのですか コンソールへの表示についての質問です。
BackgroundColorなどを変更して文字の色を変えるのではなく、文字列自体に色をつけることはできないのでしょうか?
string str = MyColor.Red + "Red";
Console.WriteLine(str);
// 赤色で、Redと表示されるようにしたい 一旦現在の前景色を退避して、前景色を指定した色に変更、文字列出力、もとの前景色に戻す
っていう関数を自分でつくればいい
前景色は
Console.ForegroundColor = ConsoleColor.Red
のようにして変えられる >>218
デリゲート変数がインスタンスhのインスタンスメソッドへのデリゲートを握ってる間は、
間接的にhへの参照を持ってるのと同じことになるみたいよ。
もちろんデリゲート変数じゃなくてイベントでも同じ。
だからこれがリークの原因になることがある。
ググってみたけどMSDNだとここにちょろっと説明があるぐらいだなあ
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/events/how-to-subscribe-to-and-unsubscribe-from-events#unsubscribing >>218
class Hogeにファイナライザ実装して
h=nullの後にGC.Collect()呼べば自分で確かめられるよ 配列に要素を追加するべく、検索で調べて、色々やってても希望の作動にならず、散々悩んでたのですが
参考にしたページの
>配列に要素を1つ追加した新しい配列を取得したい場合のメモ。
>
>配列でやる。
>
>int[] array = { 0, 1, 2 };
>int[] result = new int[array.Length + 1];
>result[array.Length] = 3;
>
これで最後にarray = result;
入れてもきませんよね?
初心者の私が文句言うわけじゃないですが、半日悩んでしまった
追加した分しか表示されないぃ〜とw result[array.Length] = 3の前か後ろにArray.Copy当たりが抜けているんだろうが
配列1 = 配列2
みたいな代入はまずやらない そゆことでした
他のページ見て気づきました
このコードで行くと
int[] array = { 0, 1, 2 };
int[] result = new int[array.Length + 1];
array.CopyTo(result,0);
result[array.Length] = 3;
で行けたのでした
で今気づいたのですが、実装はstring[]だったんですが
要素数が違うもので代入しても大丈夫…なんですよね?
エラーも出ないし
arrayが全くresultと要素数含めておなじになると 質問内容と変わっちゃうけど、動的に配列使うなら、Listを使った方がいいような
Arrayにしないといけないなら、そのときだけToArray使えばいいし でもLinqまで使うと起動が10倍遅い君が暴れだすから気をつけろ 起動時間が気になるならUWP使えばいいのにな
ライブラリをスタティックリンクで、使わないクラスは実行ファイルから取り除かれる
だから笑っちまうほど起動は高速だ そういえば前スレでもLINQが遅い遅い言ってるのいたけど同じ奴かな
Stack OverFlowの中の人が遅いからusing System.Linqを根こそぎ消したとか言ってたけど、
その情報のソース聞いても教えてくれなかった >>231
そんな細かい情報知らないよ
俺は自分が試したことしか言わない系 しかも英語読めないのでソースに英語サイト紹介されても無視するのでよろ 根こそぎ消したのはEFだろ
あれもいちおLinqな >>227
まず参照型がどういうものか理解した方がいいね。
配列は参照型。
参照型の変数に入っている値はオブジェクトの参照(とりあえずオブジェクトのメモリー上の位置を表す値だと思えばいい)
であってオブジェクトそのものではない。
array = result;
だからこれは、変数resultの中に入ってる「配列への参照(位置情報)」をarrayにコピーしてるだけ。
webで言えばarrayやresulに入ってる値はただのURIであってドキュメントやファイルそのものではない。
https://msdn.microsoft.com/ja-jp/library/cc406735.aspx Linq使うとプログラムの起動が10倍遅いソースはまだ? >>236
自分で測ってみれば?
テストプログラムじゃなくて会社で納品するようなプログラムでやってみるのオススメ >>237
測ってみても起動に10倍も遅くならないからソース出せよ >>235
stringも参照型なので、そこだけだとその人はともかく変に勘違いする初心者もいるかもしれない
http://okwakatta.net/topic/topic051.html
このサイトが分かりやすいと思った
>>228
var array = new List<string>(new string[] { "0", "1", "2" });
array.Add("3");//要素の追加
string[] result = array.ToArray();//string[] に変換
こんな感じだよな
参照型に同じ型代入するのはだめじゃないけどなんか気持ち悪い >>238
マジで
10倍が控えめに見えるぐらいの数字出るけど? >>240
その根拠を見せてみろ
ん?どうした?はやくしろよ >>241
いいよ別にw
お前が納得したってしなくたってw
俺の人生にはなんの肥やしにもならない
ただ、お前の作るプログラムはナチュラルに遅いw >>244
プログラムの起動が10倍遅いって嘘を喚いても誰も信じてないんだよ?可哀想 >>246
いや全然?
起動が10倍遅いとか言っちゃう頭悪い底辺の方が遅いよ。みんなそう思ってる >>247
じゃあ、ここまで食い下がることないじゃん
満足しとけよw
俺は使わないけどねw >>248
頭悪い底辺プログラマーを助けてあげたいんだよ?だからまず自分が間違ってるってことに気付こうね >>249
そんなのどっちでもいいよw
linq使って速くなることはないんだし >>250
あー自分の誤ちを認められないパーソナル障害なんだろうな
そうじゃないと起動が10倍遅くなるなんて言えないもんね >>251
だからいいよそれでw
linqは遅いから使わないけどね >>252
まーだLinqについて理解できないのか
Linq使うと起動が10倍遅いから使わないって本当に底辺だからもう二度と言わない方がいいよ >>253
そうやって言論弾圧をするのはなんか意味あるの?
まあ、linqは遅いから使わないけどね >>255
どうしてLinq使うと起動が10倍遅いって信じてるの?
根拠まだ? とんでもない低スペックパソコン使ったら10倍遅くなるんじゃねーの(笑) >>231
Nick Craverのtweetやで linq使って重いって言う奴は、explain一度もせずSQL書いて重いって言う奴ときれいにカブる。 またやってる
ワッチョイ有りでも無しでもヒマな基地外には関係ないのか >>260
ワッチョイ無いから一人で自演しているんじゃないの?
まあ付けてもスマホと自宅だからバレないと思うけどさ 結局2chでは幼稚で恥知らずな奴が最強で絶対に「勝つ」ことになってる。
北朝鮮と同じだ。
恥も自尊心も持たない奴には物理的な暴力以外何も抑止力にならないからね ここでバカ晒している俺らが負け組
ROMって知識蓄えている人たちが勝ち組 >>235さん>>239さん
どうもありがとうございます
配列によって、動的にボタンを追加する方法を勉強するtestプロジェクトで、ボタン追加方法のテストだったんで
配列は適当でいいやとstring[]でやってたんですが、後々、配列に追加したら…とか色々実験していく内に
「あ…List<string>でやっときゃよかった…とは思ってみたものの、string[]ベースでいろいろな処理書いちゃったんで、
後に引けずにパッチ当ててるみたいなみっともないことになってしまいました
List<string>ならadd〜で簡単に追加できてたんでちょっと戸惑ってしまいました
参照型というものの性質がなんとなくわかりました
別の質問を
フォームデザイナーでContextMenuStrip(cms1)を作って
Form1_Loadの中にcms1.Show();
を書いても表示されないのに
Form1のクリックイベントでForm1_Loadを呼び出すとcms1が表示されるのはどうしてでしょう? >>262
5年10年粘着を続けられる奴には負けるだろ 10年2ちゃんに粘着とかまるでネトウヨみたいなやつだな >>265
Loadはフォームの表示前(this.Shownの前)だからコントロールが表示されない
フォームの表示後に呼び出したいものはShownのイベントメソッド内に書く Linqで起動10倍遅い君はみんなから無視されてるにも気付かず調子こいて嘘ついてたから
これからはちゃんと指摘してあげる ただの鎌ってちゃんなので、無視して普通にlinqの話をするのが吉 そんなに俺のリサイタルが聞きたいのか?
linqを使う奴は遅いかもしれないからコアな処理では使わないでねってゴミクラスを量産する
○○ファイルの読み込み?たしか□さんのところでやってたよね?
しかし、残念なことにそのクラスはlinqが使われていたのです
おっそwwww 俺もstring遅いから全部byteで処理してる
StringBuilderも遅すぎる >>274
C++ を検討することを勧める
って言いたいけどこんなことを言い出す奴に技術力のあったためしはないから好きにしろ プログラミング未経験の人向けのC#入門書を探してるんだが、お勧めの本があれば教えて頂きたい 独習C♯
猫でもわかるC♯
本屋で適当にプログラム本捲って自分が読める感じの探すのがいいけど >>280
俺もこれ持ってるわ
読みやすいから導入としてはこれも良い C#の絵本買ってみようかな
来月中旬に出る第2版を読んで良かったら買うよ 回り道に思っても一度Cを勉強した方が結局早いような気もするけど、どうかね。
構造化プログラミングやポインタの理解を経由せずに
いきなりC#で概念の洪水に晒されてちゃんと消化できるのか。 ぜひ実験して教えてくれよ
思うレベルのご意見は要らねえからよ C#をやってみようって決意したんだろうからそれを踏まえて指南すれば良いのでは?
デリゲート使う時に壁を感じたらそれはその時考えれば良い事で、その時だったら今よりはCに浮気するハードルは高くないはずだと思う んー、もちろんいらないといえばいらないんだけどね
C#あたりの今時のプログラミング言語になってくると、できることが多すぎるから
プログラミングまったく初めての人は、Cなどの昔ながらの言語で初歩を勉強してから
入門したほうが挫折のリスクは少ないし、それからのほうがC#の理解も容易だろうとは思う
で、もしポインタでつまづくようなら、全然むいてないってことだしw 物理的なメモリレイアウトが見えてるほうがイメージしやすくて逆に簡単という意見もある
標準ライブラリも貧弱だから覚えること少ないし
TMPの誘惑に取り憑かれなければ回り道というほどでもないだろう プログラミング初心者でC#やりたいならCの構造化は邪魔になるだけだと思うけどなぁ Cから入ると変な癖がつくからお勧めしないな
C自体がダメというわけじゃないがコーディングスタイルが古い
モダンな言語への移行を前提として古臭い書き方を廃した入門書があればいいけど >>290
構造化プログラミングの理解はC#であろうが必須事項ww
>>291
別にCを極める必要はないよ。
Cの方が覚えることが少ない分恐らくクイックスタートが切れるだろう、ということ
Cでも「stdioって何?」みたいな最初は「おまじない」としてやり過ごすしかない部分はあるけど、
C#だと桁違いにそれが増える >>292
C#だって、ラムダ式より前の基本的な文法だけなら、覚えることそんなに多くないだろ。 出来る事が最初から多過ぎる、てのは解る気がするわ
C#でも、GUIをしばらくお預けにしてCUIから教える分には
そんな複雑でも無いとは思うけどね C#で構造化プログラミングを学べないわけもないだろう。 ハードに近い所で仕事したいならともかく
本当に回り道にしかならん 「猫でもわかるC#〜」は初心者には絶対に勧めない
自分がC#を勉強しようとして最初に読んでえらく悶絶したので
もし書名が「ざっくり覚えるC#文法」とかだったら納得もできる
猫や初心者にわかるように丁寧に説明している本ではない
他のプログラミング言語を知っている人が、さっとC#の文法を理解するにはたぶん良いのだろう
例えば、版によるかもしれないがこの本には「文字列はダブルクォーテーションで囲む」
ということがどこにも書かれていなかった
なのになぜか「char型はシングルクォートで囲む」という説明はある
要するに、文字列をダブルクォートで囲むという「常識」を知らないような初心者目線では書かれていない
そういうのが他にも多数ある
書名の付け方を間違えたのか、作者に初心者を慮る能力が欠けているのかはわからないが
初心者向け参考書なのに読んでもわからずググってやっと理解する、という繰り返しになるので
超初心者は他の本を買った方がよい >>292
もちろん理解しないといけないのは当然だけど、普通にプログラミングを重ねれば自然とそうなるでしょ
初心者で下手ゆ構造化プログラミングに慣れてしまうとオブジェクト指向の考え方が理解しづらくなるかなと思って
書籍は個人的に「実戦で役立つ C#プログラミングのイディオム/定石&パターン」がおすすめ出来るかな まず、「構造化プログラミング」と聞いて何を連想するかが人によってかなり異なるので
もっと別の言葉に置き換えた方が良いぞ
その上で、「プログラミングその物の入門に」という話なので
ンな手癖が付くほどがっつり深くやれって話でなく、触り程度に概念を理解するくらいで終わる話じゃないの >>300
とゆーか、オブジェクト指向自体が今時のプログラミング言語で初心者を挫折させる
元凶のひとつだからなw
オブジェクト指向がすんなり理解できるような人だったら、いきなりC#からで別段
問題ないし、よくわからないうちはとりあえずはわかったふりで無理して使わなくて
いーよと適切なアドバイスできる人が近くにいるなら心配ないんだけど >>300
今読んでるけどおすすめだと思う
ただ未経験からいきなりそれ読んでも分からなそうな感じ
独習C♯で写経して、イディオムでパターン覚える感じというか、俺がそんな感じで進めてるところ 俺が最初に読んだプログラミング本ってK&Rだったけど、アレはいい本だったな スッキリわかる Java入門 第2版、2014
本当の初心者は、スッキリから行かないと、
オブジェクト指向が理解できない VS2017でC#勉強中です
ソースエディタでクラスやメソッドは折りたためますが、この折りたためる要素のソース内での表記の順番を入れ替えたいのですが、
動かす部分を全行選択して切り取ってペーストする以外に方法はないでしょうか?
気の利くエディタなので、この程度の事は一発でできそうな気もするのですが… >>306
折りたたんで切り取れば一行で済むのにそんなのいるか? ありがとうございます
折りたたんだ状態で全部を切り取れるんですね
気づかなかったです
更に
折りたたんで選択しとけばドラッグも出来ました Wordもいつからかそれが出来るようになって便利になったなーと思った ジェネリックなインターフェースってどうなんですか?できることはわかっているのですがどういうメリットデメリットがありますか?
string型もしくはUri型を引数にしてWebスクレイピングを行うメソッドなのですが、返り値はList<>で返したり、データクラスで返したりしたいのですがインターフェース化するとどういうメリットがありますか? その要件でインターフェイスを使うこと自体には意味がある。けどそれがジェネリックなものである必要性はない。 >>306
行を選択(複数行可)して Alt + カーソル で移動、という方法もある
Shift + カーソルで行選択すればキーボードから手を離さず操作できる >>310
メリットを生み出すのは自分自身だ
どう使うかは自分がきめることだよ
無理にインターフェイスするとして考えられるのは
スクレイピングの結果の戻り値がIList<T>でとかそんな感じ C#でWindowsフォームアプリケーションじゃないものを(VC++でいうSDI)を作る場合って
Visual Studioでどのテンプレートを選択すべきなんでしょうか?
VC++はMFCのSDIテンプレートなんかあってとっかかりやすかったんですが、
C#はWindowsフォームアプリケーションかWPFぐらいしか
すぐに使えそうなテンプレートが見当たらなくて。。。 >>315
VC++はフォームの作り方に難があるから目的別テンプレートが必要なので当って
winformsやWPFは自由にデザインしやすいから別に出来合いのテンプレートが必要ないと思う >>316,317
WPFとWindowsFormsというフレームワーク?を使わずにその他の「何か」を想像していたんですが、
そもそもその考えが間違っているようですね。出直してきます。 >>312
やっぱりインターフェースだとジェネリックメソッドは意味はないのでしょうか?
>>314
設計が悪いのか返り値がIList<>オンリーじゃないですね >>319
特定のコードじゃなく一般論の話をしてるなら、ちょっと短絡的過ぎない?w
IEnumerable<T>.Castなんかジェネリックだし、場合によっては使い道あるんじゃないの?
それと、前スレでもちょっと出てた話だけど、
個人的には必要もないのにインターフェイスかぶせても
生産性と可読性が下がるだけで何もメリットないと思うよむしろ Visual Studio 2017 Community
エディタ上の変数の色を変えるにはどうしたら良いのでしょうか?
http://qiita.com/hima_zinn/items/1a58309201ca8d616332
C++では↑のような方法でできるようなのですが >>322
オプションの画面に検索機能がついてるんだからそれらしいワード入れれば見つかるでしょ
とりあえず「フィールド」でやってみたら? すみません見つからないんです
例えば『フィールド』で検索しても出てくるのはC#→コードスタイル→前半の中のものだけ
『フォント及び色』→にはC++用のいろいろな設定はあるんですが、C#の変数の表示を変えるようなものがどれかわからないんです
それっぽいな?というものを変更しても変わらず
変えられたのは行番号とコメントの色だけ
変えられないってことありますか?
ネット検索してもC++の例はあってもC#での例が見つからない >>324
VSはC#のために作られてるので()
c#の○○という表記じゃないだけ
下のほうにキーワードとか文字列とかいろいろあるでしょ
そのうちのどれかですとしか言いようがない >>327
眠い中どうもありがとうございます
雷鳴ってPC落としてたら…
やはり他の部分も変わってしまいますね
変数だけ色分けできたら使いやすいのに… クラスでListや配列を扱う勉強してます
以下はテキストボックスを使ってListをどう扱えば良いのかを考えている実験用ソースです
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string hyouji;
TextBox textbox01 = new TextBox();
this.Controls.Add(textbox01);
hyouji = Test01();
textbox01.Text = hyouji;
}
private string Test01()//テスト用オブジェ作成メソッド
{
List<string> testList = new List<string> { "a", "b" ,"あ","ん"};
Testclass jikken;
jikken = new Testclass();
jikken.youso = testList;
return jikken.test();
}
} public class Testclass//クラスと配列のテスト用
{
public List<string> youso = new List<string>();
string modori;
public string test()
{
modori = string.Join(",", youso);
modori = modori + "-" + modori;
return modori;
}
};
class Testclassの中のtestメソッドで文字列に変換したものを
stringの戻り値を多段経由してテキストボックスに表示しています
クラス跨いでのControlの扱いが分かってないのですが、
のソースで戻り値を経由せず、Testclassのtestメソッドからtextbox01.textに直接書き込むにはどうしたら良いでしょうか? 色々余計なことや面倒くさい宣言、ダサいことしてたりしますが、試行錯誤の名残なのでご容赦ください https://ideone.com/aopoUw
すみません コード貼る…の使い方が分かってなかったです
コード貼っときました どっちかというと外に追い出すべきは
textBox.Textへの書き込みでは無くて
Test01メソッドの方 WebBrowserのNavigating、Navigated、DocumentCompleteイベントがわかりません
ログ見てるとNavigatingが一度しか呼ばれていないのにNavigatedが2回呼ばれてDocumentCompleteが呼ばれる
自分の頭の中ではNavigating→Navigated→DocumentCompleteの順番だと思っているのですが違うのでしょうか?
参考になるページありましたらご教示お願いします 初歩的かもですが、下記例の書き方で、Objectで引数を受け取るのにクラス変数の型に合わせてキャストして受け取る形が少し不自然に感じます。
この様な書き方で問題ないのでしょうか?
それとも他にいい感じの書き方がありますでしょうか?
class Test
{
private int a;
private string b;
public Test(params object[] param)
{
a = (int)param[0];
b = param[1].ToString;
}
} >>336
object型で引数を受け取る必要あるの?
public Test( int a, string b )
{
this.a = a;
this.b = b;
} >>336
何を求めているのかいまいちわからないけど、その文だとparam[0]がキャストできないときにエラーで止まる
なので例えば
bool result = Int32.TryParse(param[0], out a);
に変える
この場合キャストできないときにresultにfalseが入る >>338
あくまで例って言う通り、実際はもっと多い引数だったり、場合によっては一部値を渡さない実装(デフォルト値設定)するつもりなんですよね
paramsって名前付き引数にできるのか?とか今調べてます
無理そうならDictionary使おうかとか考えてるところです >>339
ありがとうございます
TryParseの存在は知ってましたが、例外処理書いて載せるのめんどいのでとりあえずキャストだけ書いとけってやりました
すいません 他人にエスパー能力を求めてる自覚がない人は困っちゃうねw 実際はこの画像の感じで色んな型の変数をセットしていくのに、コンストラクタにparamsで渡していって、受け取ってない場合は初期値入れるってのをやるつもりです。
https://imgur.com/a/f5Xg7
元々rubyで書いてあるプログラムなんですが、C#で移植しながら書こうとしています。 >>344
なんでそんな賽の河原の石積みみたいなことしてんの? paramsは可変長引数だからその例には適さないぞ >>346
rubyだと
def Initialize(params)
@stock_code = params[:stock_code]
@trade_type = params[:trade_type]
な感じで実装されてたので、C♯でも可変長変数と名前付きで渡せるかなーって考えてました・・・
それが無理なら変数をまとめて型にするか、Dictionaryかなって感じです なぜ素直にオーバーロードとかオプション引数&名前付き引数を使わないんだろう... >>344
コンストラクタでTryParseとかはアレなんでFactory使う
あと各データのできるタイミングやまとまりが違うものがフラットに混ざってるので
DBの正規化的なアプローチで少しデータ構造を考えといたほうがいいかもね
とりあえず移植したいだけなら型つくって移植して
後で困ってからリファクタリングしたのでもいいと思う >>344
コンストラクタでは初期値だけ入れて、newする時にプロパティに代入するのが良いと思う。
var trade = new Trade()
{
stock_code = X,
trace_type = Y,
....
}; >>348
確かにそっちのが簡潔ですね・・・
元々長いのと後々追加する時を想定して少しこの辺りいい方法無いかなって模索してたので
>>349
Factoryは知りませんでした、調べてみます
>>351
こういうやり方のがすっきりしてそうですね、見た目も分かりやすそうな感じがします
ただsetはこれだとpublicですが、private運用のがいいのかとか考えていました。
プロパティ使って代入ってよくある使い方なのでしょうか? >>352
一先ず、プロパティのset使って運用しようかと思います
後々何かいい形に出来そうなら変更していこうかと思います
回答下さった皆様、ありがとうございました パラメータークラス作ってそれに全部値入れて渡せば? object[]で渡すなんてバグの温床だよそんなもん
自分で呼び出すときと処理書くときに困るだけだ
初心者なら普通に関数書くほうがいい 直接プロパティを設定するのはあまり良くないよ
いつ外から書き換えられるかわからず、それに対応できるように作るのは無駄に手間がかかるしテストもクソ面倒になる
結局、いつでもプロパティを書き換えられるように見えるくせに初期化時以外に書き換えたら壊れる糞みたいなクラスが出来上がる メソッドの戻り値がListで、その中身を可変にした定義がしたいのですができますか?
インターフェースで List<Type> Select<Type>() と定義して
具象クラスで同じように定義、return List<string>(); とかやっても
"List<string>をList<Type>に暗黙的に変換できません。"とエラーになってしまいました。 linuxサーバーに好きな言語使ってwebアプリ作れって言われたら、言語何使う? >>361
何言ってるのか分からないけど、自分で(メソッドの戻り値の型を)可変にしたいといいつつ、
List<string>という非ジェネリックな型を返すのは何なの?
意味がわからないよ >>361
まずTypeじゃなくてT使うように
メソッドのシグネチャーが
List<T> Select<T>()
なら実装は
return new List<T>(); TabPageクラスを拡張してTabPageExクラスを作ったんですがTabControl.TabPages[index].Foo()を呼ぼうとしても呼べません
どうやったら呼べるようになりますか?TabPageCollectionを派生したクラスを作らないとダメですか? >>366
拡張した内容が分からない
まず拡張したクラスでなく元のコントロールで呼び出していないか確認
その上で拡張した内容を張らないと誰もわからない あ、TabControl.TabPages[index].Foo()の時点で元のコントロールだな
それはだめだ 失礼しました。拡張した内容ですが以下のとおりです
タブブラウザを作りたいのでこういう風にしました
TabPageクラスにGoBack、GoForwardメソッドを実装しそれをメインフォームのボタンから呼びたいのです
そのためにはtabControlでどのタブが選択されているか取得しないといけないので苦労しているところなのです
TabControl
https://ideone.com/5QXD2p
TabPage
https://ideone.com/d9v3vu
MainForm
https://ideone.com/bByZtw 無理なんですね、わかりました
やりたいことは各TabPage上にWebBrowserがあるのですがその進む戻るボタンをToolStrip上に実装したいのです
どうにか実装する方法ってないでしょうか? グローバルフックの事を学びたく、
http://d.hatena.ne.jp/myugaru/20071130/1196434749
にあるソースを実行したいと思います
新規でコンソールアプリのプロジェクトを作り
Formを追加し
ソースをネームスペース以外コピペして、エラー無くデバッグで立ち上がるも、コンソールとFromは出るものの、なんの反応もありません
「Visual Studio ホスティングプロセスを有効にする」を外せとのことですがVS2017Communityではその項目が見当たりません
デバッグでなくビルドしたexeでも同様です
どう改変したら動くようになりますでしょうか?
よろしくお願いいたします >>370
まあ単純には、
var tabex = TabControl1.TabPages[x] as TabPageEx;
if (tabex != null) {
...
}
でもいいんじゃね >>374
普通に動いたわ
新規プロジェクト作成でWindows Formsアプリケーションを選択
Form1.csを削除
Program.csを開いて既存のコードは削除してからリンク先のコードをペースト
F5
VSをアクティブにして出力ウィンドウにフォーカス移動して適当にキー入力するとmessage=KEYDOWNとか出力される
VS2017はホスティングプロセスがなくなったっぽい
ちなみにホスティングプロセスで動いてるかどうかは
デバッグ実行中にタスクマネージャ開いて
hoge.exeの代わりにhoge.vshost.exeが動いてるかどうかで判断できる https://github.com/chomado/Xamalist/commit/1422a3eb2a80bba53b43afa3ea8afdb5d689cf55
このコードについて質問です
StringExtentions っていうのをなぜ改めて作っているのかわからないんですが
クラスの中にString型のオブジェクトがあれば、IsNullOrEmptyを呼び出せないの? >>377
static methodだからインスタンスメソッドとしては呼び出せない
String.IsNullOrEmpty(foo) と foo.IsNullOrEmpty の違い 今となってはFormアプリケーションの作り方を覚えても無駄でしょうか?
現場でGUIアプリケーションはどのように作りますか? >>379
未だにそれよ
無駄にはならないよ
なんだかんだいって仕組みは一緒だから >>373
できました。ありがとうございます。
>>370を作る過程でマウスの中クリックでWebBrowserのタブ追加を行う際にTabControlクラスのメソッドを呼ばないと行けないんですが、この場合どうするのがいいのでしょうか?
・TabControlクラスのメソッドをTabPageクラスのコンストラクタに渡し、さらにWebBrowserのコンストラクタに渡す
・TabControlクラス内でパブリックな静的インスタンスを保持するプロパティを作成し、その静的インスタンスを介しWebBrowserクラスからメソッドを呼び出す >>384
途中送信してしまいました
設計上はどちらが優れているのか教えてほしいです
また他にいい案ありましたらお願いします >>383
それ聞いて安心したよ。ありがとう。
まずはFormアプリケーションを勉強することにした。 質問です
宜しくお願いしいます
アプリ設定の保存の最も初歩的な所から勉強しようと思っているのですが
http://qiita.com/taigaaa2/items/7f05ad950a57033892ae
↑が一番単純な構造で分かりやすいと思い、記述通りに設定し、ソースも必要部分をコピペで入力
エラーもでずにアプリも走りますが、設定を読み込んでいない(Projects\Hoge\Hoge\bin\Debug内のHoge.exe.configを弄っても何も反映されない)
保存もされていない(user.configがどこにも作成されていない)という状況です
どこか他に設定箇所があるのでしょうか?
よろしくお願いします >>388
ありがちなのは
Properties.Settings.Default.Save();
が抜けている ありがとうございます
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Properties.Settings.Default.HozonString = this.txtHogeString.Text;
Properties.Settings.Default.HozonInt = int.Parse(this.txtHogeInt.Text);
Properties.Settings.Default.Save();
}
この部分の最終行ですよね?
書いてあります HozonStringに値を入れても反映されません…
なんかこのシステム自体が動いてないような… >>388
そのページはデザイナの設定が書いてないがLoadとFormClosingのイベントの設定はしてある? >>392
ありがとうございます
それでした!
Formのプロパティーとかもデザイナー使わないで設定する方法ばかりやってたんで、
デザイナーの方でハンドラの設定してないのすっかり忘れてました
LoadもFormダブルクリックするのすっかり忘れて…お恥ずかしい
ありがとうございました
凄く助かりました データベース接続文字列ってあんな長いの手動で書くものなんでしょうか?
自動出力とかないのですか? 長いか?
長い奴でも2〜3行程度しか書いたことないけど データベースへの接続のウィザードとか使えば接続文字列勝手に作ってくれるだろ >>395
DbConnectionStringBuilderからの派生クラス使うとか
Dictionary形式だから項目多いなら管理楽になるけど 接続文字列は全世代の遺物なんだけど
誰も改善しようとしない
ローカルルールだからけの文字列をわざわざ考えて
それをまたどこかでわざわざパースしてるんだから馬鹿らしい
connectionStringBuilderとかあるけどあれは文字列作って
それをまたパースしてるんだから同じく馬鹿らしい >>386
ありがとうございます
取り掛かっているのですがマウスのホイールクリックで新たなタブとして開きたいのですが
WebBrowser.Document.Clickイベントで躓いています
WebBrowser_DocumentCompletedイベントに「Document.Click += Document_Click」をの一文を追加し
Document_ClickイベントのマウスのHtmlElementEventArgs.MouseButtonPressedでホイールクリックを検知しようとしたところ
左クリックでも中クリックでも右クリックでもNoneと表示されています
WebBrowserのDocument上で中クリックを検出するにはどうすればいいでしょうか? すみません
変な質問かもしれませんが、宜しくお願いします
Label hogehoge = new Label
とhogehogeというインスタンスのLabelを作ったとします
プロパティーで名前は指定していません
他のプロパティーも空という前提でお願いします
このLabelのダブルクリックでイベントハンドラーを作り
イベントの中に
Console.WriteLine(((Label)sender).Name);
としても当然名前は出てきません
この時、hogehogeというLabelを識別する文字列を取得したいのですが(この場合hogehogeが一番良い)、インスタンス名を取得 と検索しても出てこずです
名前の付いてないControlを識別する文字列を取得するにはどうしたら良いでしょうか?
Console.WriteLine(((Label)sender).〜のところに使えるいろんなコードをスニペットで調べてもそれっぽいものが無いのですが
そもそも名前を付けとけというのは別として、なんらかの方法で識別する文字列を取得できますか?
よろしくお願いします ないよ
欲しいなら自分で付けとけとしか言いようがないね
というかそもそも識別するのに名前である必要がある? ってところから検討しないと >>401
名前以外で固有ってハンドルくらいじゃね?
自動生成とかで名前を付ける手間を省きたいとかなら>>403の通り名前である必要が無いし >>404
自分もデバッグ用にと思ったんです
>>403>>405
どうもありがとうございます
やはりなさそうですね
色々実験している時に、一度何かの間違いで、forのLoopの中で、インスタンス名?も名前も変えないControlを複数作って配置したことが有って、
何故かそのまま動いて、それぞれ個別に識別してるようなので、何が別の識別要素でもあるのかな?と思ってお伺いしました
ありがとうございました
>>402
nameofは新しいものらしく、情報が少なくて私には使い方がよくわからず
ちょこっと説明みたところ「メンバ hogeの名前は"hoge"」…みたいな使い方?
入り口の入り口にいる自分には何が何やら
nameof(sender)をやってみたら"sender"出ましたw
nameof((Label)sender)は受け付けてもらえませんでした 変数名を取得したいんじゃなくて
インスタンス作成時にコントロールのNameプロパティに変数名を自動でセットしたいの?
そんな機能は存在しないから自分でシコシコ手書きでやっとけ リフレクションでもないんかな?
msのコントロールにもインスタンス突っ込むとメンバ名が出てくるのあるけどね
変数名は無いのか リフレクションでもないんかな?
msのコントロールにもインスタンス突っ込むとメンバ名が出てくるのあるけどね
変数名は無いのか ローカル変数名なんてILに残らないし流石にリフレクションは無理なのでは Name属性がなくてもsender==label1とかの識別ならできるけど中でハンドル比較しているんじゃないかな
だからどうしても出したかったらフィールドの一覧から一致するハンドルを探せばできなくはない >>406
Formに配置したコントロールは、Controlsプロパティで取得出来る。
Controls.Where( x => x is Label )とかやればLabelコントロールに絞り込めるけど、それ以上は判別しようがないな。 設計なんて大げさなものじゃなく、考え方が間違ってるねw
なんか盛大に勘違いしてるというか
なぜNameをIDにしたいなら素直にNameを設定しないのか意味が分からない
何がしたいの 変数名とNameで2回hogeと書くのが冗長だってんでしょ
是非についてはどうでもよすぎるのでコメントしない
鼻くそでもほじってる方がマシ 変数名は前まではプログラムする人のためにあって
実行環境まで残ってないものだった
最近は変数名が残るようになったので使おうとする人が多いけど
もともとそういう種類のものじゃないんだよ 自己解決しました。
Document.ClickイベントではなくDocument.Linksのほうに一つずつMouseDownイベントを追加することでできました
これは解決済みなのですが、すっきりしないので確認させてください
Document.LinksのMouseDownイベント内でDocument.GetElementFromPointメソッドに渡す引数ですが、
MousePositionやOffsetMousePositionを渡すようにしているページがかなりあったのですが、どっちも使えずでClientMousePositionを渡すようにしたのですが
.NETのバージョンがあがるにつれ、変わったのでしょうか? パネルに画像などを追加していった際、描画範囲より外に出てしまった場合に
AutoScrollをtureにするとスクロールバーが表示されますよね?
縦方向のスクロールバーが本来は右側に出ると思うのですが、左側に出てしまいます。
すごく違和感があるので右側にしたいのですが、調べてみても特に設定する方法がみつからないのですが、
なぜなんでしょうか? RightToLeftとRightToLeftLayoutのプロパティをいじったとか >>420
無事解決しました。
プロパティを触っているときにうっかりRightToLeftをYesにしてしまっていたようです、ありがとうございました。 質問です。ボタンの外観が変わらないのです。
http://or2.mobi/data/img/171707.png
画像の左側がデザイン時、右側がデバッグ時です。
左側のデザイン時にしたいのですがどうしたらいいですか?
FlatStyleを変更しても変わりませんでした。 Application.Runする前にApplication.EnableVisualStyles()呼んでる? >>423 >>424
ありがとうございました。解決しました。 何度もすいません
TabControlとWebBrowserを使用し、タブブラウザを作っているのですがFirefoxのアドオンにあるツリー型タブのようにツリー構造(親タブ子タブ)みたいにしたいのですが
どのようにすればできるのでしょうか?TabControlでは無理なのでしょうか? 無理ではないかもしれんが一から作ったほうが早そうというかストレス少なそう よし、じゃあ、TabControlのラベルのフォントを大きくして見るんだ! みんな苦労して勉強して自分の作りたいものを作ってんじゃないの?
それを一言でどうすればいいんですかって虫が良すぎる気がする
ツリー型タブってどういうものか知らないけどちょっと画像見たら
ただアイテムが親子関係がありそうに見えるように作ってあるだけに見える
あああ
いいい
うううう
を
あああ
いいい
うううう
にしただけ
まあタブの機能は自分でなんとかするしかないね 一から作るということが想像できませんでした。
インデント?ツリー構造?どうやって作ればいいんだろうという感じです。
どういったことを勉強すればよいでしょうか? >>431
上に書いてもらってるじゃん
ツリー構造はTabControlじゃどう考えても無理だから「一から作ったほうが早そう」ってなるんだよ 自分でやったことないのに無責任に言うけど、Windows FormならTreeViewを
継承して拡張でいけるんじゃない?
なんなら素のTreeViewでも機能的な要件は満たせるよねたぶん Linqについてなのですが
List<int> list = new List<int> {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
のようなListを
{0, 1, 2} {1, 2, 3}{2, 3, 4}・・・{8, 9, 10}
のような感じで取得しながらLinqを記述する方法ってあるのでしょうか?
Take(3)やWhereの組み合わせで出来るのか、Indexをあらかじめ列挙して対応させるしかないのかと考えています
Linqで書かない場合はコードは長くなりますが書ける状態です >>434
Ix(Interactive Extensions)のBufferに似てるけどそのまま使えないので、
自作の拡張メソッドでも作れば? >>435
>>436
forとYieldでこの形に出来るんですね
望み通りの動きの上、コードもスッキリしてて凄いです
ありがとうございました VisualStudio2017でスニッペトが壊れました。
cw tab tabでConsole.WriteLine()となるべきがconstになっちゃいます!
どうすれば直りますか? VS2017で勉強してます
https://msdn.microsoft.com/ja-jp/library/bb546972(v=vs.110).aspx
このページのドキュメントアウトラインでColumnDefinitionsなどの要素が表示されません
https://i.imgur.com/I7U1sSH.jpg
Glidを展開しても3個の配置したControlしか表示されません
バージョンの違いなのかとも思うのですが、詳細を表示するにはどうしたら良いでしょうか? LINQが使えるって言えるのってどのくらいから?
Select、Where、Orderbyが使えたら使えるって言ってもいいんかな? >>440
joinもgroup byも必須
SQLは開発者の常識だから、一通り使いこなせないとできるとは見做されないよ
まずはSQLの本で普通にSQL覚えるのがいいのでは
LINQより遥かに重要だよ テーブルレイアウトパネルを動的に追加し
列の幅をパーセントで指定しようと思ってます
https://ideone.com/lK68fg
の16行目で
インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。
とエラーが出て止まってしまいます
同行を
testLayoutPanel.ColumnStyles[0] = new ColumnStyle(SizeType.Percent, 50);
と置き換えても同じです
ColumnCount = 2;
としているので、インデックス0でエラーが出るのがよくわかりません
何を間違えているのでしょうか?
よろしくお願いします >>441
LINQは別にSQLの代わりじゃないのだが LINQ=クエリと勘違いしてLINQ毛嫌いする人多いから困るわ LINQのQはqueryなんですが...
どうでもいいんだけどメソッド形式をLINQと呼ぶのも変だよね
MSって昔から用語をないがしろにしてるよね。 LINQは検索とソートと重複除去でとっても便利!みんなも使ってね! なるほどありがとう
今思い出しながらGroupByとJoin戦ってるけど使い方わからん
SQLのやつならわかるけどLINQでどう書くんだ?
var list = new[] {
new {Name = "A", Uri = 150},
new {Name = "A", Uri = 160},
new {Name = "B", Uri = 16},
new {Name = "B", Uri = 1000},
new {Name = "B", Uri = 1000}
};
var query = list.Where(x => x.Name == "A").GroupBy(x => x.Uri);
foreach(var union in query)
{
Console.WriteLine("Name = {0}", union);
} >>445
なぜ変なの?言語(language)に統合された(integrated)クエリ(query)だろ? >>449
説明必要?
統合された結果出来たのはクエリ式。
ただのメソッド呼び出しが「言語に統合」なんかされてるわけないでしょ >>450
言語に統合されてるからこそ、c#らしい構文のままでクエリ書けるんだよ だからそれはクエリ式。
メソッド形式とクエリ式の違い分かります?
ボケてるのかマジボケなのかどっちよ queryってクエリ式だけではなくて、問い合わせの意そのものを指してんじゃ無いの? >>452
メソッド形式をクエリと呼んじゃダメな理由でもあるの? >>448
group by と join はクエリ式で書いた方がいい
可読性最悪 クエリ式に関してはQuery expressionときちんと明記しとるな、英語版MSDNは。 ###HUM###
000-K,AZ,0,1,
001-KI,L,I.T,DEF,11.2,TE,F,0.12235,
002-EM,OBLA,7##END >>442
testLayoutPanel.ColumnStylesのコレクションが無い
まずデザイナで作ってみて要素確認してから動的に追加する方法を考えるべき >>462
ありがとうございます!
https://ideone.com/GBSGtn
デザイナを参考にこうしたところ、テーブルレイアウトパネルを動的に追加することはできました
で、ご指摘のコレクションですが、
ColumnStyle(SizeType.Percent, 33F)をnewでaddしてるということは、
テーブルレイアウトパネルには、わざわざ指定して追加しないとコレクションそのものが空で、
それを指定する形だったのでインデックスの範囲を超えていたという解釈で良いのでしょうか?
まだこういうコレクション(プロパティーが入ってる)を扱ったことがなかったので、完全には把握してませんがなんとなく、ふわっとした感じですが理解できた気がします
とりあえず行も列も動的に追加すること無く、この設定時のパーセンテージで表示できればいいので、今のところこの表記方法で目的達成できました
助かりました
ありがとうございました
( ・ω・ )。o(初心者にはMSのサイトも、他の検索に出てくるサイトもわかりにくずらかった…) ちなみに、
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.tablelayoutpanel.columnstyles(v=vs.110).aspx
これを改造して色々やっても
style.SizeType = SizeType.Percent;
style.Width = 33;
が上手く作動してない様子でした Rxで過去N回に渡って発行された値を列挙する方法ってないですかね?
2回分取るだけなら同じストリームのSkip(1)とZipすれば行けるらしいんだけど >>466
イマイチ理解が追いついてないんだけど、例えば0,1,2,3,4,5って値が流れてくるストリームをBuffer(3)で待つと、
{0,1,2} <- OnNext(2)のとき
{3,4,5} <- OnNext(5)のとき
って流れてくると理解してるんですが、
{2,1,0} <- OnNext(2)のとき
{3,2,1} <- OnNext(3)のとき
{4,3,2} <- OnNext(4)のとき
{5,4,3} <- OnNext(5)のとき
っていうのもBuffer/Windowできるんですか? >>467
Buffer(3, 1)で
{0,1,2}
{1,2,3}
{2,3,4}
…
Overlapping Bufferとかで検索して >>468
なるほど、そういうオーバーロードがあるんですね!
助かりましたありがとうございます >>456
めちゃくちゃ悪いですね
group byとjoinだけではなくLINQは全てクエリ式で書くようにしたほうがいいんですかね? LINQの話はするなって言わなかったっけ?
このスレで取り扱うのはC#2.0までですよっと >>473
初心者は縛りプレイはできないから
縛りプレイする上級者は他に行ってどうぞ? linqの話題って話した後の
だからなんだよ感が強いな
99%がlinq使わなきゃ書ける
みたいな奴が質問しにくんの
使わなきゃいいじゃんw
自分もよくわからないし
おそらく他人もそのコードみても
よくわからんよなw
言語として駄目じゃねぇ?
わかりにくいし
実際わからなくてお前質問してんじゃん
でもわざわざlinqで書こうとするんだよな
実行速度も遅いのに
えー?なんでー?そんなことするのー?
って俺は思う Linq使うと起動が10倍遅い君はま〜だ同じこと言ってるの?
はやく勉強しなさい Linq遅い君は
.net使う奴はダメだ
アセンブラで全部かける、1000倍速いって言ってるのと同じ >>479
ほんとそれ
以前もなんでC#使ってるの?って皮肉込めて言ってあげたのに
無知すぎて自分が馬鹿なこと言ってるって気付いていないんだよなぁ >>479
その言い分もなんかズレてる気がするんだよなー
お客さんにメリットないし
アプリの品質って面でもぶっちゃけ微妙だよね
上がってるのか下がってるのか
甲乙つけがたい >>482
いやー
でもこの労力を支払ってまで覚えることか?
っていうと絶対その価値はないような? >>483
はい馬鹿
お前の頭の中だけだぞ、Linqは10倍起動が遅いのは。 >>484
要はお前ら何か作りたいものがあるわけじゃなくて
ただ、暇なんだよな
プログラムって組めるようになっちまえば差なんか無いもんな >>485
馬鹿が何言っても戯言でしか扱われないよ
だからお前は底辺なんだよ
はやく勉強しなさい 労力?
Linqって苦労して身に着けることなのか?
いくつか覚えることあるけどその後は使うだけだぞ? >>491
それは自分の頭が悪いからって気付こう? 複雑なのは置いといて
普通のは普通に使えるでしょ?
それじゃダメなのか? >>493
こんな簡単に理屈を捻じ曲げるのが大得意
否定こそ正義みたいなのが未だに文化だよな
疲れないんかな? >>493
だったらlinq使ってない普通のが読みやすくてデバッグもし易いんだけど? >>495
じゃあなんで世界中で使われてるのかな?ん?
その理由答えてみなよ コードろくに書けない連中がここでデカい顔しているだけだろ。みっともない >>499
stackoverflowだけでもLinqについてこれだけの質問が出てるのに誰も使ってないと思ってるの?
https://stackoverflow.com/search?q=c%23+linq >>501
何を持って少ないと言ってるのか明示してみろ
どうせ出来ないんだろ無能 > ID:sNRbvHHL
世界中で使われてる現実を直視できず否定するなら
世界で使われてない証拠を出せよ
こいつの頭はお花畑か?プログラマー失格。向いてないから肉体労働でもやってろ >>502
何をもって多いって言ってるの?
c言語ユーザより多いの? >>503
はぁ?
そんなに大盛況ならlinqスレ使えよ
友の会解散したのか?w >>504-505
なんでいきなりC言語が出て来るの?
答えられないからって逃げるなよ 質問しなきゃ使えないような、難しいものじゃないしな >>507
他との比較がないと多いってのは表現できないよね? クラスなんか使うなとか、 正規表現なんかイラネとか 昔からこういうのずっといるじゃん。
そんなやつを叩く必要は全くない。 そっすねって言っとけばいい。 linq友の会スレもうすぐ十周年じゃねーか!w
10年かけて1スレも消費できずに要るとかwwww for (int i = 0; i < array.Length; i++) みたいなほうが見やすいって人も世の中にはいるんだよ。
理解はしなくてもいいけど、 そういう人がいることは現実なので受け入れなくてはならない。 使わない言い訳も、昔からの決まり文句があって、
こんなの誰も読めない、使ってないって言うんだ。 上司だったら会社辞めたり、部下だったらまあ、それなりのことは言うだろうけど
まあ、他人なら そっすねー で終わり。 ID:sNRbvHHL
いつになったら証拠提示するの?底辺無職君 ID:sNRbvHHL
こいつみたいな出来の悪い子供を産んでしまって両親はさぞ悔やんでるだろうな ID:sNRbvHHL
現実を直視できないガチの障害者
Linqで起動が10倍遅い異世界の住人だろ ID:sNRbvHHL
親に生まれてきてごめんなさいしてこいよ
それか親も障害者か?だからお前みたいなキチガイが産まれたわけ? >>526
2chのスレをソースにする馬鹿って未だ居るんだ この馬鹿、例えば俺がスレ立てて自演でスレ埋めたらどうするんだ?(笑) >>529
2013からドキュメントアウトラインが変わったみたいね
まあ気にしなくてもいいよ いちいちドキュメントアウトライン見に行くとかむしろ面倒だし >>513
入門者の方へ
forはバグの温床だからiがいらない場合は
なるべくforは使わない方がいいです
10年前では考えられなかったけど でもListの要素とか複数削除したいときすぐ必要になるよね >>532
ToArray()すればforeachでも消せるよ
foreach(var hage in hoge.ToArray())
{
hoge.Remove(hage);
}
で大丈夫 forが禁止で>>533でClear()も禁止ですか
何も書けなくなるね もう配列自体なくしてほしい
AddRangeみたいに配列を引数にするやつも
IEnumerable入れられるようにしてほしい パフォーマンス上必要だったりアンマネージド呼び出しで必要だったりするので
それは無理。
って書くとまた馬鹿が暴れ出すかもしれんが、ケースバイケースで柔軟に考えなきゃ。
馬鹿の一つ覚えは頭が悪い >>535
消し方だから省略したが、通常はRemove行には何らかの条件付けるだろ >>543
自分が>>513の意図を理解していないのは気付かないのか
Linqもまとめて
ふらっと C#,C♯,C#(議論用)
http://mevius.2ch.net/test/read.cgi/tech/1469538912/
に行け。スレ違い %%%3%%%
000-DOK<NAZE-0.8112162>
001-3800%\73NMB/1,81,2,NB"IKKI"%
002-91.81%ML7"8.122231746668193,43@ML.4@"%^23.1444
003-1.33321444718%"YLD""SO"%{71.%{62.1339816{331.422231765%<<<NL6
004-LOOP%Go To"000"%
VCL ふと思い立ち、Release版の実行ファイルをバイナリで見たところ、
C:\Users\(ユーザ名)\Documents\Visual Studio 2017\Projects\CodeHelloWorld\CodeHelloWorld\obj\Release\CodeHelloWorld.pdb
という文字列が平文で入ってました。
コレでは個人情報がダダ漏れなので調べてみると、デバッグ情報でnoneを設定すると出なくなるという情報があったので、Releaseビルドではnoneを設定しリビルドしてみましたが、同様の文字列が入ります。
デバッグビルドの方もnoneにしてもでます、デバッグ版には入ってます(当然)
embeddedでビルドすると、平文ではでてこないようですが、コレもなんか変な気が…(難読化されて入ってる?そもそも埋め込みだからパスが入る必要性がない?)
Portableでも入るのを確認しています。
バイナリに平文でユーザー名(ソリューションの作成時のフォルダのフルパス)が入ることに対する情報があまりないのですが、皆さん気にしてないのでしょうか?
何か他に設定がいるのでしょうか?
よろしくお願いします。
情報
ttps://qiita.com/lainzero/items/27681ddc96638e33758b
中身は
簡素なhaloworldです ミス:デバッグビルドの方もnoneにしてもでます、デバッグ版には入ってます(当然)
訂正:デバッグビルドの方もnoneにしてもでます。 VS2017ならpdb出さない設定でもパスが入っちゃうのは既知のバグ
修正待ち >>550
ありがとうございます。
そうなんですか…
既知ならいずれ治るのかな。
embeddedでビルドすればとりあえず平文では見えないのでコレでやっちゃっていいのかな…
結構な大問題だと思うけど、日本語情報あまりないようだから、あまり皆さん気にしてない?
日本語でその手のバグ情報載ってる所ありますか?
とりあえずソリューションのフォルダ何処かへ移したほうがいいのかも? そんなに気になるものかね
Buildアカウント作ってそれで作ればいい ドキュメントフォルダーを他のドライブに持っていっているから問題ないな スレ違いだけどOSのユーザー名はただのIDだから
フルネームの実名を入れる必要はないし入れちゃダメだよw
オフィスなんかでドキュメントの作成者に入る名前は別の設定であったはずだし >>554
Microsoftアカウント名だったりするんだろ 自分で便利な拡張メソッドやカスタムコントロール作ったんですが、いろいろなプロジェクトで参照したい場合dllファイルにするしかないんですか?
できればdllファイルを使用せずに参照追加したいのですが、できないのでしょうか? >>556
NuGetパッケージ化すれば?中身はdllだけど
なんでdllは嫌なの? >>556
EXEでもプロジェクトから参照出来るけど、プロジェクト分割してDLL化した方がその後楽になると思う >>556
ソースがあるのなら
using (名前空間) で取り込んでしまえばいいだけでは >>557
参照したいものはクラスライブラリで作成しましたが、参照の追加→プロジェクトを見ても何もないんですよね
>>559
大きいものならそれでいいのですが、わずか200行くらいのものなので・・・ >>556
運用を考えてない雑魚の疑問
作成物Aと作成物Bと
共通dllの作成物Sがあったとして
作成物Bには不具合があって
使用している共通dllの作成物Sを修正しました
このとき作成物Aもリビルドすんの?
お前が言ってる共通ソースで運用すると過去に作ったもの全リビルド
誰にも金もらえないわ
客に納めた最終納品物と違う物できるわ
正直ヤバイ
企業だと100個や200個じゃすまへんで >>561
ソリューション->追加->既存のプロジェクト
をやってから 前もプロジェクト参照知らずにobjフォルダのバイナリを直接参照して
何かトラブってる人おったな nuget挙げてるやつが一人しかいないことに驚いたわ 入れ子になったオブジェクトのListをファイルとして保存、読み込みするのに、
バイナリファイルにして保存、読み込みしていたのですが、List数が千近くになると、
読み込みに5秒以上かかるようになってしまったので、高速化したいと思ってます。
調べてみるとDataContractSerializerがいいかなーとも思ったのですが、
DataMemberAttribute.Orderプロパティを設定していないと、メンバの順番が
数値やアルファベット順になるため、逆シリアル化するときに、正しくできないですよね?
メンバ数が多いので1つ1つ今のコードに設定するのもかなり苦行なんですが、
何かいい方法はないものでしょうか? >>566
MessagePack for C# いいよ爆速だよ >>566
JSON.NETでいいよ
たかが1000件くらいテキストでも楽勝
BinaryFormatterとか昔からあるシリアライザは遅いので有名 >>566
> 数値やアルファベット順になるため、逆シリアル化するときに、正しくできないですよね?
大丈夫なはずだけどね。 自動実装プロパティとインスタンス変数の使い分けを教えてくれ。拙者には違いがわからぬ。 基本的にpublic/protectedである"外に見せる"ものはフィールドでは書かない 外部に公開するのは基本プロパティでOK
複数プロジェクト環境だとメンバ変数からプロパティに変更すると
参照している側もビルドしなくちゃいけなくなる もう、インスタンス変数は全部自動実装プロパティで良いんじゃないの?
コーディングの負担も{get;set;}だけだし。 refで渡せないからInterlockedとかで困るんよ >>575
そんなん使わないでget; set;の中でlockしとけば良いんじゃないの?
自動実装じゃできないけど。 >>565
>>558
nuget使うとver管理が逆に面倒になることもあるから
自分で管理したほうがいいかも >>556
VS2017(VS2015以降?)には共有プロジェクトと言うのがある。
ソリューションに菱餅みたいなアイコンでプロジェクトが追加されて
他のプロジェクトから共有プロジェクトとして参照できる。 console.WriteLineとconsole.Writeて何が違う? >>578
プライベートNuGetリポジトリのことやろあほか >>584
なに言ってんだ?
その話以外何があるんだ?
自分だけならプライベートリポジトリ使う意味が薄い
会社とかで数人以上なら意味があるけど自分だけで使うなら管理コストが増えるだけ 自分のところで作ったものも含めて完全にNuGetで管理するのは
自社サービスの会社でない限り現実的ではないわな DLLが嫌って言ってるんだから普通にソリューションにプロジェクトをインポートするだけでいい
それを知らないから質問してきたんだろ? >>585
NuGetパッケージ化したことのない人がこれです WPFわけわかんねぇええええええええええええええええええええ
動的に配置すんのめんどくせえええええええええええええ
なんじゃこれええええええええええええええええ
はぁスッキリした
Formの森に帰る・・・ 普通にやると面倒だから
自分のやりやすいようにヘルパークラスでも作ればいいと思うよ
(MSの人はそういう考え方はないみたいだけど)
動的追加が身につけばそれを使えばいい 結局ASP.NET MVCはweb開発の市民権を得れたの? >>594
最近使ってる企業を見たことがない
しかもMVC自体が今後やって行けるのかどうか謎
asp.netシリーズは早く終息させたほうがいい
開発リソースの無駄
業務じゃASP.NET Coreはほとんど誰も使ってないんだから明日捨ててもほとんど支障がない 調べたぞ
IISのシェアが伸びてると言って喜んでるけど
欧米では下がってる
中国で小規模サイトが増えててそこでIISのシェアが高い
中国ではasp.netの技術者がそこそこいる Windows FormでPictureBoxにプログラムで描画した画像の上に
マウスドラッグで選択範囲を表すラバーバンドを表示したいと思うんだけど、
(1) 画像はBitmapに描画してPictureBox.BAckgroundImageに設定。
ドラッグ時マウス移動で必要部分を無効化してPainrイベントでラバーバンドを描画
(2) 画像もラバーバンドもPaintイベントて描画。ドラッグ時マウス移動で必要部分を無効化する。
(3) 画像はPaintイベントて描画。ラバーバンドはドラッグ時にMouseMoveイベントでCreateGraphcs使って描画。
ラバーバンド描画時、ラバーバンドが描画される位置の画像をBitBltでBitmapにキャプチャーしておき、
ドラッグ時のマウス移動ごとに無効化する必要がないようにする。
これら3つの実装方法を思いつくけど、他にもっと簡単な方法あります?
DrawFocusRectはさすがにビジュアル的に却下で つボタン(範囲編集モードボタン)+トラックバー+テキストボックス
昔、得意気にそういうの作ったら
ああ、いや、数値でしか入力しないからw
って言われてボタン+トラックバーとテキストボックスになった
トラックバーはあんまり使わないらしい 基底クラスでvirtual宣言したメソッドを
abstract付けた時のように派生クラスで必ずoverrideしないといけないようにする方法って、無いですかね? >>606
abstractを付ける
必ずオーバーライドされるのに実装書く意味ないだろ?
superで呼びたいんなら代わりに別のprotectedメソッドにするか、
逆の発想でTemplateMethodパターンで差し替えたいところだけprotected abstractにして基底から呼べばいい C#やるならCなんて絶対にやっちゃダメだろ
十中八九手続き型プログラム書き始める >>609
cのポインタの概念を理解出来ないヤツがc#のオブジェクトを扱うと。
以下省略致します。 >>611
c#の変数はnewしなきゃいけないと思い込んてるヤツが少なからず居て、newした直後に別のインスタンスを代入とか。
参照と中身の区別の曖昧なやつ多すぎ。 >>613
それはC関係ないわ
c#理解してないだけ >>614
結構居るぞ。
cのポインタの概念がわかってりゃありえん。 >615
それは、
・cのポインタの概念を理解していれば
・c#の参照の概念を理解していれば
が等価じゃないの?
なんにせよ個人の理解力不足で、cを先にの理由にはならなくない? >>613
インスタンスの概念にポインタの理解が必須とか本当にポインタやインスタンスの概念理解していないのはわかる Cやったやつが こうに違いないみたいな思い込みしてんだから
そいつ自体が証明してんだよな >>618-619
お前ら、枝葉末節に拘りすぎじゃのう。
もっと森を見ろよな。 物事の上っ面しか見えないお前らにとってc言語は害悪でしか無いのは認めようw 要領を得ない例を挙げて「真意がわからないのか」というバカ またアルツハイマー患者の繰り言が始まった。
どうでもいいけど、もともとの話は、入門者がいきなりC#みたいな今時の言語から始めるより
一旦Cを経由した方が回り道のように思えて結局近道なんじゃないかって話だ。
いつもの馬鹿の「老害ガー、俺スゲー」っていう意味不明な被害妄想と
その裏返しの自己陶酔の開陳、みたいな間抜けな話じゃないよ まあ、大抵のやつはポインタでつっかえて終了確定だから
c#のがええよ
そのうちでかいメモリ扱ってるうちにポインタ的要素は理解できるっしょ >>625
上っ面の認識で間違った人が言ってもなぁ 特にない。ハードウェアを知ることはプログラミングに関して必要なだけ >>628
ポインターで挫折するようなやつは他の言語でも駄目だ。
cの入門書のポインターの説明もたいがいだがな。 >>633
じゃ、お前、なんかうまい解説サイトでも作れよ ポインターとかメモリアロケートの概念に関わらなくてもいいようにC#作ったのに
利用者の頭が進化しないと言語開発者が泣くわ >>636
見えなくしたぶん余計深刻になってる気がするわ >>636
ポインタとメモリアロケーションは全く別物
まともなコード書きたければ
C#でもメモリアロケーションの理解は必須 >>638
そのためにはcのような低レベルの言語の理解が必要なのだ。 >>641
c#
だって入門書があって
簡単に画面が表示できる言語っていつの間にかこれしかねーし むしろ
入門書が無くて
簡単に画面が表示出来ない言語を知りたい
一般的なプログラミング言語でそんなのあんの? >>644
テンプレートを使ってWinFormなりWPFで画面は簡単に出ました。そこから先で頓挫する。c#は覚えなきゃいけない概念が多すぎる。msdnは奇怪翻訳でわけわからんし。 >>645
最近書籍買ってねーだろ
結構苦労しないと他言語でGUIって難しいぞ >>646
ああ、他言語そこまで行かないから
そこまでできたら後はぶっちゃけなんでもできるな
WPFはさわんなくていい
winform覚えてな
直接納品しなくても
ちょっとしたツール作るときに
絶対役に立つから 横から失礼
c#の入門書はまだ新刊が結構出てるよ
内容見たらどの本もWPFはなかったことになっててwinformsの使い方が出てる >>648
c#をvb6のように使うのならそれで良いかもね。 >>647
普通に考えてJavaとかな
SceneBuilderで簡単に作れる
それとGtkのバインドある言語とかね
Gladeあるから簡単だし
Qtなんかもっと簡単だろ
むしろお前はC#しか知らないんじゃないのか? c#は覚えることが多いというのは間違いじゃないです
cなんかと比べると多いです
クラスに始まり event delegate プロパティ インデクサ
そこからLinq ラムダ式 Task async/await パラレルといっぱい概念が出てくるので迷いがち
GUIにこだわらないならpythonでもやればいいと思います >>652
JavaFXな
Swingと違って全然まともだよ 新規でjavaを覚えるとしたらandroidがらみか
仕事で使うためとかそんなのじゃないですか?
ホビーでjava使う人ってほとんど死滅したと思う
java単体の入門書も全然でてない >>654
入門書一冊しか見たことないよ
まともなリソースエディタもなさそうだし >>655
俺の知り合いはkotlinやりたいけど
java知識無いとkotlinわからんって言って
今さらjava勉強し始めたよ
何事も決めつけは良くない
自分がそうだからって他人もそうだと思うのは良くない傾向 初めにc#にたどり着いた人間は幸せだったということで goは新しいjavaだと思う
機能制約してコードの品質を中程度に保つための言語 >>656
「javafx 書籍」でググれば出てくるよ
別にC#が好きでC#をやるのは大いに結構だと思う
俺もC#好きでやってるからこのスレ見てるし
そこは否定しない
でも大して多言語のことを知らんのに
多言語より優れてるとか吹聴するのはどうかと思うよ >>662
全然ないじゃん
それとこれリソースエディタ動くの? >>658
c#の進化とともに歩めた人はでしょう。
今から乗り込むのは辛いだろ。 >>662
駄目だよ
ブログとかだと
scenebuilderいいみたいに書いてあるけど
バグってるよこいつ
すぐ読めなくなるじゃん
何が原因かわかんないし調査する気もないけど >>664
ずっとこいつだと思うよ
さっきから言ってるように
他言語で簡単にGUIを作る方法が無くなりつつある GUIはHTML5でいいでしょ
そしてMSはtype scriptとnode.jsとexpressを使ったのでした >>667
htmlのビジュアル編集って意外と敷居高くね?w 敷居高いけど、どのみち現代の開発者には必須のスキルだからな DOMなんか何が難しいんだ
CSSはバッドノウハウ地獄で確かに難しいけどBootstrapみたいなのもある ちょっと思ったけど、web系の人って生産性が低い道具を擁護することで
自尊心と飯の種を得ている様は、昔のコボラーなんかと同じ構図だねw
本人たちは逆に俺様こそが時代の最先端だと思いたいところだろうけど いや、俺が欲しいのはhtmlやGUIのビジュアル編集ツールなんだけど
そういうのある言語ってc#ぐらいしか残ってないよねって感じ ホームページビルダーとかDreamWeaverって最近どうなんだろ?
ってそんなもん入門プログラム作成するのに引っ張り出すぐらいなら
やっぱりc#だと思うが >>676
なんか、C++の開発者の例のジョークを連想させる状況だなw DBへの接続や読み書き等をクラス化しようと思うのですが、関数化したい機能が多すぎてDB関連クラスの中身が膨大になると思います
いいサイズになるように分けていきたいところですがどのような感じでクラス設計してるのでしょうか?
設計関連でおすすめの参考書等もあればお聞きしたいです >>674
Webのデザイナなんかゴミみたいな単価で山ほどいるからね
それに、特に米国で顕著なパッケージ化の流れで、不特定多数向けにクォリティを高める開発形態が増えている
GUIの生産性はそれほど重要ではなくなりつつあるんだよ >>680
理想を言えば、エンティティクラス自体に関連する処理を実装する
いわゆるドメインモデルってやつだ
682のリポジトリパターンはDBからのエンティティの取り出しと保存だけを抽象化するもので、
細かいトランザクションロジックの整理には役立たないよ いや、でかくなるけどどうしたらって回答がそんななの? >>682-685
ありがとうございます
デザインパターンに詳しく無いので、この形がいいって回答はかなり参考になります
ドメインモデル、リポジトリパターンについてどういうものか調べてみます >>645
インテルの黒本をディスったなぁ
ARMにもディスられた事無いのに〜 >>684
頭おかしいよねw
一つのクラスめっちゃでかくなるわ
どーすんだ?これ
って質問なのに
質問に対して全く答えてねぇのが笑える
ミソが腐っているのだろうか? >>688
クラスを分けることを目的にするのは典型的なアンチパターンだからな
レビューでフォームクラスの行数オーバーで弾かれたから、イベントハンドラをそっくり別のクラスに移動するような阿呆を生み出しかねない >>689
それで?
一つのクラスがでかくなるときはどうするって? >>680
何で車輪の再発明をするのだ?
Entity Frameworkを使えば良いだろう。 >>692
EntityFrameworkは最近使い方覚えて少し試してるところです
それでも基本的なところと機能別に実装したい中身ってあると思ったんですけど、自分の考え方のがおかしかったでしょうか? >>693
おかしくはないよ。
Entity Frameworkで不足だと思うところは補えば良い。
オレオレ実装(自己満足なだけの)にならなけりゃ。 >>694
dapperのUnitTestどうしてる?EntityFrameworkならこのあたりだけど
https://msdn.microsoft.com/en-us/library/dn314429(v=vs.113).aspx >>696
普通に開発用のDBに繋げよ
DapperならSQL直書きだろ?
テスト対象はそのSQLそのものなんだからDBが本物でないと何の意味もない 補足
Dapperを直接使用してる箇所のテストは上述の通りだけど、
それ以外の部分もDapperがないとテストできないと言うならDapper云々以前に設計が悪い。
それこそリポジトリパターンを使うなりしてDapperに依存しないように差し替えるべきだな 日曜大工プログラマー(書店の本見て勉強)だとテストってやつがわからんのですが
テスト関連の書籍ってでてますかね
プロの方と素人との大きな違いはテストとバグフィックスなのかなって思うとるんですが >>699
用途の違いじゃね?
日曜大工プログラミングならモデルのロジックなんかほとんど無くて入出力とシステム制御のコードほとんどでしょ
そんなのテスト書いてもあまり意味ない 環境をたくさん用意するのは趣味だと無理だろうね
仕様や性能、精度を満たしているかとか
色々な耐久テストとか負荷テストとか
自動でやったり人海戦術だったり
まあいろいろと >>700
テストが意味無いとか
余程の自信家ですねwww >>699
プロと素人の違い?
プロならクライアントに要求されたものが糞だとしても要求通りに作り上げる。
用意された環境が数世代前のPCに長机、パイプ椅子だとしてもひたすら我慢。
我慢こそがプロの必須要件。 >>702
そう、T和田が目の前に居てもテストは不要なのだ。 >>702
自動テストのことね
趣味でもそりゃ手動テストはやるでしょ >>684
>>688
君たちもリポジトリパターン調べてみたほうがいいよ >>704
そういう底辺のプロもあるね
っていうか、ほとんどがそういうただのワーカーか BindingContextの使い方がわからないのですが調べてみても記事がなく困っている状態です
DataGridViewのDataBingingと同じものなのでしょうか?教えてください >>708
ワーカー?
日本のIT産業は奴隷産業なのだ。
奴隷からは何の新しい文化は生まれない。
韓国にさえ負けている日本がIT後進国である原因。 奴隷みたいな働き方をさせられてる奴は結局その程度の能力なんだよ
そういう奴にも仕事があるか、そうでないかの違いだけ
欧米だと基本的にパッケージとオフショアだからね >>712
米国はプロジェクト毎に採用と解雇だよ。
エンジニアは常に流動的。 >>707
よくある、手段と目的が違ってるのすら自分で分かってないパターン。 >>712
能力のせいもあるたろうが日本は至るところに奴隷市場がある。
産業構造が良くない。 >>715
これは>>712が正しい。
むしろ本当は本人自身の能力にある問題を社会に問題があるかのようにすり替えて
自分を慰めている奴が多すぎるのが日本の問題。
簡単に言えばただの需給の問題。
アニメや映像制作の仕事もそうだけど、大幅に供給超過だから
質が低い者が買い叩かれているだけの話で、これは仕方がないどころか
むしろ社会的に好ましい。(そうでなければ需給のアンバランスの調整メカニズムにならないから) いつでもいいからとりあえず請けてくれとか言って納期から2年過ぎてるタスクが手も付けないで積んだまま
よく怒らないで待ってるなぁって思う
しかもそういうタスク自分で持ってきてるくせに緊急だ緊急だってさらに積んでくる馬鹿な客
人もいないからプロジェクトが始まったら結構キツイ残業をさせられる
マジ、今もやめた方がいい
人がいないから一人に平気で2、3個プロジェクト投げてくる
出来もしないのに >>718
だよね〜
SIer案件には近づかないようにしようw >>717
じっぱひとからげには言えない。
デキる人は足りてない。デキない人は大幅に青あってる。だから待遇が悪くなる。
それだけの話。 >>710
BindingSourceに役割を譲ってるから今から調べる意味はないと思うぞ
簡単に言えばデータソースを共有する範囲を決めるためのものだな 他の業界と違って、必要な技能がなくても受け入れる懐の広さがあるよなwww >>723
Excelが使えないと駄目でしょwwww 下級SEはExcelにテストパターンをずっと書くだけの仕事を何年もするって聞いたけど
本当なんだろうか? IT業界でどんなお仕事なさってるのって聞かれたらなんて答えてるのかも気になる >>724
正直、そこらへんの非IT会社の事務員でちょっとPC得意ですくらいの人間の方がExcel使えると思うわ
VBAどころか数式ちょっと使えば一瞬で終わるような単純作業を必死に手作業してる奴ばっか
ITプロフェッショナルって何なんだろうと思う 日立とかにいそう
地元の工業高校出て死ぬまでエクセル職人
でも中小企業のPGより給料がいいみたいな >>729
商業高校でいまだに電卓早打ち競技やってるからな >>729
IT業界のExcelは表計算ソフトウェアではありません。単なる方眼紙です。 あるオブジェクトのプロパティを取得しようとして、もしそのプロパティを持っていないと例外出ますよね?
どうすれば回避出来ますか? >>734
Type.GetProperty(hogehoge)
では まずプロパティがあるかどうか訪ねないで、いきなりプロパティに繋げようとするからダメって事だよな?
いきなり知らない家にいって、ユマちんを出せって言っても通報されるみたいなもんだ。 >>737
そもそも論としてそのプロパティ持ってないオブジェクトに
プロパティでアクセスできるコード書いてるのが問題なんだよ
そこじゃなくて違う所を見直そう public int aaa;
public int aaa{get; set;}
この2つって全く同じ動き? 大したの組んだ時無いからわからないけど
get; set;で記述する利点ってなんですか? >>734
object.GetType().GetProperty(propertyName) で確認 >>739
dynamicでexcelとか使おうとしてるんじゃないの?
で、バージョン違いでプロパティが無いとか。 >>740
set;getはファンクションなのでrefとかが使えない。他の動きは同じでは。 >>741
get;setだとロジックが後で組み込める。
ても、単一アセンブリだと余り関係ないかも。 >>744
>>745
あざす
Codelensも出るしファンクション?メソッド?のほう使ってこうと思います >>746
外部公開するのはget;setでプライベートなのは変数で良いと思うけど好きにすればw >>722
わかりました
オブジェクト指向で詰まってしまったので聞きたいです
各コントロールのインスタンスを保持する変数って、親Formで基本は持っておくべきでしょうか?
タブ型ウェブブラウザーを作っているんですが、TabControl・TabPage・WebBrowserは各自TabPageの変数はTabControlの下、WebBrowserの変数はTabPageが持っています
これだと前回終了時のタブを次回起動時にリストアしようとするとすごい設計が悪くなります
どちらが良いのでしょうか?教えてください、ほんとはObserableCollectionを活用したいのですが、どう書けばいいのかわからず仕舞いです >>748
Application.Current.Propertiesにでもぶちこんでおけば? >>748
大域的な設計はトップダウンで考えよう
例えば、現在表示しているページのURLを管理するクラスがあって、
フォームはその内容を画面に反映させる&ページ遷移時に新しいURLを管理クラスに伝えると考えればいい
管理クラスはUIの細かいことを気にせずに状態の管理と保存・復帰だけを考えればいいし、
フォームは管理クラスの状態と同期するだけでいい >>750
ありがとうございます。話を自分なりに理解するとタブ現在表示しているUrlを別クラスPageページクラスが持ち
Pageクラスを内包したPageListクラスでファイルへの保存・復帰処理を行い、Formクラスでインスタンスを持ちTabControlに渡し、
各タブで何を表示するかのコントロールはTabControlで行おうと思うんですが、こういう感じですか? タブコンはtabの文字にフォント最大でウンコって入力するとバグる >>751
全体の構造が憶測でしかわからないのに「これでいいですか」って聞かれても困ると思う
タブコントロールの各タブにPageListとかがぶら下がっていてそこを選択して表示するとかなんだろうけど
質問の仕方から見ても自分でもまとめられていないようだし、まず動くもの作ってから拡張していけば? タブコンなんて使ってる時点でゴミ
とか言ってみる納品 Rails, React, Electron, AngularJS などのフレームワークを参考にすれば? プロパティってgetset関数毎回書くのアホらしいので省略しませんか?ってのかと思ってましたけど、レス読んでると他に意味があるんでしょうか?
浅い知識しかないので気になりました >>756
>>745に書いてあるようにメソッドのように扱える
必要ないのならpublicとかinternalとかの変数にして好きにしたらいいと思う >>756
書くのが面倒って言うより、ゲッターとセッターは
オブジェクト指向におけるオブジェクトの属性って概念の素直な表現になってないのが
美しくないというか、直感的じゃないよね データクラスを除けば、最近は作ったプロパティの大半が読み取り専用だわ
セッターいらね >>751
current urlのコレクションを管理するクラスを自前で作って、そのコレクションをシリアライズ/デシリアライズするイメージだよ
>>750はわかりやすく書いてくれてると思うぞ
current urlのコレクションはMVCのModel
Viewに依存すべきじゃない イベント実装しようとしていますが難しいですね
全然勉強してこなかったことが身にしみてきます 自分でイベントを書くときに思ったのですが、
イベントを発生させるときは、そのイベントがnullではないことを確認するのはなぜでしょうか? 例外になるから
nullチェックを避けるために何もしないラムダ式を登録しておく方法もあるけど、
なんか馬鹿くさいのは確かだね
VBみたに専用ステートメン用意した方がよかったかも。
でもこのVB方式はカスタムイベントで問題が出るそうだけど 今は ?. があるからどうでもいい
ソースでイベントでnullチェックしてたら古いソースなんだなと思う
そうnullチェックは昔話 >>762
イベントを使わない場合に落ちるから。
オレオレイベント実装で必ず使うのなら不要。 業務システムなんですが、今どきeachでもないfor文の多重ループ書く人って流石にマズいですか
それとも普通でしょうか
他人の四重ループを見て世間ではどうなのだろうと思いまして >>766
ixyzとかあると簡単に4重ループできるぞ
どうやって回避するんだ?
i=オブジェクト数、x方向、y方向、z方向
ってなってたら俺はこのままのがいいと思うが?
多重ループの数でPGの実力見ようとしてるお前がキチガイ過ぎてどうにもw 行列計算とかなら普通
ビジネスアプリでやるとちょっと実力疑われるね 名前の隠蔽とオーバーライドの違い・意義について教えていただきたいです
名前の隠蔽: 同じ名前のメソッドを派生先で作ると基本クラスの同名メソッドは見えなくなる
オーバーライド: 派生先でオーバーライドメソッドを定義することによりインスタンス化したオブジェクトの基本クラスの内容を書き換えること
ということで間違いないですか?
オーバーライドメソッドのこの「インスタンス化した後に内容を変更する」というのが多態性であるとネットであったのですが名前の隠蔽で様々なメソッドを定義して使うのは多態性に当たらないのですか?どうしてもこの違いだけわかりません
どなたかお願いします(><) 状況によるよ
多重ループ避ける程度でいちいち意味不明なメソッド作られても困る >>766
numpyつかえよw pythonだけど。 >>766
本当に四重ロープが必要な処理で
最適化した結果ならしょうがない
個人的には業務システムでそう言う状況に出会ったことはないが >>769
多態って何だ?みたいな哲学論(笑)は後回しにして機能的な違いだけに注目した方がいいよ。
http://www.atmarkit.co.jp/ait/articles/0209/11/news001.html
↑の記事にある通り、隠蔽の場合はインスタンスとそのインスタンスの入っている変数の型が一致している
場合のみ隠蔽したメンバーが呼ばれるのがオーバーライドとの違い
上の記事、オーバーライドより隠蔽を使うのが普通って言ってるような印象を受けるけど
実際は逆だからそこは勘違いしない方がいいよ
隠蔽はベースクラスの設計がおかしい場合の回避策みたいな感じでしか使われないと思う。
だからとりあえずはオーバーライドだけ覚えれば問題ない 何らかの集計作業だろうが、そういうのはDB使えば簡単だよな (入力して)と表示
oppaiと入力
入力したのはoppaiです。と出したいんだが Console.WriteLine(“”);
string = Console.ReadLine();
の意味がわからんな。Console.ReadLineをstringに代入する所とか >>781
それだけ見せられても誰もわからない
エスパースレじゃないんで >>781
Console.ReadLine()で処理した結果の文字列を
stringという名前の変数に代入してる
name = Foo.GetName()と同じ >>784
そうかな? わかってたら「Console.ReadLineをstringに代入する所」なんて書き方しないと思うんだが >>781
1行目:画面に1行空行を書き込む
2行目:ユーザーの入力を受け取り、Enterが押される(=改行)と、その1行を変数stringに格納 Form1のlowLayoutPanelに他のクラスからボタンを追加したい
という場合には
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1434882684
この内容を理解すれば良いのでしょうか? ごめんなさい。とりあえず別の方法でお茶濁して解決しました
まだ↑のは理解が及びません 解決したと思ってたの勘違いでした…すみません
>>787お願いします >>789
Form1のインスタンスを他のクラスから参照てきる様にしとけはよいのさ >>762
なるほどです、イベントの中がNullの場合発生させないということなのですね
あと自分でイベントを定義するときInvokeメソッドを呼ぶのはなぜでしょうか? >>791
>>792 も言ってるようにお祈りおまじないの部類。invoke無くても同じ。
UIスレッドで実行するためのcontrol.invokeとは別もん。 >>790
ありがとうございます
https://ideone.com/76njZo
public FlowLayoutPanel flowLayoutBase = new FlowLayoutPanel();
とForm1外に持ち出して、ボタン生成用のクラスをFrom1の継承クラスにしてもボタン現れず
で、こういうことじゃないだろう…ということで色々やってみて
外部クラスからインスタンス参照というのを参考に
https://ideone.com/TFCiQp
こんな形のメソッドに纏めて、そこを外部クラスから参照しようとするも、どう参照するのか…
恐らく何か的はずれなことしてると思いますが、何が駄目なんでしょうか?
よろしくお願いします >>791
?.演算子を使いたいから
デリゲートを呼ぶときは普通はInvokeは省略してaction()のように書くけど、
nullのとき何もしたくない場合にClick?.()みたいな書き方はできないから、仕方なくInvokeを明示的に書いてる windows form 上にIPカメラ(AXIS製)の動画を表示したいです。
どうすればよいでしょうか?
OpenCVとか使うのが一般的なのでしょうか?
環境的に、社外ソフトをインストールし辛いので、確証を得てから試したいと思っています。
dllを配置するだけのmjpegprocessorとかは違うのかな?
調べる手がかりでも教えてもらえればありがたいです。 >>794
Flpset()がなんでForm1_Load()の中に?
目眩がしてきた。。。 単純なテストで使い方を学ぶ段階なので、FlowrayoutpanelをForm_Load()の中で作るのが自然だと思ったからですが…なにか変ですか?
Form1にあるFlowrayoutpanelに外部クラスからボタン設置する方法を色々試してるので…
Flpset呼ばないとパネル無い状態ですし…
Flowrayoutpanelに外部クラス(ButtonRayout)から使うためにFlpsetを作った感じです(色々的外れかもしれませんが)
まだ色々よく分かっていないので、頓珍漢なことになってるとは思いますがすみません >>798
Flpsetをパブリックメソッドにすれは良いだけでしょ。 >>798
public void Flpset()←だとpublicがこの項目に対して有効ではありませんと出てしまいます >>801
ありがとうございます
Form1_Lordがタダのイベント(メソッド)だったというの、頭からすっかり飛んでました
今は時間無いので別クラスからControl配置は試せませんが、あとで色々やってみます
とりあえず、外に持ち出してpublicは適応できて、前と変わらぬ作動は出来ました ロケールが日本語環境のところで
指定された国コード(ISO)を指定された言語で表示させるには
どうしたらいいでしょうか。
string CountryName = GetCountryName("CN", "ko-kr");
という風に呼んだとき、中国という文字を韓国語で得たいのです。
public string GetCountryName(string CountryCode, string language)
{
// この中
}
CNのRegionInfoを取得するところまでは出来たんですが、
DisplayName だと日本語で、NativeName だと中国語で、それぞれ取れるのですが
韓国語に変換させたいのです。
Windowsのロケール自体を韓国に変更すれば、DisplayNameで韓国語が取れましたが
それはやりたくないです。 やったことないけど
Application.CurrentCultureか
Thread.CurrentThread.CurrentCultureを変えるのは? MSDNにはCurrentUICultureの方だって書いてあるね。
システムが持ってるリソースから拾ってくるんだろうからまあそうでしょう 当たり前だけど韓国語とかの表示させる言語の言語パック入ってなかったらどうにもならない > CNのRegionInfoを取得するところまでは出来たんですが、
のところを補足します。
var CountryCode = "CN";
var CountryName = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures)
.Where(a => a.TwoLetterISOLanguageName.Equals(CountryCode, StringComparison.CurrentCultureIgnoreCase))
.First().DisplayName;
return CountryName;
で、実行ロケールでの(日本語での)「中国」は取れました。
んで、どこへ "ko-kr" を挟み込めば良いのかが分かりません。
> Application.CurrentCultureか
> Thread.CurrentThread.CurrentCultureを変えるのは?
そーいう力技しかないのかなぁ・・・ >>804
何で自分で表示するという選択肢がないんだ? >>809
その「力技」もやってみたけど確かに出来ないね
普通に自分でテーブル用意した方が早い気がする >>794
入れ子にしたメソッドがエラーにならないのを初めて知ったw
使い道が思いつかないけどw >>810-811
元号もそうだけど、この手のはなるべくFrameworkに任せてしまいたいのです。
国が増えるたびにメンテなんてやりたくない・・・
(Frameworkが更新されるはずだから、それに依存したい) >>815
ない袖は振れないし仕方ないかと。
まあ普通に考えて想定された使い方と違うんだろうね
日付や数値のフォーマットはデフォでいろんな地域のが入ってるみたいだから
ついでに国名ぐらいサービスしてくれてもいいような気がしないでもないけど その言語のOSならその言語で表示されるからそれでいいんじゃないの >>818
ごめん、知らんわ。
いつの間にpascal見たいな事ができる様に成ったんだ。
勉強不足でスマヌ。
Func、Actionで間に合ってた。死んでお詫びします。 >>821
C# 7 (Visual studio 2017) からだから追っかけやってる奴じゃなきゃ知らないのも当然 >>750
すいません、考えたのですが設計できません
データを管理するクラスを作り、UIが持っているUrlプロパティをFormが同期させるのはわかっていますが、タブの並び替えを実装しているので頭が混乱してしまいます
トップダウン設計で今までTabControl以下で持っていたTabPage変数と、TabPage以下で持っていたWebBrowser変数をFormに持ってきたのですがわけがわからなくなってしまいました
何をどこで持つべきなのかわからなくなってしまいパニックな状況です、設計ってかなり難しく感じています >>793
>>795
わかりました、今はおまじないとして覚えておくことにします C#はレガシーになりつつあるけど
拡張してなんとなく新しく見せてる
ここから新しく見せるのは無理かな JavaとKotlinの関係のように新しい言語に乗り換えるべきだろうね
最近の歪な言語仕様拡張には辟易するよ >>831
EntityFrameworkとLINQ to Entitiesでググってこい
LINQは単に、いろんなデータソース(DB、配列、リスト、xml)に対する処理を同じようにかける枠組み >>831
LINQのクエリ式はSQLを参考にしてるとは思うけど >F#
言語としては優秀なのかも知れないが
どうにも慣れない >>837
所用で…今YouTubeにあがってる動画見てる 今現在使っているタブ型WebBrowserでTreeView使ってJaneみたいなブックマーク機能を取り入れたいんですが、
フォルダとファイルのツリー構造を実現するクラスが思い浮かびません、どのようなクラスを作ればよいでしょうか? 乱数のとこわけワケワカメ。NextとかNextDoubleとか >>840
ありがとうございます、ブックマーク機能が一番骨折れそうですね c#erの皆さんがこれだけは覚えていて損はないって言語なんですか?CとC++以外で 使えて損しないのはJavaScript
学んで損しないのはLisp >>844
javascriptはクソだけど使う機会が多いので覚えたほうがいいと思う
しかも文法じゃなくてどういう風に使ってるかも含めて覚えたい
あとはpython
文字列など扱うとき便利 >クソだけど使う機会が多いので覚えたほうがいい
本当それなw 後はSQLを言語に含めて良いならSQL
個人的にはPowerShellもオススメしたい >>848
ようやくサーバー系OSでデフォルトになったからな つphp
掲示板ってどうやって作るんですかぁ?
って聞いてくる可愛い女の子に教えられる 皆さんありがとうございます
やっぱりweb系は覚えておいて損はないんですね
javascriptやphpはどうにも好きになれないんですが頑張ってみようかな。。 >>851
個人的には>>846が近いけど
何をやるにせよ新しいバージョンに対応した教材を TreeNodeで階層は分けれたのですがフォルダとURLの区別が付きません
お気に入りでURLとフォルダの区別をつけるようにするにはどうすればいいでしょうか? >>853
Tagプロパティに何かしらのオブジェクトでも突っ込んどけ >>845
おれもLisp/JavaScriptに同意
JavaScript名前が某クソ言語に似ているが面白い言語だと思う。
海外のGeekたちがその毒気に当たって色々なライブラリーが開発されて今に至る。 需要は多いのにモジュールもろくに整備されないって変な言語だよな
Web系連中のいい加減さが現れた言語だ 最近は状況が変わって来てるよ
とにかく古い環境で古い知識を勉強するとロクなことにならん npm left-pad事件なんてわけわからんの起きるしなw >>851
Webアプリの本質的な所を理解するのにはc言語でcgiやるもの面白いぞ。 >>859
cgiレベルならCでもperlでもたいして違わない気がする
文字列操作が多い分Cでやってたら本質的でないところで面倒なだけだし >>860
c言語だとWebライブラリもないし全て自前で勉強にはなるだろ。
c言語でWebアプリなんか作っても難行苦行でしかないから作らんけどね。
サイボウズはc言語で作られてるらしいね。 べつに、perlでやってもライブラリ使わなきゃWebの勉強としては変わらんだろ。 C言語でやるメリットってあるのかな
サイボウズってそんなにCPU使うようなサービスだっけ >>863
サイボウズは20年も前に開発されたものだからな。
当時はc言語のcgiなんて普通にあった。2chもそうだったし。 「初心者の質問スレ」で「C#に関係ない話題はやめてください」
>>844みたいなのはマ板でやれよ。板の意図とも違う >>861
なんでいきなりWebライブラリの話が出てくるんだよ w
cgi って言ってるんだからhttpヘッダー+生のhtmlでやるって話だろ プログラムの勉強にC#で簡単なアプリ作ってみたのだけど、配布する前に難読化した方がよいと聞いてConfuseEx試してみたらマルウェア判定されて即消されちゃうのだけど、どうしたら難読化したアプリを配布出来るのか教えて下さい
もしかして難読化する方が少数派なのでしょうか? >>868
難読化はITリテラシーの低い経営者を狙った詐欺
C#じゃ難読化しても技術保護にはならないし
そもそもリバースエンジニアリングされるほど高尚な物じゃないだろう?
本当に保護したい技術はサービスとして提供して物は一切公開しない >>868
何故難読化するのか理由がちゃんとあるのか?
隠さなければならないコードがない限り普通は難読化しない 難読化ってリフレクションには影響無いのか?
例外のスタックトレースまで難読化されるんだろ。 C#で難読化とか吹き込んだ奴に聞けよ
まともなコンサルなら耐タンパー性が必要ならまずC/C++で開発しろと言う 難読化ツールなんて誰も使ってないのが良く分かったw 偉そうにしょうもない解答する奴は馬鹿だから無視していいよw 難読化って言葉通り読み辛くしてるだけだからな
初心者じゃなければ解析できるんだからあまり意味がない フロー難読化もあるから初級者上級者関係ない
解析は根気があるかどうかが問題だよ やはり普通やらないような事なのですね
なんとなくですが理解しました!
アプリ内に書いてある文字列で別のアプリで暗号化したものを復号化してみるアプリだったのですが、文字列が丸見えらしく知り合いに聞いてみたら難読化してみたら?との事でした
要は文字列だけ隠したいのですが何かしら方法はあるものなのでしょうか? >>879
本来の意図が分からないが元のアプリ内の文字列を最初から暗号化したら済む
解析もできないようにしたいのだったら難読化だろうが何だろうが無理
手間がどれだけかかるかだけの違いしかない パスワード c# プログラム内
でググったら
ハッシュがどうのこうのってのは出てきた
使えるかな? 俺が書いたコードは難読化しなくても誰にも理解出来ないよ。 >>879
それは難読化じゃなく暗号化
君もだけどその知り合いもしばいときな ツールを使ってjsのコードを難読化し、ユーザーはツールを使ってそれを可読化する
人間って面白いね >>879
そもそも、復号キーをコードの中に埋め込んでいるのが間違いだろうけどね。
復号キーを暗号化しても復号アルゴリズムがコードの中にあったら無意味だよ。 >>887
そういう場合は秘密鍵をサーバーに、プログラムには公開鍵だけを持たせるやり方が簡単
ネットを介さない環境で使用するアプリとかなら仕様がわからんんがキーコンテナを使え みなさまありがとう
アプリAで暗号化、アプリBで復号化、他者はBしか持っていないという状況を想定して、アプリB内の復号化に使う文字列をなるべく隠したくて質問させて頂きましたが難しそうですね
いろいろ素人なりに調べてみたけれどやはり秘密鍵をどうにかサーバーに置いておくのが良さそうに感じました
ただ適当なサーバーに適当に秘密鍵をアップしてもあまり意味なさそうなのでその辺りもよく考えないとダメそうですね…
ゆくゆく作りたいアプリのために始めてみましたが、ある程度解析しづらいらしいC++などで最初から考え直しても良いのかもしれません
アドバイスありがとうございました >>890
鍵を外部ファイルにすればいいだけだろ
なんでcでやるとかサーバー使うみたいなトンチンカンな方向に行ってしまうんだ >>891
外部ファイルだと中身見れるから意味ないだろバカか 外部ファイルが許されるのは入力パスワードに対してのハッシュくらいだろ
879の案件には合わない Bで作った公開鍵をAに渡して暗号化させればいいだけの話でないのん
秘密鍵だけで無理にやろうとするから当たり前のように無理が出るのでは まあ、厳密にはその場合でも、一時共有鍵は使うだろうけど >>896
トンチンカンなバカレスするお前は初心者以下 ID:KtpP5XlM はただの荒らしだろ
もう構うな >>887
無意味ではないよ
文字列抜き出すのとアルゴリズムの解析とでは
必要な時間が全く違うからね
それこそ難読化の出番 >>890
Aに秘密鍵、Bに公開鍵で。
Aの秘密鍵を守る対策は別途必要 埋め込みでリソース持つのと、外部ファイルで持つのってセキュリティそんなに変わらんでしょ? そもそも暗号化手順+暗号キーを知られたくないならまだしも暗号キーをとにかく知られたくないというのが分からない
元の質問者は終了宣言しているし外野が条件変えながら議論しても無意味 暗号化通信の基本もわかってないのにプログラマ名乗っちゃダメだろ君たち 公開鍵で暗号化プログラムA
秘密鍵で復号プログラムB
Bの利用者は鍵ペアを生成
外部ファイルとして秘密鍵をプログラムに渡す
公開鍵を通信相手に渡す
終わり コード書けりゃプログラマじゃないぞ
お前らはC#なんてやっとらんでITパスか基本情報でも取ってこい >>911
だからそれなんの意味があるんだよ w
>>906の意味わかってないのか? if(HashPasswordForStoringInConfigFile(パスワード, "sha1").ToLower() == ハッシュ文字列)
{/*編集可能処理*/}
って書いてあった >>916
>>879のデータの暗号化とパスワードの認証は別の話
ハッシュで認証するから元のパスワード持っていなくていいよ、てのはわかるが 認証したいなら個別に別ルートでパスワード発行
ユーザー全員に共通パスワード持たせたいならセキュリティ諦めてリソース持つぐらいで十分
できれば中間にAPI噛ませて何かあった時の被害をコントロールできるようにしておいたほうがいい >>917
単純にテキストだけの話なの?
バイナリファイル読み込め的な? 以前List<T>オブジェクトをXmlシリアライズ・デシリアライズする拡張メソッドを作ったのですがユーザー定義クラスのときだけ動きません
public static void SaveXml<T>(this List<T> list, string path)
{
T[] xmldata = list.ToArray();
using (FileStream fs = new FileStream(path, FileMode.Create))
{
XmlSerializer xml = new XmlSerializer(typeof(T[]));
xml.Serialize(fs, xmldata);
}
}
こういった感じでList<MyData>型の変数myDataList.SaveXml("D:\hogehoge.xml")と呼ぶとxml.Serialize(fs, xmldata)のところで
System.InvalidOperationExceptionが投げられます。ただのList<string>型の場合投げられません。
どこがまちがっているでしょうか? とりあえずその投げられた例外をToString()して全部読んでみて >>911
はあ?
秘密鍵丸見えじゃ無意味って理解出来ないの? >>923
違う用途ならともかくこの件においては
データ改変できて無意味 >>920
型以外の条件を一切変更していないのに(ダメな人は他の条件も変えてたりするから困るw)
TがMyDataの場合だけ例外は発生するのであれば、
普通に考えてMyDataがXMLシリアル化可能な条件を満たしてないんでしょう。
例えばデフォルトコンストラクタがないとかそもそもpublicなクラスじゃないとか。 >>926
は?
間違ったやり方をやるわけないだろバカ >>921
できなかったのはコンストラクタ定義していたせいでした、すいません 馬鹿の壁みたいだ
初心者のためにかくと
公開鍵は暗号化する鍵で誰にみせてもいい
秘密鍵は暗号を解く鍵でみせてはいけない
B利用者は自分のための公開鍵と秘密鍵を作る
作った秘密鍵をプログラムBに渡す
公開鍵は誰にでも渡してプログラムAで鍵をかけてもらったものを送ってもらう
B利用者は送られたものをプログラムBで鍵を解く
送った内容は秘密鍵を持ってないと中身がみえないので安全 命名スレで暴れてた馬鹿おじさん
こんなところにいたのか 秘密鍵を相手に渡すのは馬鹿の極み
公開鍵は誰に見られてもいいので
難読化とかそういう以前の問題
セキュリティがどうこう言う前に勉強すべき
プログラムBが公開鍵持ってても何の問題ない >>929
アスペか?日本語すら出来ないバカは死んでろ
生きてる価値も意味も皆無だから 馬鹿は馬鹿同士でお互いにバカにしあっていればいい
俺は横から初心者のために解説してるだけ 実にどうでもいい話だけど、元の質問者のケースは別人の間の通信ではないので、
公開非公開の区別の意味はないね。
この分野全然知らんけど、サーバーに復号化のための情報を置いたら安全って発想は
ちょっと理解できんなあ。
それってハッキングする側から見たら、単にサーバーの認証を突破するひと手間が
増えただけの話じゃないの? >>938
多分適当にググれば10分ぐらいで何を言ってるかわかるよ >>933
ユーザーに改変されたくないデータをやり取りする場合そのやり方だと無意味 うっわ無知な馬鹿に絡まれた
最悪・・・
無知でも考えれば何とか答えが出るのに… >>938
最初から読めばファイル配布の稚拙なシステム作ろうとして注意されたのが分かる
多分本人は問題の本質に気付いていない
そしてこの問題はC#以前の話 人間の基本行動原理
自分だけはバカじゃないという前提
自分だけは誰よりも常に正しいという前提 パブリックキーで暗号&復号化するのはパケットの話
サーバに収めるデータやDBは別 >>938
そうじゃなくてサーバーに復号化の情報を置くのではなくサーバーで復号化させるってこと
A-B間で直接やり取りできるなら別にサーバーじゃなくてもいい
どうでもいいけど質問者の案件の詳細がわからない限りこれ以上の言い争いは不毛だぞ サーバーで復号したものを安全にBに持ってくるにはまた暗号化が必要なんでは? ようやく自分の誤りに気づき終息させようとするの術
その前に嵐扱いした人に謝ったほうがいいんじゃないかなw >>949
一時的な暗号鍵を使う
その鍵は保存されないしユーザーにはわからない >>950
俺に言ってるのかな?何も間違ったことは言ってないけど 情報小出しにして質問する→勝手な憶測で返す→条件無視の議論に発展
このコンボやめてくれ >>953
ユーザーが改変できるってさっきから指摘してるんたが?
逃げずにはやく答えてみろよ? >>948
要するに、「デコーダー」側がハッカーと正規ユーザーを区別できなきゃ安全でも何でもないよね >>956
まだ気づいてないのか?
よーく考えてみたら?
条件というか設定が間違ってる
それはBからAに送信するときの暗号化の話だから問題が逆
それにユーザーがコード改変して暗号化前に情報変えるのは無関係だろ 例えば>>959の文章でいうと
>まだ気づいてないのか?
>
>よーく考えてみたら?
の部分が不要 >>959
気付いてないのはお前の方だろバカ
ユーザーの元に秘密鍵があれば改変したデータを作って利用できるだろ >>961
>気付いてないのはお前の方だろバカ
不要 >>951
今度はその一時的な鍵をサーバーとBの間でどうやって安全に交換するかって問題に帰着すると思うが。 >>958
全然要されてない
要するなら利用者がハッカーだとしてもこのやり方なら安全ってこと やっぱり馬鹿の壁だな
理解できない相手に正論を言っても無駄 >>961
> 気付いてないのはお前の方だろバカ
お前だよ w
> ユーザーの元に秘密鍵があれば改変したデータを作って利用できるだろ
ちゃんと質問者のレス読めよ
>>890
> アプリAで暗号化、アプリBで復号化、他者はBしか持っていないという状況 >>965
>やっぱり馬鹿の壁だな
>理解できない相手に正論を言っても無駄
不要 公開鍵と秘密鍵についてよくわかってないのが多いな
httpsじゃダメだって言うんだろうな
怖い怖い >>938
同じ鍵で解読できる暗号が2種類あった場合、利用者に複合鍵を渡すと両方解読されてしまう
サーバーで複合すればユーザー情報に基づいてひとつだけ解読可能みたいなこともできる
あと、ローカルでの解読と違ってサーバーに不正アクセスするのは犯罪になるという障壁もある >>966
はあ?
他者がBを持ってそのBに秘密鍵を置くなんてもってのほかだぞ?お前もバカか >>964
安全じゃないでしょう。
質問者のケースの場合、暗号化されたデータをハッカーは利用可能。
要するに>>938 >>972
>>911を100回読めばいいよ
B側の秘密鍵は利用者ごとに作るんだよ… >>970
お前のようなバカはブラウザに秘密鍵があるんだな
怖すぎ 頭のおかしな人のふりをして逃げ切るの術がはじまったのかよ >>978
>頭のおかしな人のふりをして逃げ切るの術がはじまったのかよ
不要 >>974
全然違うって
> この分野全然知らんけど
知らないなら理解しよう >>968
それじゃサーバー=Aと本質的に変わってなくて単に余計な経路を追加しただけ。 仕組み
サーバとクライアントで別々の鍵ペア(秘密鍵、公開鍵)を作ってお互いに
公開鍵を渡す
ネットを通すときは相手からもらった公開鍵で暗号化
受け取った側は自分の秘密鍵で解読
秘密鍵はネットを通らないので間で傍受されても普通は暗号解読不能 >>982
Aと他者が使うBが常時やり取りできるならサーバーである必要もないとは言ってるし
そもそも安全な暗号化する鍵の保存についての答えだが >>975
だから利用者側に秘密鍵があれば利用者が改変したデータを作れてしまうだろ
まだ理解出来ないの?? >>985
>まだ理解出来ないの??
議論に不要な記述 >>985
秘密鍵関係なく暗号化前のデータを変えれば意味ないでしょって言ってるんだけど
暗号化したらユーザーがデータを変えられないと思ってるなら間違い つかれた
秘密鍵は何度も言ってるけど暗号解除のための鍵
プログラムBが秘密カギを持ってるとするとプログラムAからのデータを受け取るときの
暗号解除のため
だからユーザーがデータを書き換えるとかそういうのは違う うーん、繰り返しになるけど、質問者のケースは別人の間の通信じゃないので鍵をペアにする意味なんかないですよw
問題はどうやったら正規ユーザーだけが利用できる「復号化装置」を確保きるかって話。
「復号化装置」を外だししたら安全だって話は普通に正しくないでしょう。
そんなのハッキングする側から見たら「ほんのひと手間」増えるだけ。 >>987
秘密鍵が手元にあれば改変した偽のデータを作ってそれをアプリで使えてしまうだろ
まだわからないの? >>991
>まだわからないの?
議論に不要な記述 >>989
質問者はBは他者が持ってるって言ってるけど >>995
だからそれは間違ってるって言ってらだろバカ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 31日 0時間 50分 43秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。