WPFは消えそうな勢いだけど
SilverlightはMetroになって生き残るだよな
WindowsがなくなるまでWinForms使ってると思いますよ
>>5 まあ、.NET 4.5 と WinRT+.NET Coreの2系統あるけどもね、Win8。
8 :
デフォルトの名無しさん:2011/09/23(金) 22:34:18.36
す 胸 乙 ス ガ ガ
ご さ レ シ シ
い が れ 立 ャ ャ
イ る て | |
カ 大 度 イ ン ン
娘 に カ
だ き 娘
よ ,.-―― 、 だ
く / ,.- ┴- 、 .よ
/.| /:´ : : : : : : : :ヽ
な ../ :! i{: : : :/\;/ V }: :ゝ
〈__V l:l:V-‐ ´ ‐ ,'l:/
る . ヽ|: l: l、 ヮ _ノ:l
. _/:/`,}:`ス/ ̄ ̄ ̄ ̄/.
/: : :(__::::つ/ FMV /
... ̄ ̄ ̄\/____/ ̄ ̄
マンガ脳クンって幼稚だな、まで読んだ。
WPF消えそうってどういうこと?
>>10 WinRT が WPF とは別に作られたからそういう話題になってるのかな。
WinRT はメトロアプリ専用、デスクトップアプリは今まで通り。
メトロ版 IE ではブラウザープラグイン撤廃。
ただし、WinRT は Silverlight そっくり。
という状況。
WPF → C#+XAML
SL → C#+XAML
WinRT → C#+XAML
スキル的には何の問題も無い
コントロールパネルの「自動再生」をプログラムから変更したいのですが
どの様にすればいいのでしょうか?
Aアイテムが鮭茶漬けだらけです
ごめん誤爆しちゃた
関数ポインタ(≒デリゲートのハッシュテーブル)を使いたがるC上がりが同僚にいるんだけど、
それじゃ可読性損ねる上にVSの支援も効かなくなるからSwitchで分岐してメソッドを呼ぶように
しろと言っても「ソースが長くなる」と納得してくれない
ありがちな光景だよね
お前も初心者スレ行った方が良さそうだぜ
VSの支援が効かなくなるって何?
たぶんDictionary<int, Delegate>を言ってるんじゃないかと思われる
delegate宣言ってどこにかくの?
delegate使うクラス内?
23 :
デフォルトの名無しさん:2011/10/02(日) 19:48:50.00
わざわざ関数ポインタって断ってるから少なくともC#じゃないし、.NETであるかも怪しい
下手なこと言うより、俺が読めないからやるなって言った方が筋が通るかもw
そこは関数テーブルというべきなのは置いて、Dictionary使いたがり厨はよく見る
26 :
デフォルトの名無しさん:2011/10/02(日) 20:52:27.06
Visitor使えば
多分同僚が発狂するだろうけど
>>22 名前空間の直下
型なのでクラスなどと同格
マルチスレッドプログラム以外でDelegateってなにに使うの?
ボタンのクリックイベントのイベントハンドラを作ったことがあるならデリゲートを使っている
ほかにもLINQとか
リフレクションが必要な要件だと、Type別に式木組んでデリゲートにしてディクショナリーに入れといたりする
dynamic使えよ
>>30とやってることは同じ
(dynamicでシリアライザーが作れるとは)知らなかった
知らんがな
シリアライザならフィールドをサポートしないなら別に式木組まなくてもCreateDelegateでできるし
>>33 パフォーマンス上動的コンパイルが必要な要件を想定してるのに、単純な例を挙げて否定されても…
なんでMS言語ってメソッド名が大文字始まりなの?
気持ち悪くね?
小文字にしてくれるだけで気持ちよく書けるわ
俺は普段からアッパーキャメルで書いてるから全然問題ない。
Javaも使ってるし全小文字アンダースコア区切りなpythonも使ってるけど
むしろ違ったほうが切り替えができていい
小文字のほうが不自然。
常に動詞で始まるならキャメルでも良いが、
JavaはDouble.doubleValue()とかtoString()
とか破綻して見苦しい。
Pascalの方がまっとう
はいはいケースとかどうでもいいから初心者スレでやってね
Intはインターフェース
インターフェイスならINtだろう
>>35 setHogeとgetHogeでプロパティ代わりとか、センスのない田舎言語よりマシだろ
c# は後発のパクリだから比較されてもなあ
パクラレの方は身売りされ、何も決めれず停滞して見るも無残な有様だなぁ
オラクルさんっパねえっす!
スレが進みはじめた
パクラレの方に今更usingが入ったね
asyncが入るのは10年後くらいかな
みっともない書込みはやめなよw
拡張tryなんかよりJodaが欲しかった
DynamicObject でメンバはTryGetMember使って適当に返せるのに
メソッドは適当にでっち上げてかえせないの?
デリゲート返してごまかす
ちゃんとやるならDynamicMetaObjectを実装する
53 :
52:2011/10/03(月) 19:38:51.00
いやTryInvokeMemberがあるのか
簡単にやるならそれで
object とか string とか小文字始まりのキーワードは必要なの?
無いとタイプが面倒だし見た目が格好悪い
EnumのUnderlyingTypeを指定するのに必要。
enum T : Int32
みたいには書けないからね。
59 以外だと好みになるのかな?
うせるから 55 の意見を聞かせてくれ
書籍やwebをみると小文字でエイリアスですとしか読み取れない
型が小文字だったり大文字だったりして統一されてないように見える
些細な事だとは思うんだが。
俺はどっちでもいいや
スタイルの問題だが、FCLの型守るならInt32とか書けばいい。
C++/CLIと混ざるとlongの型で注意がいるってくらいでね。
コンパイラがおもいっきり特別扱いするので実際はSystem.Int32もキーワードみたいなもん
>>60 微妙な違いは言語仕様の「単純型(Simple types)」のとこ読め
> 型が小文字だったり大文字だったりして統一されてないように見える
小文字の型はC系言語の予約語
大文字の型は.NET Frameworkの命名規則
統一はされてる
デリゲート型のクラスメンバって決まった接尾辞とかあります?
ない
というか普通はイベント使うから
引数でデリゲートを受け取ることはあってもプロパティやフィールドでデリゲートを公開することはまずない
delegate void FooDelegate();
delegate void BarCallback();
↑これは止めろとMSが言ってた気がする
いや、〜Delegateは止めて〜EventHandlerか〜Callbackにしろってガイドラインだぞ
といいつつBCLに〜Callbackなんか見たことないけどあるんかな。
WaitCallbackとかWaitOrTimerCallbackとかあるじゃん
アプリが動いている間は
Alt+TabとかCtrl+EscとかWindowsキーとかの
Windowsの特殊キー操作を完全に無効にして、
タスクバーもウィンドウで隠して触れないようにして、
アプリを終了するまではアプリの操作以外できないようにする
そんなアプリって作れるもんですかね?
>>72 マウスとキーボード入力をフックすればできるんじゃね?
戻り値があるデリゲートの名前はどうしたらいいですか?
XMLの簡易エディタ作ろうと思ってます
カーソルのあるタグをハイライトしたいのですが、
文字位置から直近のXElement等を取得するには
どうすればよいでしょうか?
正攻法なさそうだな
テキスト系エディタの自作は死亡フラグ
C#(というか.NET)製テキストエディタって需要あるの?
今君の目の前にあるVS2010はc#製だけど
なるほど
死亡フラグ、確かに。
vs pro 買わなくても無料のやつでだいたいできるの?
82 :
デフォルトの名無しさん:2011/10/07(金) 13:22:00.94
>>81 VC++の場合ちょっと制限付くけどC#なら問題ないな
VC++はIDEの機能はほとんど制限ないけど作れるものに制限があるんだよな
VC#はその逆
84 :
デフォルトの名無しさん:2011/10/07(金) 14:42:18.22
そうそう
VC++はMFCとATLが無料版には付いてこないのでwindowsアプリを作る際苦労する
リソースエディタもなかったんだっけ?
VCはwindowsアプリはガシガシ作れるがアプリの全体像をクラス図で見渡すとかそういう
サポート部分が無料にはない
silverlight もだいたいできるの?
webdeveloper いれたらできるようなんだが
86 :
デフォルトの名無しさん:2011/10/07(金) 16:15:53.75
.netの物なら問題ないよ
WP7.xも作れる
すごくね?
いつから太っ腹になったんだ
88 :
デフォルトの名無しさん:2011/10/07(金) 16:21:13.91
囲い込み作戦だよ
.net戦略もあるし
すいません、
C#をつかってWebサービスでList型で公開したものを
受け取ろうとすると受け取り側ではString型になってしまっていて
Listとして受け取れないようなのですが
これは仕様なんでしょうか?
web は文字列のやりとりだろ
92 :
89:2011/10/07(金) 18:51:49.62
93 :
デフォルトの名無しさん:2011/10/07(金) 18:54:21.29
やつを追う前に言っておくッ!
おれは今やつのスタンドをほんのちょっぴりだが体験した
い…いや…体験したというよりはまったく理解を超えていたのだが……
,. -‐'''''""¨¨¨ヽ
(.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ!
|i i| }! }} //|
|l、{ j} /,,ィ//| 『おれは奴の前で階段を登っていたと
i|:!ヾ、_ノ/ u {:}//ヘ 思ったらいつのまにか降りていた』
|リ u' } ,ノ _,!V,ハ |
/´fト、_{ル{,ィ'eラ , タ人 な… 何を言ってるのか わからねーと思うが
/' ヾ|宀| {´,)⌒`/ |<ヽトiゝ おれも何をされたのかわからなかった
,゙ / )ヽ iLレ u' | | ヾlトハ〉
|/_/ ハ !ニ⊇ '/:} V:::::ヽ 頭がどうにかなりそうだった…
// 二二二7'T'' /u' __ /:::::::/`ヽ
/'´r -―一ァ‐゙T´ '"´ /::::/-‐ \ 超スピードだとか催眠術だとか
/ // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ そんなチャチなもんじゃあ 断じてねえ
ノ ' / ノ:::::`ー-、___/:::::// ヽ }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ もっと恐ろしいものの片鱗を味わったぜ…
↑こういう状況なのはわかった
落ち着いて具体的に説明しろ
双子の片割れでもなければエスパーでもないので
お前のはまってるところなんてスレの人間にはわからん
具体的に説明できると思えないからプロジェクトファイル見せてみ
ふらっとスレへGo
>>92 どこが間違ってんの?
キミんとこではバイナリでやりとりしてんの?
それともフレームワークにのっかってるだけなのにオブジェクトでやりとりできると思ってんの?
.NET RemotingやWCF使えばオブジェクトでやり取りできるよ
通信はバイナリ、テキストどちらでも可(意識しない)
こういうことできませんか?
Class Foo : Int32 {
}
Foo foo = 1;
100 :
デフォルトの名無しさん:2011/10/07(金) 21:54:31.64
なぜそうしたいの?w
できる
implicit operator
取り敢えず、Int32は構造体なので継承できない
あと継承したからって派生クラスの変数に直接基底クラスのインスタンスを代入するのはできない
Object o = new Object();
String s = o; // これは無理
継承はできないけど代入できるようにすることはできるよ
>>101で
むしろ継承関係があるとダメ
ありがとう、implicit operatorでできました。
値型は全部継承して使うことみたいな基地外コーディング規約あったな。
どこの言語界隈の話だか…
メソッドをset(get)で始まらせることでプロパティとみなす既知外言語もあるからね
始まらせるってのは日本語なのか?
日本人?
Javaを批判するのはいいけど、いい加減その行為に生産性が無いと気付くべき。
シーシャーパァは狂犬が多いな
c#でアクセスにつないでセレクト文で一行とってきて適当な(何でもいい) フォームに表示させたいんだけど教えてくれません?
一行とるのは出来たっぽいんだけどそれをどうやって表示するのかググってもさっぱりわからなくて…
テーブル丸ごと表示のやり方は見つけたんだけどなぁ。
MessageBox.Show()
ふぉーむのなんね?
System.Windows.Forms.Label
.netで開発するときのフォルダ構成の
指針みたいのある?
utilityフォルダ作るとか。
foreach (DataRow dr in dataTable.Rows)
{
System.Console.WriteLine(dr[0]);
}
メッセージショウだとオブジェクトがなんちゃら?(忘れた)とかエラーがでるのよね。
とってきた一行を違う型に変換する必要があるの?
DBには行と列ってもんがあってだな・・・
MessageBox.Show()でエラーは出ないだろ普通wwwどんだけ初心者なんだよwww
いやー、まったく初めてなんだよー。
フラッシュとアクションスクリプト2と ラズロならそこそこわかるんだけど、sqlとかc#とかはじめてでちんぷんかんぷんなんですわー。
一行二列とってて、一列目と二列めは違うテキストボックスにいれたいんだけど…
そもそも取得したであろう検索結果を表示できる形式に変換出来ないっつーかわからない。データセット型だとデータグリッドにしかいれられないんでしょ?
TextBoxなのか、MessageBoxはどこいったんだw
ToStringで文字列に変換してTextに入れてやりゃでるよ
DBの列には型ってもんがあってだな・・・
つうかnullってないだろうな?
初心者か
取り敢えずToString()
>>123 とにかくはじめは何かしら表示するところからやろうと思ったんだけど、詳しく書いた方が答えやすそうだったからかいたんです。申しわけない。
一行二列のデータが入ってる変数っぽいやつを返還したあと、一個ずつ取り出すのは何使えばよい??
ぬるじゃなくてちゃんとはいってます! データはちゃんといれてあります
バインディングだよバインディング
textBox1.DataBindings.Add("Text", dataTable, "列名");
>>127 >>117は別の人?
あんな感じで行を取り出して添え字つければ各列にアクセスできるよ
textbox.Text = dr[0].ToString();
こんな感じ
バインディングとか鬼畜すぎワロタwww
ActionScriptだってバインディングあるよ
3なら
2は知らん
慣れている人が楽をするための仕組みを初心者に教えるの不親切と言いたいんじゃない?
みんなありがとう。
今日は障害出てまだ書けそうにないから明日試してみるよ。
うーん、Dart ってなんか印象が、
「しがらみ取っ払って、Javaをリセット。C# から取り込みたかったものも入れた。」
にしか見えず。
リセットかかってるからいい言語ではあるんだけども、
リセットしてまで入れ替えたいと思わせるものがないのよねー。
VM 層が中間言語でも持ってて、いろんな言語移植できるとかだったら面白そうだったんだけど。
go言語はもう飽きちゃったのかな?
>>137 GOはアプリケーション書くための言語で、DartはDLS。っていう雰囲気にみえるけど。
おっと、DSLだった。。。Orz
Noopは…
>>136 JavaじゃなくてJSの置き換えでしょ?記事読む限りDartで組んでからHTML5+JSにコンパイルしてブラウザ上で実行する物でしょ
ある意味JSを中間言語として使用している
Better JSって感じかな?普及するといいね
このスレ的にはCILからJSに変換できればいいんじゃね・・・
JS.NETはどうなったのか
>>141 いや、JavaScirpt と同じ用途の位置に、「リセットした Java」みたいな言語を置いたってこと。
JS を中間言語にするんじゃ、パフォーマンス問題が解決しない。
Dart を導入しようとしてる最大の理由は、JS の仕様じゃどんなに頑張ってももう VM 速くならないという判断もはいてるはず。
Chrome には Dart ネイティブな VM を実装。
その他のブラウザーへの救済策として JS へのコンバートを提供しているもの、
Hello World! 程度の Dart ですら、むちゃくちゃ巨大な JS ファイルが生成されるとか。
(それは、.NET でも Volta で通った道)
で、せっかくなら、その Dart 専用の新 VM に、ちゃんとした、Java Byte Code とか MSIL レベルの中間コードがほしかった…
それはなさそうなのよ…
実装には興味ないっすw
かといって、言語仕様だけ見ると、単にリセットかけたJavaなのよねー。
ブラウザであんまり頑張りたくないっすw
これだけでも十分w
c#に入れてくれないかな
class Rectangle implements Shape {
final num height, width;
Rectangle(num this.height, num this.width); // Compact constructor syntax.
num perimeter() => 2*height + 2*width; // Short function syntax.
}
>>149 その文句は、これだけAjaxを流行させた今になって、
いまさらJavaScriptはもう限界とか言い出したGoogleに文句言うべき。
>>150 Compact constructor はいまいちじゃないかなぁ。
Short function は、3.0 でラムダ式導入されたときに議論には上がってて、
結局、「新規に言語作るんならいいけど、今から追加は混乱招くデメリットの方がでかい」ってことで却下されてたような。
Compact constructor欲しいんだけど
無駄な変数作りたくない
Compact ctor がいまいちなのは、
private なメンバーの名前が外から見えてるっぽく感じるから
(実際はそうでもないけども)。
スクリプトだからできるんであって、C# に導入してもいまいち。
個人的にはそうそう書かないと思うからいらないかな
ただ入力を楽にしたいだけなら他にやりようがあるからな
こういうの嫌いなんだよ
string _url;
public ○○(string url) //コンストラクタ
{
_url=url
}
public string URL{get{return _url;}…以下略
_url作りたくないんだよ
それなら自動実装でできる範囲だけど、
string _urlみたいなのが必要な場面はあるね
それはプロパティも所詮メソッドだと認識するしかない
C# にその手のものを足したいんだったら、むしろ、Scala の case class みたいなののほうがいいかなぁ。
m_urlにしたらいいのに…
_url作りたくないというのは間違い&言葉足らずだった
出来るならメンバーをurlにしてコンストラクタの引数で直接受けたい
>>163 メンバーは private、
一方、コンストラクターの引数の名前は public なんだわ。
だから、「private な方を変な名前にしろ」って規約になってる。
まあ、メンバーとコンストラクター引数、同名にできるよ。
public ○○(string url) { this.url = url; }
>>164 同名にできるは知ってるしそれがバグの温床なのも知ってる
初期化子で十分のような
フィールド名とコンストラクター引数がいわゆる DRY 問題になってるのは確かだけど、
それの解決策として、Dart の Compact Constructor はいまいちだなぁ。
結局、DRY なままだし。
public string URL{get;private set;}にでもすれば?
初期化じゃスマートじゃないよ
引数が多いと途中で1個2個抜けてても気づかないよ
バグの温床だよ
子が抜けてた…
濡れ衣を着せられた初期化子w
public rectangle(int left,int top,int width,int height,Color color)
{
this.left=left;
this.top=top;
this. width= width;
this.height=left;
this.color=color
}
↓
public rectangle(int this.left,int this.top,int this.width,int this.height,Color this.color);
シンプルだ
しかも従来のコードは最初の行をコピペして作ったので
バグ(this.heightにleftを代入している)がある
Rectangleさん
今度は並び順間違えないようにしないと・・・
コンストラクタに大量の引数を付ける設計自体が好かんな
値型はそんな大量に実装しないし
まあ引数が無駄に多いこと自体を回避したくなるな
結婚きんもー
他人が使うライブラリなどで必須パラメータ知らせるには
コンストラクタの引数がいいんじゃないの?
staticで Create〜とか
>>173はwidthとheightが負だったら例外投げないといけないんで、代入を省略できない例だろ
そうだよな
uintにしないとw
>>179 引数4つならそれらをプロパティに持つ初期化パラメータクラスを作ることを検討する
5つ以上ならノータイム
コーディング量がガンガン増えていくな
毎回コンストラクタでファッキンな思いするよりまし
>>179 コンストラクターの意義としてはその通りなんだけど、
MS が実際に人使ってやったユーザビリティ テストの結果では、
引数多すぎるとみんなうざくて使いにくいというらしい。
なので、MS も、ガイドライン的にはあんまり引数の数増やすなと言ってる。
それよりデニス・リッチー死んだらしいぜ
187 :
デフォルトの名無しさん:2011/10/13(木) 23:19:02.89
Hello! Next World!
Good by World!
Welcome to Underworld!
省略記法なんてなるべく避けるべき。
好みの問題に「べき。」か
これだからマは
言語の設計論もあるし好みとは言い切れないだろう。
省略はあるに越したことはない派だけど。
いちいちラムダのためにメソッドを書かないし、
メソッド書くにしてもnew Func〜書かない。
アバウトな言語はいくらでもあるし、
C#より幅を利かせてるのも多い。
芸術家の意見より実務家の意見の方が説得力があるだろう。
初期化子「両サイドから否定されてる気がする!」
好みの問題だから、「べき」なんじゃないか。
おまえが勝手に脳内で「なければならない」と混同してるだけだろw
これだから論理がデタラメな非マは困る。
dynamic「俺を使えば万事解決」
おれを初期化するな
>>193 まあ、実務家の意見見るときに気を付けないといけないのは、
目先の簡単さを求めてあとから苦労しないかどうかよく考えたほうがいい。
省略は、後から泣きたくなること多いし(書くの楽だけど読むの/引き継ぐのしんどい)。
他のスレだと暇つぶしの輩しかいないのでこちらで質問させていただきます
http://ideone.com/X4RvM DataGridViewにバインドしたList<自作クラス>をソートしようと
いろいろ調べた結果ラムダ式が簡潔みたいなのでやってみたんですが
こんな感じになっちゃいました、項目が増えると同じようなコードが・・・
普通はどういうことをするんでしょうか?
自作クラスをIComaparableにしたり、IComparerインターフェースを作る方法が思うのですが。
データの量は10列の一万行ぐらいです
ユーザーが行の削除やソートをしても、データがちゃんと同期が取れて
簡潔なコードで書ける方法を教えてください
よろしくお願いします
>>199 やったこと無いけど、ラムダを配列に突っ込んで添字でSortに突っ込む。とか?
誰が簡潔なコードで済めばいいのかって話だけど
DataTable/DataView使うのが一番簡潔だし
速度を重要視するなら
>>199の通りベタに書くのが一番だな
202の要旨は
リフレクションで無理やりコンパレータ作れば最強!
ってこと
優しい203にほれた
さっきふらっとで思わず煽っちゃったからね
BindingList使う
BindingList クラスは並べ替えの基本実装を提供していないため、既定では、SupportsSortingCore は常に false を返します。
まあ向こうのスレを見ると
順番無視して主キー使うのが唯一の正解
209 :
199:2011/10/14(金) 18:54:25.16
>>202 これやってみたけど恐ろしくソートの時間がかかるな・・・
当たり前じゃん
コード書くコストをリフレクションにぶん投げたんだよ
いいだろ
質問で速度は求められていないのだから
たしかにー
でも徹夜で勉強してやっと作ったのにこんな有様だとは・・・
IComparerの書き方次第である程度はフォローできる
リフレクションは遅いのにCompareごとに呼び出すとか狂気の沙汰
>>212-213 直すんならIComparerでなくて自作クラス
PropertyDescriptorを自作してICustomTypeDescriptorとかで返してやれば?
TabPage下にあるTextBoxコントロールにアクセスする方法ってないですか?
並び替えできるようにしてあるのでTabPageのインスタンスだけ並び替えてもTabPage下にあるTextBoxコントロールはそのままなんです
216 :
215:2011/10/18(火) 12:01:30.93
ふらっとC#に書き込むつもりが間違えて誤爆しました。質問は取り消します
C#でイベントコリレーションみたいな機能ありんす?
ちと質問です。XMLのシリアライズやデシリアラズをする場合において
みなさんはどのパーサーを使用していますか?参考に.NETのバージョン別に
教えて欲しいのですが・・・
あと、XmlElementやXmlDocument、XmlSerializerはどのように使い分けているのでしょうか?
自分はXmlSerializerメインで使っているのですが、他のパーサーはもっと速度が出るとか
これは下位互換で残っているだけとかあれば情報が欲しいのですが・・・
.NET2.0 =>
.NET3.5 =>
.NET4.0 =>
>>217 WaitHandle.WaitAnyみたいな?
なんか違う気がする
>>218 >XmlElementやXmlDocument、XmlSerializer
この3つを並列に語るのはおかしいだろ
>>217 ただのフィルタ処理できるログってことでいいならTraceSource
イベントコリレーションが何なのか分からんが、CorrelationManagerと関係あるの?
>>218 XmlSerializerはシリアライザ
XmlDocumentはDOMでツリーを構築
XDocumentはLINQで扱いやすい形でツリーを構築
あとはXmlReader(Pull型パーサー)
シリアライザだとDataContractSerializer。
ぐらいかな。
基本的にはXDocument、
シリアライズはDataContractSerializer、
メモリの都合や速度が欲しい時はXmlReader。
protected virtual void OnDragEnter(
DragEventArgs drgevent
)
これって.Netの命名規則に違反してない?
具体的にどの規則?
225 :
デフォルトの名無しさん:2011/10/21(金) 23:19:21.85
>>223,
>>225みたいなレスこそ常識に反してるな。
他人に向かって何か問いかけたいのなら明示的に書けよ馬鹿と言いたい。
ああ、うん、そうですね…
EventArgs自体ガイドライン違反だし
日本は英語圏じゃないからArgsもArgumentsも大して変わらないけどね
まあ米国人がやっていることだが
230 :
デフォルトの名無しさん:2011/10/22(土) 00:30:44.25
自分で作ったフレームワーク中では
自分で決めたガイドラインくらい率先して守ってほしいね
スルーしたかったらスルーしていいし、文句言いたかったら言ってもいいんだよ。
ヲタ丸出しなコミュニケーションで吐き気がする
吐くのも自由だよ。思いっきり、吐けばいい。
質問です。階層構造の深い入れ物クラス(Entityクラス)を参照する場合に
その参照対象クラスまでのNullチェックってどうやってしていますか?
(Ex)
A〜Hクラスまであって、順に階層構造になっているものとします
そしてHクラスのValueを見たい場合です。
(A.B.C.D.E.F.G.H.Value)
if(A != null && B != null && C != null &&...(以下続きます)...H != null)
{
return H.Value;
}
とする以外になに良い方法などありますでしょうか?
あとはこんな方法とか・・???
GetData(new A(),new List<string>{ B , C ,D , E, F , G, H, Value) ;
private string GetData(A data, List<string> propertyName)
{
object value = data;
foreach (var name in propertyName)
{
var propInfo = value.GetType().GetProperty(name);
if (propInfo == null) { return null; }
value = propInfo.GetValue(value, null);
if (value == null) { return null;}
}
return (string)value;
}
236 :
デフォルトの名無しさん:2011/10/22(土) 14:58:13.90
>>235 細かい仕様がわからんな
AとBは1:1なの?
CとDは1:1なの?
以下略
とかさ
237 :
デフォルトの名無しさん:2011/10/22(土) 15:00:11.89
というか各クラスの骨格ソースだけでも
>>235 なんかもう、ネーミングセンスが無さ過ぎて泣けてくる。
valueだのdataだの何だよ
239 :
デフォルトの名無しさん:2011/10/22(土) 15:21:41.40
240 :
デフォルトの名無しさん:2011/10/22(土) 15:30:41.79
変えられるんなら、各クラスにnullを表すインスタンスを用意してnull参照を返さないようにするとか
DataAnnotations使えば
面倒だからtryでいいよそんなの
243 :
235:2011/10/23(日) 18:18:22.63
実際の構造とは違いますがこんな感じのクラス構造です。
http://ideone.com/KXvAO 実際にクラスCのC1データにアクセスする際にクラスAのnullチェック、
クラスBのnullチェックをするのですがみんなはどのようにnullチェック、
またはそれに相当するクラス構造にしているのでしょうか?
ネーミングセンスは・・・すいませんorz
Compositパターンにすればあなたのお悩み全て解決
昔の人は偉い
>>243 結局、そんなことをしたい背景が分からないと誰も適切なアドバイスができんような気がするけどねえ。
単純に、リンクを辿るコードをベタ書きするのが泥臭いというのなら、
A, B, C, ....に共通のインターフェイスを被せて再帰的に処理できるようにすれば
解決するけど、そういうやり方が本当に適切かどうかは、そんな投げやりなサンプルを
示されても誰にも分からない。
>>243 プロの俺が答えてみる
nulチェックなどは下層では行わない
なぜかというと、下層でチェックして上層でもチェックするなど
無駄に2重チェックしてしまう可能性があるからだ
それにnullチェックしたところでnullには変わらないわけで
結局呼び出した大元でエラーが出る
つまりnullチェックするのは最上層部のみですること
一般に a.b.c.d みたいに階層掘るのは依存が増えるので良くない
>>248 プロの俺から言わせていただくと
階層構造を持たないプログラムは見通しの悪いコードであり
より問題が発生しやすくなる
フォーム>dllを利用するクラス>dlllをインポートするクラス>dll
これらの構造をフォームだけで書けと言われたらプロをやめる
return A.With(a=>a.B.With(b=>b.C.With(c=>c.H)));
こんな感じでいいなら拡張メソッドでできなくもないw
まあ普通は例外にしちゃうんじゃないかな
>>249 プログラムやデータの構造じゃなくてコード中で階層掘るなって話だぞ
つまりプロの俺が誇りをかけて言わせてもらうと
階層を持ちつつ階層を持たない構造が最強
a.GetHoge().GetHageManager().GetHage().HageInfo.GetName()
とかテスト不可能なクソコード
デメテルの法則は改名したほうがいいよね
名前を聞いただけじゃ意味がわからない
>>252 プロの俺が質問するけど
どういう意味?
デメテルの法則でググれ
うるせぇなぁ、動きゃいいんだよ
プロと素人を見分ける方法を教えてくださいよ
行は100文字で改行しろ!とか下らないことに拘るのがプロ
class A
public string Z{get{return b.X}}
class B
public string X{get{return c.Y;}}
こうしようと
A.b.c.Y
こうしようと実質一緒じゃないか?
DataGridView.Rows[0].Cells[0].Value
これなんてどうよ?これもダメなの?
確かに
>>261は"今は"実質一緒だけど、未来永劫そうとは限らないだろ?
そのためにプロパティを使うんだから。
>>263 DataGridView[0,0].Valueって別解が用意されてるじゃないか
>>263だけ見てどうというより、
>>263みたいなことをしてるクラスが限定されてるかどうかでしょ
プログラムのあちこちで
>>263が出てくるならもちろんクソコード
a.b.c.d.Z
俺が嫌なのはcがネームスペースなのか
クラス名なのか変数なのかさっぱりわからにところだな
デメテルの法則かー早く教えてくれよ
この法則に従って書くようにするわ
初心者はフォーム(外見)から作り始める
中級者はモデルクラスから作り始める
上級者はインターフェースから作り始める
俺中級者だわ
最初からインターフェイスとか作っても無駄になることが多くてやめたわ
キチガイ:専用の言語を作成する
インターフェイスってインターフェイス型じゃなくて「外部設計」的な意味じゃない?
情弱:既にある物の劣化版を作る
>>267 メソッドとプロパティとネームスペースを大文字時まりにする糞決めごとが悪い
デメテル調べてみたがこの原則に従ってやると
抽象的で何しているかわからないようなクラスだらけになりそう
受け渡しクラスの受け渡しクラスの受け渡しクラスって感じで
>>270 なんかそれってインターフェイスって言いたいだけの初心者の言に聞こえるぞむしろw
初心者は最初に設計をやる人が偉いみたいに勘違いしてる人が多いけど、
それって余程才能がある人以外なかなか難しいんじゃないかと俺は思うよ。
作る物にもよるけど。
むしろ凡人は、UIのデザインなどをやって時間稼ぎをしながら設計を考える方が
効率がいいように経験上思う。
その方がモチベーションも上がるしね。
>>277 UIから作って、UI動かすためのコード書いて、
コードが増えてきたから新しいクラス作って
データ構造が間違っていてることに気付いて全部書き直しするんですね
>>276 それでいいんだよ
お前は.NETのクラスライブラリのクラスを使うときに実装がどうなってるか常に意識してるのか?
>>277 まずUIつくらないと、設計すべき内容が解らないとそういう状態になる
単なるプログラム設計ならそれが悪いとは言わないが、大規模な開発のシステム設計に向かないのも確か
>>279 でもラッパークラスが増えて処理重くなりそうなんだけど?
最初からパフォーマンスを気にするのはクソコードの始まり
ラッパークラスで重くなるって・・JavaScriptじゃあるまいし
デメテルなんだけど
a.Items.Add()
こういうのもだめなんだよね?
確かにクラスAがデータを監視したい場合
コレクションクラスも自作しなくていはいけなくなるけど・・・
a.Add()だと変な感じ
DataGridView.Add(dt);
>>280 大規模の定義にもよるけど、一人でUIもその他のコーディングも全部やる
大規模なプログラムなんてあるのかよw
無理して適当なこと言わない方がいいと思うよ。
って、言ってるそばから、経験がない奴って最初から設計やるのが偉いと思ってるし、
そんなことが可能だと思ってるのな。
そんなのは幻想だよ。
フォンノイマンクラスの頭脳の持ち主なら別かもしれないけど。
言いたいことは、難しいことは後回しにした方が効率的だし上手くいくってことね。
要は設計は難しいって言ってるんであって、設計なんかどうでも良いとは言ってない(むしろその逆)
なので誤解のなきよう。
UIデザインなんて大抵グラフィッカーが作るけどな
俺は内部ロジックしか作らないから
実際どんなものができるかわからないんだが?
288 :
235:2011/10/24(月) 11:06:43.06
お休みで掲示板見れなかったけど、色々書き込みしてくださってありがとうございますm(_ _)m
処理の内容ですが、
http://ideone.com/KXvAO にあるようなクラスが入れ物クラスとなっていて
あるところ(ファイルやシリアルポートなど)からデータが来て、そのデータを解析して入れ物クラス
に格納してメインロジックに渡すという使い方になります。
メインロジックではその入れ物クラスからさらに自分が使うところ(値)を抜き出して画面に表示する
ようにしております。
シリアル・ファイル=>解析=>(入れ物クラス)=>メインロジック=>画面表示
>>244さっそくコンポジットパターンで検索してみます。ありがとうございます><
フォーム(外見)から作り始めると
実装がユーザー視点に近いアプリができる。
最も実装コストが低いが、スパゲティ風味。
モデルクラスから作り始めると、綺麗なモデルができる。
ただし、拡張性は低い。
綺麗なモデルができるまでの実装コストは低いが、
UIとモデルが合わないと、モデルがどんどん複雑になり、実装コストが高くなる。
インターフェースから作り始めると、拡張性の高いアプリができる。
モデルから作り始めた場合と同じような特性を持つが、
UIとモデルが合わなくなる可能性がより高い。
また、綺麗なモデルができるまでの実装コストも高い。
どこから始めてもその人のスキルに応じたものができるだけだよ
動きゃいいのさ
応じたものができるけど、作り方でスキルがわかるって話さ
俺は、モデルから作って半分位作った当たりからUIとあわせて「あーでもない、こーでもない。」って言ってる。
個人開発だからできるのだろうけどね。
>>284 それはOKなんじゃないかな「オブジェクトを直接的に構成するオブジェクト」のメソッドだから
>より形式的に言えば、関数に対するデメテルの法則に従った場合、
>オブジェクトO上のメソッドMが呼び出してもよいメソッドは以下のオブジェクトに
>属するメソッドのみに限定される。
> 1. Oそれ自身
> 2. Mの引数に渡されたオブジェクト
> 3. Mの内部でインスタンス化されたオブジェクト
> 4. Oを直接的に構成するオブジェクト(Oのインスタンス変数)
開発手法もいろいろあるしな。それを活かすも殺すも本人次第
a.Items.Add()のItemsはaを直接的に構成するオブジェクトじゃないの?
4が指してるのは this.hoge.Hage() だろ
出来合いの物を使ってるだけなんだからどうでもいいよ
DataGridViewやDataGridViewRowCollectionを後で変更したりしないだろ
あーなるほど
勘違いしてたわ
a.b.c()が良くないのは、bの変更に弱くなる(またはbを変更しづらくなる)からで
標準のライブラリに当てはめても無意味
標準ライブラリじゃなくても同じような動作をするカスタムライブラリの場合もあるわけで
そういうことについて話しているんだけど
Generic.Dictionaryを使用するとき、ContainsKeyとTryGetValueのどちらを使うべきなんですか?
違う機能なんだから使い分けろよ
キーの存在を確認するときは前者、Valueを使うときは後者
キーにアクセス時間が半分で済む
見て分からないのかと思うけどな
>>303 ここは中級者以上の怖い人ばかりだからふらっとで訊いたほうがいいよ
>>305 ありがとうございます
つまりTryGetValueを使うべきなんですね
その他の行間を読めない馬鹿は放置で
>>305 じゃあValueに値をセットしないで
キーに値をセットしたほうがいいってことですね
class Print
{
//「印刷するプログラム」
}
class main_program
{
public static void Main(){
Print pri = new Print(); //印刷するクラスのオブジェクトを作成
}
}
こんばんわ^^初心者です
今クラスについて調べてるんですけど、上のコードだとvoid Mainにオブジェクトを作成してますよね
クラスが100個あったとしたらvoid Mainに100個オブジェクトを作成するんですか?
これが普通なんでしょうか?教えてください
311 :
310:2011/10/26(水) 21:08:41.13
自己完結しますた。
108個ならBonnouクラスにまとめるべき
>>309 Dictionaryの意味わかってないんじゃないの?
ふらっとで訊いてきたほうがいいよ
急に釣り臭いレスが増えたね( ^ω^)
315 :
310:2011/10/26(水) 21:33:44.79
継承すればいいんですね!奥が深いです><
何でもかんでもインターフェイスにしますです
はあ?同じ性質のものだからインターフェイスにしたわけだが
それの何がだめなんだ?バカかおまえは
やかましい
ここをエントリポイントとする
ミスターサタンスレでやれ
DataGridViewで、コンボボックスの列を作りました。こいつはデザイナで作ったもので
コードは全部自動生成です。このコンボボックスの色を変えたいのですがうまくいきません。
まず、ここをみて試してみたところ、
http://dobon.net/vb/dotnet/datagridview/cellcolor.html TextBoxのセルは成功しましたが、Comboboxでは色がかわらない。選択肢が下にのびる
ところだけは変わるけど。
Display StyleをNothingにすると、一応色変わるけど、選択できることをユーザに示さないと
いけないので、StyleはDropDownかCombo必須です。あと、選択中はまた白に戻るので
ちょっとかっこわるい。
なんかいい方法ないでしょうか。DataGridViewは難しくて、初心者がつかうんじゃなかった
と少し後悔中
初心者とかいうレベルの問題ではないな
小心者とかいうつもり
自前描画。
はい次
325 :
320:2011/10/28(金) 09:42:07.26
自前描画っていまいちどうしていいかピンとこないのだけどサンプルとかありませんか?
OnDrawItemをoverrideして(protected override void OnDrawItem(DrawItemEventArgs e))
e.Graphics.DrawStringで文字を書く。背景色はe.Graphics.FillRectangle
フォーカスを示す四角形はe.DrawFocusRectangleでOK。
327 :
320:2011/10/28(金) 13:27:58.50
わんくま未解決が2chの自称上級者に解けると思うかね?
敵わんわー
わんくま様には敵わんわー
マジ敵わんわー
RowPostPaintでも試せば?
わんくまってそんなにすごいの?
すごい人も山ほどいるって意味ではすごいけども。
わんくまなんて教育という点ではたいしたことないよ
ゼロから学べるC#
そろそろこういうサイトもできていいんじゃないの?
どこかのサイトみたいに、C++やJavaを例えに出すのは混乱するだけなので無しで
C++でいうところの関数のようなものです
↑こういうことを平気で書いちゃう奴は池沼だと思うの^^
OOPLをゼロからは難しい
初心者はC言語やアセンブリからやれってこと?
Javaやれ
今時ならむしろ関数型言語なんじゃね?よく知らんけど
教えるのが難しいってだけ
初心者がOOPLからはじめるのは大いに結構
最終的にOOPLを使うのに別のパラダイムで基礎を
勉強するよりずっといい
C#のような高級言語は裏に隠された部分を知らないと
のちのち苦労するんだよな
隠蔽化された部分は知らなくていいじゃなくて
やっぱり知らないとだめなんだよ
最近は C# などによある .NET プログラミングが盛んですが、 本気で Windows を使っていろんなことを出来るようになりたいなら、 C/C++ を使って Windows API を直接使う方法を学ぶのが一番良いとおもっています。
344 :
320:2011/10/28(金) 22:50:03.63
せっかく回答頂いた326のOnDrawItemがあまりよく理解できなかったのが心残りですが、
これ以上回答つかないようなのでふらっとC#初心者のほうへ移動してみたいと思います
そうそう、年寄りの話は半分でいいんだよ
ボケ始めてんだから
レガシーおじさんの話は役に立ちそうでたたないから困る
まあ、「年寄り」だの「ゆとり」だの言って自分以外の世代を否定したがる奴が
優秀かって言うと.....まずその反対だろうなって気もするけどねw
きっと無能でストレス溜まってるから2chくんだりでクダ巻かないと
やってられないんだろうなと邪推。
マジで反論してしまった時点であなたもそちら側の人間なのでは・・・
とムキになって反応したキミは無能確定
以下ループなのでつぎの方どうぞ
視力が凄く落ちてきたんだが、視ぃsharpとはこれいかに?
昔から疑問に思ってることなんだけど、ロックされたファイルへアクセスするとき、ロックが解除するまで待機する方法ってないの?
今は必要なときはファイル名でmutexを取得してやってるんだけど、OSが対応しているならそれを使いたいです
無かです
>>343 順番的には、必要になったらしょうがかなく腰を上げてWinAPIを叩くぐらいが一番良いですね。
ハマれば言語も手広くやってみたくなるよ。
仕事でないなら自らの興味に任せとけ。
2つのデータセットを比較したいとき、
DataSet a;
DataSet b;
if (a == b) {
}
これは中身が同一かを比較してくれる?
それとも、参照の比較だけなので絶対偽?
DataSetがEqualsをオーバーライドしていなければ単なる参照比較
簡単にテストできることは自分でやればいいと思うんだ
reflectorでEqualsのデフォルト実装とか見といたほうがいいよ
広大なライブラリの海でずっとおぼれている感じ
自分でもわかっている今俺が必死に勉強しているのは
ライブラリの使い方であって言語が変われば通用しないことを
俺にはもっと基本的な知識が必要なのに
コピペでなんとかなっちゃうから深く学ぼうとする機会が失われている
ポエム
言語が変わっても、同じようなライブラリは存在するはずなので、別に通用しますが。
363 :
356:2011/10/29(土) 20:01:46.57
必ず偽が返ってくるので、参照で比較しているか、データがどこか食い違っているのか
判断つかないんです。
>>363 判断以前の問題だ
>指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
これ意味分かる?
オーバーライドされている場合
>オブジェクトが Size のインスタンスと等価であるかどうかを比較します。 (ValueType.Equals(Object) をオーバーライドします。)
できればふらっとに行ってくんね
分かってないのは
>>364 ==演算子とObject.Equalsは無関係
関係があるのはop_Equality
DataSetにはop_Equalityは無いから、既定の参照比較が動く
データを比較したければ基本的には全部の行の全フィールドを自分で比較しないとダメ
参照型でオーバーライドしてる奴の方が例としては適切だったか…
368 :
356:2011/10/29(土) 20:45:21.12
ありがとうございます。
自前で比較する処理を書こうと思います。
>>363 それは、小さな同じデータを持つDataSetを二つ作って比較すればいいのでは。
「ふらっとで××」と抜かしてるやつは同じやつ
そして上級者気取りの半可通
VSTO(Microsoft.Office.Interop.Excel)で
のように書いた場合、パターン1,2はなぜそうなるのかは理解できるけど
パターン3でなぜ1の時と同じエラーが発生するのか分らない。
foreachでアクセスしているはずだから、範囲外のsheetが渡されてくることは無いはずだし
万が一と考えてsheetがnullかどうか確かめたけど、nullなシートって訳じゃ無いみたいだし…
xlsなデータを一括処理するためにVBAでチマチマやってたけど、あまりにも難しいから
C#に逃げてきたんだけど、それでもなんかよく分らないことになってる><
>>371 そもそもCOMのラッパークラスがC#のforeachに対応していると期待するのが間違ってる気もするけど....
>>373 やっぱり中身はCOMなのか…
自動生成されたラッパーならそう言うオチが有ってもおかしくは無いけど
あくまで、オフィシャルがリリースしたものなんだから、その辺は大丈夫なんじゃ無いの?
MSDN見てみると、一応SheetsオブジェクトはGetEnumeratorを実装してはいるようだけど、
それ以前に、
-----
The Sheets collection can contain Chart or Worksheet objects.
-----
となってるね。
言われてみれば確かに、エクセルのシートはワークシートだけではないような。
配列を任意の値で初期化する、スマートな書き方無い?
int[] array = new array[count];
for(int i = 0 ; i < array.length;i++)
_array[i] = -1;
をお手軽にこなしたいんだが;
それでいいじゃん
2次元、3次元と増えると、だんだんじゃまになってくるんだが…
関数化すればいいじゃん
多次元配列は使わない
>>380 それってint[] hogera = new int[width * height];しろって馬鹿にしてるだけ?それとも何か代替があるの?
>>381 ちょっと気になったのでカンで触ってみた。
単に一部のフォントをいじりたいだけならNamedRangeに手を出す必要は無いよ。
http://privatepaste.com/7e1d67c0f4 NamedRangeって、Excelの機能で言うところの名前付き範囲じゃないかな?
範囲選択して、"A1:E3"って書かれてるところに名前を付けると
=SUM(hogeTable) みたいに扱えるようになる例の機能。
あと、上のやつはVS2010/Office2010で作ったものなので、あなたの環境だと
ひょっとするとvar を適切な型に書き換えたり、Type.Missingを追加したりとする必要があるかも
多次元配列は列挙型の恩恵が受けられないから普通は配列の配列を使う
>>383 ジャグ配列か…ちょっと悩んでみる。多次元配列はおいしくないのね…
int[] array = new int[200];
array = array.Select((a) => { return -1; }).ToArray();
みたいなノリで
int[,] array = new int[200,300];
array = array.Select((a) => { return -1; }).ToArray();
出来たら良いなぁとか考えてた。ちょっとキモいけど
>>384 VS2010でExcel12(2007)のを使ってみたが、特に問題が無かった。
アセンブリのバージョン/ランタイムは 12.0.0.0/v1.1.4322 14.0.0.0/v2.0.50727
14(2010)用のを試しに使ってみるとか、再起動してみるとか
Windows Updateをオプションを含めてアップデートしてみるとか…
>>386 自分が使っていたのは、まさに「12.0.0.0/v1.1.4322」でした。
新規プロジェクトを作って先ほどのロジックを貼り付けて参照設定を設定しても同じ、他の人の環境でも同じなので、他のプログラムが悪さをしているわけでもないようです。
・引数を '0' 個指定できる、メソッド 'Add' のオーバーロードはありません。
・プロパティ、インデクサまたはイベント 'Range' はこの言語でサポートされていません。アクセサ メソッドの 'Microsoft.Office.Interop.Excel._Worksheet.get_Range(object, object)' を直接呼び出してください。
・引数を '1' 個指定できる、メソッド 'SaveAs' のオーバーロードはありません。
まずは14用のを探して試してみようと思います。ありがとうございました。
>>385 多次元配列にすると処理速度が一気に落ちるからね
連続画像処理なんて特に差が出る
しょうがないにゃあ・・
int[,] aaa = new int[2,2] { { 0, 1 }, { 2, 3 } };
foreach (var a in aaa.Where(x => x > 1))
{
Trace.WriteLine(a);
}
error CS1928: 'int[*,*]' に 'Where' の定義が含まれておらず、最も適している拡張メソッド オーバーロード 'System.Linq.Enumerable.Where<TSource>(System.Collection
s.Generic.IEnumerable<TSource>, System.Func<TSource,bool>)' には無効な引数がいくつか含まれています
error CS1929: インスタンス引数: 'int[*,*]' から 'System.Collections.Generic.IEnumerable<int>' に変換できません
なんだ言葉尻に噛み付きたいだけの馬鹿か
IEnumerable<T>関連だから列挙型という表現をしただけだよ
Enumは確かに関係ないね
>>393 俺用語はママとの会話だけにしときまちょうね
普通にLinqと言えばいいのにw
最近は列挙と言われるとLinqのほうを先に連想するからじゃね?
しねえよ
ふらっとC#,C♯,C#(初心者用)で最初に質問したのですが、こちらのスレに移った方が良いと言われたので…
これはもしかしたらC#の問題では無いかもしれないけれど、質問させてください。
現在、Visual C# 2010 Express でスクリーンセーバーを作成しています。そしてスクリーンセーバーの
各設定(背景の色など)をアプリケーション構成ファイル(app.config)に保存する仕様にしました。
設定変更用のダイアログボックスを作成し、そこで「Properties.Settings.Default.○○」を利用して
設定を変更しており、設定した値はきちんと保存されています。.scrファイルを右クリックして「テスト」
でスクリーンセーバーを起動すると、設定がきちんと反映されて動作します。
しかし、私は今 Windows7 マシンを使っているのですが、.scrファイルを右クリックして
「インストール」を選択するとスクリーンセーバーの種類や待ち時間を設定するダイアログが
表示されます。ここにある小さなプレビュー画面や、「プレビュー」ボタンを押して呼び出される
スクリーンセーバーは、きちんと設定が反映されて動作します。
しかし、待ち時間の経過によりスクリーンセーバーが呼び出される場合は、何故か設定が全く反映されず
app.configのデフォルト値で動作してしまいます。ちなみに、サブとして WindowsXP のマシンも持っている
のですが、そちらではこのような問題は起こらず設定がきちんと反映されます。
いくら考えても、どれだけネットなどで検索しても、全く原因の見当がつきません。
どなたかご助言をいただければうれしいです。
うるせーばか、ふらっとに帰れ
>これはもしかしたらC#の問題では無いかもしれないけれど、質問させてください。
わかってるくせにずうずうしいな
人を叩くのは気持ちいい、イキそうになる
>>399です。どうやらこちらではスレ違いのようですね。失礼しました。
プログラマは障害者ばかり
>>403 質問は2chなんて使わないほうがいいよ
これから質問者がいなくなるように潰しにかかるから
406 :
399:2011/10/31(月) 21:53:16.99
ほんとだ、質問した俺がバカでした
こんなきしょく悪い奴らしかいないなんて
やっぱり2ちゃんやってるやつは底辺の腐った奴らですね
ありがとうございました
二度アルことは三度アルニダ
>>399 初心者を馬鹿にするだけの粘着に絡まれて可哀想だと思ったが
ふらっとで回答出てるじゃねーか。
そりゃこっち来ても馬鹿にされるわ。
4時間前のネタにえらそうに
ずっと張り付いてないとレスできない廃人仕様になったのか
C#って自作クラス用の順位キューって出来ないんでしょうか?
作れば出来るだろ
さすがIDのない香ばしい流れだなw
順位キューってなんだっけ?
ランダムアクセスできるキューのこと?
優先順位付きキューのこと…かな
.NETのコレクションクラスには標準では用意されてないけど
ありがと
LINQのおかけであまり気にならないけど、.NETのコレクションは地味に弱いよね
数日前から何か妙だな
また変なのが居着いたか
つくづく池沼に絡まれる言語だな
間口が広いってことだろうが
ASP.NETでC#を使ってます
XmlDocument.LoadXmlで"aaa"などXMLではない文字列を渡してやってXmlExceptionを出してやるとcatchに飛ぶのはいいがcatch内の処理を一通り終えてもエラーページを表示しません
処理が終了しない感じです
LoadXmlの前に渡されるデータの始めにXMLタグがない場合はExceptionに飛ばすようにするとcatch内の処理がすべて実行されます
もちろん、catchは同じものです
>>420 ご報告ありがとうございます
次回からはご自身のブログにでも書きやがって下さい
>>420 何を言っているのか全くわからない、エラーページとかいうからWebBrowserかと思ったらそうでもないようだし
<%@ Page Language="C#" %>
<html>
<body>
<p>
<%
try {
XmlDocument.LoadXml("aaa");
} catch (XmlException) {
}
%>
</p>
</body>
</html>
こういうことだろ?
なぜかブラウザにエラーが表示されないと
当たり前
ASP.NETかよ・・・
凄まじいクズ仕様で魂が震えたわ
馬鹿正直にサンプル通り作ってないで間接的にDLL呼べ
今日も自称上級者の狂犬ばかりです
上級もへったくれも、ASP.NETを言われるままに作ってたらひどいことになるだろ
生成されるHTMLはゴミだし、他の言語で全く応用のきかない汚い謎コードになるのが関の山
ASP.NETはサーバーサイドプログラムをC#様で書けるようになる部分だけ活用するのが一番
いつもの押し付けがましい謎ソリューションは無視するのが無難だね
俺何か間違ったこと言ってるか?
自社製品にしか通用しない技術に投資させて客を囲い込むのはマイクロソフトのお家芸だな
AppleもGoogleもやってるじゃないか。
GoogleAppsの料金改定で一部の自称情強がわめいたのは記憶に新しいね
>>427 間違ったことは言ってない。
言ってないが、「俺何か間違ったこと言ってるか?」の部分は沸点の低い人から見たらケンカを売っているように見えるんだぜ。
落ち着いた日本語を心がけるのが吉なんだぜ。
分かればいいんだよ
次から気をつけろよったく
434 :
431:2011/11/02(水) 18:00:22.90
435 :
43I:2011/11/02(水) 18:29:49.10
誰がこの話題をここで終わらすと言った
俺は微塵も許す気ねーしw
たとえおまえにその気は無くても、こっちはけんか売られた事には変わりないんだ
この板にはIDが無いからIDが変わるまで粘るとかそんなちゃちなことはしないぜ!
このスレが終わるまでねちねちと言い続けてやる
43I…えぇと…?
>>436 そいつがルパンだ!ルパンをおえぇぇー!!!
数字も書けねえ奴と喧嘩するのか?
疲れそうだなw
439 :
4З1:2011/11/02(水) 22:39:29.78
成りすましはよくないよ
ノレノヾヽノの二才イはしない
ここまで1人の自演
IDなしってのは、こういう遊びをするためなんですね。
それに気付くとは
根菜か
大根だけに
太鼓判
447 :
デフォルトの名無しさん:2011/11/04(金) 23:23:02.95
e?
お前らって仲いいよな
おホモだちだからな
int, double のarray の宣言しただけの各初期値が0
ってのは言語仕様?処理系依存ですか?
0か1を挿入するときに1だけ挿入ですませたら気持ちいいので
仕様だったはず
Cの処理系依存な部分を排除する方針だったし
>>450 MSDNを見れば分るけど、「配列は型の初期値で初期化されます」とある
これは言語というか.netの仕様だね。 Monoだとどうなるかは知らん。
あと、三項演算子使えば、見た目は綺麗に書けるよ!
仮にCLRの仕様とC#の仕様が一致していなかったとしても、C#コンパイラが配列を初期化するILを吐くだけの話だと思うが
454 :
デフォルトの名無しさん:2011/11/06(日) 01:29:14.78
思うがだよね
455 :
デフォルトの名無しさん:2011/11/06(日) 05:20:02.36
C++のライブラリ(DLL)+C++/CLI(GUI)を作ってます。
突然デザイナがメインのフォームを表示できなくなりました。
デザイナのエラー表示は
C++ CodeDom parser error: line : xx, column : xx --- Unknown type 'XXX.YYY'. Please make sure that the assembly that contains this type is referenced.
If this type is a part of your development project, make sure that the procect has been successfully build.
です。
要は、C++/CLIのプロジェクトでUI部品を作り、フォームにのせたんですが、あるとき突然、デザイナがフォームを表示できなくなりました。
調べていくとどうもVisualC++2008 Express Editionのバグみたいです。(エディションというよりはデザイナがC++/CLIに対してバグを持っているようです。)
マイクロソフトはUIはC#、中間層にC++/CLIを作ってC++のDLLにアクセスしろみたいなことを言ってますが
それしかやり方がないのでしょうか?
ExpressEditionなのでできればC#を使いたくないんですが。。(C++/CLIやC++と一緒に開発できないので。。)
できればCLIスレあるんだからで聞いて欲しいんですが。。
EEだからC#使いたくないってのが意味不明
IDE使わないのが最強
秀丸で十分
インテリセンス使ってると、CなんとかクラスのBなんとかメソッドとしか記憶してなくて誰かと話すとき困ったりするよなww
マならばキーボードで会話しようぜ
>>455 そのライブラリをCから呼べるようにしてC#からDllImportがスマート
C++/CLIはMSに見捨てられてる
>>462 > C++/CLIはMSに見捨てられてる
マジで?どういうことなの?
デザイナはバグだらけ
WPF,Silverlight,XNA非対応
初版以降LINQなどの言語機能追加一切なし
VS2010でインテリセンス削除
CLR4との互換性なし(.NET4で動かすには再コンパイルが必要)
WinRTではサポートしないと明言
お察しください
>>456 ゴメン知らなかった。
>>457 ソリューション別にしないとダメだし
IDEも2個起動しないとダメだし
>>458〜
無理!
>>462 Cから呼べるようにするとC#でよべますか?
>>464 色々悲しい現実が・・
ってゆーかマイクロソフトは飽きっぽいな。
ちゃんと最後まで面倒見てあげてほしい。
皆さんありがとうございました。
>>464 ありがとう
そんなひどい事になってたのか・・・
C++切る前にまずVBを切れよ
VBコード見るだけで吐き気がする
無理
C++/CLIと違ってExcelVBAやらAccessVBAやらの資産が多すぎて、そこからVBに入門した人も多いから
自分もC++/CLIとVBどっちもなくなってほしい。
むしろExcelC#AとかAccessC#Aとか作ってほしい。
要するにC++/CLIは儲からなかったんだろうな
VBの客とか問題解決のためならいくらでも出しそうだもん
つーかVBはVC++(C++/CLIの方ではない)で作ったコンポーネントを金出して買うのが基本だからな。
何を血迷ったかWinFormsデザイナ付けちゃったから勝手に勘違いされたんだよ
もともと糊付け言語以上のものではないから今更
勘違いしてるのは
>>471の方だな。
RADこそVBの本質であり存在意義だったわけで、「何を血迷ったか」も糞もない。
それでなきゃ
>>470の話とも矛盾するだろ
473 :
471:2011/11/06(日) 15:19:46.81
C++/CLIのこと
申し訳ない
もともとでっち上げ感が半端無かったしね
>>468 > むしろExcelC#AとかAccessC#Aとか作ってほしい。
んだ。
プログラミングを始めようと思って、C++が有名とわかり、VC++をダウンロード
しかし、ウィンドウにつられよくわからず何時の間にかC++/CLIをやり始める
そして資料が少なすぎて死亡というパターンがありそう
C++とC#orVBの両方に詳しくないとC++/CLIは無理だよな
もともとC++を使っていて.NETに移行した人が旧システムを活用しやすくするためのC++/CLIだしな
これからはC++/CXの時代だから仕方ないね
Xaml+C++/Android
>>468 >Excel C#A
別にC#である必要は無いけど、今のCOMベースのを、VBAで扱わなければいけないのをどうにかしてほしいな。
過去の(負の)遺産の維持のために使われる労働力とVBAを使わされるユーザーの負担と
新しい言語・環境に移植するコストとその維持、を比較すると、後者の方が遙かに少ない気がするんだが…
とりあえず、例外機構の強化と、完全評価の撤廃は必須。あと出来れば、行と列やシートの添え文字が1から始まる変態序数をやめてくれ。
だからC++/CLIは相互運用以外には絶対使うなとあれほど(ry
>>481 >行と列やシートの添え文字が1から始まる変態序数
大昔のBASICからの流れだと、添え字0の方が変態仕様なんだが
普通に物を数えるときにゼロから数え始めるか?
10個って宣言したら1〜10まで使えるほうが自然じゃないか?
ゼロオリジンなんて機械の都合のいい方法を押しつけられてるだけだぞ
VBAでゼロオリジンに切り替えられることからしてどっちがデファクトだか分かりそうなもんだが
そしてVB.NETでは0にされた
それに配列は場所なんだからその場はゼロだろ
原点は1mか?
発明を押し付けとかどんだけ頭悪いの・・・
まあ0起番号でも1起番号でもどっちでもいいと言えばいいけど、
エクセルでふざけてると思ったのは、確かRange.Valueって戻り値が二次元配列なんだけど、
原点が[1, 1](0の列と0の行の値は全部null)になってるんだよな。
え、1ベースの2次元配列だろ?
あーそうだったかもしれん。
初めてデバッガで見たときはこんな妙な世界があるのかと
1オリジンがあること自体許しがたい
自分が使わなければいいとかそういう次元ではない。
FOR文はかなりの確立でTO x.Count - 1とか書くことになる。
狂ってるとしか思えない。
確率を確立と書くこと自体許しがたい
自分が使わなければいいとかそういう次元ではない。
あまつさえ確立と書く部分を確率と書いていたりする。
狂ってるとしか思えない。
気色悪い奴だな...
んじゃ、漢字の間違い以外は同意するんだな?w
For i = 0 To x.Count - 1とか書かないといけないのは0ベースの方だと思うが、C#スレで話すことでもない
でたw困ったときのスレチw
C#に存在しない FOR TO 構文を根拠に論理組み立てられてもな・・・
どうでもいいけど、
>>483辺りから読むと、どっちが文脈読めない
恥ずかしい馬鹿かははっきりすると思うよw
実際スレ違いなんだから仕方がない。
配列はメモリの座標だからな
X,Yの2次元の原点は0、0だ
配列の要素の個数は1でも
その要素がある座標は0だ
もうやめ!VBの話やめよ!ここC#スレだよ!!
>>491 当たり前だ
indexは座標であって、個数単位ではない
コントロールをフォームの一番左上に置くときに
x.Index-1,y.Index-1とする方が気持ち悪い
3Dゲーム作るときもあらゆる線形配列を-1にするのか?
バカモノ
>>500 〃〃∩ _, ,_
⊂⌒( `Д´) < ウルサイウルサイ!
`ヽ_つ ⊂ノ
ジタバタ
_, ,_
(`Д´ ∩ < スレチだスレチだ!!!
⊂ (
ヽ∩ つ ジタバタ
〃〃
宇宙の始まった時間は1なのか?
1の前はなんだ?
ここに人類の特異点が存在する
505 :
デフォルトの名無しさん:2011/11/07(月) 23:30:44.10
>>504 西暦の世紀が1から始まるのは混乱の元だよな
2011年が21世紀って今でもしっくり来ない
ようするにマトモな人間は0から数えるってことだ。
バカかガキか未熟者が1から数えると。
すげーすれちがいの話題だな。
ちなみに、数学初期には0の概念が無かった
宗教の無の概念により0の概念も加わった。
ちなみにマトモな人間は0から数えない。
どこの世界に、「ぜろ、いち、にぃ、さん」なんて
数え方するやつがいんだよ。
まともな人間はな。プログラマは0から数えないと。
カウントダウンすると必ず0意識するけどな
>>508 プログラマでも個数をゼロからは数えないという
説明をしてやったのにお前は理解力ゼロだろ
だってCの配列は、ポインターとオフセットだからな
両者の扱いが異なると使いにくくなる
一見不合理でもCの世界では合理的に完結している
プログラミング言語の出自自体、物理シミュレーションとかから始まってるからなぁ。
数学だと0ベースの方が自然(というか、式が簡単になる)ことが多いし。
1 2 3 4 5 6 7 8 9 11 12 13
素数を数えるんだ!
3 5 7 9 11 13 15 17
数学なら順番数えるだけのインデックスは普通1からだし
その昔科学技術計算に使われた(その分野ではまだ現役だが)FORTRANだって1からだし
アルゴリズムの本に書いてある疑似コードもだいたい1からだろ
順番だけなら統一されてさえいれば別に何で始まっても問題ない
Cは順番だけでなく基準位置からのオフセットという意味を持たせたから
優位性を語ってんだから、どっちでもいいとか抜かすコウモリはすっこんでろ
1からと0からでどっちが自然なコードになるかは場合によりけり。
サイズに注意するのとセルが1個無駄になることを除けば、0からでも
使えるものを1から使うことはできるが、逆はできない。
どうでもいい・・・
じゃあ読むな
消えろ
そういうのふらっとでやれよ
Cだと a[5] と *(a+5)は等価である。だから0から始める必要があった
そんだけ
恐ろしいことに、a[5]と5[a]も等価だったりする
>>525 落ち着いて考えたらたしかに・・・これはおもろいな、気づかなかった
ただの仕様に変な理由後付する必要ないと思うの。
バカばっか
5[a]→*(5+a)→*(a+5)→a[5]
一見強引だが規則通りなんだよなw
どうでもいいですよっ
>>517 数学、高校までだと1ベースだけど、数論とかやりだすと途端に0ベースにならない?
なんというか、配列の開始番号問題と、自然数に0を含めるかどうか議論は似てる気もする。
後置演算子の評価っていつおこわなわれるのでしょうか?
i = 0;
a(b(c(d(e ... xxx(i++) ... ) ) ) );
としたとき、aの評価が終わるまで
i==0 なのでしょうか?
そりゃxxx呼ぶ直前だろ
前置演算子でした
int x = -900;
print(x++)
で-900の出力は確認したのですが
それも確認すりゃ良かろう
どう見ても後置です。ありがとうございました。
というか、前置はそれが作用する式が参照される前、後置は参照されたあとにインクリメント、デクリメントされるって覚えときゃいいよ
それ以上複雑で、式の評価順序が問題になるようなケースで前置後置は使うべきじゃない
さあどうなるかな
int i = 0;
Func<int, int> func = (int a) => { Console.Write(a); return a; };
Func<int, int, int> func2 = (int a, int b) => { Console.Write(a); Console.Write(b); return a; };
func2(i, func(++i));
>>529 それはCが本質を突いてるってことだよ。
ブビーじゃこうはならん
>>538 この例いいね、ちゃんと理解していないと結果の意味がわからない
>>540 理解しているかの例としては良いけど、
同時に実際には組んではいけないコードの例としても良いなw
>>540 仕事上でそんなコード書く奴クビにするんで。
良いとは言えないかな。
〃〃∩ _, ,_
⊂⌒( `Д´) < クビダ!クビダ!
`ヽ_つ ⊂ノ
ジタバタ
_, ,_
(`Д´ ∩ < 俺が理解できないコード書く奴はクビだ!!!
⊂ (
ヽ∩ つ ジタバタ
〃〃
>538
それは結果が保証されてないでしょ。
C#ェ・・・
>>544 結果が保証されてないのはCじゃなかった?
C#はそれを踏まえて引数の評価順序を固定したはず
>The expressions of an argument list are always evaluated in the order they are written.
書いてある順に評価されます
549 :
383:2011/11/09(水) 12:35:32.01
System.Xml.XmlDocuments の説明のところに、「既定では数値エンティティは展開されます」とかいてあるのですが、エンティティを展開させずに出力する方法はありませんか?
数値エンティティや、特定のエンティティを展開せずに出力したいです。
IronPythonの中で使われてたのを見たことがある
循環参照の検知に使えるらしい
記述量とか含めC# で実用的なパターンマッチは作れるかな
C#モナドが大体わかったのでやってみようかと思う
どう思いますか?
以下のクラスをxmlにシリアライズするようにしたいのですがうまくいきません。
どうすればうまくいくのでしょうか?
成功するコード
var serialzer = new XmlSerializer(typeof(DataSet<int>));
var serialzer = new XmlSerializer(typeof(DataSet<string>));
失敗するコード
var serialzer = new XmlSerializer(typeof(DataSet<int?>));
public class DataSet<T>
{
public string Unit { get; set; }
public T Value { get; set; }
}
int?
これってなんだっけ?
シリアライズはいろいろ制約があったはず
Nullableはどうしても無理
XmlSerializerとかトラブルのもとだからやめとけ
楽しようとしたはずがつまらない制約でどんどんコードが複雑になっていくよ
XDocumentでちゃっちゃかXML化コード書いたほうが最終的には早い
559 :
デフォルトの名無しさん:2011/11/10(木) 22:50:36.41
むむ!!ヌルアブルはだめなのかぁ〜〜orz
ガックシorz
うーん、ほかにいいデシリアライズ方法を考えないとなぁ・・・
Nullableなんてあったのね
勉強になった
TじゃなくてフィールドがNullableならXmlElementAttribute.IsNullableで抜けられるけどね
>>558 それやると、バージョアップでクラス削除したりしたとき問題おきないか?
下位バージョンにも手動で対応しないとだめじゃん
DataContractSerializerじゃダメですかねー?
XML系のクラスってバージョンがあがったり
新しいものが出てくると、宣伝文句として
「より厳密に勧告に従うことが出来ます」
とか言うよね。
でも、はっきり言って余計なトラブルの元なんだよなw
XMLクラスのアップデートはうれしくない
あいつらもわかって言ってんだろうけど
新しいオプションとして追加されたり、
XLINQのように今までと全く別物として追加される分には何も問題ないだろ
新規コードでだけ使われるんだから
MSなので下位互換性のポリシーはしっかりしてる
Slimeクラスが分裂で新しいslimeインスタンスを作るとして
Slime slime3 = slime1 // slime3 == slime1
slime1 = slime0.bunretsu();
//slime3 != slime1
slime1 = slime3 // slime3 == slime1
ここでslime1のアドレスが変わらないようにしたいですが
どうすればいいでしょうか?slime3のようにアドレスのバックアップをとるしか
ないのでしょうか
はい
あとアドレスじゃなくて参照だからアドレス言うな
オブジェクトのアドレスは放っといてもGCで勝手に変わる
すいません、初心者スレにいきます
>>566 なんか難しく考えすぎてるんじゃね?
var new_slime = slime0.bunretsu();
でよくね?
それともslime0はプロトタイプパターンか何かなの?
末尾再帰最適化ってまだ安定して出来ない?
>>570 64ビット版の.NETで、ほんとに最後の行での再帰(ifとかの末尾でなく)に限り、
JIT時に最適化される。
きわめて限定的。
あと、C#→ILの段階では一切最適化しない。
F#を使え
なんか
System.Xml名前空間が見当たらないのですが
なんなんでしょうか?
VS11です
>>573 プロジェクトはwinformで作ってる?
参照設定がされてなかったりしてね〜。
カポーン
下記のようなXMLを簡単にデシリアライズにはどうすればよいでしょうか?
方法が分からないくて困っています・・・よろしくおねがいします。
※Tagは入れ子になっており、階層はnになります。
<Tag Name="A">
<Tag Name="A-1">123</Tag>
<Tag Name="A-2">456</Tag>
<Tag Name="A-3">
<Tag Name="A-3-1">7.89</Tag>
<Tag Name="A-3-2">000</Tag>
<Tag Name="A-3-3">
<Tag Name="A-3-3-1">文字列も入る</Tag>
<Tag Name="A-3-3-2">0.123</Tag>
</Tag>
</Tag>
</Tag>
それをシリアライズしたのと逆の方法
>>578 static Tag ReadTag(XElement element) {
var children = element.Elements().Select(e => ReadTag(e));
var name = (string)element.Attribute("Name"); var value = (string)element;
double? numvalue; double tmp; if (double.TryParse(value, out tmp)) numvalue = tmp; else numvalue = null;
return new Tag(name, value, numvalue, children);
}
>>580 遅延実行再帰かよwww
質問者じゃないけどいいもの見れて良かった
582 :
580:2011/11/14(月) 12:45:09.90
>>581 ほんとだうっかりしてた
この場合トラブルの元にしかならないと思うから最後の行のchildrenはchildren.ToArray()で
583 :
578:2011/11/14(月) 14:10:19.36
ごめんなさい・・・
.NET2.0の縛りがあってXElementがつかえませんでした。。。orz
そろそろXPを捨てる準備を・・・出来ないから困るw
捨てる準備はしてるよ…まだ捨てれないけど
586 :
デフォルトの名無しさん:2011/11/14(月) 15:21:16.74
iTextSharp以外の、日本語が扱えるPDF(ファイル)操作ライブラリってあります?
いくつか発見はしたのですが、どれももうメンテされていない(最終更新日が2年以上前)ようなのです。
ランタイムフリーなら有料でもいいんですが、iText Softwareと商用ライセンスを結ぶ場合もどうやら配布数で金額が変動するようですし・・・。
お心当たりがありましたら、是非ご教授ください。
>>583 2.0にはSystem.Xml.XmlElementがあるはず。
このクラス、SilverlightやWinRTで使えなくなるけどもね。
レガシー乙。
>>586 iTextSharpのAGPL版使ってPDF操作のところだけ
全く別の汎用的に使えるコンソールアプリとして作ってAGPLで公開したら
589 :
586:2011/11/15(火) 14:49:48.51
>>588 やはり、それしかありませんか・・・。一応、ソレも検討はしていたのです。
いかにも「GPL回避してます」という感じがしてあまり好きになれませんが、背に腹は変えられませんね。
アドバイス、ありがとうございました。そちらの方向で検討しましょう。
590 :
578:2011/11/15(火) 16:09:20.19
教えてください><
以下のクラスをXmlSerializerでシリアライズすると
<TagSet Name="REF">
<Tag>
<TagSet Name="test" />
<TagSet Name="refutesut" Unit="D" Value="123" />
</Tag>
</TagSet>
のようになります。<Tag>をなくして↓のようにしたいのですがどうすればよいでしょうか?
<TagSet Name="REF">
<TagSet Name="test" />
<TagSet Name="refutesut" Unit="D" Value="123" />
</TagSet>
※TagSetクラスのTagに[XmlText]を付与するとエラーになりました・・・orz
public class TagSet
{
[XmlAttribute("Name")]
public string Name { get; set; }
[XmlAttribute("Unit")]
public string Unit { get; set; }
[XmlAttribute("Value")]
public string Value { get; set; }
public List<TagSet> Tag { get; set; }
}
XmlElement属性
おお!ありがとうございました><
namespase N1 の間で
一つの静的クラスのメンバを自由に呼び出したいと思いましたが
あまり現実的ではないっぽいので
public static class a{...}
としてメソッドを h.p();,h.q(); などとタイピングに適した形にして
間に合わせました。
個人用途ですし最終稿では書き換えるのでこれがベストですよね?
>>593 リファクタリング前提であれば、そのようにしてもいいけど、
設計段階でおかしなことをしてると、依存関係ができたときに関係解消の手間がかかるので、
そこだけ注意すればいいんじゃないかな。
長い名前で不便に思ったことはないな
どうせインテリセンスに頼るしそんなにパパッと書きたいものはC#なんて使わんし
作法の問題はともかくアクセスレベルがpublicはいかんでしょ(
>>594の理由で)
internalで
名前空間といえば、フォルダ階層掘って置いたクラスを別のフォルダに移動させると警告量産されてうざい
あれ何とかならないんだろうか
それC#か?
物理パスには依存しないだろ
>>593 コードスニペット作るとかで対処するなあ。
そういうの、あまり良いとは思えない。
>>598 いやフォルダの中にクラス作ると名前空間にフォルダ名がつきやがるんだよ
それをそのままにして移動させると警告出まくりんぐ
>>600 フォルダにクラス作って、フォルダ名変えてみ
エラーでないから
やはりIDEを使わないのが最強
やはりコンパイラを使わないのが最強
そんな糞レス返さなくていいよ
はぁ?
マジ言ってんの?
バイナリエディタなんたらかんたら
要するに、防壁回路を構築するのは疑似画像プログラムを見ながら電脳で直接やるのが一番ってこと?
お、おう…
public enum Language
{
ENGLISH = 0,
JAPANESE = 1
}
で
public Language language = 1;
みたいに数字の1をぶっ込んだらJAPANESEになるような方法ってないの?
俺のやりたいことをなんとなく察して、どうにかしてくれ
(int)lang==1?lang.ToString()
ここエスパースレだっけ
public string[] Lang=new string[]
{
Japanese,
English
}
var lng=Lang[1]
public string this[int idx]
{
get
{
if(idx==1) return Japanese;
}
}
public enum Language
{
ENGLISH = 0,
JAPANESE = 1
}
Language[] lang=new Language[]{Language.English,Language.Japanese};
Language jpn=Language[1];
いい加減にしろ
普通にキャストできるよ。
(Language)1;
IDEよシリアル!ATATATATA
オマエはもう死んでいるっ
S.S.D?!
(Language)Enum.Parse(typeof(Language), "JAPANESE");
Distinct()とOrderBy()ってどっちを先にやるのが効率がいいですかね
線形に処理するDistinct()を先にやったほうがいいんじゃない?
まさかお前ら本気で
>>616の方法が出て来なかったの?
というか結局何がしたいのか分らない
public enum Language
{
ENGLISH = 0x10,
JAPANESE = 0x11
}
(language)1;
みたいに数字の1をぶっ込んだらJAPANESEになるような方法ってないの?
俺のやりたいことをなんとなく察して、どうにかしてくれ
>>624 Language.JAPANESEが返るようにするなら
public static explicit operator Language(int value)
{
switch(value) {
case 0 : return Language.aaa;
case 1: return Language.JAPANESE;
default : return Language.zzz;
}
みたいにすればいいんじゃねーの?
>>625 列挙型の場合値以外に1番目を指定する方法はないってこと?
でもforだと値が何であってもちゃんと順番通りでるよ
628 :
デフォルトの名無しさん:2011/11/18(金) 13:40:42.85
Enum.GetName(typeof(Language), 1)
こういうこと?
Language[] langage = (Language[])Enum.GetValues(typeof(Language));
今日の列挙型スレ
enum Language
{
Japanese="日本語"
}
Language jpn= Language[1]
Language jpn=Language["日本語"]
string 母国語=Language.Japanese;
こんな感じで出来たら楽なのに
実際はできないから引数に応じて
switch文書かないといけないから面倒
3番目はだめだな
string 母国語=Language[Language.Japanese];
こんな感じ
ハッシュでも使ってろ
634 :
デフォルトの名無しさん:2011/11/18(金) 19:57:23.89
DescriptionAttributeあたりのstringを取るカスタム属性を各フィールドに貼っといて、
リフレクションでstaticなディクショナリに入れとくのが定石かな
>>636 それC#3.0なら拡張メソッド使えっていうのが意味不明
別に拡張メソッド無くても普通に静的メソッド呼ぶだけだし
属性は属性で宣言と一緒に書けるとか列挙体の型に依存しないとかメリットはあるわけで
enumにメソッド書けんやろw
enumでtoStringがオーバーライドできたら何も問題はなかった
MyEnumExt.ToStringExt(value) が value.ToStringExt() と書けるようになって
前者なら属性の方が良いが後者の書き方ができるなら速いしスマートだしで拡張メソッド一択とか
そもそも何のために属性使ってるのか全く理解してない
とりあえず誰でも望むことだよな
JAVAと違うのは何か意図があっての事では無かったの?
まぁどうでもいいけど。
Enumはタイプセーフが保証されなくて好きになれない。
>>642 でもマジックナンバーよりはましさ。
集合型はあればいいのにとは思った
myset = abc | enum.B よりは myset += enum.B 、
myset = abc & !enum.B よりは myset -= enum.B
if (myset & !enum.B != 0) よりは if (enum.B in myset) の方が、ビット演算とかじゃ無くて集合演算してるって気になれるし
Javaと同じのが欲しければ普通にクラスにすればいいだろ
現にJavaのライブラリなんてint定数だらけなんだからそれよりはタイプセーフじゃないenumでも遥かにマシ
C#式のenumさえあれば、メモリやパフォーマンスを気にしてAndroidのAPIがintだらけになることも無かったんだぞ
よくタイプセーフと一つ覚えのように言われるが、Javaのenumオブジェクトを扱うときに
一切switch使わないでenumクラスに定義したメソッドを呼ぶならいいけど
switch使ったらタイプセーフなんて全く意味ないぜ?
その時点で値を限定してしまってるんで同じこと
Enum+拡張メソッドのお陰で、ある程度は不便な点は解消されたので、これはこれでいいとは思う。
JavaのEnumはほとんど普通のクラスと変わらなくて、
使うのが面倒になってる部分があるので、あまりすきじゃない。
>>645 Enumが拡張されたら意味ないって事?
そもそもenumを文字列にしたいとか、intをenumにしたいとか、
皆無とは言わないけどレアケースだからどうでもいいといえばどうでもいい。
ただビットフィールドの機能はなんか中途半端に感じる。
いちいちビットマスクと論理演算しなきゃ値のチェックもできないんじゃ、有難味があんまりない
>>648 >ただビットフィールドの機能はなんか中途半端に感じる。
確かに敷居は下がったけど、
10進数しか知らない同僚には理解できないだろうなw
>>647 どうせcase全部書いてもdefaultでエラー投げるようにするだろ?
範囲外の値を入れたらエラーになる引数なんて世の中に腐るほどあるのに
なんでenumだけ特別に目くじら立てるんだろうな
確かにenumに好きな値持たせたりできるのは便利な場面はあるかもしれないが
タイプセーフなんか全くどうでもいいわ
>>650 そりゃそうだけど当然過ぎて問題視してなかったわ
Enum拡張する際、影響範囲を調べ対応方針を決める
対応後に問題があれば対応漏れであって、タイプセーフとか全然関係ない
で、タイプセーフの利点は?
想定外の値が入らないことをタイプセーフと呼ぶなら、それをコンパイル時に検出できないと意味がない
またどうでもいい事で騒いでんのな
スレ違い
658 :
デフォルトの名無しさん:2011/11/20(日) 01:11:21.91
String.Format()で{って文字列として埋め込めないんですか?
FormatExceptionになってしまいます。
例:
String.Format("hello{ {0} }", 1);
以下のコードは通ったよ・・・。@VC#10EE
string.formatのパーサーエラーなんだとおもうけど、変なエラーだね。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(string.Format("{0} {1} {2}",'{',10,'}'));
}
}
}
>左中かっこ ({) および右中かっこ (}) は、書式指定項目の開始および終了として解釈されます。
>したがって、左中かっこおよび右中かっこを文字として表示するためには、エスケープ シーケンスを使用する必要があります。
>左中かっこを 1 つ ("{") 表示するには、左中かっこ 2 つ ("{{") を固定テキストに指定します。
>また、右中かっこを 1 つ ("}") 表示するには、右中かっこ 2 つ ("}}") を指定します。
http://msdn.microsoft.com/ja-jp/library/txafckwd(v=vs.80).aspx
661 :
659:2011/11/20(日) 01:45:09.22
>>660 まともなプログラマだったら、エスケープ記号は\だと思うとおもうんだけど。
どうしてそうなった・・・。
2chってこういうの多いけど、気色悪い引用の仕方だな。
>>661 ただのC文字列のローカルルールだろそんなの。
井の中の蛙がまともなプログラマなのかい
664 :
659:2011/11/20(日) 01:51:47.03
個人的には多数派だと思うけどね。
エスケープを同じ文字の連続でやるとかよくあるっていうか
それこそ文字列中の\もその一種じゃないか
666 :
659:2011/11/20(日) 02:13:27.91
>>665 自分自身のエスケープに自分を2連続は有ると思うけど、とっさの判断で出てくるのは\記号だと思うね。
資料がぱっと検索できればまた違うのかもしれないけど。うーん。。。
それに、ライブラリがコンパイラと同じエスケープ記号を使うのはむしろ気持ちが悪い。
正規表現パターンなんかはそれだけど
個人的なのか多数派なのか
つか正規表現はそのせいでraw文字じゃないと醜くてかなわん
お前らって参考になることもあるけどすげーどうでもいいこと議論してることも多いよな
お前らって参考になることも1000レスに2〜3回あるけど、すげーどうでもいいこと議論してることが多いよな
有意義な時間という言葉があるくらいだから人生のほとんどは有意義じゃないのさ
キリッ
この板でキリッてついてないレスのが珍しい(キリッ
\は文字列中でエスケープしないといけないから\\{になって不自然だからじゃね?
677 :
デフォルトの名無しさん:2011/11/20(日) 12:45:47.43
verbatim string があるだろ
Python3なんか.NET式になったな
新しいスタンダードなんだよ
>>661 \ に意味があるなら \\
" に意味があるなら ""
% に意味があるなら %%
{ に意味があるなら {{
全然問題ない
そのせいでXAMLのマークアップ中にエスケープしようとすると悲惨なことになるがな
681 :
デフォルトの名無しさん:2011/11/20(日) 13:25:42.40
entity reference の嵐ですよっと
{}の二重化だと期待する動作になるフォーマットが存在しないことがあるんだよな
@"\{{0:g}\}" となることを期待して
Console.WriteLine("{{{0:g}}}", DateTime.Now);
とか書くと、実際には @"\{{0:g\}}" になるという
{}のネストは出来ないって明記されてるんだけど
正直、最初にC#に入って書式文字列の仕様を知ったとき嫌な予感はした。
>>683 応用したらなんか攻撃的なウィルス作れそうだな
ごめん俺には
>>683が言ってる意味がマジで分からない。
っていうか、その\ってどっから出てくるの?w
どこからと言われてもスレの流れからとしか
流れも含めて補足すると、
> フォーマットのエスケープは {{, }}
> \ じゃねーのかよ
> (以下、それぞれに対する話)
これを受けて683
仮にエスケープが \ なら @"\{{0:g}\}" とかけるフォーマットが、
エスケープが {{, }} だと記述不可能 ("{{{0:g}}}" だと別物になる)
いや、言いたい事に対して {{{って書くと分けわかんないから
使えないけど説明用に\使ったんだろ?
架空の構文じゃなくて望ましい出力結果書けば数レスは圧縮できたのにね
void HogeMethod()
{
var wr = new WeakReference(this);
Task.Factory.StartNew(()=>{ /* wrを使う */ }
}
ラムダ式に直接・間接的にthisの参照や、thisを必要とするコードを書かない限り
内部で勝手にthisの強参照を持つことはないですよね?
どうなってんだろうなあと思って検索したら
>no ECMA and ISO/IEC specifications exist for C# 3.0 and 4.0
は?
うん、標準化があるの実は2.0まで。
まあ、MS以外のC#は実質的にmonoしかなく、
そのmonoは4.0どころか、すでに5.0対応済みなんだけども。
Monosuge-
【審議中】
∧,,∧ ∧,,∧
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u'
long t = DateTime.Now.ToFileTimeUtc();
MessageBox.Show(DateTime.FromFileTimeUtc(t).ToString());
普通に考えると上手く行きそうですが実際に実行すると9時間の時差が生まれるようです。
longにして上手く戻す方法はないでしょうか?
>>697 事故です
UTC使わなければ良かったw
しかしUTC同士の変換で時差が生まれるのは違和感あるな
699 :
デフォルトの名無しさん:2011/11/21(月) 21:22:55.41
UTC+09:00じゃないの?
>>698 「UTC同士の変換」 で時差が生まれてる訳じゃ無いだろw
JST = UTC + 9:00 なんだから、当然っつーかなんつーか。
ToFileTimeUtcはUTCに自動で変換されるけど
FromFileTimeUtcはローカル時刻に変換されないってだけだな
702 :
デフォルトの名無しさん:2011/11/21(月) 22:00:45.94
APIとして微妙な感じだな
DateTimeの数字だけ指定するコンストラクタもDateTimeKindを指定しなければUTCになる罠
文字列にして+9:00がついてなかったら注意すべき
SQL文を実行するときに、検索条件を動的につなげていくことがあると思います。
今までは以下のようなコードを書いてきましたが、if文で条件わけするのが面倒になりました。
何かよい方法ないでしょうか?
sqlText1 += " select * from";
sqlText1 += " where 1 = 1";
if (s != null) {
sqlText1 += " and id = :id";
command.Parameters.Add(":id", s);
}
その前にStringBuilder使おうよ
Builderパターンで書き直す
select * from table where (:id is null or id = :id)
709 :
704:2011/11/23(水) 13:49:13.58
ERPではこのような問題をどうやって解決しているんですか
前見たときは独自に実装していたような..
>>706 クラスごとにインターフェイスを実装しないといけないと思うのですが、
面倒ではありませんか?
>>708 コンパイラが最適化してくれるのを期待して、
10行程度のSQL文はすべてstringで実装してます。
StringBuilderを使ってもいいのですが可読性が落ちるので..
コンパイラはそんな最適化しない。
>704
ラムダ式を使って遅延実行する。
ごめんラムダ式って言葉聞いたばかりで。
必然的にめちゃくちゃな回答になったなw
>>709 StringBuilderのほうが可読性が高いと思うが。
StringBuilder SQL = new StringBuilder();
SQL.AppendLine("SELECT *");
SQL.AppendLine("FROM foo");
SQL.AppendLine("WHERE ***");
デバッグ時文字列切り出すとき改行ついて便利だけど・・・
どっちもどっち。何かもっt根っこの部分で間違ってると思うよ。
>>714 お前が生きていること自体も間違っているけどな
誰かさんが反論できずに逃げ回っているからねw
そう言えば、三項演算子使って一気に生成したこともあったなw
それで大幅に速度改善されるって訳でもないのに、メンテナンス性最悪だったわ
すまん途中で書き込んだ
>>706が言ってるのはStringBuilderじゃない。
検索ロジックに応じた、その画面専用の条件句ビルダーだろ。
ビルダーの中でnull判定することで呼び出し側の分岐を無くすと読めるが。
可読性は上がるはず
暇さにかまけてこういうの作ってみた。
ttp://ideone.com/i4dPK SQL覚えるときにでもつくろうと思ってたが当面出番はなさそうだ。
こういうのはどういう感じに見えるのかよくわからないので、意見があれば頂戴したい。
Seasar2のクエリビルダとか参考にすると面白いかもしれないし頭がぐるぐるするかもしれない
>>722 気のせいだし、関連性もありません!
変数の命名がダサいのは仕様じゃー!
>>723 調べてみる。
ORマッパーとか使うなら直接SQLさわるもんじゃないだろうと思うが
あながちそうともいえない
asp.netでsoapをしゃべるアプリケーションを作りたい
何かさくっと作れる方法ないですか?
・.asmx Webサービス
・WCF
・ジェネリックハンドラー+SoapFormatter
普通にWEBサービス作ったら良いだけでは
LINQ使っても余り効果のない状況や
逆効果になる状況というのは何かあるでしょうか?
パフォーマンスの観点でいうと、LINQは常に不利なような。
IEnumerableになるぶん、メモリ使用量的に有利な場面はあれど。
あれ、そーなんだっけ?
defferedだからコレクションとかに対しても速いイメージあるんだけど
遅延実行と速度は関係ない
全要素が必要とは限らないから、速度に関係あるんでねーの?
foreachだって全要素必要なく結果が出たところでbreakすれば一緒でしょー
多段にならない分、パフォーマンスの観点から見るならベタforeachのほうが速い
要素数が多いとメモリにやさすぃ
要素の途中でうちきれる場合はもっとやさすぃ
って理由でLINQの方が速いっしょ
メモリの罪具合にもよるけどフルガベコ避けやすいし
ぬるぽといいフルガベコといいお前ら略すの好きだな
インデクサでアクセスしましょう
前時代的に
まあ、最初に確保したバッファーを使いまわす書き方もできるし<非LINQ。
要件しだいだけども。
わざわざそんなことしたくねえなあ
その場に最適化した実装をすれば汎用実装(=LINQ)より有利なのは間違いない
だがいちいち最適化した実装書くほどのことってまずないよね
べたなforループが好きです。でも、降順forループはもっと好きです
昔LINQは100倍遅くなると言う人が居てだな…
怒られるから使わない方がいいよ
LINQは100倍遅くなる
---
日本語訳
私は馬鹿なのでLINQが理解できません。
LINQってしっくりこないんです
スタテック
star tech
>>745 ひどいとこ勤めてるんだな
転職すれば?
だいぶ住人が入れ替わったんだな
長寿と繁栄を
やあ、クラさんだよ
まあ確かにlinqはそれ以前のC#っぽくないから嫌われるのは分る。
というかC#はバージョンアップするに従って、どんどんキモくて楽ちんな書き方ができるようになってるしな。
俺はどうにも自動実装プロパティが好きになれない
from where なんちゃらは気持ち悪くて使ってないな
Where().Select()のほうが書きやすいしわかりやすい
>>745 検証結果つきで遅くなる!って結論づけてたサイトって
のきなみ、コメントでダメだしされて
deferredを理解してないことが発覚したり
そもそも本来比べることの出来ないものを比べてたりで
理解できてない人が勘違いした飛ばし記事書いてただけ
じゃなかったっけ?
っても海外のページしか見てないけど
>>755 >俺はどうにも自動実装プロパティが好きになれない
そう?
俺にとっては、結構待ってました機能なんだが。
自動実装プロパティってどんなメリットがあるの?
というか、値を出し入れするだけの何もしないプロパティって意味あるの?
その話も、もう100ぺんぐらい聞いた気がするよ。
同じ議論を繰り返すもいいかもな。前時代的に。
2ch掲示板が技術系の議論に向いてないんだよな
昔結論の出たことが簡単に参照できないから何も蓄積されない
「君」がまとめサイト作ればいいんじゃね。
C#は今はメインで触ってなくて、久しぶりに来たんだが、
最近おもしろい動きとかないの?
スレみてると3年前と何もかわらない話題しかないんだが
765 :
デフォルトの名無しさん:2011/11/25(金) 00:44:05.37
>>759 自動プロパティを使わないで実装してみればいい
「将来プロバティーとして本格実装する為」という、どうでも良い理由で片付けられているから疑問視する人が後を絶たない
いや、その程度でしか理由がないならパブリックフィールドでも全然構わないと思うが
.net 4.5も微修正だけっぽいしなぁ
>>766 ライブラリを出荷するようになれば、違いがわかるよ。全然構うでしょ。
>>762 そうそう、だからwikiを併用する必要がある
(そしてきちんと編集する人がいて活発なら情報が集約されてかなりいい感じにはなるが)
あと、次スレ作成機能とかあれば、重複スレの乱立もないし、スレ番号の付け間違いもないし
過去ログ参照もしやすくなるし、ある程度勢いがある/スレが続いてるなら、自動的に次スレをたてれば便利だし。
いいことずくめな気がするんだがな。 良くも悪くも2chは変化がないな。
>>759 たとえばpulbic int hoge { get; private set;} とか。
>>767 C#の話ならasyncが入るだろ
微修正どころかLINQ級の新機能だぞ
>>768 人によっては必要な機能なんだが、説明がメンドイからなのか一般向けには適当な理由で誤魔化されているって話
private setとかwpfのバインドとか、結構普通の使い方でも必要になる機能なんだけどね
そこら辺も不要な人は使わなくても良いと思うよ
>>770 concurrent系に注力してく感じなのかな
新機能ってつくと心なしかワクワクするな
>>763 まとめサイトは上手に管理しないと続かないじゃん
>>769 だよな、運営の仕方なんか見てても今後何か進化があるようには思えない
2chの上位互換規格で例えば
>>65+763とかでスレ65のレス763が参照できるような掲示板けっこうまじめに考えてるわ
問題は新規が気軽に入ってこれる窓口なんだよなぁ
>>755 実際、「たまたまAndersの起源が良かったからOKが出たんじゃね?」とか言われる程度には微妙扱いではある。
個人的な感想としては、入ってよかったと思ってるけど。
>>759 あとからの変更に強い。
個人で、単一プロジェクトでやってる分には、
フィールドにしておいて、必要があればあとからプロパティに書き換えればいいじゃんとか思うけど、
人とかプロジェクトまたぐと最初からプロパティでないとまずい。
>>772 asyncはマルチスレッドでも便利に使えるけどスレッドとは直接関係ないよ
Clickイベントが発生して1秒以内にキーが押されたらダウンロードを開始して
それが終わったら画面に表示する
みたいなイベントで書いてると状態変数が必要になって
とってもめんどくさい非同期(≠マルチスレッド)処理を簡単に書ける機能
>>770 まあ、ライブラリにはあんまり手が入らないけどね。
async はほとんどコンパイラーの仕事なんで。
>>772 concurrent と async はまた微妙に違うんだわ。
まあ、ライブラリ的には concurrent にも力入ってるけど。
あと、.NET 4.5 はメタデータの読み出しの辺りに手が入ってる。
WinRT 連携用。
>>775 マルチスレッドじゃない非同期処理ってのが、いまいちピンとこないんだが
invocationとexecutionとを別に扱うような場面を想像すればいいんかな?
なんだか面白そうだから、久しぶりにちと触ってみるか
>>777 IO待ちとか、別にスレッド要らないでしょ。
まあ、WindowsのIO待ちは内部的には専用スレッド立ってるだけって話も聞くけど、
少なくともユーザーにとっては。
あと、.NET 4以降のTaskクラスは、継続タスクを可能であれば同じスレッドで実行する。
C# 5.0のawaitも、非同期タスクがすでに完了済みだった場合はサスペンドなしでそのまま続行。
>>777 順番に処理したいのに、途中にイベントやコールバック待ちが入って書きづらいことってよくあるだろ
ShowConfirmMessage(ok => { if (ok) DownloadDataAsync(data => { textBox.Text = data; }); );
こんなキモいことしなくても
var ok = await ShowConfirmMessage(); if (ok) { await DownloadDataAsync(); textBox.Text = data; }
と自然に書けるようになる
上のは継続渡し使ってるからマシだけど、継続渡しも使わないならステート図でも書かないとわけわからん
自動実装プロパティは、ASP.NETやXAMLのデータバインドがプロパティを要求するから
というのが一番大きいかなあ。
パブリックフィールドじゃ動かないケースが結構あるからね。
将来の変更云々はどうでもいい、とは言わないけど、そんな対した話ではないかな。
データバインディングがプロパティしか対応しようとしないのも、
最初からプロパティ使うの推奨したいってことでしょ。
>>782 Task<T>クラス自身がFutureになってる。
asyncは、Taskクラス+yield returnを使ったコード生成で実現してる。
なるほど。とても分かりやすい説明だ。
785 :
デフォルトの名無しさん:2011/11/25(金) 04:48:40.49
>>745 で比べたら60倍ぐらいしか遅くならないんだったな。
やりなおし
TaskってDisposeあったからなんだかいやだったけど
awaitでつかわれるのなら、もうDispose呼ぶの気にしなくても良くなったのかにゃあ。
元々気にしすぎかな
BitmapがIDisposableなのはどうせ単にnew Bitmap(Filename)したときのファイルロックをはずすためだけだから
ファイルから作らないBitmapは解放しなくてもいいやとか思ってて
「なぜか最近Windowsの調子が悪いな、7になってもこのざまか!」とか考えながら
自分のプログラムでデバイスコンテキストリソースを大量に浪費してたのはいい思い出。
自動実装プロパティは
var c = new Test(){ A = 1, B = 2};
という書き方を知ってから捗るようになった。
データ格納用のクラスを良く作るので。
>>787 MSDN、MS公式提供のものを含めて、TaskのDisposeをちゃんと呼んでる例をみたことない。
Dispose呼ばない場合、WaitHandleの解放がGCのタイミングまで遅れるだけ。
WaitHandleとかってせいぜい1ワード程度のネイティブリソースなので、
GCまで解放されなくても特に何の問題もない。
結局これからもC++は消えないんだな
C++でできることをC#でできるようになぜしないんだ
ネイティブとマネージは狙うところが違いすぎて統一は無理ね。
しょうがない。
そんなにその子の家がいいんならその家の子になっちゃいなさい!
w
>>793 C#の文法で、ネイティブコードも吐ける様にしてくれた方が
今のC++を使い続けるよりも、ずっと嬉しいんだがなあ
…あれ?C#+WinRTってネイティブになるんだっけ?
>>757 >deferredを理解してないことが発覚したり
「そんなことも理解しないで遅いとか言うな!」
見たいに言う人が居るけど、実際どこまで知ってたらいいんですか?
はっきり言って、直感的に使ってみて、速さが感じられないなら
遅いといわれてもしょうがないよ。
だって、そこが開発効率とか、そういう売り文句になってるわけだから。
ぶっちゃけ、売り文句も「ちゃんと言語仕様をよく理解すれば、直感的で使いやすい」ってすればいいんだよw
>>790 それは一応フィールドでもできるのではかと
リフレクションとか使ってた場合もフィールドからプロパティに変えられると終わるし
自動実装プロパティはまぁ便利なんじゃね
動的コード生成でもプロパティの簡単さに比べると、フィールドが混ざると相当面倒になる
たぶんもう誰かが散々言ったことだと思うけど、あえて(自動実装)プロパティーを使う理由はあるのか、
っていう設問自体がそもそも奇妙なんだろうな。
むしろ今となっては、あえて生のフィールドを晒す理由はあるのか、と設問する方が自然。
プロパティーはフィールドより機能が高い上に、自動実装プロパティによってフィールドを晒すのと
そう変わらない手間でとりあえず書けるようになったのだから。
初期化子書けないのどうにかしてくれたら完全に置き換えるよ
その点は確かに。
でも仮に書けるようになった場合、フィールドと同じように行番号が若い順に
初期化されるのかね。なんかスクリプトみたいでちょっと気持ち悪い気も
>>796 まあ、C++の文法を整理したものが必要というのは確かなんだけど、
途中で切れた。804の続き
C#はガベコレやら、.NETのライブラリやらを前提にした機能が多いから。
>>797 その通りなんだけど、
わかってない人のコードってLINQに関係なく遅くなるしね。
>>797 LINQの売りが速さだったことなんてないでしょ
直感的に使ってみて遅く感じられないなら、それでいいじゃん
Access の VBA に限界を感じたので、.NET で書きたいんだけど、
LightSwitch ほどとは言わないものの、簡単にAccessライクなアプリを作るには
どういった方法がおすすめですか?できればフリーの環境がよいです。
フォームや分割フォームの、レコード切り替えなど基本的な部分が書きやすければなんでもいいです。
今のところDBはSQLiteを考えています。
ADO.NET
>>790 単純にデータ格納用ならいいと思うけど
その書き方って隠蔽ができてなくね?
コンストラクタ使って生成すべきじゃね?
と思ってしまう
うまく言えないけど
>>809 ぶっちゃけ手抜き用の機能だから、隠蔽とかきちんとしたいときはコンストラクタ用意すればいい
>>810 だよね。
勘違いして乱用されたら痛いなあと思って。
>>808 ADO.NET って、オプティミスティック同時実行制御 とか、衝突対策の仕組みが元々あるんですね。
なるほどです。
linqって何でこんなにも、とっつき難いんだろうー
SQL文と似ているけど、何か違う
814 :
デフォルトの名無しさん:2011/11/27(日) 11:40:17.03
技術者のオナニーでしょw
そういうオナニーはよくあるよ
Cの構文なんかも技術者のオナニー要素あるし
変に楽しようとするとオナニー実装しちゃうことよくある
>>813 単に慣れの問題だと思うんだ
普段慣れ親しんでいる物と違うから、とっつき難く感じる
fromキーワードとか使ってるからだろ
Where().Select()表記なら何もわかりにくいものはない
817 :
813:2011/11/27(日) 12:01:41.49
<root><user>
<name>name</name>
<sex>man</sex>
<passwd>passwd</passwd>
</user></root>
XElement element = XElement.Load(txtXmlFilePath.Text);
var query = from n in element.DescendantNodes("user")
select n;
<user>以下をすべて取り出したいんだけど、怒られちゃう
SQL文と違うやん
XElement.Parse(Text).Desendants("user")
819 :
813:2011/11/27(日) 12:23:00.81
>>818 とりあえず、動いた
ありがとう
from p in XXX
XXXには何でも書いてOK?
まずはmsdnを調べる習慣を付けよう
クエリ式は中途半端にメソッドが混じるから止めた方がいいと思うんだよねえ
中途半端に似てるせいで違いに戸惑うことの方が多いと思うんだけど
>一般に、LINQ クエリを記述する場合、可能なときは常にクエリ構文を使用し、必要に応じてメソッド構文を使用することをお勧めします。
>この 2 つの形式の間に意味および動作についての違いはありません。
>クエリ式は多くの場合、メソッド構文で記述された同等の式に比べてわかりやすくなります。
こんなこと言ってるけどさ
ハァ?って感じだよね
なにより遅いし。
分かりやすくないし
>クエリ式は多くの場合、メソッド構文で記述された同等の式に比べて誤解を招きます。
こうしよう
俺は別に判り難いと思わんがなあ
慣れてないだけじゃない?
多くの人は慣れるほど使わないかと
ILとの直交性がないからなぁ。ふつう使わないだろ。
クエリ式はfromをいっぱい並べたいときだけメソッド式より有利
830 :
デフォルトの名無しさん:2011/11/27(日) 14:20:47.83
>>813 オラクルのPro*Cも相当ひどかったが
あれと同じにおい?
最初頑張って使ってたけどメソッド式を見た瞬間に乗り換えたわ
マジで存在意義がわからん
832 :
813:2011/11/27(日) 15:13:02.31
>>827 そうだよね〜
Enterpriseじゃ未だに.NET 2.0だから、Linq覚えれないよね
仕事で使わないと実践的な使い方とか、なかなか覚えれない
>>830 SQL ServerメインだからOracleはわからん
Oracleは最近使い始めたばかりだから、まだストアド書けるレベルにもなってないもので
エンタープライズだから.NET 2.0というのは違うでしょ
自分の世界がすべてだと思わないように
Pro*Cは吐かれたソースがわけわかめでわろた
Pro*Cは単純なサンプルのソースすら汚い。
オラクルはバグが多いはずだ。
ラムダはlinqとセットで使わないとメリットがないと思うのは俺だけ?
普段使うところない気がする
今となってはdelegateの存在感が・・・
>>836 お手軽な匿名関数としての利用価値がめっちゃあるじゃん
ヘジたんはデモでLINQ使うときいっつもメソッド形式使ってるよね
お手軽っていう理由だけだと通らない現場もある。
現場ごとにあわせればいいだけの話
頭の融通が利かないのが一番悪
>>836 用意されているのでもLazyやDelegateCommand
自分で使っていくにもfactory的に引数で受けるようにしたりとか
使おうとすれば幾らでも使いどころあるよ(その辺の使い方は関数型言語の考え方を見るといいかも)
このスレでfactoryってよくきくけどなんなの?
そういう用語どこで覚えてるの?
>>836が無名関数とラムダを区別している一方で
返答者は区別せずに回答してる件
C#では () => { } と () => 式 の両方をラムダ式と呼ぶから匿名メソッドと実質的な違いはない
delegate() { } との表記の違いだけ
Expressionになるラムダを指すのなら、
LINQ以外でも式がデータとして取れるのでタイプセーフに名前を取り出したり
それとILビルダー(最後にCompileしてFuncを作る)としての役割もあるね
>>847 Prismでやってたな、それ。
protected virtual void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression)
{
var propertyName = PropertySupport.ExtractPropertyName(propertyExpression);
this.RaisePropertyChanged(propertyName);
}
MSって基本的にクラスやメンバの名前にデザインパターンの慣用名使わないから
Javaなんかと違って知らないうちに使っててもわかりにくいんだよね
デザパタ名嫌いだからMSの方針は好みだけど
Prismなんか持ち出さんでもASP.NET MVCにあるよ
var threadSafeHandler = Interlocked.CompareExchange(ref Raised, null, null);
Livetのイベント呼び出しがこんなコードになってるけど
32bit環境なら32bitまで、64bit環境なら64bitまでの代入や取得ってアトミックだった気がするんだけど
違いました?
それはCompareとExchangeをスレッドセーフで処理するメソッドじゃね?
>>853 nullとの比較だと、元の値を変えずに取り出す事と同じになる。
Interlocked.Readの参照版が無いからこれで代替してるんだろう。
最適化を抑制してるんだろうけど、本当に必要なのかこれ
MSのコードでそんなことやってるの見たことないし、VBのRaiseEventもそんなことしてないはず
C#の言語仕様だと、データの依存関係は必ず保持されて変数の値は順番通りに計算されるとあるが
>>855 コレクションのSyncRootはComapreExchangeで生成されてるよ
CompareExchangeってダブルチェックロッキングの代替だと思ってたんだけど違うの?
>>856 そりゃうっかり2つ作っちゃったら困るからな
852はreadの代わりにしてるだけ
>>857 ダブルチェックロッキングみたいな、比較“代入”だけなら、問題にならないはず。
86系 CPU だと確かダブルチェックロッキング正常に動くって話だったと思うし、
.NET 2.0 以降のメモリモデルなら、volatile つければ他の環境でも動く保障つくはず。
CompareExchange は比較“交換”だから勝手違うと思う。
>>858 4.0 で lock(this) は消えたけど、代わりに CompareExchange 使ったパターンになったのよね?
あの CompareExchange は必要なんじゃないの?
>>860 イベントアクセサのあれは本当にcompare−>exchangeしてる
readだけの箇所にはInterlocked使ってない
じゃあ、ロックフリーな遅延初期化って
Hoge a = this.x;
if (a == null) {
a = new Hoge();
Interlocked.CompareExchange(ref this.x, a, null);
}
だけでいいの?
少なくともthis.x != nullなのに初期化が終わってない状態には
ならないと思うけど
ちと話しぶった切るけど、、、ある文字列をゼロサプレスするのに
効率的な方法ってどんなのがあるのでしょうか?
自分は一文字ずつsubstringで取得して精査する方法しか思いつかないのですが・・・
例)
00005 => 5
AB00001 => AB1
AB0000 => 0
のようにしたいです。
後ろから0検索してごにょるだけじゃないの
([A-Z]*)0*([1-9][0-9]*)?
でキャプチャしたら
AB0500はどうなるんだろう
AB0501とか
すいません、仕様を伝えていませんでした。。。先頭のゼロサプレスのみなので
AB0500=>AB500
AB0501=>AB501
になります。
全てのゼロを削除するならstr.Replace("0","");で良かったのですが・・・
正規表現使うほどのものでもないような。
substring何回も使うくらいなら、stringをchar配列にして走査したほうが早いんじゃないの
>>870 それだと2バイト文字が来るとどうにも・・・orz
こんなんはどうだろうか・・・
var str = "ABC000111000";
var index = str.IndexOfAny(new char[] { '1','2', '3', '4', '5', '6', '7', '8', '9' });
var beforeStr = str.Substring(0, index);
var afterStr = str.Substring(index);
beforeStr = beforeStr.Replace("0","");
var result = beforeStr + afterStr;
とか・・?
.NETには1バイト文字なんて存在しないぞ
>>864 AB0000 => 0
なんでゼロサプレスで "AB" が消えるの?
初心者弄り始まったな
相談者は正規表現で満足しておくべきだった
>>874 ごめんなさい
AB0000=>AB0
ですm(_ _)m
>>処理系がShift-Jisでしていたからできなかったのかなぁ、、、
その昔うまくできなくて、2バイトだからか?って思ってあきらめてた><
ひとつためになりました♪よく考えたら.NETてunicodeだもんね・・・
この件に使うかどうかは別にしても正規表現は覚えとけ
これほど学習コストが低い割に恐ろしく広く応用できる技術ってそうないんじゃないか
>>875 あの正規表現は間違ってる。
AB0000 => 0
のせいで正しい正規表現自体が存在しなかったけど。
>>876 これでどうだ?
Regex.Replace(input,"(?<![0-9])0+(?=[0-9])","")
>>876 ふらっといけよ、お前みたいな初心者が来るとネタですらないどうでもいい内容のレスが増えて迷惑
>>879 ほんと、どうでもよくて意味がないよな。
まるで糞仕様を発注してきて何度も確認したのに
その通りに作るとクレーム入れてくる糞カスタマーみたいだな
> それだと2バイト文字が来るとどうにも・・・orz
どうでもいいどころかこういうノイズを撒き散らして脳にダメージを与えてくるからたちが悪い
IPさらしながら書けよ雑魚
>>883 こういう糞みたいなカス煽りも出てくるしな
885 :
883:2011/11/30(水) 21:01:26.87
だからお前みたいな基地外はこて半つけるか
IPさらせって
ばればれの自演してんじゃねーよボケ
それで?
この板をIDなしにしたやつは賢明だよな
889 :
876:2011/11/30(水) 21:06:37.16
すいませんでした。ここで質問したのは場違いだったみたいです。
スレが荒れる原因になってごめんなさい。
初心者スレのほうに移ります。
ほら、お前らが苛めるから泣いちゃったじゃねーか
Twitterか海外に行こうぜ
ID在ったほうがいいと思うんだけどなぁ
LINQ厨が大反対するだろうな。
ふらっとはさらっと
ここはどろっとしている。
Twitter氏と海外フォーラム殿と例外と100倍が荒れ狂うんじゃねえの
896 :
デフォルトの名無しさん:2011/11/30(水) 22:52:59.38
>>895 ←このスレの主? 書き込んでる単語の意味が全然分からないんだけど・・・。いつもここで荒らしてるしひと?
そいつキチガイだから触れちゃダメ。
主って何だよどこかの厨房ですか
「ぬし」だろ
「しゅ」と読んだお前こそ
今日スカンク頭のジジイに「アルジを呼べ!」ってゆあれた
Twitterと海外がいたのはふらっとスレとWPFスレだぞ
ここには来てない
System.Linq.Expressionでthisを参照する方法はありますか?
書きたいExpressionをラムダ式で表現してみてくれ
Λ人入λ
ダーリン、浮気は許さないっちゃ
907 :
デフォルトの名無しさん:2011/12/01(木) 08:58:12.72
一人、なんでもあだ名つけて通ぶってる馬鹿ってなんなの?
そいつキチガイだから触れちゃダメ。
そうだ俺に触るな、欝は伝染するぞ
駄目って言われてもやるのが馬鹿の馬鹿たる所以
911 :
デフォルトの名無しさん:2011/12/01(木) 23:15:02.61
IPさらせって言ってんだろバカ
研修1ヶ月、実務に入って3ヵ月になる新人です。
入門書的なテキストじゃ少し物足りないってレベルなのですが
オススメの参考書とかあったら教えてください。
>>912 プログラミング.NET Framework第3版
お断りします。
『.NETのクラスライブラリ設計 』の糞訳の人じゃん。
C言語のK&Rだって糞訳だけど、買わなきゃいけない本なんだよ!
本当の糞訳ってのはプログラミング言語C++第三版だろ。
ここで誰も「原本を買え」っていう奴がいなくて安心した
原本??
922 :
デフォルトの名無しさん:2011/12/02(金) 11:27:02.50
機械翻訳とコピペだけで内容を確認せず仕上げる糞訳者は晒さないとな。
いつもコピーしている奴は原本なんて言っちゃうんだろうなw
>>919 それ買ってあまりの糞訳に絶望して本屋に返品しに行ったわ
すっげええ嫌な顔されたけどあれはもはや日本語じゃなかった
原著だろ。
翻訳前の本を原本というみたいだけど
普通は複写に対してオリジナルを原本,翻訳される本を原著というのが一般的かと思う。
Richter本はなんで訳者を駄目な人に変えちゃったんだろうな...
MS Pressは良書ほど糞訳が付きやすいような気がする
豊田孝とか読んでてイライラしますねん
>>928 前の人はもう.NETとは関わってないみたいだからしょうがないのかもねえ
930 :
デフォルトの名無しさん:2011/12/03(土) 13:14:33.19
コンボボックスに選択肢にないものを文字入力した場合、SelectedItemの値がnullになるんですけど、どうしたら自分で入力していた値を取得できますか?
.Text
選択されてないんだからnullじゃないと
まぁ、ワシのティンコはヌルヌルですけどね
そんなことどでもいいがな゚.+:。(ノ^∇^)ノ゚.+:。
934 :
デフォルトの名無しさん:2011/12/03(土) 13:31:12.93
935 :
デフォルトの名無しさん:2011/12/03(土) 13:33:22.93
ありがとうございました。
SelectedItemとは何だったのか
.Textだけだと、選択肢から選んだのか手で打ったのかわかんねーじゃん。
.NEXT
言語仕様に、フィールドのローカル変数への代入は最適化で消えないと明記すればいいのにな
完全に公然の了解になっていて、今さら852程度の小細工でどうなるもんでもない
もしかして見落としてるだけ?
941 :
デフォルトの名無しさん:2011/12/05(月) 10:14:58.23
942 :
デフォルトの名無しさん:2011/12/07(水) 21:33:32.56
カスタムコントロール内の独自のクラス型のプロパティに関する質問です。
C#でカスタムコントロールを作っています。
自分で定義したクラス型のプロパティを作成し、
そのクラス用の TypeConverter を作成して
そのクラス型に TypeConverter 属性を指定もしました。
こんなイメージです
[TypeConverter(typeof(AConverter))]
class A { ... }
class AConverter : ExpandableObjectConverter { ... }
class BControl
{
これでデザイナで独自クラス型でもプロパティ
943 :
デフォルトの名無しさん:2011/12/07(水) 21:37:29.11
途中で送信してしまいました・・・。
カスタムコントロール内の独自のクラス型のプロパティに関する質問です。
C#でカスタムコントロールを作っています。
自分で定義したクラス型のプロパティを作成し、
そのクラス用の TypeConverter を作成して
そのクラス型に TypeConverter 属性を指定もしました。
こんなイメージです
[TypeConverter(typeof(AConverter))] class A { ... }
class AConverter : ExpandableObjectConverter { ... }
class BControl : UserControl { A Hoge { get; set; } ... }
これでデザイナで Hoge プロパティに値が表示され、
一見その値も変更できるようにも見えるのですが、
変更が *.Designer.cs には反映されず、
デザイナを閉じてもう一度開くと初期値が表示されてしまいます。
値の変更が永続的に反映されるようにするにはどのようにすれば良いのでしょうか?
環境は VS2008 SP1 です。
聞きたいことを先ず最初に書かないとだめよ?
だらだら読ませて、興味を無くした人に、最後に質問ですって
そら、答える人は奇特な人しか居らんわ。
うるせー馬鹿
>>943 Hogeプロパティに[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]を付ける
947 :
デフォルトの名無しさん:2011/12/07(水) 22:33:25.27
>>946 できました!
これで胃の痛みからも解消されます
ありがとうございました
もう少しで危篤な人になるところだったのか・・・
どんだけ苦しんでるんだよ・・・。
と思ったら、setter のあるプロパティしか反映されないー
AConverter を使ってくれないのですね・・・
A の中の setter のあるプロパティしか反映されない・・・ということです
Hoge にはもちろん setter はあります
int型の計算でi = i + 1というのはC#だとどう書けばいいですか?
953 :
デフォルトの名無しさん:2011/12/07(水) 23:14:28.71
i++;
++i;
i+=1;
ありがとん
構造体の中のstring配列に文字列を代入したいのですが
構造体の宣言部に数を定義していないのですが string names[] ←こんな感じ
この中に代入するにはどうすれば良いですか?
最大値の分からない繰り返しの中で
hogehoge.names[i] = "hoge"のように代入したいです
956 :
デフォルトの名無しさん:2011/12/07(水) 23:35:48.09
>>955 配列じゃなくList<T>じゃダメなの?
それ初めて見ました
ちょっと調べてみます。ありがとう
958 :
943,947,950-951:2011/12/07(水) 23:57:46.11
AにSerializable属性を付けて
AConverterにInstanceDescriptorへのCanConvertTo, ConvertToを実装する事で
何とかデザイナでの変更を永続的に反映させる事ができるようになりました
ただ、このBControlを含むプロジェクトをビルドすると、
Hoge プロパティの値を変更しようとしても
「プロパティ 'Hoge' のコード生成に失敗しました。エラー: 'AConverter' は '***.A' から
System.ComponentModel.Design.Serialization.InstanceDescriptor' に変換できません」
というエラーが出てしまいます。
VSを再起動すればその後1回だけは出なくなりますが、
次からまたエラーが出るようになります。
AConverterの名前を変更するとVSを再起動するまでは出なくなるようですが、
VSを再起動するとまた2度目からエラーが出るようになります。
どうにかならないものでしょうか・・・。
959 :
958:2011/12/08(木) 00:54:33.91
ダンプコードを入れてみると、
やはりビルドしてもAやAConverterが昔のままのようですね
新しくできたアセンブリと齟齬を起こして
(新しい)Aから(昔の)Aへのキャストに失敗してエラーになるようです
BControlは新しくなるのになんでこんな中途半端な実装なんだろう・・・
>>958 なんか名前がすごいことになったなw
つか、なんでこのスレってID表示されないん? いっつもすげー不便だと思うんだけど。
過疎スレなんだからID生成程度のリソースをけちらないでくれ
961 :
959:2011/12/08(木) 01:42:04.39
ConvertToの第3引数(変換元のAの値)を
無理矢理Aにキャストするとエラーが詳しく出てくるようになりました
やはり使用するアセンブリが異なるようです
アセンブリのフルパスが表示されていましたが、
...\ProjectAssembly\????????\********.exe の ? の部分が異なっていました。
(? はテンポラリディレクトリ名っぽいランダムな名前)
プロパティの値を入力する分には問題がないようですが、
いざ保存するとなるとこのエラーになるようです。
プロパティの値を入力する時のアセンブリは新しいアセンブリが使われますが、
保存するときは古いアセンブリが使われてしまうようです。(なんじゃそりゃ)
悔しいので、型チェックは Type の比較でなく FullName の比較にして、
ConvertToの第3引数からリフレクションを使ってInstanceDescriptorを作ってやる事で
なんとかする事はできました。
ただ、Aのコンストラクタが変化した場合には、AConverterのコードを変更した後、
やはりVSを再起動する必要があるようです。
まあ苦肉の策には違いないので、古いアセンブリを見なくする方法があれば
引き続きお教えいただければと思います。