ふらっとVisual C#,C♯,C#(初心者用) Part110
1 :
デフォルトの名無しさん :
2013/12/30(月) 13:27:16.76
立てんなって言ったろうが
4の5の言うな ↓
5です
↑禄で無し
いや、よく立てた
8 :
前945 :2014/01/01(水) 03:17:58.84
別スレッドで長い時間がかかる処理をやっているのですが、別スレッドが走ってるときに正常終了しません while文でフラグみて終了要求が出されたらwhile文のフラグを変更するという感じでやっているんですがうまくいきません FormClosingイベントでJoinメソッドを呼ぶと固まり、よばないとObjectDisposedExceptionで怒られます 考えてみたんですが、Joinメソッド呼んだあと別スレッドから描画スレッドにInvokeしてるのが原因ですか? もしそうなら対処法が全然わかりません。どのように解決したらいいのか教えてください
イエス、バーニンラブ(´・ω・`)
もしもし? ソリューションエクスプローラーからhogeフォルダを作って そこにtest.txtをぶち込んだのね? それで開こうと思ったらファイルがないって言われちゃうのね? これアドレスはどうなってるの? hoge\\test.txtじゃ駄目だったの
うん
>>11 実行時のディレクトリはデフォルトではbin\Debugです。
自分でコピーして置くか、test.txt選択 -> プロパティウインドウの[出力ディレクトリにコピー]でコピーする設定にする。
>>13 バカな・・・いつもdebugフォルダに直接置いてたけどマジでそんな不毛な仕様だったのか
回答有難う
すいません、暗号化したファイルを復号化して文字列を使う場合、 復号化した時点でメモリに生の文字列が残りますよね こういうのも暗号化して使うべきですか?
メモリに入れた時点でアドレスが分からない限りは外部にもれないよ
メモリ上に展開するだけなら電源切ったら消えるので気にしない それに、プログラム内で平文を扱うならどのみちどっかで復号するんだからどうしようもない ただ、ページファイルに平文が残ってしまうのはまずいのでそこは対策を講じる必要があるね
>>17-18 あまりきにしないほうがいいんですね
ページファイルだけ気をつけます
SecureString
お節介焼き糞野郎の意味ないよ連呼が始まる
同じ内容を二度やるとか気持ち悪いスレだな
自分が気に食わないとすぐそういうレスするのはやめたほうがよい
System.VoidがC#で使えない理由って何ですか?
>>25 勘違いして戻り値の型をSystem.Voidにしようとする馬鹿が出るからじゃね
System.Voidはリフレクションの時だけ出てくるダミーの型だからな
Typeオブジェクトを通さずに使うことはない
C#用のビルドツールって何がメジャーですか?
csc.exe
MSBuild
30 :
27 :2014/01/02(木) 03:48:45.50
>>28 >>29 解答ありがとうございます
NAntとMSBuildを調べてみます
var a = new[] { 0, 1, 2, 3, 4 }; a.SkipWhile(x => x != 2); はSkipWhileの述語関数がfalseを返したら その時点の要素以降を返すという理解で良いですか?
よくないです
いいです
え、どっちですか?
このメソッドは、predicate を使用して source の各要素をテストし、結果が true の場合はその要素をスキップします。 述語関数が要素に対して false を返したら、その要素と source の残りの要素が返され、predicate は呼び出されなくなります。
37 :
前945 :2014/01/02(木) 22:26:03.69
一日考えたんですけど14行目からの下りがわかりません なんでイベントをBeginInvokeに渡すのかあとInvokeがどのタイミングで呼ばれているのかがわかりません あとなぜBeginInvokeがよばれているのかがわかりません。所謂コールバックってやつですか?
Invokeを使った場合テストとかデバッグとかどうやっていいんだか良くわからない ee版じゃどうあがいても駄目で、pro版買わないといけないんだっけ?
BeginInvokeもInvokeも、 「次のイベントでこのメソッドを実行してね」とGUIスレッドに依頼するもの。 BeginInvokeは依頼するだけ、Invokeはその実行が終わるまで待つ。 Invokeを使った場合、 GUIスレッドはFormClosingイベント内で別スレッドの終了を待ち、 別スレッドはInvokeで依頼した処理がFormClosingの後に実行されるのを待つ為デッドロックとなる。 Q.なんでイベントをBeginInvokeに渡すのか A.デッドロック回避の為、どちらかが待ち状態に入るのを回避する必要があるから Q.Invokeで渡したメソッドが呼ばれるタイミング A.GUIスレッドの次以降のイベントとして呼び出される Q.デバッグ方法 A.デバッグーウィンドウースレッドメニューとか?
41 :
18 :2014/01/03(金) 07:24:07.77
Control.Invoke/BeginInvokeはSystem.Delegateを引数にとるが、 明確に型付けされたdelegateは指定されていない。 この場合ラムダ式の推論が効かないから明示的にEventHandlerや MethodInvokerを指定することになる。 EventHandlerを使ってるのはおそらく、 Button1_Clickなどをスレッドからコールするようなケースが多いから、 それとの親和性からだろう。 ... , new object [] { this, EventArgs.Empty }); の部分はparamsだから、 .... , this, EventArgs.Empty); でいいはず。
>>9 のやり方は、FormClosingでいったんフォームを閉じるのをキャンセルして、
イベントやControl.Invoke/BeginInvokeを受け付けられる状態に戻してるわけだ。
それで改めてスレッドからInvoke経由でFormを閉じなおしている。
以下Invoke禁止はい次の質問どうぞ
この調子で禁止されてったら質問すること無くなるな 暗号化関連はウザイからマジで要らないけど
質問することなんてなかったんだ・・・
Invokeもウザイから禁止な
とにかく暗号化とInvokeは禁止な 何で暗号化とInvokeがダメかって? 俺が気に食わないからそれだけさ
チョンうざ
結論をまとめておけばこんなことにはならない
以後 pinvokeな話題が続きますよっと
復号化について質問が…
Invokeとか何度目だよくだらない質問するんじゃねーぞコラ
スレッドを作ってそこから button1.Text = "test"; とすると落ちてしまうのですがどうしたらいいのでしょうか
>>54 //button1.Text = "test";
こんかれんときゅーにいべんとでーたをつっこんであいどるいべんとでじゅんじしょりするろじっくをかけばいいよ
はい終了 はい次の質問どうぞ
Control.CheckForIllegalCrossThreadCalls = false;って最初に書いとけばいいよ
正月.Dispose();
ぬるぽ
ガッ
62 :
前945 :2014/01/04(土) 22:03:30.64
レス遅れてごめんなさい。正常に終了処理ができるようになりました、ありがとうございます
>>39 BeginInvokeとInvokeってそういう違いがあったんですね。知りませんでした
あとデバッグ方法なんですがスレッドメニューという項目がないんですが、もしかしてExpressにはついてないんですか?
>>42 button1_clickなどを他スレッドからコールするってどういうときにするんですか?
想像ができなくてわからないです。教えてください
今時2バイト文字なんていい方する奴いるんだなw
【キーワード抽出】 対象スレ: ふらっとVisual C#,C♯,C#(初心者用) Part110 キーワード: 2バイト文字 63 名前:デフォルトの名無しさん[sage] 投稿日:2014/01/05(日) 06:57:04.09 今時2バイト文字なんていい方する奴いるんだなw 抽出レス数:1
四倍角
↓のコードがあったとして --------------------------------------------------- public class MoviePlayerA { public void Play(bool isInterlace) { } } --------------------------------------------------- public enum MovieScanType { Interlace Progressive } public class MoviePlayerB { public void Play(MovieScanType movieScanType) { } } --------------------------------------------------- ↓のどっちが望ましいですか? MoviePlayerA.Play(true); MoviePlayerB.Play(MovieScanType.Interlace); --------------------------------------------------- Aの方はコーダーはインテリセンスからメソッドの引数名が見えるのでtrueと解答出来ますが、レビューアーはコードからではtrueの意味が分かりません Bの方はコーダーもレビューアーも引数の意味を理解できますが、別のメソッドを作る度に同じように列挙型を作り続ける必要があるため冗長にも感じられます
今時紙でレビューしてるの?
名前付き引数がない言語は欠陥って主張する奴がこういう例を出してくる
標準ライブラリで主流かみれば?
>>66 まずお前が思う 望ましい状態 ってのを説明して
>>66 引数の意味を調べるには該当クラスの仕様を確認する必要があるのは当たり前じゃね?
> MoviePlayerB.Play(MovieScanType.Interlace);
これだと実は第二引数以降のオプション引数がデフォルト値で呼び出されてます、な場合かもしれないし
結局MoviePlayerクラスを確認しなきゃいけないのはAもBも変わらん
72 :
デフォルトの名無しさん :2014/01/06(月) 18:02:10.70
ToolStripDropDownButton はメニューが表示されている場合、もう一度クリックするとメニューが消えますが、 同様の動作をToolStripSplitButtonのDropDownButtonにさせることはできないでしょうか。 ToolStripSplitButtonの方は、メニューが表示されているときにもう一度クリックすると、 一瞬消えてまたメニューが出てきてしまいます。 ていうか、この挙動の違いはどこからきてるのでしょうかね~
>>67 紙を使わないと紙を売っている会社が潰れちゃうでしょ?国内の消費縮小しても日本という国は幸福にはなりません
>>68 別に欠陥とかじゃないです、C#は名前付き引数も使えるし
>>69 標準ライブラリでは主流なのはAの方ですね、C++がバカみたいにdefineで別名使いまくった反省からでしょうか?
>>70 こういう芸術家、論文作成ゴッコは本当に害悪ですね、自分のビジネスパートナーにあなたのような人物が今後登場しないことを願いたいです。
A:5人でシステム1つを1ヶ月で作るプロジェクト B:50人でシステム1つを半年で作るプロジェクト C:500人でシステム1つを3年で作るプロジェクト
があったとして、Bのプロジェクトの立ち上げ時にコーディング規約を決定するとして前述の話題が上がった場合、どう決着を付ければもっとも開発資金と開発期間が最小になるか?という定義にしてください
>>71 なるほど、確かに結局、仕様を確認する必要があるということに帰結しますね、ってことはあまりBに優位性は無さそうです
石炭使わないと石炭売ってる会社が潰れるから石炭使ってんのかよ?このバカはw
アブラ使わないと油売ってる会社が潰れるからアラブ使ってんのよ? このガスはw
System.Threading.Tasks.Parallel.Forでお気楽マルチスレッド化しようとしてるんですが、 普通のfor文だと問題なく動くコードがParallel.Forだと変数の代入時にNullReferenceExceptionを発生して止まってしまいます。 Parallel.Forの時はvolatileとか使って変数を宣言しとかないといけないのですか?
コードによるとしか言いようがない
まぁそれを言っちゃえば何でもそうなんだけど、 単純にはfor文の置き換えにはできないんですね。 素直に自分でスレッド立てるコードに直します。
volatileの存在を初めて知ったw Parallel.Forも順番に動くと思ってるとか?
止めろ 状況確認もせずにめくらめっぽう当てずっぽうじゃ泥沼になるだけだ 少しは学習しろ
動的に読み込んだクラスライブラリ Assembly asm の中の public static void Method() を呼び出すにはどうしたらいいですか?
84 :
デフォルトの名無しさん :2014/01/07(火) 23:01:13.81
>>81 いや、実行の順序は全然関係なくてforeachでやってもかまわない処理でエラーが出るんですよ。
しょうがないからコードをそのままでカウンタの範囲を3つに分けて3つスレッド立てて分散処理したら
エラーも出ず30%くらい速くなった。
Parallel.Forだと不安定だし何スレッド立ててるのかも分からないから使うのやめた。
パラレルフォー使った方がいいと思う
パラレル、フォー!! バッチこーい!!
>>83 asm.GetTypesとかでMethodが属する型のTypeを取ってきて
Type::GetMethodでMethodのMethodInfo取ってきて
MethodInfo::Invokeする
>>84 とりあえずParallel.forの簡単なコード書いてうpれ
不安定になるなら、お前の書き方が悪い
話はそれからだ
>>83 もしくは
Type type = asm.GetType( 完全名 );
Foo foo = asm.CreateInstance( type.FullName ) as Foo;
if( foo != null )
{
foo.Method();
}
みたいな感じ
staticらしいからインスタンスは使えないな
ずっと気になりながらも、一週間ほど学習し、 先ほど、ひらめいたので、確認のためにお聞きしたいのですが、 ()の中身が{}っていうことでいいのでしょうか? ()をまず先に書いて、後から中身書きますよって意味で書いてるのですか? で、{}の外側では、つまり、()後には、改行の;はいらないってことで よろしいですか? そういくと、;がつかない理由がわかった気がするのですが、いかがでしょう? でも、そうなると""の外側の()の説明ができないし、 たまに(1)とかの数字が入ってるのも説明ができません どなたか、良ければ説明お願いします
どっかの誤爆?
>>91 >()の中身が{}っていうことでいいのでしょうか?
よくない
>()をまず先に書いて、後から中身書きますよって意味で書いてるのですか?
違う
>{}の外側では、つまり、()後には、改行の;はいらないってことでよろしいですか?
よろしくない
>>92 C#の初心者スレだと思ったのですが、VisualC#ではないので、
微妙にスレチかもしれません
>>93 レスありがとうございます
大ハズレなんですか?
神が降りてきたと思って、結構、自信があったんですが、凹みました
その説明どこさがしてもみつからないのですが、
入門書買わないと、それらの情報はないですかね?
上の疑問と、("")これの、台詞の時と、そうでないときの違いの説明が本気で知りたいです
それを理解しないと、自分でコードは書けないです
根本的に何か勘違いしている、C#じゃなくてCの文法から勉強したほうがいいだろ つーかそれ以前の問題の気もするがw
デリゲートって実行する度に宣言する物ですか?
そんな事聞く様じゃデリゲート自体理解しているとは思えない
>>94 とりあえず、具体的なプログラムを書いてみろ
()も{}もいろんな箇所で使うから、何についてなのかわからないか
>>96 違う
まずプログラミングをちゃんと勉強しよう
>>98 int main()
{
int x = 1;
if (x == 1)
{
x++;
}
return 0;
}
ブロックのリンク先で見つけたのですが、
整数xに1を代入して、もし、xが1と等しいならば、xに1足すって意味だと思うのですが
そのmainの後ろの()の意味です
float v = Input.GetAxis ("Vertical")
これとか、の("")は"Hellow world"とは違うと思うのですが、意味がわかりません
>>99 アドレスとググり方感謝です
ブロックの意味はまとまりだと考えて間違いなさそうです
引数では、現段階で理解は難しかったです
アドレス先で「;」の説明があったのですが、それも今は、理解できなかったですが、
ifの後が特に気になってたので、
お気に入りにはいれましたので、後々理解できるはずだと思います
取り合えず日本語マトモに使える様にそっちを勉強したら? その()は関数の引数を括ってるって言っても理解できなさそうだし
>>101 mainの後ろの()はmainメソッドの引数リストの()、このmainメソッドには
受け取る引数がないので()と空になっている
Input.GetAxis("Vertical")はInput.GetAxisに文字列"Vertical"を引数として渡している
""で括ってあるのは文字列リテラル
>引数では、現段階で理解は難しかったです
引数が分からないとどうしようもないぞ、何度もサイトの説明などを読んで理解すべき
とにかく基本的なことがまったく分かってないようだから基本を勉強しないと
どうしようもない
今どうやって勉強してる? 図書館とかでもいいから入門書さがして見た方がいいかも
>float v = Input.GetAxis ("Vertical") Unity3Dでゲーム作ろうと思ってる小学生だなw
みなさんにお手数かけて申し訳ないです
おっしゃられる通り、
「()は関数の引数を括ってる」
「mainの後ろの()はmainメソッドの引数リストの()、このmainメソッドには受け取る引数がないので()と空になっている」
「Input.GetAxis("Vertical")はInput.GetAxisに文字列"Vertical"を引数として渡している""で括ってあるのは文字列リテラル」
以上が自分には、日本語に見えません
引数に関しても、海水とかいろんな喩えで書いてる人がいるのですが、全く理解できませんでした。
勉強は、マンガで分かるプログラミング用語辞典を読んでましたが、配列ぐらいで意味がわからなくなり、
また、JavaScriptで説明されても、それが読めないので、断念しました
未確認飛行Cも、お気に入りには入れてますが、今の時点では理解できません。
>>105 小学生じゃないですが、ソフトはそうです
コーディングがC#なので、絶対に習得しなくてはいけないのですが、
チュートリアルを2冊終えましたが、
コメントで一行一行説明されてるものの、意味がわからないって状態です
いや、ルールがわからないので、頭に入ってこないって状態かもです
手を動かして、タイピングしただけで、何も身につきませんでした
やりたいことは、山ほどあるのに、自分では、コードを書けません
でも、質問して、少しは光が見えてきた感じなので、C#じゃなくて、もうちょっと入門編を探します
文字列リテラルもググったら、これはC#の知識じゃないってのだけは、わかったので、
今まで、だれも説明してくれなかったんだなと納得しました
まずは、それと、引数を理解します
>>104 C#のものは一冊も持ってないので、独習C#と何かを買おうと思いますが、
まだ、もうちょっと、ネットで勉強します
__.. -―─ 、__ /` 三ミー ヘ、_ ゝ' ;; ,, , ,, ミミ , il ゙Z, _〉,.. ////, ,彡ffッィ彡从j彡 〉,ィiiif , ,, 'ノ川jノ川; :.`フ公)了 \.:.:.:i=珍/二''=く、 !ノ一ヾ゙;.;.;) く:.:.:.:lムjイ rfモテ〉゙} ijィtケ 1イ'´ 〕:.:.|,Y!:!、 ニ '、 ; |`ニ イj' 逆に考えるんだ {:.:.:j {: :} ` 、_{__} /ノ 〉イ 、゙! ,ィ__三ー、 j′ 「コンパイラの立場になってみる」 ,{ \ ミ \ ゝ' ェェ' `' / -‐' \ \ ヽ\ 彡 イ-、 と考えるんだ \ \.ヽゝ‐‐‐升 ト、 ヽ、__ \ ヽ- 、.// j!:.} ` ー 、 ヽ\ 厶_r__ハ/!:.{ ´ / ! ヽ
>>106 まあ、引数が分からないとまったく意味不明なのも無理はない
とにかく引数を理解できないことにはコードを書きようがない
引数関係のサイトや本を何度も読むこと、50回でも100回でもいろいろ想像しなが
ら理解できるまで読むしかない
引数について:
関数(メソッド)には、どんな処理をするか決めるための材料が必要なものがある、
その材料が引数。キャラクタを上下左右に移動する関数の場合は、移動する方向が
必要で、移動する方向を引数として渡す、例えば、MoveCharacter("up")のように
(MoveCharacterが関数名でカッコ内の"up"が引数(この場合は上に移動))
簡単に言えばこんな感じかな
って言うか、引数が理解できないってのが理解できない 代入が理解できないとか言う奴と同じくらい意味不明 それ以前に引数の意味が分からんのなら関数の概念も全く理解できてないんじゃないの
>>109 あ、そっか、どう見ても関数の概念も理解できてなさそうだな
引数の理解の前に、まず関数とは何かを理解しないと駄目だな
111 :
91 :2014/01/08(水) 20:26:15.59
関数のところの漫画をもう一度読みなおしました
>>108 の引数の例、わかりやすかったです
関数ってのは、よく使う計算とかルールみたいなもので
キャラを動かすっていう関数はどこでも使えるけど、一方向とは限らなくて、
そいつにいれる素材みたいなのが、引数、上とか下とか
その引数を表示するのは、()内で表示、ない場合は()こうなる
だから、()の中身が{}ってのは大間違い
ああ、ちょっとは、つながりました
そうか、値だから、()の中が、trueがあったり、6があったりってことですか
int とかfloatとかの中身のことですね
いや、もしかしたら、今までの、読めるようになるかも
明日、もう一回同じチュートリアルやり直します
>>106 の三行もなんとなく、わかりました
まだ、モヤモヤっとしてるけど、まじでわかりかけてきたかもしれません
本気で感謝です
まだ寝るまで時間あるので、もうちょっとググります
112 :
96 :2014/01/08(水) 20:46:58.64
やだ解説ブログが関数の中で宣言してるのばっかりだからそうかもと思ったら MSDNでパブリック宣言してた
>>111 そうそう、分かってきたじゃないか
上下左右も"up"とか"down"とかの英語じゃなくて日本語で"上"とか"下"でも、
文字列でなく数字で1が上に移動で2が下に移動でもいい。関数を作る人の自由だ
また、方向だけでなく、キャラクタの画像を指定する引数を追加して、キャラの
画像を自由に変えられるようにしてもいい
コードが書けるようになればいろいろ出来るようになる
宣言と実行(利用)の区別ついてないんじゃね
真面目な話、君は向いてないよ プログラミングより山登りでもしたほうがいい あしたあたりなんかどうだ
>>112 まだ分かってないような気がする
デリゲートはクラスとか構造体とかと同じ型のひとつだよ
>>112 デリゲートとは何かをちゃんと勉強したほうがいい
>>114 関数と引数がようやく見えてきた状態だから、その区別はこれからってとこだろう
functionかsubかで括弧の有無が変わってくるVB使ったら発狂するんじゃないかしらん、この人w
C#入門ならここっ!てサイトないよなぁ ufcppさんとことかもわかりやすいけど入門者向けではないし
>>119 川俣大先生の記事だけでも十分だと思うが
確かに初歩の初歩を分かり易く説明してるサイトって見当たらないなあ 一から始める人が括弧や引数で躓くってのもわからないでもない
高校の数学とか習ってない人なのかな。 y=f(x) f(x)=2x+3 これと同じで、xを引数と呼ぶというだけなんだが。
高校数学でそれ引数って呼んだ記憶ないな
ごめん説明がまずかった。 別にf(x)のxも引数と呼ぶというわけじゃなくて、 このxと役割が同じで、それをプログラミング言語では引数と呼ぶと言いたかった。
HttpWebRequestのCookieContainerの個々のCookieにアクセスするにはどうしたらいいんですか? 実際のコードはこんな感じです HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.CookieContainer.GetCookies(req.RequestUri);
>>126 それだとreq.CookieContainer == nullだろう
req.CookieContainer = new CookieContainer();
これが必要
>>127 コピペし忘れました すみません
CookieをCookieContainerに格納するのはできてます
こんばんは。WPFでアプリケーションをつくろうとしています。 Button1を押したらタイマー開始、経過時間をリアルタイムでtextblock1に反映、特定の文字列が入力されたらタイマー停止、という流れのプログラムはどう書けばいいのでしょうか。
>>126 GetCookiesで返ってきたCookieCollectionがCookieのコレクション
というかRequestのCookie?
>>117 タイマーとかで定期的に処理する時、
文字列をテキストボックスとかに表示させようとするとオブジェクト参照エラーになるから、
代わりにやってくれる物って認識じゃダメ?
ペットボトルの用途を聞かれてトイレと答えているレベル デリゲート:あるオブジェクトの処理を別のオブジェクトに丸投げする設計手法 デリゲート型:デリゲート用の.NETの機能。シグネチャ別に定義する必要がある(無い場合) デリゲートインスタンス:デリゲート型のインスタンス。実際に変数に入ってる値。メソッドグループやラムダ式で作成する 要は1メソッドインターフェイスの簡略版みたいなもん
133 :
デフォルトの名無しさん :2014/01/09(木) 12:35:47.36
class Foo { public static Foo A = new Foo("foo"); //① public string Str { get; set; } public Foo(string str) { Str = str; } } //実行結果 var inMain = new Foo("main"); Console.WriteLine(Foo.A.Str); // "foo" Console.WriteLine(inMain.Str); // "main" ①の部分のように自分自身のクラスのインスタンスを 静的メンバとして持つ使い方は固有の名前などあるのでしょうか? 面白いなと思ったので。
シングルトンとかフライウェイトとか
135 :
デフォルトの名無しさん :2014/01/09(木) 13:40:54.47
>>134 ありがとうございます。ちなみにFooクラスの中で、
public Foo B = new Foo("foo2");//エラー(無限再帰みたいになる?
は出来なかったのですが①ではnew出来るので、
クラスメンバとインスタンスメンバは全く別物だと
いうことがわかった気がしました。
>>128 何がやりたいのか分からない。クッキーを拾ってきて見たいのか?
ならレスポンスを取ってこないと駄目だろ
Request=要求
Response=応答
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
これが必要
そして、res.Cookiesで見る
>>129 まず、Button1を押したらタイマー開始するプログラムを書く
ググりながらでもまずは自分でコード書け、そして、分からないところを質問しろ
26時とかが入力できるdatetimepickerは無いですか?
やべ、デレゲートだと思ってたわ。
142 :
デフォルトの名無しさん :2014/01/10(金) 02:13:02.48
ListBoxをFormにAnchorしてると縦方向の大きさが 一行ずつで大きくなってしまいカクカクしますが これを他のコントロールと同じようにスムーズに出来ませんか?
IntegralHeight
>>143 これが欲しかったんです。
ありがとうございました!!
コントロール渡しをしたいのですが、Form1に貼り付けたpictureBox1を入れると 「'System.Windows.Forms.Picturebox'から'Control'に変換できません」 と、出てしまいます。 pictureboxをコントロールに変換する方法ってあるのでしょうか?
Controlって名前のクラスをどっかで独自定義してない?
ハンガリアンな上に普通に使われてそうな定義語は使わないのですが、ソリューション全体で検索してみましたがありませんでした。 何のControlに変換しようとしているのかとか、確認方法とかってありますでしょうか?
変数なりメソッドの引数なりでControlって記述されているところにキャレット持って行ってF12
System.Windows.Controls.Controlだろどうせ
using System.IO; using System.Net; この2つをよく使うので最初から書いておきたいんですけどどうすればいいですか?
それを含めた項目テンプレートを作る
可変長二次元配列の初期化ってどうやれば良いのでしょうか? List<double>[] lstHoge = new List<double>[10]; で、lstHoge[0].Add(10.0);としてもlstHogeがnullでエラーになってしまいます。 ググるとArrayListばっかり出てきますし・・・。
lstHoge は要素数 10 の配列として初期化されているけど、 その要素の型である List<double> は null で初期化されているから。 自分でインスタンスを作って割り当てる必要がある。 var lstHoge = new List<double>[10]; の後に for (var i = 0; i < lstHoge.Length; i++) lstHoge[i] = new List<double>(); が必要。
可変長2次元配列???
Listは配列じゃないぞ
はい。列ですよね?
C#の可変長2次元配列とは?
しつけーよ粘着野郎
161 :
デフォルトの名無しさん :2014/01/15(水) 10:26:43.63
protected internal って protected && internalじゃなくて protected || internald なのかー
「あくまで執事ですから」みたいなものか
基底クラスとサブクラスが同じアセンブリにある場合にだけ、 サブクラスからアクセスできるのかな。 使い道がわかんね~
internal protectedは 同じアセンブリ→触りたい放題 違うアセンブリ→派生クラスからのみ
javaのprotectedと同じだな
自分で機能拡張する分には中身をさわっても良いけど 使うだけなら中身はさわらんでも良い、って事かと
VS2012からVS2013にする意味ってC#的にあります?
TableLayoutPanelにて、Labelを貼り付けて文字を表示しています。 Label1.Text = [320.0,240.0]255.0 Labelに直接書いて全部表示されるのを確認して幅を取っているのですが、実行すると [320.0,240.0] で、止まってしまいます。 Label1プロパティはAutoSizeをFalseにしているくらいです。 何か対策はありますでしょうか?
>>167 使うだけなら、中身さわんじゃねーよ
拡張するならちょっとさわらせてやんよ
でも private はダメだぞ
SL5でGridDataColumnのHeaderの表示をコンボボックスで 選んだものにしたいのですが、どうすればいいでしょうか? <ComboBox Name="CB"> <Item Content="表示1"> <Item Content="表示2"> </ComboBox> <Button Click="Clk"/> <DataGrid> <DataGrid.Columns> <DataGridTextColumn Name="Col"/> </DataGrid.Columns> </DataGrid> Clk() { var sel = CB.SelectedItem as Item; Col.Header = sel.Content; }
めっちゃ素人質問で申し訳ないんですが T Add<T>(T t1, T t2) { return t1 + t2; } みたいなことってなんで出来ないんですかね?
Tが演算子+をサポートしてるか分からないから
平面上に点AとBがあります。A(x1,y1) B(x2,y2)のとき、ABを通る直線をC#で表現するにはどのようにすればよいでしょうか? ax+by+c=0 の形で表現すればいいらしいのですが、aとbの値が一つに決まらないので、プログラム上でどう表現すればいいのか分かりません。
宿題はokwaveでどうぞ
中学生レベルの問題じゃね?
え、計算しないといけないの?Draw○ine一発じゃないの? 表現ってなに?描画じゃないの?
を通る直線 二点間の線分じゃないよ?
AB2点が決まっていて、それが同じ点を示すんじゃなきゃ直線は求まる 詳しく知りたかったら知恵遅れいけ
どうせ、2 直線が同一直線上に存在するかを考える場合は単純な == じゃなくて、誤差を考慮しないといけないし、2 直線が一意な値であることに意義はそんなにない。 なので、持ち方は自分の扱いやすいと思うデータの持ち方をすればいい。どういう操作をしたいかを考えればいい。持ち方の例として、 直線上の 2 点の座標、 a, b, c、 (a, b) に制約を加えた a, b, c、 角度 θ と c (θ = atan2(x, y))、 など。 ちなみに (a, b) %26#8226; (x, y) %2b c = 0 で、(a, b) は直線の方向に直交するベクトルなので、長さを 1 にすれば、距離とか求める時に少し速い。扱いにくいけど。
内積とプラスが文字化けした
一意に値がどうとかいうから。
いやいやいやいやいや
なんだこの流れw
>>180 が何が言いたいのかさっぱり分からないが、これで分かる人なら最初から質問なんかするわけがない。
>>174 何でもそうだけど、何かをプログラム上でどうモデル化するかは目的に応じて決まる。
数学的には同じなはずの実数だって目的に応じて最適な型(double、decimal、分数...)を選択するでしょ。
MenuStripの上にボタンコントロールを配置したいのですが、 ボタンコントロールを右クリックして「最前面に移動」としても、MenuStripの下に隠れてしまいます。 上に来るように配置するには、どのようにしたら良いのでしょうか?
>>189 MenuStripをコンテナの中に入れてButtonはコンテナの中に入れずコンテナの前面に
来るように配置すれば可能だと思うけど、普通はデザインを見直すべき。
例えばMenuStripは別に必ずしもFormにDockする必要ないんだよ。
>>189 ありがとうございます。
確かにPanelの中とかでMenuを入れた方が使い勝手は良いですね。
FormにDockした場合、ボタンを最前面に移動しても隠れたままでしたが、Menuを最背面に移動することで出来ました。
>>172 型に制限つければ同じようなことはできる
>>172 ジェネリクスにオペレータ制約がないから無理っぽいけど、dynamicでキャストすれば可能
型安全とか気にするな
>>188 つーかMenuStripにToolStripButtonを入れればいいだけじゃね?
けっきょくリフレクションになっちゃうんだな C++のtemplate型推論とは全く意味が違うもんな
同じ名前空間での話ですが、 static void print(string s) { Console.WriteLine(s); } を書いて、すべてのクラスで print("foo"); と修飾なしで利用する方法はありますか?
全てのクラスにそれを実装 全てのクラスをそれを実装したクラスからの派生にする
こんにちわ! UnityでC#を使ったスクリプトが必要で、 オススメの開発環境を教えていただきたいのですが! visual stdioとか有料以外のものでお願いします windows XPです
unityでいいだろ
monodevelopは挙動がおかしいので。。。 補完ウィンドウが表示されなかったり、 コメントで日本語打とうとすると画面上に表示されなかったり(エンターを押すとソースに打ち込まれる)
MonoDevelop と VisualStudio Expressでいいのでは
開発環境からデバッグも何もできなくていいならVS一択
VisualStudio Expressって無料で使えるんだ! ありがとうございます!
ちなみに、javaは多少使えるんですが、 新しい言語(C#)やるときはやはり入門書でも買って1から覚えた方が効率いいですかね?
俺は1度も入門書買ったことないね EffectiveXXXとかMoreEffectiveしか持ってない
プログラミングしたいなら入門書はいらない 勉強したいなら入門書はお手軽
とりあえず、どこまでできるかやってみたいと思います。 ありがとうございました
3ヶ月以内なら、ウルティメートも無料なっしー
209 :
デフォルトの名無しさん :2014/01/20(月) 10:55:51.14
質問です。 WebBrowserコントロール以外で ウェブサイトで記述されたJavaScriptを実行できる手段がありますか? 要はAjaxを使用されてるページの情報を読み取りたいとかなんですが。
activescripthostでぐぐれ
System.IO.File.Exists がファイルの存在を確認するって大嘘ですね 存在だけなら Directory.GetFiles などをがいいと思います
日記は日記帳に書け
>>210 WebClientで実行可能なんですか?
今はWebRequest使ってますがこれでは出来ないですよね?
>>211 少し調べましたがもう少し詳しく教えて頂けないでしょうか?
>>212 GetFilesは数が多いと時間かかるじゃん
なにを求めてんの?
byte 配列の GetHashCode はどう実装するのがベスト? 16進数文字列に変換してから string の GetHashCode でできるけどオーバーヘッドがあり過ぎなような
どう実装するのがベストかはデータ次第に決まってると思いますが。
4バイトずつInt32にしてxorしていくとか
>>195 ソースに
#define print Console.WriteLine
の一行足して、cpp通してからコンパイル
クラスAがメインクラス クラスBがサブクラス クラスCが設定データを保持しているstaticクラス という感じで クラスAでクラスCとクラスBのインスタンスを生成している状態です クラスAからクラスBのメソッドに移ってる中でクラスCの変数やメソッドなどにアクセスしたいのですが staticの扱いがいまいちわからずうまくできないで居ます この場合クラスBからクラスCへのアクセスではなく クラスAからクラスBに移るときにクラスCのデータをオブジェクトとして渡すべきなのでしょうか?
staticクラスのインスタンス生成? クラスAからクラスBのメソッドに移ってる? クラスAからクラスBに移るとき? クラスCのデータ? ちょっと何言ってるかわかりません
>>222 staticクラスなら、クラスC.Hoge() って感じでクラスCのメソッドを呼び出せます。
>>224 ありがとうございます。
static classについてなんですが
static class ConfigData
{
public static void test(){
}
}
でも
static class ConfigData
{
public static int x = 100;
}
でもエラーが出てしまうのですが
static classだとメソッドや変数の定義の仕方から変わるのでしょうか?
自分が参考にしていたところだと普通にやっているようなのですが・・・
226 :
デフォルトの名無しさん :2014/01/21(火) 08:57:28.15
自分はプログラムの規模がある程度大きくなると 分かりやすくするために関数名とか変数名を 日本語(2バイト文字)で名付けてるんですがそれって変ですか?
変
classにstaticなんかつけれたっけ?
staticメンバしか持てないクラス
Countが同じのList<int>とList<string>をDictionary<int,string>に簡単に変換する方法知りませんか?
>>232 Enumerable.ZipとEnumerable.ToDictionaryを使う。
>>226 変じゃないよ。
特に、日本語の固有名詞を使う場合なんかは
無理に翻訳したりローマ字にしたりせず積極的に使うべき。
日本人以外と共同開発する場合は避けた方がいいけどね。
変数名の先頭はアルファベットにしないとな
>>233 ありがとうございました。
こんなかんじでやってみます。
static List<int> integer1 = new List<int>();
static List<string> str1 = new List<string>();
・・・・
Dictionary<int, string> dic = integer1.Zip(str1, (i, s) => new { i, s })
.ToDictionary(a => a.i, a => a.s);
ソースコードの解析ツールが2バイトの識別子に対応してない場合も多いし2バイト文字を変数名に使うべきじゃないよ
なるほど じゃ2バイト文字使った方がいいな
Control[] controls; と書きたいとき、日本語だと Control[] コントロールs; Control[] コントロール達; Control[] コントロールら; Control[] コントロールども; いろいろあって迷いますね。
コントロール48
コントロール群
コントロールず
コント55号
ハンガリアン+日本語みたいにしててaryコントロールとかobjコントロール 変数宣言後はaryまで打ってCtrlキー+スペースで入力支援つかってる
int うんこ
VisualStudioだとutf-8だから、日本語は3バイトだね。どうでもいいけど。
メソッドや変数の名前を定めるとき、暗黙のルールってどうなっていますか。 ThisMethod YourVar のように、ユーザ定義メンバでも、.NETで定義済みのキャラメル式でよいんでしょうか。
命名規則なんてググればいくらでもあるだろう そのググった情報よりも2chのレスの方が当てになるのか…w
> キャラメル式 何その甘そうな形式 キャメル式ね ラクダのコブ MSDNで「名前に関するガイドライン」を引けばガイドラインは用意されてる ただこのガイドラインはクラスライブラリ、不特定多数から利用されるものについての記述 internalやprivateだったり、あるいはそもそもアプリケーションだったりの場合については 好きにしろってスタンスをMSはとってる のでその辺は会社とか単位で適当に決めたり決めなかったり
>>239 学術的には複数形をあらわす日本語は諸ね。
つまり諸コントロール。
また基地外が来たな
>>249-250 戻り型を持つメソッドは、大文字ではじめて、らくだ式を取りいれて、
変数やプロパティは、小文字ではじめるのがいいかなと思うんですが。
インテリセンスで、区別が付きやすいし、ソースをざっと見たときにわかりやすいかなと思って。
どうでしょうか。
キャラメル式ワロタw
らくだは瘤より爪先の方が好き
.NETをまねるならクラスから生えてるものはすべて大文字開始でいいと思う 他に、privateを小文字開始、publicを大文字開始にする規則もある
コメントの代わりに属性って使う?
>>256 クラスのメンバはフィールドを除いて、大文字開始のキャメル式でおk?ってこと
コメントの代わりっていうのはどうかな
>>258 大文字開始はPascal形式言いまんがな
フィールドもprivateはCamel形式にしたり
publicとは何らかの区別つく様にした方が良いがな
262 :
デフォルトの名無しさん :2014/01/23(木) 07:29:17.43
>>261 PascalとUpper Camelは違うような
263 :
デフォルトの名無しさん :2014/01/23(木) 10:32:55.73
ペッナロバーコ「ンーwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww」
>>262 .NETのガイドライン用語として、PascalとCamelで先頭文字が大文字か小文字かを分けてる
わーい、でけたー^^; //録音終了タイマー開始 var stopTimer = new DispatcherTimer(DispatcherPriority.Normal); stopTimer.Interval = new TimeSpan(0, 0, 1); stopTimer.Tick += new System.EventHandler(stopTimer_Tick); stopTimer.Start(); private void stopTimer_Tick(object sender, EventArgs e) { //現時刻が終了時刻を超えたら>0 if (DateTime.Now.CompareTo(etime.AddSeconds(50)) >= 0) {Exit();} else{ var tm = DateTime.Now.ToLongTimeString(); tm += " / " + etime.ToShortTimeString(); notifyIcon1.ShowBalloonTip(1000, "Info", tm, ToolTipIcon.Info); } }
camel と Upper Camel は違うよな
267 :
デフォルトの名無しさん :2014/01/23(木) 16:08:12.02
ゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミwww
>PascalとCamel >大文字と小文字 >最初が大文字 よくわからないので、事例を挙げてくれると、助かります。
大文字と小文字のスタイル
次の用語は、識別子の大文字と小文字を区別するさまざまな方法を表します。
Pascal 形式
識別子の最初の文字と、後に続いて連結されている各単語の最初の文字を大文字にします。
Pascal 形式は、3 文字以上から構成される識別子に対して使用できます。
次に例を示します
BackColor
Camel 形式
識別子の最初の文字は小文字にし、後に続いて連結されている各単語の最初の文字を大文字にします。
次に例を示します
backColor
[大文字]
識別子のすべての文字を大文字にします。
次に例を示します
IO
-------------------------------
http://msdn.microsoft.com/ja-jp/library/ms229043%28v=vs.100%29.aspx
static string fmt(string format, params object[] args) { return String.Format(format, args); } で var sex = 69; fmt("{0} {1}", sex ); とすると自然死するな。 デバッグでわかったけど
自然死と事故死の違いについて詳しく String.Format( "{0} {1}", sex );と何が違うのかについても。
アプリが落ちるんでデバッグしたら ("{0} {1}", sex );じゃ引数が合わないってさ コンパイル時に教えてくれよVS2010くん
publicは大文字、それ以外は小文字 インテリセンスならプロパティとメソッドでアイコンが違うから名前で区別する必要はない
僕はそもそも区別つけてないです(仕事の時は強要されるから別として) どうせ間違ってりゃエディタがぷんすか言うしコンパイルエラーになりますしおすし
文字列のエラーは実行時しか検知できないだろ…
>>269 すっきりしました。ありがとう。
>>272 namespase test
{
private string testfield_a ・・・あるいはキャメル式を使う?
public string TESTFIELD_b ・・・あるいはパスカル式を使う?
public void METHOD_a()
{return;}
private void method_b()
{return;}
}
こんな感じでしょうか。
Console.WriteLineで第一引数がコンパイル時に確定するときならチェックできないこともない AndroidLintでもToastをshowしてないけどいい?とかいうし
Microsoftの命名規則に従うなら2文字の略称を除いて大文字だけにはしない 定数もPascal そして、_は基本つかわない namespace Test //名前空間は大文字で始める { private string testFieldA; public string TestFieldB; //本来はフィールドは公開しない public void MethodA {return;} private void methodB {return;} }
WPF の Point 型とかは、private なフィールドメンバーは _ 付きだったから、俺はそれの真似してる。 struct Point{ double _x; double _y; }
VBだとプロパティの中身は、_ 開始にせざるをえない
私はm_XxxYyyだは
private/internalなメンバーの識別子なんて好きに決めろってことだよ
だいたい命名規則ごときで九死に一生を得たわ~なんて思ったことは23年間一度もないのです 信者にお前どういう奇跡エピソードがあんの?って聞いても大した答えが返ってこないのです 曰く、神がそうせよと仰られた、らしいです
変数の型や宣言形式、スコープ、関数のあ使い方なんかが分かるように命名してるから、当然のこととして恩恵受けてる 命名規則破ってたらバグだらけになるわ
バグだらけで困ったから経験的にそうしたんならご立派様の一言 そうしたらバグがなくなったような気がしてるだけならプラシーボ無能万歳 統計的な有意差でも測定してるなら君は偉い
IDEが貧弱だった頃はともかく、今はこだわるほどじゃないと思ってる。 思ってるだけで言わないけどね。ケンカになるからw
.net のソース見てるとprivateメソッドも大文字開始なんだよな
>>283 いかにもダメグラマの言いそうなことだなw
>>284 アホすぎる
そういうのは属性とリフレクションで処理するんだよ
PascalでもCamelでもHungarianでも規則性がそれなりにあれば別に構わないけど、 ローマ字命名の表記揺れだけは殺意がわく
規則は統一されていれば何でもいいが、スペルミスをやらかすと恥ずかしいから気をつけろ。 以前、「Information」を「Infomation」で間違って覚えてて グーグル翻訳の「もしかして: information」見て( ゚д゚)ポカーン・・・ってなった 過去のソースを調べると…もうね、問題が無いのを確認しつつ、こっそり直したよ゚(つ∀`゚)゚。 一緒に作業してた人は密かに俺に殺意がわいてたかもしれんwww 今じゃグーグル翻訳にお世話になっています。
>>278 わかりやすいです。
なるほど、参考にしたいです。
フィールドではなく、プロパティーを実装して、カプセル化を守りたいと思います。
>>287 これが気になります。
本家は何を考えているんだ。
>>290-291 たしかに、大変ですね
なおすの大変そう
なおすと皮肉にもかえってバグを作ってしまいそう
int[, ] aaa = {{0,0},[1,1]}; int[, ] bbb = {{0,0},[1,1]}; int[, ][] zzz = {aaa, bbb}; ←aaaやbbbを代入できる配列を作りたいけどエラー こういう場合ってどう宣言したらいいのでしょう?
逆じゃね? int [] [,] zzz = { aaa, bbb };
C#初心者です。 ポリモーフィズムを使うと条件分岐が無くせるという概念が何となく分かったのですが C#でプログラミングする場合は、常にポリモーフィズムを意識してコードを書くべきでしょうか? if文やswitchを使うコーディングはダメなのでしょうか?
同じ条件の分岐が何カ所かに出来るようなら分割を検討すればいい
byte[] → int[] 変換処理に共用体使うのってあり? [StructLayout(LayoutKind.Explicit)] struct BytesToInts { [FieldOffset(0)] public byte[] Bytes; [FieldOffset(0)] public int[] Ints; } 試してみると、変換処理は期待通りに行われるけど、気になる点が Ints.Length が Bytes.Length と同じになって、伸びた分のインデックスに変な値が入ってる…どこの領域見てるんだか 不要なインデックスを見ないように制限すれば問題なく使えそう…?
よくわかんねーけど それって参照がオフセット0に入ってるだけじゃね? C#でいみあるのそれ? あんせーふってやつで触るのけ? 素直にBitConverter使うんじゃだめなの
今時Cでもそんなダサいやり方はしない
速い以外のメリットは特にない
CPUが変わると互換性が確保されてない気がする
ビッグエンディアンのデータを扱った時は、ビッグエンディアン版のBitConverter作ったな。
303 :
デフォルトの名無しさん :2014/01/25(土) 14:23:39.15
C#でWebbrowserを使ったアプリを作っています。 サイトによっては以下の様なエラーメッセージが出る事があるのですが 何か良い方法はありませんか? Webページからのメッセージ 次の行でスタックオーバーフローが発生しました。
サイトの管理者にJavaScript直せって文句を言う
>>297 こんなことできるんだ。
でもそれ変換じゃなくてポインタをキャストしてるのと同じだよね。
だったらunsafeで明示的にそう書いた方が分かりやすいのでは?
306 :
デフォルトの名無しさん :2014/01/25(土) 15:08:49.81
>>304 何かそーいう糞サイトのJSエラーを回避する方法はありませんか?
そんな方法があるなら誰もエラーなんて直さないですね
スクリプトを動かさない
プログラマの端くれとも思えないびっくり発言だなw
出来るプログラマーは第三者が書いたプログラムの品質には悲観的になる
わろたwww スクリプト動作止めるのが一番だろw IEコンポーネントならエラー表示を抑える設定ができたはず(実装は糞面倒)
なんで初心者スレにフロフラマーがいんねん
さ、サプレスなんとか
質問です enumを継承して定義することはできますか? enum State1{A, B} enum Stand2{C, D} enum ExtendState : State1,State2 例えば、こんな感じです
無理です
C#の列挙体は仕様作った奴がアホ過ぎる
Cのをそのまま持ってきただけだな、.NETの関係?
基本型って概念があるのに値を基本型として使おうとするだけでキャストを強要する辺りとか フラグとしても使いにくい、HasFlagも.NET4からのサポートだし
俺はCのenumよりもはるかに使いやすいと思ってる・・・
typedef つけたらそんな変わらん気もするが、IDEで候補に出るのは大きいか
C/C++のenumの何がクソかって、型名スコープに定義されないこと マジ意味不明 C++11でようやくできるようになったんだっけ
Cのenumは、組み込みのksコンパイラで コンパイル時計算をするために存在している
思えば理想的な列挙型を持った言語ってまだ出会ってない JavaはJavaでクラス寄り過ぎるんだよな~
言語仕様に過度な期待をする意味が分からん 自由にあれこれ拡張したいならメタプログラミングが得意な言語使えばいいだけだろ
分からんことに口挟むなよ
C#の列挙型はリーチを重視してるんだよ 単なる数値として実装されてるおかげで、速度やとメモリが犠牲にならない ネイティブコードとの相互運用にも便利だし メモリが厳しいMicro Frameworkでも問題なく使える Javaのは確かに強力だけどヘビーな仕組みだから使えるところが限られてしまう おかげでAndroidじゃほとんど使われてないしな いくら凄いものでも利用されなければゴミ
糞とは全く思わないけど、enumだけはJavaの方が柔軟性があるかもね。 まあ拡張メソッド使えるようになってからはそうでもないか。
型制約でEnumができないのは何故なんだ・・ 「where T : struct, IComparable, IFormattable, IConvertible」でもいけるけどさ
Action<T>の引数がrefになってる版ってBCLにないよね? 値型の配列を列挙して変更する場合にあると便利だと思うんだけどArrayの拡張メソッドにも そんなのないし、そういう使い方は想定されてないのか。
想定されてないというより、分かりにくいコードになるから そういうのは意図的に排除してるんだろう
分かりにくいかなあ...
Actionの宣言だけ考えても、Tにrefとか書けないから、 ActionRef<T>(ref T)とかActionRef1<T1, T2>(ref T1 , T2)とか ActionRef1Out2<T1, T2>(ref T1, ref T2)とか であっという間に大爆発するぞ
元の配列を変更する必要がある場合を除いて、Select で十分じゃね?
拾ってきたソースをvs2010でコンパイルしようとしたら intからbyteへの暗黙の変換がどうのとエラーが出て明示的なキャストが必要ですとか言われるんだが サイズのでかいintにキャストしておけば問題ないよね?
二行目と三行目で真逆のキャストについて言及しているが 大丈夫か?
ちょっとソースちゃんと読んでみることにする
エラーで出てる通りにキャストすればいいだけじゃないの?
()形式のキャストが嫌いなのでConvert.To~形式のキャストをわざわざ使ってる static_cast<>()みたいな感覚で
asは?
asは仕方ねーだろ
asにゃん
ass
C#を作った開発チームのチーフがヘジたんなのでDelphiの文法をかなり借りてきてるからだろ
byteやshort同士の計算も結果はintに拡張されるんで、 shortのまま計算を続けたいときは面倒だよね short x = 1, y = 2; short z = (short)( x + y );
まあbyteはともかく P/InvokeやCOM相互運用とかじゃなきゃshortあんまり使わないし
DelphiとJavaのいい所どり+Streamの先取りLINQがC# ついでにasyncも入れた
VS2008でC#勉強中です。 クラスの配列の初期化で、以下のような感じで初期値の代入を行う ことは出来ないでしょうか?いろいろ試したのですがどうしても出来ません。 class TestClass { int i; double d; string s; ... } class Program { TestClass[] tc = new TestClass[] { {1 , 1.11 , "文字1" }, {2 , 2.22 , "文字2" }, {3 , 3.33 , "文字3" }, } }
iとかprivateだから外から触れないんだけど class TestClass { public TestClass(int i, double d, string s) { ... } } を定義すれば後は普通にそれぞれのTestClassをnewしていくだけだよ
横から(歴3ヶ月)だけど、配列かリストで値をもちたいなら
>>348 さんのを参考にすると、
List<TestClass> tc_list = new List<TestClass>();
tc_list.Add(new TestClass(1 , 1.11 , "文字1" ));
tc_list.Add(new TestClass(2 , 2.22 , "文字2" ));
tc_list.Add(new TestClass(3 , 3.33 , "文字3" ));
かなぁ
アクセスがめんどくさそう
メンバーがpublicなら初期化子でもできるな TestClass1 [] tc = { new TestClass() { i = 1 , d = 1.11 , s = "文字1" }, new TestClass() { i = 2 , d = 2.22 , s = "文字2" }, new TestClass() { i = 3 , d = 3.33 , s = "文字3" }, };
TestClassというのがこの際どうでもよいなら var tc = new [] { new { i = 1 , d = 1.11 , s = "文字1" }, new { i = 2 , d = 2.22 , s = "文字2" }, new { i = 3 , d = 3.33 , s = "文字3" }, };
352 :
347 :2014/01/29(水) 18:29:39.64
みなさん大変ありがとうございました。
教えていただいた方法を全部試してみましたが、どれもうまく行きました。
配列の初期化だから{}を使うのだと思っていましたが、
>>348 さんの方法で出来ました。
ああそれと、メンバーはPublicです。書き忘れていました。
{ i = 1 , d = 1.11 , s = "文字1" }
というような記述が出来るのは知りませんでした。勉強になりました。
この部分を
{ 1 , 1.11 , "文字1" }
と書くとエラーしますね。そのあたりの意味がよくわかっていませんので
勉強します。
とにかくありがとうございました。
メンバはプライベートにしてプロパティ使った方が良いよ!
354 :
デフォルトの名無しさん :2014/01/30(木) 03:23:40.85
プログラミングに興味を持ちましてC#を始めてみようかと思っているのですが 初心者にオススメの書籍を教えていただけないでしょうか・・・? 手続き型の言語は過去に多少触れたことがあるのですが、オブジェクト指向型は完全に未経験です ちなみにプログラミングC#第7版を昨日買ったのですが、買った直後にこの書籍が超応用書籍だということを知りました・・・・orz よろしくお願いします。
C#も手続き型ですし
型なんてどうでも良いな
オブジェクト指向をちゃんとやりたいならJavaから入るのがおすすめ 初心者向けの丁寧な本がたくさんあるし全く違和感なくC#に移行できるよ C#はJavaやC++の経験者のために作られた言語だから、 背景がわかってないまま機能だけ追ってると、何でこんなものが必要なのかが理解しがたい部分が多い
javawww
俺は全部ネットで調べて勉強したけどな
JAVAの方が教条主義的で分かりやすいかも
C#の設計って基本的に「Javaのこの頻出定型区は冗長である。だから言語に組み込むことで簡略化した。」だからな 元を知ってる方が当然分かりやすい
C#やりたい! ↓ C#はJavaが元になってるからそっちからやったほうが当然分かりやすい ↓ JavaはC/C++の構文引き継いでるからそっちからやったほうが当然分かりやすい ↓ C/C++はアセンブラを高級にしたものだからそっちからやったほうが当然分かりやすい ↓ アセンブラはハードウエアに密接に関連するからPICのようなチップからやったほうが当然分かりやすい ↓ PICは単体じゃ動かないからハードウエア知識得るためにもTTLからやったほうが当然分かりやすい ↓ TTLはトランジスタから発展したものだからそこからやったほうが当然分かりやすい
プログラム経験完全ゼロの人なら javascriptで雰囲気つかんでからでも遅くないよな
JavaScriptはクラスベースじゃないからC#の前段としては難しくないか
プログラミング初心者はオブジェクト指向とか考えなくていいです
そうだな 最初は習うより慣れろの方がいいと思う 自分はいまもそうだけどw
定義でunsafeとしているのにエラーがでます。なにがいけないのでしょうか? エラー CS0214: ポインターおよび固定サイズ バッファーは、unsafe コンテキストでのみ使用することができます。 public sealed class myClass { [DllImport("Loader.dll")] private unsafe static extern uint Load(string exe, string dll, string func, void* dllData, int dataLen, out uint pid); public static myClass.Loader_Error LaunchClient(string client) { uint test = myClass.Load(client, dll, "OnAttach", null, 0, out processId); } }
> uint test = myClass.Load(client, dll, "OnAttach", null, 0, out processId); こっちでも(nullだけど)使ってるっしょ
372 :
370 :2014/01/30(木) 17:22:32.00
宣言だけでなく、呼び出しでもunsafeを指定する必要があるという事なのでしょうか? 解決方法がわかりません
373 :
370 :2014/01/30(木) 17:24:20.85
public unsafe static myClass.Loader_Error LaunchClient(string client) これでいいのでしょうか?
NULLさえ渡せればよいなら、IntPtrにすればunsafeはいらない private static extern uint Load(string exe, string dll, string func, IntPtr dllData, int dataLen, out uint pid); uint test = myClass.Load(client, dll, "OnAttach", IntPtr.Zero, 0, out processId);
375 :
370 :2014/01/30(木) 18:08:53.36
>>374 有難うございます!
IntPrrを忘れぬよう覚えておきます
>>362 TTLって何十年前の話をしてるんだよ。
っていうかTTLが何の略か知らないのかよ馬鹿だねw
Through The Lens測光のことだろ?
379 :
370 :2014/01/30(木) 19:19:57.38
>>377 すんません、スマホからだってのです^^;
>>378 普通 Time to live だよね
381 :
370 :2014/01/30(木) 22:11:14.39
nullから、IntPtr.Zeroに変更した所、 > Load(string, string, string, void*, int, out uint)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 > System.IntPtr' から 'void*' に変換できません このようなエラーがでたため、 public unsafe static myClass.Loader_Error LaunchClient(string client) このようにした所、エラーが消えました。 しっくり来ないんですが、こんなもんなんでしょうか?
予言しよう。今度はLaunchClientを使う場所で unsafeが・・とエラーになるぞよ。 Loadの宣言もIntPtrに換えないとだめだろ。
人生行き当たりばったり
>>382 ご指摘の通り、
[DllImport("Loader.dll")]
private unsafe static extern uint Load(string exe, string dll, string func, IntPtr dllData, int dataLen, out uint pid);
uint test = myClass.Load(client, dll, "OnAttach", IntPtr.Zero, 0, out processId);
これで行けました。ありがとうございました><
>>365 いまどきマイクロコード書けるマシンなんか、あるんか?
Version version = Assembly.GetCallingAssembly().GetName().Version; これで取れるバージョンって、何処で設定/保存されてるんですか? 今のところメジャー0,マイナー0,ビルド0しか取れないんですが…
設定されてるのはVSではAssemblyInfo.csで定義されてるAssemblyVersion属性
389 :
デフォルトの名無しさん :2014/01/31(金) 20:39:43.00
どなたか教えてください。 Visual studioでプログラムを作成し、自分のpcではデバックを開始することができるのですが それを圧縮して他人に送ると、プログラムの中身がないといわれます。 どうすればいいでしょうか?どなたかお願いします。
意味不明 頭あるならもう少し整理しろ
391 :
デフォルトの名無しさん :2014/01/31(金) 20:46:27.80
>>390 すみません。
Visual studioで色々とコードを書いて、プログラムを作りました。
内容はボタンを押すと文字の色が変わる、とかそんなやつです。
ですが、ソリューションの入ったフォルダごと、それを他人に送ると
ソリューションには入口のデータしかない、と言われます。
実際、今自分もソリューションを立ち上げてみたんですが
コードソースを表示することができませんでした。。。
それでも、デバック開始をクリックすると、ちゃんとプログラムが起動します。
これを他人に送れるようにしたいのですが・・・
392 :
370 :2014/01/31(金) 20:59:23.25
バッチビルドでリリース版作ってる?
ソリューションには入口のデータしかない、と言ったのは誰なんだ 送った相手か PCw
×PCw ○PCか
395 :
デフォルトの名無しさん :2014/01/31(金) 21:10:22.76
送った相手です
sln、csproj、bin内のexeはあってcsが無い状態???
FormにLabelかTextBoxなどを使って、複数行の文字列を描きたいのですが、 自分で改行コードを文字列の途中に適当に入れて改行を行うとして、 表示された文字列が隠れることなく表示されるようにFormの縦横の大きさを 自動で調整したいのですが、何かそういう手法はありますか?
LabelならAutoSizeプロパティをtrueにしておけば、文字に合わせてSizeがかわるから それに合わせてフォームのサイズを変えればいい。
399 :
デフォルトの名無しさん :2014/02/04(火) 12:42:26.93
C#(+ .net4?)で、ウェブアプリを作って、LAN内向けとして、httpサーバで動作させようと思っています。 この場合、windows serverを利用するメリットって何かあるのでしょうか。 重なったとしても、同時に3アクセスくらいだと思います。 現在、windows 8 proで、v.s.2010が動作していて、デバッグ環境になっています。 このまま、付属のWEBサーバにアプリを設置して動作させると、何かまずいことなどあるでしょうか。
Web Server用途でWindows Serverが必要になるのは 基本的にライセンスの問題。 家庭内や開発目的ならpeerアクセスの範疇だから問題ないが、 オフィス内となると微妙かな。
Visual Studio 2013で デバッグ時に自動保存されないようにする設定はどこにあるのでしょうか? 2008使ってた時にあった オプション - ビルド/実行 - ビルド開始前に行う保存の操作 - 変更を保存しない が見当たりません・・・
>>354 「オブジェクト指向でなぜつくるのか」はいかがでしょうか?
だた、本当にプログラミングを始めたばかりなのであれば、今書籍は必要ないというか
ただただ、Webでいろいろ調べて試行錯誤する事のほうが得られるものが多そうですけども。
ちなみに、最初に買う書籍ということならば、オライリーのやつよりも、独習C#をおすすめします。
403 :
デフォルトの名無しさん :2014/02/04(火) 15:45:52.11
>>400 レスありがとうございます。
ライセンス差によって、製品を使い分ける必要があるのですね。
一方で、PROと、SERVERの安定性の差はどこまであるのかも気になります。
指定したフォルダ内にあるサブフォルダ名とファイル名を取得して返す関数を作る場合、 戻り値を保持する入れ物はどいういデータ構造が一般的でしょうか? 文字列の配列に入れると、フォルダかファイルかの区別が付かないので。 一般的にどういう手法を使うのでしょうか?
DirectoryInfo.GetFileSystemInfosでいいだろ
>>405 ありがとうございます。こんな便利なものがあったとは知らなかったです。
メソッドの引数でクラスを持つときそのクラスを変更しないような制約をつけることって出来ますか? /*c++のconst引数みたいな*/
できません
>>408 あるメソッドにクラス渡したら勝手に内容書き換えられた!!
みたいなことって起きたりしないんですか
弄られると困るんならコピーして渡せよ
なるほど
C#のstringにconstいらないしなぁ
ArrayList.ReadOnly()みたいに読み取り専用のラッパーを作るとか、 Stringみたいに、そもそも書き換え不可にしてStringBuilderのようなクラスを別途作るかかな。 まあ、今時のマルチスレッド対応を考えるとStringのようにイミュータブルにしておくのが賢いかも。
作成後は状態を変えないオブジェクトのこと。要するに書き換え不可ってこと。
なるほど
417 :
370 :2014/02/06(木) 00:36:10.24
つーか単語くらいはググれよw 同じキーワードで余計なもんが引っかかるなら別だが
そもそもメソッドを書く側が、引数のオブジェクトのデータを書き換えないことを そのメソッドの使用者に対して保証したいって考えることがあるのかと言うと...少なくとも俺はない。 使う側も、それが言語レベルで保証されてないと安心して使えない...とかまず思わんのじゃないのかと。
const必要って人は、メソッド書くときに引数のオブジェクトのデータを 間違って変更しちゃうミスをコンパイル時に検出したいと考えてるのかな。 だとしたらその問題意識ってどうなのと思うんだけど
>>410 メソッドの定義からは弄られるかどうかが分らないから不便なんだよ。
コピーも重い処理だし。
C++型のconstがC#どころか他の言語でも採用されてないのは、 コストのわりにメリットが少ないからだろう。 それに、基本値型のC++のオブジェクトと違って参照型のC#の場合、 constにしたオブジェクトがかかえてる参照の先も連鎖的に constにしないとほとんど用をなさない。 それを実現するとなると言語仕様やコーディング量が増大してしまう。
フリーのライブラリに配列渡したら、ウイルス埋め込まれたみたいな
つ Array.AsReadOnly<T> 参照の配列の場合は知らん
メソッド名にReadOnlyと入れればいいんだね!!
C++でもconstはconst_castの前に敗れ去るから、 プログラムミスは防げても、 悪意のあるライブラリからの防御は無理だな
オブジェクトの状態を書き換えるかどうかを使う側がコントロールするのはカプセル化に反しているから、 C++で自分だけでコードを書く場合はconstは使わない。
>>426 いやコントロールするのはクラスを提供する側だろ
使う側で呼べるメンバに制限がかかるだけであって中身には影響しないんだからカプセル化は破られてない
どうせconstなくても読み取り専用かどうかくらいはドキュメントに書くだろ
そもそも引数を変更するのは行儀の悪い作法だと思うんだがな まあ、有用な場面が多いのも事実なんだが
回りくどいけどやるとしたらこんなところか interface IFooRO { int X { get; }} class Foo : IFooRO { public int X { get; set; }} class Program { static void SomeFunc(IFooRO f) { Console.WriteLine(f.X); } static void Main() { var f = new Foo() { X = 99 }; SomeFunc(f); } }
publicなものは何したっていいからpublicなわけで
DbCは流行りませんでしたね(苦笑)
書き変えるメソッドに属性つけるみたいな原則はどうだろう
.NET4.5からIReadOnlyCollection系が追加されたね 念願の共変リストと共変ディクショナリだぞ
>>432 属性って読むのはリフレクション経由じゃないの?
readonlyの変数を公開したい場合、プロパティかまして公開した方がいいですか?
プロパティかまさないとreadonlyにできない状況ならそうせざるを得ないでしょ そうでなくてオーバーライドしたりする気がないならどうでもいい
public readonly A とかで公開してもいいってこと?
Aがミュータブルなオブジェクトでなければ
クラスライブラリ向けガイドライン的にはstatic readonlyならpublicにしてもよい
構造体のNEWてスタックに積むだけだからコストは無視できる?
ホットキー処理ってWIN32API使わないと無理なん?
ショートカットキーとホットキーがある中でホットキー(RegisterHotKeyの奴)をさして言ってる? であればその通り
後から動的に読み込んだクラスclass myclassに int num; というpublic変数が存在しているかどうかを確認して、 存在している場合はその変数にアクセスするにはどうしたらいいですか?
typeof(myclass).GetField("num").GetValue(null);とかそんな感じ
staticじゃないならまずmyclassのインスタンス作るところから必要だけどな
>>444 ComponentModel.Compositionあたりを探るといいよ
VC# 2010 Express SP1の環境で、ファイルIOの例外が発生しないので困っています。 string[] files = Directory.GetFiles(dir); foreach (string s in files) { if (System.IO.File.GetLastWriteTime(s) < older) { try { System.IO.File.Copy(s, fileName, true); } catch (Exception e) { // 例外発生時の処理 } } } こんな流れなのですが、わざとコピー対象のファイルを開いていても、 例外に飛ばず、しかし開いているファイルはコピーされていない状態です コピーされなかったファイル名をまとめてログに吐きたいのですが、 どうすれば良いのでしょうか?(コピーされない事自体は想定どおりなのですが、、、)
448 自己解決しそうなので取り下げます エクセル→開いてる間、更新してなくても開いたタイミングの日付に書き換わる ワード→開いていてもコピーされる GetLastTimeする前に、GetAttributeして他のプロセスで使用されていなければ コピーを試みる、って処理に変更する事にします
たんにGetLastWriteTime(s) < olderあたりの処理がバグってるだけの気がするが
>わざとコピー対象のファイルを開いていても どうやってるの? notepadで開いてるだけだと読み取りできるからエラーにはならないよ。 こんな感じで排他アクセスしてしまえば例外が起きるはずだけど。 var f = File.OpenWrite("xxxxxx.txt");
>>451 説明不足ですいません
普通にエクセルやワードのファイルを開いておいて、
そのファイルのあるディレクトリごとコピーしようと試みてます
実際にはコピーした後に削除をしたいのですが、
上記の状態だとコピーは成功して、削除に失敗するので、
同じファイルがコピー元とコピー先に2つ出来てしまうのが問題なのです
Moveだと上書き出来ないようなので、Copy と Delete で代用してるのですが、
削除に失敗する「前」に、コピーもしたくないので困っていました
449で書いたGetAttributeでもFileIOの例外を吐かず、
更にSetAttributeでも例外が発生しないので、
とりあえず、削除に失敗したらそのファイルはコピー先の方で削除するようにしてみました
何か別な方法があれば教えて頂きたいと思います
分かりにくい説明になったので補足 > 普通にエクセルやワードのファイルを開いておいて、 それぞれ該当のアプリで開く、という意味です
File.Open( path, FileMode.Open, FileAccess.ReadWrite, FileShare.None )で開いてみればいいじゃん
>>454 おお、うまく行きました!
ありがとうございます
速度的にも問題なさそうな感じです
C#で、COM(Microsoft.Office.Interop.Excel)をまったく使わずに Excelファイルを新規作成して開くことってできないでしょうか? excelを開くのは、System.Diagnostics.Process.Start("excel", "hoge.xls"); で、できたのですが、 hoge.xlsが存在しないとexcelでエラーが出てしまいます。 COMを使ってややこしいことをすれば出来るみたいですが、 C#側でexcelの操作はなるべく避けたいので、別の方法を探しています。
直感でいうと、 C#からExcel起動時にマクロを実行させるとか、 ショートカット作っといてそれを開くとか
npoiを使えばいい
>>457 >>458 ありがとうございます
とりあえず、こんな方法にしました
1.default.xlsを新規作成のデフォルトとして保存しておく
2.起動時hoge.xlsがなければSystem.IO.File.Copy()でdefault.xlsからコピー
3.System.Diagnostics.Process.Start("excel", "hoge.xls")
妥当だろうね
どこからでもアクセス出来るグローバル変数というのがあります。 調べてみると、Program.csに書いておくという方法があり、それはそれでいいのですが、 アプリケーション変数をグローバル変数代わりにしたら何か問題はありますか? if (Properties.Settings.Default.Hoge == "abc") ・・・ 変数のように使えるし、ついでに永続化も出来るので、参照はともかく書換を頻繁に行わないのであれば このまま使ってもいいのかなと思いました。 起動時にグローバル変数に string Hoge = Properties.Settings.Default.Hoge; と呼び出してHogeを使ってもいいのですが、アプリケーション変数で管理した方が一括管理が出来るかなと考えたのですが、どうでしょう?
どうでもいいでしょう
ただの設定データだったらそれでいいんじゃない? ただ、グローバル変数だから永続化するというわけではないからそこらへんは適当にやればいい
464 :
461 :2014/02/16(日) 14:14:23.87
特に問題はなさそうですね。 たしかに永続化するかどうかわからないわけですから、全部アプリケーション変数というのもおかしいですね。 使い分けることにします。
合ってる。 クラスというのは「分類」の名前と考えたら分かるかな。 学校で例えたらそのままA組、B組みの「クラス」になる。 だから、Console組のWriteLine君、Convert組のToInt16君、って呼び方をする。 あと、たまに色んなクラスで同姓同名の人も居るし。 だから、クラスとメソッドの組合せを間違えたら、 「先生!そんな人うちのクラスには居ません!」(コンパイルエラー) 「先生?確かに私その名前だけど、別の組の人と間違ってません?」(バグ) ということになる。
静的メソッド(クラス名.メソッド名 の形で呼び出すメソッド)の場合は、はっきり言ってクラスにはほとんど意味がない クラスがどうのと難しく考えるより、単にクラス名も含めて長い名前の関数があると考えるのが実態に近い クラスが意味を持ってくるのはインスタンスメンバを使うとき
まずはx.ToString()かな
プログラミングの効率をいかに上げるかで、コンピュータ言語というものは進化してきてる。 Win32APIのずらっと大量に並んだものから、探し出してプログラミングするなんて 今時やってられない。 でも、C#とかでは、クラスとか名前空間でAPIを分類することで簡単に探し出して、プログラミングに 集中出来るようにしている。VisualStudioではインテリセンスのサポートも有るしな。
言語はC#.NETで、新規のWebシステムを作ることになったのですが これまではJavaはゴリゴリやってきたんですがC#は全くの初心者で。。 開発ツールはVisualStudio 2013で大丈夫ですよね。。Javaでいうframeworkとか 定番の便利ライブリとかあるものなのでしょうか。 新規プロジェクトなので何でも使えるのだけが救いです。。
近くにアドバイザーもいない状態で一体何ができあがるのやら楽しみ
>>470 ASP.NET MVCとEntity Framework
.NETは基本的にVSだけ入れたら揃う
>>470 公式の英語チュートリアルやっておけば、
基本は大丈夫だよ
asp.net mvcは日本語書籍で、
まともなのが無いから、ググりましょう
エンティティフレームワークは癖ある
>>469 Win32API もカテゴライズされてるし、.NET の深い階層から探しきれずに MSDN で検索したりするし...
>>466 >>467 ありがとうございます
最初の内はあんまりじっくり調べず、
おまじないレベルとして先に読み進めたほうがいいかもしれませんね
インスタンス変数にthis付ける?
付ける
thisを意味なく多用してるソースは信用しないことにしてる
基本付けておいたほうがいいだろ 重要なもんなんだし目立つに越したことはない
付ける必要がないものをつけると 何か特別な意味があるのかと勘繰るから俺は通常は付けない
じゃあ
>>482 が敢えてthis付ける特別な場合ってどんなの?
引数と同じ名前の時は付けるw
おれルールだけど 既定クラスの変数やプロパティにはつける。 自クラスの変数やプロパティにはつけない。 関数はつけない。
IDEでいい感じに色つけてくれないのん
補完も効くし後で読んでも一目で分かるし 俄然付ける派だわ
定期的に出る話題だけど結論は 好きにしろ、仕事ならプロジェクトのルールに従えってだけ。 もうひとつ定番を追加すると 補完はCtrl-Spaceを使えっていうのがあるな。
489 :
370 :2014/02/19(水) 17:56:53.17
>>485 既定クラスって基底クラスの事だよね?
そうなら同意権
base使えよ
491 :
370 :2014/02/19(水) 18:25:50.89
baseの存在を忘れていた
thisは基本付けないけど コンストラクタ内のメンバ初期化の時には付けたくなる
baseはやたら使ったらダメだよ overrideしたはずなのに基底のをのを呼び出してしまってバグの元だ
こういうのがいるからthis多用は信用できない
そのクラスの更に派生クラスでオーバーライドされることを考慮すれば、 派生クラスの実装が呼び出される方がバグの元だろ baseなら何が呼ばれるか決まってるんだから確実
baseはVBではMyBaseだけど、VBにはさらに たとえoverrideされても自身のを呼び出すMyClassというのがある VBでMyClass/MyBaseを多用されてると不安になるよ
>>495 そのときはoverrideさせないようにするのがセオリーだと思うぞ
自身っていうか、そのコードが書かれているクラスで定義されたメンバだけどね。 オーバーライドされたメンバはむしろ「自身」だから。 俺はVBerでもあるけどMyClassは使ったことないな。
むしろVBで書いてあると不安になる
don't think feel
例えば string text = "[[文字列1][[文字列2]文字列3]][[文字列4][[文字列5]文字列6]]" の時に [[ 文字列1 ][[ 文字列2 ]文字列3]][[ 文字列4 ][[ 文字列5 ]文字列6]] のように分解したいのです。 要するに、多数の[]が入れ子になっていて、 [文字列] のように[]に挟まれている要素の前後で分解したいのです。 戻り値はstring[]で。 誰か暇な人書いてくれませんか?
502 :
370 :2014/02/19(水) 23:10:50.34
求めるのはヒントだけにしないと学習しないぞ
(?<=\[)[^\[\]]+(?=\])
>>503 正規表現ありがとうございます。
自分でも、文字列を先頭から順番に調べていき[]のペアを
見つけて分解する関数を作っている最中なのですが、
処理速度的には、一般にどちらのほうが速いでしょうか?
大量の文字列を処理したいので速度優先したいと思っています。
やってレポートしろよw どこまでおんぶに抱っこだよw
最初から速度を気にしてコーディングに時間かける奴は無能 簡単に実装できる方法があるならそれで作って遅かったら直せ
誰に命令してるつもりなんだろうねえw っていうかそんなの程度問題だから。 馬鹿じゃないの。
最初から速度を気にしてコーディングできる奴はコード書くのも早いし、バグも少ない。 無能とか言ってる奴が無能。
509 :
370 :2014/02/20(木) 07:47:56.59
ソートを自作するとして
>>506 が言いたいのはハッシュソートを実装しようとして時間がかかるより
最初はロジックも簡単なバブルソートで書いて
実用に耐えなかったらハッシュ何書き直せ
>>508 が言いたいのは最初からハッシュかける奴は書くのも早い
ハッシュ書くのに時間がかかる奴はバグも多いし無能
経験値の差だからどっちも正論だと思うが。
新人ならバブルソートで書かせるし
スケジュルールに余裕があれば
ハッシュソート書かせるし。
実務経験長い奴はいきなりハッシュソート書くだろうな。
それより誰かしたらばあたりの避難所用意しといてよ お願いね
つーかソートの自作なんてしないのが現代のプログラマ
学生だろ
自作するとしてって前提書いたじゃんかよ
ハッシュソートとバブルソートを比べてる時点でイミフ 学生でビンゴだな
学生なら実務経験とか書かないだろ
ハッシュは早いけどそれなりのコーディング量がいるし
バブルは遅いけど馬鹿でも書けるだろ
そういうつもりで例に上げたんだが
そんな事まで説明しないと
>>506 と
>>508 の論点のズレを指摘している事が伝わらないのか?
二次元配列のPictureBoxをControls.AddRangeでフォームに表示したいんだけど、 エラーになる。 どしたらいいの? ここでエラー。 Controls.AddRange(this.objPicBox) System.Windows.Forms.PictureBox[*,*]' から 'System.Windows.Forms.Control[]' に変換できません
一次元にしろ としか
>>517 やっぱそうか。
じゃあ一個ずつ定義しなおすことにする。
ありがと。
無能でいいよこのコミュ障共め マシン語で会話でもしてろ
>>506 おおよそ正しい
>>508 論外
同じ処理書かせても細かいこと気にしすぎて遅くなる可能性がある。そしてバグが少ないとは限らない
>>503 先ほど無事完成しました。
分解結果が正規表現版と同じになったので安心しました。教えて頂いた表現の
意味は、自力で理解しようとしたのですが、難しくて30%くらいしか理解できていません。
それにしても、こんな正規表現をすぐに書けるとは、凄いですね。
速度的には10倍くらいの違いがありましたが、正規表現だとそういうもんですか。
とにかくありがとうございました。
>同じ処理書かせても細かいこと気にしすぎて遅くなる可能性がある。 典型的なダメSEの発想だな。少しはPG信じろよ。
簡単に実装できる方法を取れるPGと 最初から速度を気にしてコーディングできるPG 果たしてどちらがコーディング速度上でバグ率が低いだろうか
実装の仕方もわからないうちから速度ばっかり気にしてる初心者だろ問題なのは
俺はすごい
>>525 普通に後者だな。前者は典型的なプログラムできない素人の発想。
有能な奴は基本的に簡潔で分かりやすいコードを優先するが、明らかに処理効率上問題になりそうなものだけは確実に避ける ボトルネックになりそうな箇所も大体予想しているので、コードの9割を占めるパフォーマンスに全く影響しない場所に手間はかけない
高速アルゴリズムなんてとっくに枯れて出尽くしてるのに、 実装の仕方が分らないとか簡単に実装できないとか発想がよく分らん。 というか今はネット検索してコピペでいける。
あーそんなのよりCBLASか何か使いましょう時間の無駄だからって言ったら怒られた記憶が蘇るー
そりゃそうだろ 客が金出してくれる限りはいくらでもコストかけないとね クソコードが増えれば増えるほど他人が保守できなくなって客を囲い込めるし
534 :
デフォルトの名無しさん :2014/02/20(木) 19:27:17.77
>>529 ないない。有能な奴は雑魚の尻拭いばかりだよ。
object[] objs = new object[] { "unko", "tinko", "mambo" }; string[] strs = objs as string[]; // null なんで?
string[] strs2 = new string[] { "unko", "tinko", "mambo" }; object[] objs2 = strs2 as object[]; // success なんで?
538 :
536 :2014/02/20(木) 20:37:48.18
とても大事なことなので2回言いました 回答のほうよろしくお願い致します
>>538 成りすまさないで下さい
つか同じことを2回じゃないし
540 :
デフォルトの名無しさん :2014/02/20(木) 20:47:02.44
as object[]を外せばわかるよ
541 :
デフォルトの名無しさん :2014/02/20(木) 20:48:59.88
>>540 ありがとうございます
なんとなくは分かるのですが、
仕様の観点から説明をお願いできませんでしょうか
543 :
デフォルトの名無しさん :2014/02/20(木) 20:53:42.67
>>541 C#の仕様なんて考えたことないな。知ってるのはstringのスーパーセットってことくらい。
っていうか便利に使えればいいじゃんっていう思想の言語だから
コンパイラに怒られなきゃそれでいいんだよ
Webの世界のスクリプト言語だともっと適当で曖昧なオブジェクト指向だから、
あまり深く考えないほうがこれからは幸せになれる。型なんて人為的なもの
>>541 object[]にできたらint突っ込む事も出来てしまう
おかしいでしょ
あ、今のなし!
継承元にはぶちこめる 派生先にはぶちこめない
役に立たない回答ばっかですね
object[] objs = new object[] { "unko", "tinko", "mambo" }; object[] objs2 = new object[] { "unko", "tinko", "manbo", 42 }; string[] strs = objs as string[]; // null string[] strs2 = objs2 as string[]; // null string[] strs3 = objs.Cast<string>().ToArray(); // success string[] strs4 = objs2.Cast<string>().ToArray(); // throws InvalidCastException
object[] objs = new string[] { "unko", "tinko", "mambo" };
Streamに書き込む時のバッファって4KBがよく使われてるけど、特別な理由とかある?(Stream.CopyToの実装とか) 単に省メモリ志向なだけ?
補助記憶装置の一般的なブロックサイズがそれくらいだからじゃないの
どう考えてもコシダメでしょ
腰駄目><;
つまんねーから帰って
既定の名前空間って、どういう時に使うのでしょうか? 例えばクラスライブラリを作って、規定の名前空間をどんな名前にしていても、 そのクラスライブラリを参照すろ別プロジェクトでは、その名前は 出て来ないようなのですが。
そのプロジェクトで新しいC#ファイル作ると自動的にファイル冒頭にnamespace ...が挿入される リソースとか設定ファイルとかのマネージクラスもその名前空間下になる
>>557 ありがとうございました。すっきりしました。
てすと
なんのですかやだー
C#入門者です。入門書を読んで勉強してます。 プロパティについてよくわからない点があるので質問させてください。 1. サンプルなどで public int A { get; set; } みたいなのをよく見かけますが、これは、プロパティを使わずに public int A; と書くのとどう違うのでしょうか?もし同じなら、なぜわざわざプロパティを使って書くのでしょうか? 2. setメソッドは戻り値を返せないようですが、セットに成功したかどうかを知らせたい場合、通常どうするものなのでしょうか? ・プロパティを使わずに普通のメソッドを使う? ・例外を発生させる? ・それ以外にもっといい方法がある? 3. とある入門書に、System.Drawing.PointFクラスのIsEmptyプロパティというのが載っていて、 > x座標、y座標がともに0である場合にtrueを返します。 > public bool IsEmpty { get; } --- (*) と説明されていました。 プロパティについての入門書の説明を読む限り、(*)のコードは、 private bool __isEmpty; public bool IsEmpty { get { return this.__isEmpty; } } と同様の動きをすると理解しています。 しかし、__isEmptyは内部的なもので、アクセスはできないと思うのですが、ライブラリはどうやって__isEmpty(に相当するもの)に値を設定するのでしょうか? (*)が、 public bool IsEmpty { return x==0 && y==0; } みたいな感じなら理解できるんですが。。。 以上、よろしくお願いいたしますです。
すみません、最後 書き間違えました。 public bool IsEmpty { get { return x==0 && y==0; } } です。
>>561 プロパティはそのクラスを書いているプログラマの視点では「値を設定するメソッド」と
「値を取得するメソッドのセット(and/or)に過ぎない。
必ずしもそのプロパティーに対応する、_isEmptyみたいなフィールド(バッキングフィールド)
がいつも存在するわけじゃない。
だったらなぜプロパティーなんか必要なんだと思うかもしれないが、それはコード書いてるうちに
そのうち分かるようになるから初心者はそこは深く考える必要ない。
プロパティなんて飾りです。偉い人にはそれが分らんのです。
>>561 >なぜわざわざプロパティを使って書くのでしょうか?
プロパティの使い道としては、無効な値が設定された時に対処したり、イベントを発生させたりいろりろある。
ttp://ideone.com/mgZmEQ 最初は
public int A;
と書いていたが、やっぱりイベンをを発生させたいので、プロパティに変更しようとなった場合、
ライブラリを利用している側の再コンパイルが必要になってしまう。
public int A { get; set; }
なら、get setの中身を後から変えても再コンパイルは不要。
publicで公開しているものはとりあえずプロパティにしておくのが良い。
プロパティは外からはフィールドに見えるのでsetは基本成功すべき どうしてもなら例外 失敗することが多かったり時間がかかるならメソッドにする
あと、 public bool IsEmpty { get; } はプログラムにそう書いてあるということではない。 外からみるとgetterのみあるよ、ということを便宜上そう表記するということだ 実際のプログラムではお前がしたに書いたのと同じようなプログラムが書いてある
setした直後にgetしたらsetした値と違う値か返ってくるような実装のプロパティはマジで死ね
>>568 そんなの別におかしくもなんともない。
例えば依存関係プロパティでは「値の強制」という用語で概念化されてる。
そういう時はドキュメントに書いてあるだろうし。 例えば範囲外の値を設定した場合の挙動について。 例外を出すか、それとも範囲内に自動でおさめるかは設計次第
>>569 それは
>>568 の現象を起こさせるためじゃなくて
あるプロパティが変更されたときにそれに連動して別のプロパティを調整させるために使うもの
572 :
561 :2014/02/22(土) 21:15:48.81
なるほど、理解できました。
プロパティであってもなくても呼び出し側からは同じ構文で利用できるため、どちらでも同じような気がしていました。
実際には、呼び出す際の構文上は同じでも、メソッドを介しているかどうかの違いがあるということですね。
余談ですが、{ get; set; }でプロパティを生成できるというような仕組みを作るくらいなら、いっそのこと、
publicなフィールドはデフォルトで自動的にプロパティが生成されるようになってればいいのに、という気もしますが。
フィールド呼び出しのオーバーヘッドが増えるから、そんなことはしないんでしょうかね。
あと、setした直後にgetしたら違う値が返るというのは、私も違和感を感じてしまう(エラーを返してほしいと思ってしまう)
のですが、C# 的には普通のことなんですね。C# 使いへの道はまだまだ長そうです・・・。
親切に教えていただいてありがとうございました。
特に
>>565 さん、サンプルまで書いていただき、とても感謝しています。
WPFで
>>569 が想像してる用途に近い概念は値の強制じゃなくて値の検証の方だな
強制は依存関係が複雑な場合に結果的に
>>568 が起こることもあるが、基本的にはあまり好ましくない動作
検証の方は失敗したらもちろんWPFが例外を投げる
>>573 基本的に好ましくないとかそんなわけないでしょ。
WPFで言うなら、例えばintのプロパティでセッターに渡された値を1-100にクリップして
保持するような動作が許されないと、VMがそのプロパティの設定可能な値の範囲を把握する
必要性が生じるが、そんな依存が好ましいわけがない。
WPFのアーキテクチャに関する話はWPFのスレでやってね
例えばあ、使用するフレームワークによってプログラミングパラダイムが変化したり 制約を受けたり、その他もろもろすることなんて別に珍しくないのね C++とかJavaScriptみたいな魔言語じゃない割と小奇麗なC#でもそれはあるのね だから視野を共有してない人間同士で喋っても仕方ないのね
>>575 すぐこういう仕切りたがり(それしかできないからな)の馬鹿が出てくる。
WPFを例に挙げてるからって別にWPFに固有の問題を話してるわけじゃない
全くだ 自分を棚に上げてえらそうにな
まあ
>>574 みたいなケースは実装上のトリックみたいなもんで、手で設定されることを想定したプロパティとは分けて考えるべきだな
GUIが絡むと、検証結果のエラーを複数まとめるとかいろんな要件をプロパティに押し付けるから汚い不自然な実装になりがち
/\___/\ / / ヽ ::: \ | (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ,,ノ(、_, )ヽ、,, | < ま~た始まった | ,;‐=‐ヽ .:::::| \_______ \ `ニニ´ .:::/ /`ー‐--‐‐―´´\
あれもう語らないんですか? 続けて続けて
VB6.0をパースしてCodeDOMに変換するライブラリありませんか?
イミフ
WindowsFormsのコントロールをそのままデータのみWPFに置き換えて実装自体をWPFのコントロールにするライブラリありませんか? たとえば System.Windows.Forms.FlowLayoutPanelのプロパティーの状態がControls = { System.Windows.Forms.WebBrowser,System.Windows.Forms.ListView } としたとき変換すると System.Windows.Controls.Gridのプロパティーの状態がChildren = { System.Windows.Controls.WebBrowser,System.Windows.Controls.ListView } となるようなものです
ライブラリ使わないとできないの?
C++と比較しながらC#を解説してる本ってありますかね
比較にならねえだろ
MSDNじゃ駄目なの?
似てるようで考え方が結構違うよな。 俺の経験だとC++脳は理解の邪魔になるから、C++の事は忘れた方がいいと思う。
>>591 COBORとかRPGとかマイナー言語の入ってる俺の立場って…
逆にC#>C++で覚える本は見たことないな
Cで->使ってる =>もラムダ式で使ってる 次に使うだろう記号ってなんだろう?~>>
$ #
演算子嫌い コードの美観を損なう プレーンテキストのように読める言語が最高だよ
そういや、日本語でコーディングができる言語があったな なんだっけ?
COBOL おすすめ
属性は動的に付加出来ないのですか?
>>592 使っている言語すら正しく書けない人は
アセンブラからやり直すべきかと
Debug.Printがあるのに どうして Console.Printは無いのでしょうか?
プリン体OFF
では、どうして、 Debug.Write の引数は、 Debug.PrintやConsole.WriteLineと同じではないのでしょうか?
Debug.WriteLineには二つ目の引数としてカテゴリを受け取るオーバロードがあるから、 プレースホルダを一つだけ指定した書式を使おうとすると、カテゴリを受け取る方が優先されてしまって正しく動作しない そこで確実に書式設定の方を呼び出すためにPrintを使って区別する
VB6のDebug.Printとの互換じゃないかな Trace.Printも無いよね
>>606 ,607
イミディエイトウインドウに改行なしで出力する方法はないのでしょうか?
書式指定して。
String.Format使えばいいんでないの?
>>609 ありがとうございました。
うまく行きました。
4.0から3.5にデグレしたいのですが4.0の新機能を使ってなければリビルドするだけで良いのですか?
Winフォームアプリケーションで テキストボックス内の値をラベルに表示させたいんですけど int a= int::Parse(textBox1->Text); と記述すると「1 個の引数を伴うオーバーロードされた関数はありません。」とでます。 どうすれば記述すればいいでしょうか... 他のテキストボックスの値も足せればint型じゃなくてもいいです
すいませんスレ間違えました...
すみません。教えてください。 System.IO.File.Copyでファイルを共有フォルダにコピーする場合 その共有フォルダにアクセスするユーザーはWindowsのログインユーザーなんでしょうか? それとも共有フォルダに接続するときに認証したユーザーなんでしょうか?
SMBの仕様の話で、認証方式次第 あなたの挙げた例はどちらもあり得る
>>615 ありがとうございます。どちらもありえるんですか。
てっきり共有フォルダの認証をしたユーザーだと思ってました。
すべてなぞは解けた
普通に考えて、そのプログラムを実行しているユーザじゃないのか?
varって長い名前のクラスをNewする時や、Usingで使うと見た目がスッキリしますが、 ドンドン使っても問題ないでしょうか?
問題ない
タブでインデントすると勝手にスペース数個分に変換されるのをやめたいです
その思考なら人間辞めた方がいい
インデントをタブにするか空白文字にするかは設定で変えられるけど
行と行の間の空行を削除すると、 インデントが崩れるのを防ぐことは出来ます?
ツール>オプション>テキストエディタ>C#>タブ>タブの保持
>>625 ・・・>C#
までは辿れるのですが、タブ、タブの保持が見つかりません;;
visual C# 2010 expressです
こんな設定自力で見つけられないようなタイプはプログラミング向いてないよ。 っていうか21世紀にもなってホワイトスペースじゃないタブなんか使う人いるんだ。
オプションダイアログの左下かどっかに高度な設定とかなんとかいうチェックボックスない?
C#のツリーを展開したとこに「タブ」がぶら下がってないのか? 2012は有るんだが。
>>627 Eclipseは初期設定がタブインデント
タブ幅でゴタゴタいう人はオープンソースの世界を知らない人
>>629 C#
└書式設定
全般
インデント
改行
行間
折り返し
IntelliSense
詳細
>>628 上級者設定にしてます!
>>630 嘘を言うなよ馬鹿。
Eclipse使ってるが、あっちも初期値はホワイトスペース。
すげーどーでもいい
ホワイトスペースってたしかタブも含んでたはずだが
コンストラクタの引数が多くなってしまう場合は構造体とかでまとめてもいいんですか?
もろちん
builderクラスを使え
頻繁の継承するクラスなもんで
引数が多いから構造体にまとめるというよりも、 ちゃんと設計して、引数の中で関連性のつよいもの同士で クラスにまとめるとかした方がいいな。
mutableでよければオブジェクト初期化子を使ったほうがスマートになるケースも多いな
例えば、構造体にしたとして、値の設定はやっぱりメンバー変数1つ1つに 値を入れていくんだろ? 結局引数一式を入れる構造体を作るだけ、それで中継するだけなことをするんだったら、 まだコンストラクタの引数が多い方が直接的でマシ。 それに、複数のコンストラクタで違う引数の組合せなんてことになったら、 それぞれ専用の構造体を作るのか? 中央に目的のクラス1つ、それに対して"値"を設定する、という考え方じゃなくて、 引数もクラスとして、クラス同士の関係というのがオブジェクト指向だからね。
>>643 ProcessStartInfoぐらい沢山あったらどうする
ProcessStartInfoのようにすればいいだけだろw
一つ疑ってるのがw そのクラス、本当は幾つものクラスで分かれているべきものを 1つにマージしちゃってるとかないよな?というところ。 それだと、それぞれの引数になるものを一緒くたにコンストラクタに渡さないといけないからな。 なので、本当はそのクラスの設計の見直しもしたらいい気がするが、 とりあえず質問に対しては、引数にもまとまりが有るはずだから、 その単位で"オブジェクト指向"したら?という回答。
mciでmidi再生中にFormに設置したスライダでボリュームを変えたいのですがうまくいきません TrackBarのEvent
mciでmidi再生中にFormに設置したスライダでボリュームを変えたいのですがうまくいきません TrackBarのEventHandlerに string cmd = "setaudio " + midiFileName + " volume to " + trackBar.Value; mciSendString(cmd, null, 0, IntPtr.Zero); のようにしてます
コンストラクタの引数無し、全部プロパティって手もあり 初期化子使えるしね
>>648 mciSendStringの返値でエラーが出てないかどんなエラーか確認する
ここで質問していいものか分からないですが 某参考書で三角形クラスの中で二等辺三角形用のコンストラクタが,ざっくり書き直すと以下のように定義されています class Triangle{ double width, height; //二等辺三角形用のコンストラクタ public Triangle(double x) { width = height = x; } //面積 public double Area(){ return width * height / 2; } } なぜこれが二等辺三角形用のコンストラクタになるのか分かりません width heightは面積のメソッドから見ても底辺と高さだと思うのですが 二等辺三角形だからといって底辺と高さが同じにはならないと思うのですが よろしくお願いします
× 二等辺三角形 = 底辺と高さが同じ ○ 底辺と高さが同じ = 二等辺三角形 だから問題ない
他にどんなメンバーがあるかわからないが考えられることは、 width, heightの両方を指定するコンストラクタも別にある。 生成後必要に応じてwidth, heightを設定しなおす前提になっている。
スタティックなクラスのスタティックなpublic変数やメソッドを マルチスレッドプログラミングでその変数に同時に 書き込んだり、同時にメソッドを実行しても問題ありませんか?
static関数は一般的にスレッドセーフだけど、 staticな変数を抱えてたらスレッドセーフにはならない
>>651 直角二等辺三角形専用のコンストラクタだから、とか?
/| / | h  ̄ ̄ w
プロパティの変更通知を実装する
http://msdn.microsoft.com/ja-jp/library/ms743695 (v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1
を勉強中なのですが、ここのC#のサンプルコードに適当にMain関数を付けてPersonクラスのPersonNameをsetで変更
すると、OnPropertyChanged()が呼ばれる仕組みになっているのは分かるのですが、一つ分からないことがあります。
それは、
public class Person : INotifyPropertyChanged
の定義で、: INotifyPropertyChanged の部分が無くても同じように動くのですが、この: INotifyPropertyChangedは
何のために必要なのでしょうか?
よろしくお願いします。
Form作ってテキストボックスとボタン貼って フィールドにPerson m_person = new Person();とか置いて Loadイベントで this.TextBox1.DataBindings.Add("Text", m_person, "PersonName"); ってやって、button1_Clickイベントで m_person.PersonName = DateTime.Now.ToString("HH:mm:ss"); とかやれば違いが分かるよ ライブラリ側はPersonなんてクラス知らないし そのクラスがPropertyChangedなんてイベント持ってるかどうかも知らない ライブラリ側はINotifyPropertyChangedは知ってるので どんなオブジェクトがバインドされているにせよ それがINotifyPropertyChangedを実装しているならそれを使って変更通知を受け取れる
662 :
651 :2014/02/28(金) 15:49:28.75
>>653 他のメンバ変数には三角形の種類を表すstring Styleがあります
そしてご指摘どおりwidth,height両方指定のコンストラクタもありますね
でもそれだとそもそも二等辺三角形用(と書いてある)コンストラクタの存在意義が分からなくなってしまって
>>657 確かに直角二等辺三角形を
>>658 の形で考えればそうですね
この参考書の例では三角形の種類を表すStyleに
直角三角形をあらわす"right" と二等辺三角形を現す"isosceles"があるのですが
>>651 の二等辺三角形用コンストラクタ内部でStyle = "isocceles"って代入してたので
直角二等辺三角形ではないと思い込んでいました
お答えくださった皆さんありがとうございました
お答えくださった皆さんありがとうございました
663 :
651 :2014/02/28(金) 15:50:56.38
消し忘れて同じ文を二行書いてしまいました もうしわけありません
大事なことなので
mciSendStringによる音声再生が時間のかかる処理のために、Formの描画が少し止まります そこで、BackgroundWorkerを用意し、別スレッドで mciSendString("play my_sound from " + position + " notify", null, 0, form1.Handle); を実行するようにしました すると、第4引数のform1.HandleのところでSystem.InvalidOperationExceptionがでてしまいます おそらく第4引数が、WorkerのスレッドからFormのスレッドにアクセスしているから? 解決策ありませんかね・・・
HandleをLoadイベント辺りでフィールドに確保しておいてそれを使えばいいだろ FormBorderStyle変更したりしたらHandle再作成されることがあるけど ところでmciの操作はopenしたスレッドからしか駄目だそうだぞ
>>661 詳しい解説大変ありがとうございました。アドバイスに従ってFormを作って
動作を確認しました。よく理解できました。
>>666 >ところでmciの操作はopenしたスレッドからしか駄目だそうだぞ
ナント・・・驚き
ありがとうございました
すみません、ちなみに >ところでmciの操作はopenしたスレッドからしか駄目だそうだぞ この根拠を知りたいので情報もとを教えてください!
byte[]と暗黙の相互変換を実装した自作の型Hogeがあるんですけど List<byte[]>を引数に持ってるメソッドをList<Hoge>で呼べるようにするためにはどうしたらいいでしょうか
どうしようもないね
>>661 ,667
に関連して追加で質問なのですが、
StreamWriterでMemoryStreamにデータが書き込まれたら、それをイベント
にしてハンドラ関数を呼び出して、その関数内でMemoryStreamを呼び出すような
動作をさせることは可能でしょうか?そういうイベントを検出する方法が
あるのかどうか調べてみたのですが、分かりませんでした。
>>672 MemoryStreamをラップしたクラスを作る
継承じゃなく?
xmlコメントってアセンブリに埋め込まれないのか? プログラムからヘルプ情報を参照したいんだがそういう用途には属性使えってこと?
>>676 ビルド時にXML出力できるんで、識別子からT:System.ObjectとかそんなIDを求めればプログラム的に読み込める
>>673 ,674,675
StreamWriterを継承して内部でMemoryStream持つ方法でどうにか出来ました。
ありがとうございました。
コメントはどれが見やすいでしょうか? //コメント // コメント(先頭に半角スペース) // コメント(先頭に全角スペース) // コメント(先頭にたくさんスペース)
君は自分が好きな食い物を他人に決めてもらうのか
使用人口なら上から2番目が多いんじゃないかな~と思う 3番目は微粒子レベルだろう
>>680 コメントなんか書くな
適切に関数化けしてdescription系の属性をつければそれでおしまい
無駄なコメントの量に比例してプログラムがスパゲティになるという事実はもう誰もが知るところだ
修正コメントとかいうクソ規約の悪口はやめろ
大抵のコメントは何も知らないバカが強要してくるんだよな そういう奴に限って立場強いから嫌になるね
コメントを書かない奴は仕様書と異なる動作をしても平然としてるのが多い ドキュメントの重要性を理解してないカスか ソースがすべてを語ってくれる(キリッ とか言って無駄な工数使うバカ
本物のバカはコメント書くやつな 修正箇所を数倍に増やすコスト大増量野郎 ほんまいい加減にして欲しいわ しかもあいつらバカだから仕様書かコードと同じことしか書かないんだよな コメントの意味全くなし
ゴミに匹敵するコメントをダラダラ書く暇があるならテストを書く これが正しいプログラマの在り方な
「正しい」とかヘドが出るわ 誇大妄想の類いにしか見えん
>>689 君はくだらないコメントを量産しすることに短い人生を費やせばいいんじゃないか?
俺はコードを書くよ
>>690 そうだ
「お前は」コードを書いてりゃいい
ソースコードはてめえの落書き帳じゃなくて客に売る商品なんだから梱包するのは当然
客「梱包材うざっ。なにこれ無駄過ぎる」
バカばっか
賢かったら日本でIT業界になんか入らない
LeftToRightに設定したFlowLayoutPanel1に画像とラベルを追加して、SetChildIndexで先頭に持って行きたいのですが、 FlowLayoutPanel1.Controls.Add(this.PictureBox[n]); FlowLayoutPanel1.Controls.Add(this.Label[n]); FlowLayoutPanel1.Controls.SetChildIndex(this.Label[n], 0); FlowLayoutPanel1.Controls.SetChildIndex(this.PictureBox[n], 0); とすると一番最後の FlowLayoutPanel1.Controls.SetChildIndex(this.PictureBox[n], 0); の部分で 「'子'はこの親の子コントロールではありません。」とのエラーがでます。 Labelの方のSetChildIndexではエラーは出ないのですが、どういうことなのでしょうか。
原因がエラーメッセージに書いてあるね
>>698 FlowLayoutPanel1.Controls.Add(this.PictureBox[n]); の時点で
PictureBox[n] はFlowLayoutPanelの子コントロールになっているのではない,、ということでしょうか?
イベントハンドラでForm(ウィンドウ)を別のFormに切り替えるにはどうすればいいですか? ボタンのクリックイベントでやろうとしてます。 新しくウィンドウを増やさず中身だけ変わる感じのやつです。
Visual C♯2012使ってます
目に見えないサイズの小さなタブを切り替えたらいいと思うよ
目に見えない小さなタブは絶対にクリックできないのでしょうか?
単純にVisibleでも使っとけ
Form = ウィンドウなんだから、 Form切り替えるというのはウィンドウ切り替えることになると思うよ なのでウィンドウの中身を切り替えるなんてのは無理だと思う 最初からウィンドウの中身を切り替えるつもりで作るしか パネル2枚の上に別々の中身構築して、 パネルのVisibleでどっちが見えるか制御するとかね
そういううざいUIは止めようよ。 一般的なモーダルダイアログかウィザード形式にしようよ。
Form.Controlsに新しく作ったFormをAddしてみ 普通に使えるから 意外と知られてないよね この方法の筋がいいかどうかは別だ お勧めは全くできない
ごめん、もう聞きませんから、一つだけ教えて下さい。 delphiのrecord型は、C#じゃ、どう書くの?
structかな Delphiはよう知りませんが
FormA_ボタン_Click() { Form b = new FormB(); b.Show(); this.Dispose();} FormAはFormBがDisposeされるまで残ってしまうんでしょうか?
>>711 Showは呼び出し元をロックしないからそんなことはない
残るってどういう意味で言ってるんだろ DisposeしてもGCされるまでは残ってると言ってみる
DisposeでGCの対象になれば良いのです
717 :
709 :2014/03/03(月) 06:26:55.33
>>710 あぁ、どうやらこれらしい。ありがとう。
意味も分からずDisposeしてる人間のために解説を紹介してくれよ
usingしとけば間違いないよ
>>721 Disposeはアンマネージリソースの解放で手動
GCはマネージリソースの解放で自動
スコープを抜けたりして、どこからも参照されていないゴミが対象になる
refでマークされた引数って、メソッド内で変更した瞬間に変更されますか? それともメソッドから帰るときに変更されますか? void Hoge( ref object o ) { ... o = hoyo; ... // メソッドから帰るまえに、例えば他スレッドがoに渡された変数を読む場合、その値はどっち? ... }
代入の位置とか最適化で移動されるから、どの段階とか特定不可能だと思うが
>>722 やっぱり
>>711 の場合FormAはFormBをDisposeしない限り残り続けるって事かい?
FormBは全く無関係。 FormAはDispose時点でハンドルとかを破棄する。 FormAとそのメンバが持ってるメモリは誰も参照しなくなったらGCがそのうち片付ける。
__makeref, __reftype, __refvalue, __arglistってなんですか?
C#の通常の手段で作成できないILの命令を作ってる 普通はつかわない
ファイル読む場合、 using (FileStream fs = new FileStream("File.txt",FileMode.Open )) { using (TextReader sr = new StreamReader(fs)) { } } と using (TextReader sr = new StreamReader("File.txt")) { } で、どっち使うかは好き好きですか?
FileStream使わないと共有みたいなオプション渡せないでしょ 後は好き好き
>>730 ありがとうございます。
もう一つ教えてください。Usingを二回使う前者の方法を使うとして、
ファイルを読みながら別のファイルに書き出す場合、書き出す処理でも
Usingが二回出てきて、合計4重のUsingになると思いますが、
そういうものでしょうか?
もう少しシンプルに書けないでしょうか?
極論だが、usingを使わない
ファイルの場合握りっぱなしになるのでそれはないな
735 :
デフォルトの名無しさん :2014/03/03(月) 21:21:11.44
using (var ofs = new FileStream(略)) using (var sr = new StreamReader(ofs)) using (var ifs = new FileStream(略)) using (var sw = new StreamWriter(ifs)) { } 理屈やifやwhileの{}を省略するのと同じだが、usingに限ってはこう書くのをMSが推奨している だからVSで整形してもインデントが深くならない
みなさんアドバイスありがとうございました。 大変参考になりました。 732さんの try/finally 方式と 735さんの{}を省略する方式を組み合わせて、やってみたいと思います。
737 :
デフォルトの名無しさん :2014/03/04(火) 00:16:49.16
Webbrowserで例えば、 <div class="xxx"> <a> ・・・ </a> </div> ・・・ <div class="yyy"> <a> ・・・ </a> </div> ・・・ <div class="zzz"> <a> ・・・ </a> </div> 上記のようなhtmlがあった場合の、 div class="yyy"の子要素だけ絞り込むは方法はありますでしょうか? div class="yyy"で絞り込んだHtmlElementとかって作れるんでしょうか?
普通にGetElementsByTagNameとかでdiv探してその中からclassName属性が一致するの探すだけじゃん?
739 :
sage :2014/03/04(火) 00:56:59.05
回答ありがとうございます。 HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("div"); foreach (HtmlElement el in links) { if (el.GetAttribute("className") == "yyy") { ここまで絞った状態でさらにa属性を絞りたい。 } } 上記って可能でしょうか?
というのも、テスト用のHTML書くのなんてめんどうなので・・・
var sr = new StreamReader(new FileStream(略)) ストリーム系はこういうふうに書けるように、 sr.Close()でベースのストリームも連鎖的に閉じるようになってるけど、 MSDNに記述がないんだよな
743 :
デフォルトの名無しさん :2014/03/04(火) 17:26:29.92
TextBoxをカスタマイズして、 横方向にしかできなかったTextAlignプロパティを 縦方向にも指定できるようにしました。 (ContentAlignmentのように。) テキストの表示はうまく出来るようになったのですが、 フォーカスを受け取って入力する状態になった時も 縦位置をCenterとかBottomの位置のままで入力できないものでしょうか? いまは常にTopの位置でしか入力できません。 (入力を完了してフォーカスを失うと、 意図したとおりの位置にテキストは表示されます。) どなたか詳しい方、よろしくお願いします。
>>743 TextBoxの編集機能を利用するのは無理でしょ。
そんな使われ方は想定されてないんだから。
AnchorをLeft+RightにしたTextBoxをPanelの中に置いてPanelをダミーの余白と
枠として利用することで同じことができるんじゃない?
それ以前にそんな糞UI使う前に糞だと分からないセンスの悪さはどうなの。
センスとか言い出すなよハゲが ふらっとスレだろうが
"www-hoge-fuga-foo.com/bar.php" ここから www hoge fuga .phpを全て削除したいのですが 正規表現では一発でできないのでしょうか。 Regrex("www|hoge|fuga|.php").replace(obj, "")だと、どれか一つしか削除されませんでした・・・
どこに正規表現が必要なのか全くわからねえ 質問は的確に過不足なくせよ
748 :
デフォルトの名無しさん :2014/03/04(火) 22:48:44.90
.NETでメソッド一発で複数の文字列を消すには正規表現以外に方法があるのでしょうか?
> Regrex("www|hoge|fuga|.php").replace(obj, "")だと、どれか一つしか削除されませんでした・・・ 識別子がいろいろおかしいけどそれは目をつぶるとして 全部消えるよ?
いつのスレだよ
webBrowser.DocumentTextでhtmlを取得すると、 空白が改行になるんですが対策ありますか? <span>ほげ hoge</span> ↓ <span>ほげ hoge</span>
この質問は、活躍中のチエリアンに回答をリクエストしています。 (ほかの方からの回答を制限するものではありません)
ふ~ん
Text.Encoding.GetEncoding(Webbrowser.Document.Encoding) はUTF?Shift-Jis?
app.exe.configってどこのを読むんでしょう? exeのあるフォルダ?カレントフォルダ?
>>756 そのサイトの文字コードじゃないの?
2ちゃんだったらshift-jisだし。
>>753 ソースに改行入ってるオチじゃないだろうな
メモ帳じゃLFは改行して見えないぞ
>>761 ソースはchromeの開発ツールでみても改行コードは入ってないみたいでした。
バイナリデータで見ないと改行コードって分からないんでしたっけ?
ちなみにfacebookのニュースフィードの投稿者名を取ってます。
バイナリで見ろ
IEでタイトルに特定の文字列を含むタブ(or ウィンドウ)を閉じるアプリを書いていて、書いている環境ではうまく動くのですが、別の環境では以下の様なエラーが発生します。 別の環境にも.NET Framerowk 4.5.1まで入れてあります > System.InvalidCastException: 型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'Shell32.Shell' にキャストできません。 > IID '{286E6F1B-7113-4355-9562-96B7E9D64C54}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、 > この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外: 0x80004002 (E_NOINTERFACE))。 ソース // using Shell32; // using SHDocVw; // 参照追加 Microsoft Shell Controls And Automation // 参照追加Microsoft Internet Control Shell shell = new Shell(); ShellWindows win = shell.Windows(); string[] str = { "test1", "test2" }; foreach (IWebBrowser2 web in win) { if (Path.GetFileName(web.FullName).ToUpper() == "IEXPLORE.EXE") { for (int i = 0; i < badUrl.Length; ++i) { if (web.LocationName.Contains(str[i])) { web.Quit(); } } } } どのようにしたらこのエラーは解決できますでしょうか。
IEのオートメーションは今だにCOMなのか?
>>766 多分それです。
回答にあったコードをどこに入れればいいのかイマイチわからないです…
STAThread使うならMainメソッド ただし別スレッドでShellをnewしてるならThread::SetApartmentStateで設定する この場合TaskとかBackgroundWorkerとかでのスレッドは使えない GetTypeFromProgID使うならShellをnewする代わりにCreateInstanceの返値を使う
あ、あとShellじゃなくてIShell使った方がいいかも
>>768 [STAThread]を指定しても同様のエラーが出ました。
> GetTypeFromProgID使うならShellをnewする代わりにCreateInstanceの返値を使う
これで実装してみたいのですがどうやったらいいのかがわかりません…
どうやったらもなにも全部書かれてるじゃん…
764です。 なんとか実装できました。ありがとうございました。
少し前ならリモートオブジェクト、今ならWCFってところだろうけど、 どれだけ使われてんのかね、これ。
COMに替わる技術の話だろ?
例えば "c:\windows\system32\notepad.exe" から "c:\windows\system32\notepad" を取り出す関数ありますか? ようするに拡張子(.exe以外もありうる)の部分を取り除きたいのです。
拡張子の長さを見てフルパスをSubstringすればいいだろ
右から"\."を検索してトリミングすればいいんじゃない? 拡張子を表示するしないの確認ってc#ってどこで見たらいいんだっけ?
そんなことしなくても拡張子はPathとかFileInfoで取れるよ
それ完全パスじゃないから違う
GetDirectoryNameとCombineすればおk
みなさんありがとうございました。 結局782さんと784さんの方式を使ってやりました。
>>782 パス操作に関しては昔のshlwapiの方が機能は充実している。昔の方がパス操作が重要視されていたからな。
>>778 そのものずばりのPathRemoveExtensionなんてのもあるし。
>>775 MemoryCache 知ってたけど安易に使えないな
まだ自前で実装するしかないのか…
VS2013でMetroUIのフレームワーク使いたいんだけど、どうすればいい?
そんなものは無い ストアアプリ専用
いやWPF用で2つ3つ出てるよ。
abstractとvirtualの違いが分からん。 どうして同じようなのもが有るの? 一つじゃ駄目なのか?
abstractはabstract classでしか使えない abstractメソッドでは実装を書けない 継承クラスで実装「しなくてはならない」 virtualはオーバーライドは任意だから全然使いどころが違う むしろabstract class と interfaceの使いどころのほうが迷うと思うが
>むしろabstract class と interfaceの使いどころのほうが迷うと思うが これ俺も分からん
abstractとvirtualとinterfaceの三つを上手に使い分けて それぞれの存在意義がわかるような簡単なサンプルプログラム 誰か作って下さい。100行以内くらいで。
俺の中ではinterfaceにするまでもないときにabstract classを使うな ここのメソッドは上書き前提だけど他のプロパティやメソッドは全部同じだよなって時とか
適当に考えた抽象クラスとインターフェースの違い
クラスの継承はis-aの関係(一種の○○)になくちゃいけないらしい
つまりabstract classは強制的に継承の関係にできる
実装は違っても基底クラスと何らかの関係が欲しい時に使えそう
(Streamとか)
逆にinterfaceは全く関係ない(用途が全く違う)クラスでも実装できるので
abstract class より汎用的にしたい時に使えるんじゃないかな
(ICloneableとかIDisposableとか)
>>790 ChromeWindowでggr
newとoverrideの違いがわからん オブジェクト指向的には「隠す」と「書き換える」であってると思うんだが機能的な違いが
>abstract class と interfaceの使いどころ abstract classで済むならできるだけabstract class使え、interface使うな C#のinterfaceは一度書いたらもう二度と変更できない(変更してもいいけど それ継承してる世界中の子クラスを修正しなければならない)んだから 実際に使う機会はないでしょ(後で悲惨な目にあいたければ使ってもいい)。 せいぜいIClonableみたいなマーカーインターフェイスに使う程度
interfaceのことわかってなくてワロタ
>>803 こういうときはインターフェース必要って書いてあるように読めた
どこに「実際に使う機会はない」ってあるんだろ
勉強不足な俺に教えてくれ
ここふらっと(初心者用)だぞ。それ踏まえて発言してくれ。 使いどころに悩むようなところは100%抽象クラスを使うべきケースであって逆はない。 interfaceを使うべきケースは抽象クラスが使えない場合だけだから、初心者で悩まなくていい そういう例で分かりやすいのとしてマーカーインターフェイスを挙げておいた
マーカーインターフェイス使うくらいなら属性だな
もうちょっと見守ってからどっちについたら面白いか判断します
まぁ、初心者ならinterface定義することはまずないわな すでにあるやつを実装するだけ
is-a has-a論は基礎やるときは重要だけど、 実際は多重継承可能なabstract class が interfaceという認識で十分だな。 interfaceという用語は通信や分散オブジェクトやそっち方面から輸入なので、 C#やjavaでは本来の概念と違ってきている。 まあ初心者ということならis-a has-aを押すかな
>>803 ちょっとこの説明は変だねw
例えばインターフェイスより抽象クラスを推す理由の1つに、インターフェイスに
メンバーを追加すると既存のコードを壊すからとあるけど、それは抽象クラスに
抽象メソッドを追加した場合だって同じことで何を言ってるのか意味が分からない。
っていうかどっちにするか迷うようなケースでインターフェイスより抽象クラスを推すって
OOP的にはかなり異端というか非常識な意見じゃないか?
interfaceよりclass使えとは書いてあるが abstract classを使えとは書いてないような
> コントラクトを実装から分離するには、インターフェイスではなく、 > 抽象クラス (Visual Basic の場合は MustInherit クラス) を使用してください。 これでしょ 抽象じゃないメンバを追加できるのはやっぱり強い 教条的OOP至上主義を取ったJavaの反省からのガイドラインだよ
2005年頃のドキュメントみたいだから、 Javaで何でもインターフェイスにしろ的な風潮が蔓延してて それに対する反論が出始めてた頃じゃないかな。 Java5でアノテーションが追加された頃でもある。
>>812 インターフェイスと機能がバッティングしてるのは抽象クラスだから、
選択に迷うとしたらその2つの間で迷う以外にありえない。
通常クラスの継承のケースも含んでいいじゃない?
abstractじゃないけど全メソッドでNotSupportedExceptionを投げる型とかもあるし、abstractかどうかにこだわってもしょうがない
>>801 interfaceだけIを名前の先頭に付けて特別扱いすることからもわかるように、MS自身は昔からinterface大好きだよ
VSのソースなんか見ると中で気持ち悪いくらい使ってる
単体テストで差し替えるためにクラス間の依存を片っ端からinterfaceにするのはわりとメジャーなやり方
interfaceが変更された際の互換性の問題は、互いに独立性の高いモジュール間の境界でinterfaceを使ったときの話で、
内部で使う分には修正漏れを防ぐのに役立つから逆にメリットでもある
Effective C#だと抽象クラスよりインターフェイス使えって書いてるね 親固定すると汎用性なくなるから
interfaceに実装(共通メソッド)を持たせたい場合に、abstractを使うでいいんじゃ・・ ただ、拡張メソッドもあるし、interfaceだけで済ませることもできるかもね
インターフェイスより抽象クラスを推奨ってのはあくまで不特定多数向けのクラスライブラリ向けのガイドライン そういうクラスライブラリのパブリック型はまさに「互いに独立性の高いモジュールの境界」に該当するわけだ
拡張メソッド導入前のガイドラインをどこまで信用していいものか
VSの「インターフェイスの抽出」機能なんて、 なんでもインターフェイス使って無理矢理疎結合にするような開発スタイルでない限りはまず使う機会無いよね
リファクタリングで結構使う
using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace ConsoleApplication1{ class Program2{ public class Person{ public string name;public Person(string name){this.name = name;}} public class Department{ public string name;public List<Person> persons = new List<Person>(); public Department(string name){this.name = name; }} public class Company{public List<Department> departments = new List<Department>();} static void Main(string[] args){ var company = new Company();var dept1 = new Department( "設計"); var p11 = new Person("鈴木");dept1.persons.Add(p11); var p12 = new Person("本田");dept1.persons.Add(p12); company.departments.Add(dept1); var dept2 = new Department("販売"); var p21 = new Person("豊田");dept2.persons.Add(p21); var p22 = new Person("川崎");dept2.persons.Add(p22); company.departments.Add(dept2); foreach (var dept in company.departments){Console.WriteLine("dept:{0}",dept.name); foreach (var p in dept.persons){Console.WriteLine(" person:{0}", p.name);}} //string 設計の本田さんの課 = company.departments(???).name; Console.WriteLine("Press key");Console.ReadKey(); }}} この時、設計の本田さんの所属している課の名前である"設計"を取り出すLINQを教えてください。 ただし、同じ名前の人はいないと仮定します。あと、コードで何かおかしなところがあれば指摘して下さい。
(from dep in company.departments from person in dep.persons where person.Name == "本田" select dep.Name).First()
828 :
デフォルトの名無しさん :2014/03/11(火) 02:32:16.98
多重継承できないんだから 複数使う可能性ありそうなのを インターフェースにするでいいでしょ
インターフェースはアセンブリをまたぐ時ぐらい
むしろ内部ではinterface使いまくっても問題ないけどアセンブリをまたぐ時は慎重になるべき 上の話を読め
>>830 それは本末転倒。
アセンブリでpublicにするinterfaceは変更に慎重になるべきで、
メンバーを増やしたいならinterfaceを継承などして新しいinterfaceを準備する。
>メンバーを増やしたいならinterfaceを継承などして新しいinterfaceを準備する。 IHTMLDocumentはいまいくつまで数字進んでたっけ…
>>833 COMのインターフェースはちょっとでも変更するとバイナリレベルで互換性が壊れるからね。
しょうがないね。
構造体を引数にとる拡張メソッド public static void Hoge( this SomeStruct s1, ref SomeStruct s2 ) { ... } s1.Hoge( ref s2 ); これももやっぱりs1の値のコピーは発生しますよね?
うん
enumについての質問 [Flags] enum Xyz { X1 = 1, X2 = 2, Y = 4, X = X1 | X2, } class Program { static void Main() { Xyz en = Xyz.X1; switch (en) { case Xyz.X: Console.WriteLine("X"); break; case Xyz.Y: Console.WriteLine("Y"); break; case Xyz.X1: case Xyz.X2: Console.WriteLine(en); break; } } } これを実行すると「X1」が表示されるんだけど、「Xyz.X」の分岐の方に行ってくれるような書き方はないものかなと 要素数が多くなると複数の要素をまとめて書きたくなる
XY = X1 | Yがあったときにどこに飛ぶのよ と考えるとswitchじゃ無理
>>827 ありがとうございます。
うまく行きました。
>>837 |(論理加算)の意味をわかってなさそうだから、調べてみれ
>>834 COMに限らず、拡張したインターフェースが同じ名前だったら拡張した部分を安心してアクセスすることが
できないわけだし、それを動的にチェックしなければならないならばインターフェースの意味がない。
>>841 普通はバージョン固定するからインターフェイスの方だけ更新されて実装側だけ古いままというのは起こらないし、
固定しなくてもクラスロード時にコケる
ただいま
>>837 Xyz en = Xyz.X1 | Xyz.X2;
if((en & Xyz.X1) != 0){ ... }
っていうことじゃないの
>>844 en.HasFlag(Xyz.X1)の方がいいんじゃね?
なんでSystem.Runtime.InteropServices.ComTypesあたりのComインターフェイス定義って PreserveSigにしといてくれないの? 例外出すとかまじ使いづらい
HasFlagはクソ遅いが、
>>844 みたいな半分間違ってるコードを書いてしまうくらいならその方がマシだね
複合フラグの場合におかしくなるから、!=0じゃなくて常に==X1を使うようにするといいぞ
>>847 > 複合フラグの場合におかしくなるから、!=0じゃなくて常に==X1を使うようにするといいぞ
頓珍漢アドバイス乙
どれか立ってりゃいいなら != 0 だし、全部立つのを見たいなら == X1 だろ
どれか立ってりゃいいなら if ((en & Xyz.X) != 0) でしょ 紛らわしいサンプルを出さないでくれよ
トンチキが湧いててワロタ
元コードの目的が不明 もしフラグ的に使うならif(hasFlag()){}だし 完全一致させたいならswitch使えばいい ごちゃまぜは良くないってことだ
ちょっと横からすみません ( A | B ) ^ B って A & ~B と同じですよね? ・どちらをよく使いますか? ・計算量とかは違ったりするんでしょうか?
二式は等しいね 実行してみたらC#の場合は 前者の方が速いみたい なんでかまでは見てない コード書いてアセンブラ見てみてください
enum Xyz { ... X = X1 | X2, } 複合フラグの場合か・・・ 普通こんなことしないと思ってた するの?
たまに ReadWriteとかでよくあるパターン
>>854 ごめんなさい、計測失敗してました。
後者の方がわずかに速そうです。
ちなみに計算量の大きい順に並べると ^ > & ≒ | > ~ だね
x86CPUでってこと?
>>858 ^ ≒ & ≒ | > ~
もしかしたらこうかも。
>>853 最適化かかって同じコードになると思うが
逆アセンブルみたら微妙に違う 見方が悪いんかなぁ… vsでデバッグ実行止めて逆アセンブルを表示って jitコンパイラから出力されるコードと異なる?
Releaseでやってる?
リリースでやっても違いました~
ただリリースビルドで実行した場合は速度がほぼ一緒になりました…
回路的にはNANDのほうが速そうだけどな
x86にxor/and/or/not全部あるんだからそこまでは敢えて最適化するまでもないんじゃないか そっから先はともかくとして VC++でちょっと試したけどそっちでもnot+andとor+xorでそのままやってるようだし
どうやらリリースビルドしても 逆アセンブルで表示されるのは デバッグビルドのものと一緒のやうです しかし実行時は、 デバッグビルド→差がある リリースビルド→差がない となるので、最適化かかって同じになってさうです
ILレベルだと確かに違ってるけど、JITコンパイルの結果まで比較する技術がない。
>>862 ILSpyで逆アセするのが簡単だよ試してみたら確かにReleaseでも違う。
>>869 が言うようにJIT時に再度最適化されて同じになってんのかなぁ
マウスクリッカー的なのを作ってるんだけど、 マウスをクリックさせる関数ってなんぞや
マウスクリック時に呼び出されるメソッドを 普通に呼び出せばいいんじゃないの
OnClick
グローバルに使いたいなら SendInput とか
VS2013のC#のエディタで、バックスラッシュが円記号で表示されるのですが、 それをバックスラッシュで表示させることは可能でしょうか?
>>875 フォント変えてみれば?
Consolas使ってるけどバックスラッシュだよ
韓国のウィンドウズはウォン記号なんだぜw
どこかの黒くて赤文字のサイトに影響されたんですかね 分かるような気がします
円記号は円記号だよw
OSとVSを英語版にすればすべて解決。
>>875 msdn.microsoft.com/ja-jp/library/ms165337.aspx
フォントをArialとかに変更
俺もエディタ画面までConsolasにしてしまってる 何か見やすいんだよね
これだと思うフォントでもしばらく使うとなんかダメだなってなって変えちゃう
業務でやるなら変なトラブル起こしたくないからデフォルト
ここIT奴隷さんが入り浸ってるね 仕事の質問をここでしないでよ
フォントサイズはあるがフォントは変えたことないな
仕事の質問をこんなところでしてたらはずかしいよぉ
いろいろ変えてみたけどコードエディタは結局MSゴシックのまんまだ
初心者スレってこんなくだらないレスで盛り上がってるの?
マックタイプ入れて、RICTY使ってるな
あっちのC#スレに来ないでくださいよ下級者は
ID出るようになってよかった
たかが ID が出るようになっただけで驚くほど落ち着いたよな。w
透明あぼ~んよりも あぼ~ん[あぼ~ん] 投稿日:あぼ~ん と表示させた方が 「ざまあ」って感じが出ていいね
あっちに来ないでくださいよ
やっぱりC#の初心者はたちが悪いね
896 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん 897 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん いやあ胸がすく思いがするw
図星つかれて発狂しないでよC#初期プログラマさん 初期のプログラマに必要な経験は自分で調べて解決する修行だよ それをしないでいつまでも質問してたらヘボプログラマのままじゃん
C#プログラマの土人はこのスレに集まるんだよね 馬鹿が隔離されてていいわー
C#からDirect2Dを使うには、P/Invokeするしかないのでしょうか?
んな馬鹿な「C#からDirect2Dを使うには」で検索検索
ブッ、またググレカスな質問をみつけちゃったよ
それに真面目に答えてる
>>903 も低能だよ
調べてれば見つけられる質問にまた答えちゃった お前のゴミ知識なんか求めてないよ
2DでゲームならUnityでいいんじゃね
Direct2Dはゲームでは使われんよ
WPFがDirect2Dのラッパーだよ というよりWPFの低レベル層を分離して文書化したのがDirect2D
できそこないグラマーを隔離するスレっとして位置づけだね
DirectDrawとかもう無いんだっけ スマソ
C#は3Dプログラミングも容易 でもここの人たちではできない
全角文字には突っ込まないが、3D=すごいって発想がオッサンを語るに落ちてるなw
http通信にてresponceのステータスコード確認したいけどHttpStatusCodeに入っていない値がありますよね。 429とか・・・これ戻ってきたらどうなるんでしょう? 他の意味が近いのにまとめられるんですか。
>>915 そんなくだらない質問してたらC#プログラマがゴミみたいに思われるよ
HttpStatusCodeに入っていない値429とかを送ってみたいのですがどうやればいいですか?
ソケット
たって一言で解決か? だったら質問しなくていいじゃん、馬鹿すぎる
ソケットですね コードを接地してみます
たった一言のレスを信用してしまったよ 馬鹿が馬鹿を産む構図だね
送るのは簡易http鯖つくりゃいんだから簡単だろ 429があるのかとか未対応のがどうなるのかは知らね
こういうのは回答って言うより誰に話してるんだか分からないくらいの独り言レベルレス 初心者C#スレの人はやっぱり頭のどこかに問題があるんじゃないですかねぇ
IDのおかげで荒らしにも一貫したキャラが付くようになったのか、強制IDも意に介さないキチガイだけが選別されたのか
ちょっとイラっと来ただけで憤慨してしまうのはゴミプログラマだからしょうがない 基礎ができていないとこういう糞質問があふれてそれがまた糞質問を集めるという図式
ドアを蹴破るカトラーのことか? すぐキレる天才プログラマってほんとかっこいい。
つまりお前はすぐ切れる無能C#プログラマーです 余計なこと言いたいだけなら出て行ってください
Visual C#ってもうないよね
そういやほかの質問サイトでもVC#っていう表現は聞かなくなったなぁ
このVisualが入るようになったのって 荒らしから逃げ出すためにIDの出るソフトウェア板に移民しようとして Visual C#のスレを立てたら なぜかこっちのスレにVisualがつくようになったっていう意味不明な経緯なんだよな
933 :
デフォルトの名無しさん :2014/03/21(金) 23:00:25.68 ID:0KwiiL7N
ASPNET MVC V4です。 @model xxxx.Models.RegisterModel @using (Html.BeginForm()) { <fieldset> @Html.LabelFor(m => m.UserName) // ---(1) @Html.TextBoxFor(m => m.UserName) (1)のLabelに初期値を表示したいのですが、どうしたらよいでしょうか?
時代の進歩は凄いな 宇宙語に見える
labelの初期値って意味が分からない Model.UserNameかフォーカスの話か?
>>935 質問間違ってました。すみません。
TextBoxの初期値です。
TextBoxに「デフォルトの名無しさん」をあらかじめ
表示しておくにはどうしたらよいでしょうか?
938 :
デフォルトの名無しさん :2014/03/22(土) 00:43:06.60 ID:7B0W6FHS
>>937 「Html.TextBoxFor placeholder」
とかで検索するとわかるけど
HTML5のプレースホルダ使うのは面倒だから
単純にプロパティにセットしておけば
本日のNGID ID:+2B6OEdX
匿名型使うだけだからコーディングとしてはさほど面倒でもない 文法や内部実装を理解できるかどうかはともかく
本日のNGID ID:hD5+ryBY
在日君のお目覚めかよ
ゴミニートがプログラミングしていいC#じゃねえだよねポンコツ
ハイハイNGNG
C#やるってことはMSの信仰者になるって意味だから この程度でつまづいていたら相手にされないぞ?
俺は躓いてなどいない。世間が一歩前に進んだだけだ
だからそれ自分が退化してるんだって 世間の成長についていけないITエンジニアは退職の運命
まあ誰だって定年退職するしね
今の若い世代のジャップはピカにやられたから定年までもたないよ
嫌儲乙
スレッドプールって何万件でもキューにつっこむことができますか? 最大値とかありますか?
万ぐらいならすぐ試せるだろー
そういう使い方するならTaskSchedulerを併用した方がいいかもな 突っ込めてもスレッドプールが埋まったら他のタスクに支障はでるよ
キューがいっぱいになったら突っ込めるまで待機してくれると いいのですが
どこまで自動でやってもらうつもり? 自分で待機させろよ
馬鹿が質問したらほら荒れるだろ 馬鹿質問者は質問禁止にしろ
>>958 LimitedConcurrencyLevelTaskSchedulerで並列度10くらいにして投げとけばいいよ。
>>961 すみません。.Netのバージョンは3.5限定でした。
(´・ω・`)しらんがな
ああ、知らんな
自己解決しました。
今まで自己解決した、だけ書くのは全部成りすましだと思ってたけど違うのねw
WebBrowserでUnityのゲーム起動、右クリック→Go Fullscreenをした後 ESCキーで元のサイズに戻せなくなるんですが、ESCキーが効くようにするにはどうしたらいいでしょうか?
コールスタックにアクセスしたいのだけどその手のクラスはないのかな スタックからポップされるのを条件になにか処理をしたい C++みたいにスタックから取り除かれたらデストラクタ呼び出しとかね
馬鹿なこといってないで死になさい
>>968 C++からCOMでCLRをホスティングする
デバッガを作るときのAPIが使える
C#のWebBrowserでプロキシとクッキーを使用してページにアクセスしたいんですが、 Navigateメソッドは使わずに、自前のメソッドを用意してwebBrowserにソースを渡すようにしたいんですがうまくいきません 真っ白になったりページが移動しなかったりします リンククリックやフォームボタンをクリックした場合に起こるページ移動はどこでキャッチすればいいんでしょうか?教えてください
試行錯誤しろ
onbeforenavigate
さすがに実用的ではないだろ C++みたいな自動disposeがやりたいだけならコンパイル後にILを書き換えるのが筋
ドラッグアンドドロップは基本的に気合で全部自力実装
思えばUIライブラリみたいなのは全然見かけないな NuGetを見てても思うが、クライアントサイドのプログラムを書いてる奴は基本的にサードライブラリを使わんのだろうな 文化圏が違うのか、単に要らないのか知らんが
日本みたいにくだらないUIをいつまでも後生大事に使わないからな ライブラリなんか作ってもすぐ時代遅れになるから無駄なんだよ
UIって考えなきゃいけないことが多いから作れる奴がいない
982 :
976 :2014/04/04(金) 01:02:12.22 ID:nNQZodc0
>>977 今更MDIで作るのも何だけど、
配置を自由に動かしたいし、自動で調節して欲しいって要望があるんですよね・・・。
色々と頑張ってみます。
ほ
MDI?
>>976 結果は32だったわ
目がチカチカしてきた
あ
987 :
デフォルトの名無しさん :2014/04/04(金) 13:49:43.68 ID:ZIYLiBEI
う
め
地獄のはじまりである。 MSサポート「ソース見ろ、カス。」
.NETのソースは数年前から公式に公開されてるんだけど
公開されてるっていっても、zip にかためてあるものをダウンロードできる、とかじゃないしね
>>991 嘘乙
シェアードソースCLIが最初に出てからもう12年過ぎてます
数年じゃありません
逆にSSCLIが何年更新されてないと思ってるんだ
君、更新されたかどうかの話をしてたの? 公開されたかどうかの話だと思ってた 書いてある通りに解釈できない日本語って難しいね
>>995 2.0のサブセットが公開されてるだけのSSCLIが正式公開にあたるとは思わないけど、
仮にそうだとしても3.0は非公開なんだから
>>991 の3.5以降の記述と矛盾しないだろ
思わないなら思わないでいいよ
なんで弁解を始めるんだ?
>>996
人を嘘つき呼ばわりしといて逃げて終わりとか楽な生き方だね
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。