1 :デフォルトの名無しさん2011/09/22(木) 23:59:34.41
11 :デフォルトの名無しさん2011/09/24(土) 00:03:07.75
>>1乙じゃねーの
2 :デフォルトの名無しさん2011/09/23(金) 00:10:10.76
関連スレ

ふらっとC#,C♯,C#(初心者用) Part79
http://hibari.2ch.net/test/read.cgi/tech/1316608496/

WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part10
http://hibari.2ch.net/test/read.cgi/tech/1315648327/

【VB.NET】LINQ友の会【C#, C♯, C#】
http://hibari.2ch.net/test/read.cgi/tech/1202568694/

C#,C#の宿題片付けます。
http://hibari.2ch.net/test/read.cgi/tech/1197620454/

ASP.NET + Atlas or Ajax について
http://hibari.2ch.net/test/read.cgi/tech/1150036430/

Microsoft Silverlight その8
http://hibari.2ch.net/test/read.cgi/tech/1300831451/

Visual Studio 2010 Part16
http://hibari.2ch.net/test/read.cgi/tech/1312046969/

C# C# C♯でゲームを作ろう Part1
http://hibari.2ch.net/test/read.cgi/tech/1212972014/
3 :デフォルトの名無しさん2011/09/23(金) 00:10:22.76
参考リンク

MSDNライブラリ
http://msdn.microsoft.com/ja-jp/library/

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/
MSDN フォーラム
http://social.msdn.microsoft.com/Forums/ja-JP/categories/


pinvoke.net: the interop wiki!
http://pinvoke.net/
宇宙仮面の C# プログラミング / C# Programming
http://uchukamen.com/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/
WisdomSoft Microsoft .NET入門
http://wisdom.sakura.ne.jp/system/msnet/
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
4 :デフォルトの名無しさん2011/09/23(金) 00:10:45.19
質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。

初歩的な質問はPC初心者板で・・・
http://pc11.2ch.net/pcqa/
参考リンク(よく出てくる情報リンク)
Windows Vista Wiki
http://windowsvista.ms/index.php
Windows VistaFAQ
http://vistafaq.stdo.net/index.html
〜インストールから設定・活用まで〜 すべてが分かるWindows Vista大百科
http://journal.mycom.co.jp/special/2007/windowsvista/menu.html

コードの量が多い場合は下記サイトを使うなどしたほうがいいかも。
コードを貼り付けてRun codeのチェックを外し、submitボタンを押すと専用のアドレスが発行されます。

http://ideone.com/

直接貼る場合はhtmlエンコードした方がインデントも残って見やすいです。

http://kawama.jp/php/encode_html.php
5 :デフォルトの名無しさん2011/09/23(金) 22:06:57.71
WPFは消えそうな勢いだけど
SilverlightはMetroになって生き残るだよな
7 :デフォルトの名無しさん2011/09/23(金) 22:12:23.61
>>5
まあ、.NET 4.5 と WinRT+.NET Coreの2系統あるけどもね、Win8。
10 :デフォルトの名無しさん2011/09/23(金) 23:56:28.45
WPF消えそうってどういうこと?
12 :デフォルトの名無しさん2011/09/24(土) 00:05:44.89
>>10
WinRT が WPF とは別に作られたからそういう話題になってるのかな。

WinRT はメトロアプリ専用、デスクトップアプリは今まで通り。
メトロ版 IE ではブラウザープラグイン撤廃。
ただし、WinRT は Silverlight そっくり。

という状況。
15 :デフォルトの名無しさん2011/10/01(土) 18:29:43.10
コントロールパネルの「自動再生」をプログラムから変更したいのですが
どの様にすればいいのでしょうか?
18 :デフォルトの名無しさん2011/10/02(日) 19:07:13.75
関数ポインタ(≒デリゲートのハッシュテーブル)を使いたがるC上がりが同僚にいるんだけど、
それじゃ可読性損ねる上にVSの支援も効かなくなるからSwitchで分岐してメソッドを呼ぶように
しろと言っても「ソースが長くなる」と納得してくれない


ありがちな光景だよね
21 :デフォルトの名無しさん2011/10/02(日) 19:22:58.73
たぶんDictionary<int, Delegate>を言ってるんじゃないかと思われる
22 :デフォルトの名無しさん2011/10/02(日) 19:27:28.05
delegate宣言ってどこにかくの?
delegate使うクラス内?
27 :デフォルトの名無しさん2011/10/02(日) 20:54:46.03
>>22
名前空間の直下
型なのでクラスなどと同格
23 :デフォルトの名無しさん2011/10/02(日) 19:48:50.00
わざわざ関数ポインタって断ってるから少なくともC#じゃないし、.NETであるかも怪しい
24 :デフォルトの名無しさん2011/10/02(日) 20:19:13.14
下手なこと言うより、俺が読めないからやるなって言った方が筋が通るかもw
25 :デフォルトの名無しさん2011/10/02(日) 20:41:16.66
そこは関数テーブルというべきなのは置いて、Dictionary使いたがり厨はよく見る
29 :デフォルトの名無しさん2011/10/02(日) 21:02:12.65
ボタンのクリックイベントのイベントハンドラを作ったことがあるならデリゲートを使っている
ほかにもLINQとか
30 :デフォルトの名無しさん2011/10/02(日) 21:09:34.10
リフレクションが必要な要件だと、Type別に式木組んでデリゲートにしてディクショナリーに入れといたりする
31 :デフォルトの名無しさん2011/10/02(日) 21:22:17.27
dynamic使えよ
>>30とやってることは同じ
33 :デフォルトの名無しさん2011/10/02(日) 21:34:27.66
知らんがな
シリアライザならフィールドをサポートしないなら別に式木組まなくてもCreateDelegateでできるし
34 :デフォルトの名無しさん2011/10/02(日) 21:52:14.74
>>33
パフォーマンス上動的コンパイルが必要な要件を想定してるのに、単純な例を挙げて否定されても…
35 :デフォルトの名無しさん2011/10/02(日) 23:51:25.75
なんでMS言語ってメソッド名が大文字始まりなの?
気持ち悪くね?
小文字にしてくれるだけで気持ちよく書けるわ
43 :デフォルトの名無しさん2011/10/03(月) 04:21:26.60
>>35
setHogeとgetHogeでプロパティ代わりとか、センスのない田舎言語よりマシだろ
36 :デフォルトの名無しさん2011/10/03(月) 00:11:52.82
俺は普段からアッパーキャメルで書いてるから全然問題ない。
37 :デフォルトの名無しさん2011/10/03(月) 00:16:58.48
Javaも使ってるし全小文字アンダースコア区切りなpythonも使ってるけど
むしろ違ったほうが切り替えができていい
39 :デフォルトの名無しさん2011/10/03(月) 00:50:43.45
常に動詞で始まるならキャメルでも良いが、
JavaはDouble.doubleValue()とかtoString()
とか破綻して見苦しい。
Pascalの方がまっとう
45 :デフォルトの名無しさん2011/10/03(月) 09:52:53.03
パクラレの方は身売りされ、何も決めれず停滞して見るも無残な有様だなぁ
48 :デフォルトの名無しさん2011/10/03(月) 18:00:35.39
パクラレの方に今更usingが入ったね
asyncが入るのは10年後くらいかな
51 :デフォルトの名無しさん2011/10/03(月) 19:24:41.26
DynamicObject でメンバはTryGetMember使って適当に返せるのに
メソッドは適当にでっち上げてかえせないの?
52 :デフォルトの名無しさん2011/10/03(月) 19:30:24.88
デリゲート返してごまかす
ちゃんとやるならDynamicMetaObjectを実装する
53 :522011/10/03(月) 19:38:51.00
いやTryInvokeMemberがあるのか
簡単にやるならそれで
54 :デフォルトの名無しさん2011/10/03(月) 22:18:33.05
>>53
できた!さんくす!
55 :デフォルトの名無しさん2011/10/04(火) 17:24:10.49
object とか string とか小文字始まりのキーワードは必要なの?
56 :デフォルトの名無しさん2011/10/04(火) 17:30:45.85
>>55
失せろ
57 :デフォルトの名無しさん2011/10/04(火) 17:43:04.36
>>55
エイリアスなので必要な人には必要。
60 :デフォルトの名無しさん2011/10/04(火) 18:33:10.78
59 以外だと好みになるのかな?
うせるから 55 の意見を聞かせてくれ
書籍やwebをみると小文字でエイリアスですとしか読み取れない
型が小文字だったり大文字だったりして統一されてないように見える
些細な事だとは思うんだが。
64 :デフォルトの名無しさん2011/10/04(火) 19:44:16.78
>>60
微妙な違いは言語仕様の「単純型(Simple types)」のとこ読め

> 型が小文字だったり大文字だったりして統一されてないように見える
小文字の型はC系言語の予約語
大文字の型は.NET Frameworkの命名規則
統一はされてる
65 :デフォルトの名無しさん2011/10/04(火) 20:41:29.23
>>64
さんくす!
勉強してくる!
62 :デフォルトの名無しさん2011/10/04(火) 19:01:39.95
スタイルの問題だが、FCLの型守るならInt32とか書けばいい。
C++/CLIと混ざるとlongの型で注意がいるってくらいでね。
63 :デフォルトの名無しさん2011/10/04(火) 19:10:04.10
コンパイラがおもいっきり特別扱いするので実際はSystem.Int32もキーワードみたいなもん
66 :デフォルトの名無しさん2011/10/05(水) 09:58:38.84
デリゲート型のクラスメンバって決まった接尾辞とかあります?
67 :デフォルトの名無しさん2011/10/05(水) 10:16:22.60
ない
というか普通はイベント使うから
引数でデリゲートを受け取ることはあってもプロパティやフィールドでデリゲートを公開することはまずない
72 :デフォルトの名無しさん2011/10/06(木) 13:28:19.07
アプリが動いている間は
Alt+TabとかCtrl+EscとかWindowsキーとかの
Windowsの特殊キー操作を完全に無効にして、
タスクバーもウィンドウで隠して触れないようにして、
アプリを終了するまではアプリの操作以外できないようにする
そんなアプリって作れるもんですかね?
73 :デフォルトの名無しさん2011/10/06(木) 14:39:12.36
>>72
マウスとキーボード入力をフックすればできるんじゃね?
75 :デフォルトの名無しさん2011/10/06(木) 15:29:09.89
XMLの簡易エディタ作ろうと思ってます
カーソルのあるタグをハイライトしたいのですが、
文字位置から直近のXElement等を取得するには
どうすればよいでしょうか?
81 :デフォルトの名無しさん2011/10/07(金) 13:17:00.75
vs pro 買わなくても無料のやつでだいたいできるの?
82 :デフォルトの名無しさん2011/10/07(金) 13:22:00.94
>>81
VC++の場合ちょっと制限付くけどC#なら問題ないな
83 :デフォルトの名無しさん2011/10/07(金) 14:16:42.81
VC++はIDEの機能はほとんど制限ないけど作れるものに制限があるんだよな
VC#はその逆
84 :デフォルトの名無しさん2011/10/07(金) 14:42:18.22
そうそう
VC++はMFCとATLが無料版には付いてこないのでwindowsアプリを作る際苦労する
リソースエディタもなかったんだっけ?
VCはwindowsアプリはガシガシ作れるがアプリの全体像をクラス図で見渡すとかそういう
サポート部分が無料にはない
89 :デフォルトの名無しさん2011/10/07(金) 17:39:11.54
すいません、
C#をつかってWebサービスでList型で公開したものを
受け取ろうとすると受け取り側ではString型になってしまっていて
Listとして受け取れないようなのですが
これは仕様なんでしょうか?
90 :デフォルトの名無しさん2011/10/07(金) 17:49:20.97
>>89
おちけつ。
91 :デフォルトの名無しさん2011/10/07(金) 18:39:16.29
web は文字列のやりとりだろ
92 :892011/10/07(金) 18:51:49.62
>>91
アホは黙ってろ
96 :デフォルトの名無しさん2011/10/07(金) 21:15:29.77
>>92
どこが間違ってんの?
キミんとこではバイナリでやりとりしてんの?
それともフレームワークにのっかってるだけなのにオブジェクトでやりとりできると思ってんの?
94 :デフォルトの名無しさん2011/10/07(金) 18:58:21.56
具体的に説明できると思えないからプロジェクトファイル見せてみ
97 :デフォルトの名無しさん2011/10/07(金) 21:24:28.40
.NET RemotingやWCF使えばオブジェクトでやり取りできるよ
通信はバイナリ、テキストどちらでも可(意識しない)
98 :デフォルトの名無しさん2011/10/07(金) 21:27:51.53
>>97
無知ですまんかった
101 :デフォルトの名無しさん2011/10/07(金) 22:04:07.22
できる
implicit operator
103 :デフォルトの名無しさん2011/10/07(金) 22:27:30.84
継承はできないけど代入できるようにすることはできるよ
>>101で
むしろ継承関係があるとダメ
102 :デフォルトの名無しさん2011/10/07(金) 22:19:38.10
取り敢えず、Int32は構造体なので継承できない
あと継承したからって派生クラスの変数に直接基底クラスのインスタンスを代入するのはできない
Object o = new Object();
String s = o; // これは無理
105 :デフォルトの名無しさん2011/10/09(日) 12:48:36.14
値型は全部継承して使うことみたいな基地外コーディング規約あったな。
107 :デフォルトの名無しさん2011/10/10(月) 22:51:37.71
メソッドをset(get)で始まらせることでプロパティとみなす既知外言語もあるからね
110 :デフォルトの名無しさん2011/10/10(月) 23:43:51.05
Javaを批判するのはいいけど、いい加減その行為に生産性が無いと気付くべき。
112 :デフォルトの名無しさん2011/10/11(火) 23:41:16.94
c#でアクセスにつないでセレクト文で一行とってきて適当な(何でもいい) フォームに表示させたいんだけど教えてくれません?
一行とるのは出来たっぽいんだけどそれをどうやって表示するのかググってもさっぱりわからなくて…
テーブル丸ごと表示のやり方は見つけたんだけどなぁ。

116 :デフォルトの名無しさん2011/10/12(水) 08:54:29.12
.netで開発するときのフォルダ構成の
指針みたいのある?
utilityフォルダ作るとか。
117 :デフォルトの名無しさん2011/10/12(水) 10:11:15.38
foreach (DataRow dr in dataTable.Rows)
{
System.Console.WriteLine(dr[0]);
}
130 :デフォルトの名無しさん2011/10/12(水) 19:42:00.13
>>127
>>117は別の人?
あんな感じで行を取り出して添え字つければ各列にアクセスできるよ

textbox.Text = dr[0].ToString();

こんな感じ
118 :デフォルトの名無しさん2011/10/12(水) 12:04:54.90
メッセージショウだとオブジェクトがなんちゃら?(忘れた)とかエラーがでるのよね。
とってきた一行を違う型に変換する必要があるの?
121 :デフォルトの名無しさん2011/10/12(水) 19:06:04.28
いやー、まったく初めてなんだよー。
フラッシュとアクションスクリプト2と ラズロならそこそこわかるんだけど、sqlとかc#とかはじめてでちんぷんかんぷんなんですわー。
122 :デフォルトの名無しさん2011/10/12(水) 19:10:42.28
一行二列とってて、一列目と二列めは違うテキストボックスにいれたいんだけど…
そもそも取得したであろう検索結果を表示できる形式に変換出来ないっつーかわからない。データセット型だとデータグリッドにしかいれられないんでしょ?
123 :デフォルトの名無しさん2011/10/12(水) 19:17:22.74
TextBoxなのか、MessageBoxはどこいったんだw
ToStringで文字列に変換してTextに入れてやりゃでるよ
127 :デフォルトの名無しさん2011/10/12(水) 19:32:12.15
>>123
とにかくはじめは何かしら表示するところからやろうと思ったんだけど、詳しく書いた方が答えやすそうだったからかいたんです。申しわけない。

一行二列のデータが入ってる変数っぽいやつを返還したあと、一個ずつ取り出すのは何使えばよい??
124 :デフォルトの名無しさん2011/10/12(水) 19:19:46.63
DBの列には型ってもんがあってだな・・・
つうかnullってないだろうな?
128 :デフォルトの名無しさん2011/10/12(水) 19:34:08.84
ぬるじゃなくてちゃんとはいってます! データはちゃんといれてあります
133 :デフォルトの名無しさん2011/10/12(水) 19:58:18.92
慣れている人が楽をするための仕組みを初心者に教えるの不親切と言いたいんじゃない?
134 :デフォルトの名無しさん2011/10/12(水) 21:28:24.58
みんなありがとう。
今日は障害出てまだ書けそうにないから明日試してみるよ。
135 :デフォルトの名無しさん2011/10/13(木) 17:35:44.93
Dart面白そうだね
次のc#に取り込めそうなのもあるし…

Google、新Webプログラミング言語「Dart」発表 - JSの置き換え狙い
http://journal.mycom.co.jp/news/2011/10/12/065/

http://www.dartlang.org/
136 :デフォルトの名無しさん2011/10/13(木) 17:42:58.86
うーん、Dart ってなんか印象が、
「しがらみ取っ払って、Javaをリセット。C# から取り込みたかったものも入れた。」
にしか見えず。

リセットかかってるからいい言語ではあるんだけども、
リセットしてまで入れ替えたいと思わせるものがないのよねー。

VM 層が中間言語でも持ってて、いろんな言語移植できるとかだったら面白そうだったんだけど。
141 :デフォルトの名無しさん2011/10/13(木) 18:01:21.92
>>136
JavaじゃなくてJSの置き換えでしょ?記事読む限りDartで組んでからHTML5+JSにコンパイルしてブラウザ上で実行する物でしょ
ある意味JSを中間言語として使用している
145 :デフォルトの名無しさん2011/10/13(木) 18:29:26.49
>>141
いや、JavaScirpt と同じ用途の位置に、「リセットした Java」みたいな言語を置いたってこと。

JS を中間言語にするんじゃ、パフォーマンス問題が解決しない。
Dart を導入しようとしてる最大の理由は、JS の仕様じゃどんなに頑張ってももう VM 速くならないという判断もはいてるはず。
137 :デフォルトの名無しさん2011/10/13(木) 17:50:45.14
go言語はもう飽きちゃったのかな?
138 :デフォルトの名無しさん2011/10/13(木) 17:51:48.94
>>137
GOはアプリケーション書くための言語で、DartはDLS。っていう雰囲気にみえるけど。
143 :デフォルトの名無しさん2011/10/13(木) 18:11:08.32
このスレ的にはCILからJSに変換できればいいんじゃね・・・
171 :デフォルトの名無しさん2011/10/13(木) 19:52:29.40
>>143
それはScript#だな
146 :デフォルトの名無しさん2011/10/13(木) 18:32:12.28
Chrome には Dart ネイティブな VM を実装。

その他のブラウザーへの救済策として JS へのコンバートを提供しているもの、
Hello World! 程度の Dart ですら、むちゃくちゃ巨大な JS ファイルが生成されるとか。
(それは、.NET でも Volta で通った道)

で、せっかくなら、その Dart 専用の新 VM に、ちゃんとした、Java Byte Code とか MSIL レベルの中間コードがほしかった…
それはなさそうなのよ…
148 :デフォルトの名無しさん2011/10/13(木) 18:42:04.21
かといって、言語仕様だけ見ると、単にリセットかけたJavaなのよねー。
149 :デフォルトの名無しさん2011/10/13(木) 18:42:05.95
ブラウザであんまり頑張りたくないっすw
151 :デフォルトの名無しさん2011/10/13(木) 18:46:14.68
>>149
その文句は、これだけAjaxを流行させた今になって、
いまさらJavaScriptはもう限界とか言い出したGoogleに文句言うべき。
150 :デフォルトの名無しさん2011/10/13(木) 18:45:57.19
これだけでも十分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.
}
152 :デフォルトの名無しさん2011/10/13(木) 18:47:54.97
>>150
Compact constructor はいまいちじゃないかなぁ。

Short function は、3.0 でラムダ式導入されたときに議論には上がってて、
結局、「新規に言語作るんならいいけど、今から追加は混乱招くデメリットの方がでかい」ってことで却下されてたような。
161 :デフォルトの名無しさん2011/10/13(木) 19:06:42.71
>>158
Dartのことはよく分からんが、>>150見る限りメンバ変数は消せないようだが
154 :デフォルトの名無しさん2011/10/13(木) 18:49:51.64
Compact ctor がいまいちなのは、
private なメンバーの名前が外から見えてるっぽく感じるから
(実際はそうでもないけども)。

スクリプトだからできるんであって、C# に導入してもいまいち。
158 :デフォルトの名無しさん2011/10/13(木) 18:57:58.09
_url作りたくないんだよ
159 :デフォルトの名無しさん2011/10/13(木) 19:01:00.87
それなら自動実装でできる範囲だけど、
string _urlみたいなのが必要な場面はあるね
それはプロパティも所詮メソッドだと認識するしかない
160 :デフォルトの名無しさん2011/10/13(木) 19:01:03.46
C# にその手のものを足したいんだったら、むしろ、Scala の case class みたいなののほうがいいかなぁ。
163 :デフォルトの名無しさん2011/10/13(木) 19:15:51.23
_url作りたくないというのは間違い&言葉足らずだった

出来るならメンバーをurlにしてコンストラクタの引数で直接受けたい
164 :デフォルトの名無しさん2011/10/13(木) 19:18:03.03
>>163
メンバーは private、
一方、コンストラクターの引数の名前は public なんだわ。

だから、「private な方を変な名前にしろ」って規約になってる。

まあ、メンバーとコンストラクター引数、同名にできるよ。
public ○○(string url) { this.url = url; }
165 :デフォルトの名無しさん2011/10/13(木) 19:19:47.27
>>164
同名にできるは知ってるしそれがバグの温床なのも知ってる
167 :デフォルトの名無しさん2011/10/13(木) 19:23:39.03
フィールド名とコンストラクター引数がいわゆる DRY 問題になってるのは確かだけど、
それの解決策として、Dart の Compact Constructor はいまいちだなぁ。
結局、DRY なままだし。
169 :デフォルトの名無しさん2011/10/13(木) 19:31:06.95
初期化じゃスマートじゃないよ
引数が多いと途中で1個2個抜けてても気づかないよ
バグの温床だよ
173 :デフォルトの名無しさん2011/10/13(木) 20:06:24.16
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を代入している)がある
180 :デフォルトの名無しさん2011/10/13(木) 20:41:35.73
>>173はwidthとheightが負だったら例外投げないといけないんで、代入を省略できない例だろ
176 :デフォルトの名無しさん2011/10/13(木) 20:29:43.93
コンストラクタに大量の引数を付ける設計自体が好かんな
値型はそんな大量に実装しないし
179 :デフォルトの名無しさん2011/10/13(木) 20:34:53.90
他人が使うライブラリなどで必須パラメータ知らせるには
コンストラクタの引数がいいんじゃないの?
staticで Create〜とか
182 :デフォルトの名無しさん2011/10/13(木) 21:14:46.54
>>179
引数4つならそれらをプロパティに持つ初期化パラメータクラスを作ることを検討する
5つ以上ならノータイム
185 :デフォルトの名無しさん2011/10/13(木) 22:20:52.66
>>179
コンストラクターの意義としてはその通りなんだけど、
MS が実際に人使ってやったユーザビリティ テストの結果では、
引数多すぎるとみんなうざくて使いにくいというらしい。
なので、MS も、ガイドライン的にはあんまり引数の数増やすなと言ってる。
189 :デフォルトの名無しさん2011/10/13(木) 23:34:03.02
Welcome to Underworld!
190 :デフォルトの名無しさん2011/10/14(金) 03:55:39.88
193 :デフォルトの名無しさん2011/10/14(金) 08:40:28.50
言語の設計論もあるし好みとは言い切れないだろう。
省略はあるに越したことはない派だけど。

いちいちラムダのためにメソッドを書かないし、
メソッド書くにしてもnew Func〜書かない。

アバウトな言語はいくらでもあるし、
C#より幅を利かせてるのも多い。

芸術家の意見より実務家の意見の方が説得力があるだろう。
198 :デフォルトの名無しさん2011/10/14(金) 13:39:33.65
>>193
まあ、実務家の意見見るときに気を付けないといけないのは、
目先の簡単さを求めてあとから苦労しないかどうかよく考えたほうがいい。

省略は、後から泣きたくなること多いし(書くの楽だけど読むの/引き継ぐのしんどい)。
195 :デフォルトの名無しさん2011/10/14(金) 09:05:12.37
好みの問題だから、「べき」なんじゃないか。

おまえが勝手に脳内で「なければならない」と混同してるだけだろw
これだから論理がデタラメな非マは困る。
199 :デフォルトの名無しさん2011/10/14(金) 16:13:53.50
他のスレだと暇つぶしの輩しかいないのでこちらで質問させていただきます

http://ideone.com/X4RvM

DataGridViewにバインドしたList<自作クラス>をソートしようと
いろいろ調べた結果ラムダ式が簡潔みたいなのでやってみたんですが
こんな感じになっちゃいました、項目が増えると同じようなコードが・・・
普通はどういうことをするんでしょうか?

自作クラスをIComaparableにしたり、IComparerインターフェースを作る方法が思うのですが。
データの量は10列の一万行ぐらいです
ユーザーが行の削除やソートをしても、データがちゃんと同期が取れて
簡潔なコードで書ける方法を教えてください

よろしくお願いします
200 :デフォルトの名無しさん2011/10/14(金) 16:17:44.64
>>199
やったこと無いけど、ラムダを配列に突っ込んで添字でSortに突っ込む。とか?
201 :デフォルトの名無しさん2011/10/14(金) 16:44:08.16
誰が簡潔なコードで済めばいいのかって話だけど
DataTable/DataView使うのが一番簡潔だし

速度を重要視するなら>>199の通りベタに書くのが一番だな
202 :デフォルトの名無しさん2011/10/14(金) 18:16:11.26
210 :デフォルトの名無しさん2011/10/16(日) 20:54:07.97
>>202
これやってみたけど恐ろしくソートの時間がかかるな・・・
203 :デフォルトの名無しさん2011/10/14(金) 18:23:38.70
202の要旨は
リフレクションで無理やりコンパレータ作れば最強!
ってこと
209 :1992011/10/14(金) 18:54:25.16
>>203
なるほど、よくわかった。ありがとう
207 :デフォルトの名無しさん2011/10/14(金) 18:45:38.93
BindingList クラスは並べ替えの基本実装を提供していないため、既定では、SupportsSortingCore は常に false を返します。
208 :デフォルトの名無しさん2011/10/14(金) 18:50:37.28
まあ向こうのスレを見ると
順番無視して主キー使うのが唯一の正解
211 :デフォルトの名無しさん2011/10/16(日) 21:20:52.02
当たり前じゃん
コード書くコストをリフレクションにぶん投げたんだよ

いいだろ
質問で速度は求められていないのだから
212 :デフォルトの名無しさん2011/10/16(日) 21:27:59.57
たしかにー
でも徹夜で勉強してやっと作ったのにこんな有様だとは・・・
214 :デフォルトの名無しさん2011/10/16(日) 23:22:11.76
>>212-213
直すんならIComparerでなくて自作クラス
PropertyDescriptorを自作してICustomTypeDescriptorとかで返してやれば?
213 :デフォルトの名無しさん2011/10/16(日) 21:44:01.03
IComparerの書き方次第である程度はフォローできる
リフレクションは遅いのにCompareごとに呼び出すとか狂気の沙汰
215 :デフォルトの名無しさん2011/10/18(火) 11:59:50.43
TabPage下にあるTextBoxコントロールにアクセスする方法ってないですか?
並び替えできるようにしてあるのでTabPageのインスタンスだけ並び替えてもTabPage下にあるTextBoxコントロールはそのままなんです
216 :2152011/10/18(火) 12:01:30.93
ふらっとC#に書き込むつもりが間違えて誤爆しました。質問は取り消します
217 :デフォルトの名無しさん2011/10/19(水) 19:33:57.70
C#でイベントコリレーションみたいな機能ありんす?
220 :デフォルトの名無しさん2011/10/19(水) 20:42:41.62
>>217
ただのフィルタ処理できるログってことでいいならTraceSource
218 :デフォルトの名無しさん2011/10/19(水) 19:34:16.82
ちと質問です。XMLのシリアライズやデシリアラズをする場合において
みなさんはどのパーサーを使用していますか?参考に.NETのバージョン別に
教えて欲しいのですが・・・

あと、XmlElementやXmlDocument、XmlSerializerはどのように使い分けているのでしょうか?

自分はXmlSerializerメインで使っているのですが、他のパーサーはもっと速度が出るとか
これは下位互換で残っているだけとかあれば情報が欲しいのですが・・・

.NET2.0 =>
.NET3.5 =>
.NET4.0 =>
219 :デフォルトの名無しさん2011/10/19(水) 20:08:01.80
>>217
WaitHandle.WaitAnyみたいな?
なんか違う気がする

>>218
>XmlElementやXmlDocument、XmlSerializer

この3つを並列に語るのはおかしいだろ
222 :デフォルトの名無しさん2011/10/20(木) 21:32:22.65
>>218
XmlSerializerはシリアライザ
XmlDocumentはDOMでツリーを構築
XDocumentはLINQで扱いやすい形でツリーを構築
あとはXmlReader(Pull型パーサー)
シリアライザだとDataContractSerializer。

ぐらいかな。

基本的にはXDocument、
シリアライズはDataContractSerializer、
メモリの都合や速度が欲しい時はXmlReader。
221 :デフォルトの名無しさん2011/10/19(水) 22:53:29.55
イベントコリレーションが何なのか分からんが、CorrelationManagerと関係あるの?
223 :デフォルトの名無しさん2011/10/21(金) 22:19:31.98
protected virtual void OnDragEnter(
DragEventArgs drgevent
)

これって.Netの命名規則に違反してない?
225 :デフォルトの名無しさん2011/10/21(金) 23:19:21.85
226 :デフォルトの名無しさん2011/10/21(金) 23:36:36.35
>>223,>>225みたいなレスこそ常識に反してるな。
他人に向かって何か問いかけたいのなら明示的に書けよ馬鹿と言いたい。
231 :デフォルトの名無しさん2011/10/22(土) 00:32:07.84
>>226
気に食わないならスルーしていいですよ
229 :デフォルトの名無しさん2011/10/21(金) 23:56:31.36
日本は英語圏じゃないからArgsもArgumentsも大して変わらないけどね
まあ米国人がやっていることだが
230 :デフォルトの名無しさん2011/10/22(土) 00:30:44.25
自分で作ったフレームワーク中では
自分で決めたガイドラインくらい率先して守ってほしいね
232 :デフォルトの名無しさん2011/10/22(土) 01:25:30.51
スルーしたかったらスルーしていいし、文句言いたかったら言ってもいいんだよ。
235 :デフォルトの名無しさん2011/10/22(土) 14:51:46.21
質問です。階層構造の深い入れ物クラス(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なの?
以下略
とかさ
238 :デフォルトの名無しさん2011/10/22(土) 15:16:31.93
>>235
なんかもう、ネーミングセンスが無さ過ぎて泣けてくる。
valueだのdataだの何だよ
239 :デフォルトの名無しさん2011/10/22(土) 15:21:41.40
与えられた情報の中でエスパーしてみたけどなんか気持ち悪いクラス構造だな
http://ideone.com/E1rzT
240 :デフォルトの名無しさん2011/10/22(土) 15:30:41.79
変えられるんなら、各クラスにnullを表すインスタンスを用意してnull参照を返さないようにするとか
243 :2352011/10/23(日) 18:18:22.63
実際の構造とは違いますがこんな感じのクラス構造です。
http://ideone.com/KXvAO

実際にクラスCのC1データにアクセスする際にクラスAのnullチェック、
クラスBのnullチェックをするのですがみんなはどのようにnullチェック、
またはそれに相当するクラス構造にしているのでしょうか?

ネーミングセンスは・・・すいませんorz
246 :デフォルトの名無しさん2011/10/23(日) 20:36:54.08
>>243
結局、そんなことをしたい背景が分からないと誰も適切なアドバイスができんような気がするけどねえ。

単純に、リンクを辿るコードをベタ書きするのが泥臭いというのなら、
A, B, C, ....に共通のインターフェイスを被せて再帰的に処理できるようにすれば
解決するけど、そういうやり方が本当に適切かどうかは、そんな投げやりなサンプルを
示されても誰にも分からない。
247 :デフォルトの名無しさん2011/10/23(日) 20:52:14.23
>>243
プロの俺が答えてみる
nulチェックなどは下層では行わない
なぜかというと、下層でチェックして上層でもチェックするなど
無駄に2重チェックしてしまう可能性があるからだ
それにnullチェックしたところでnullには変わらないわけで
結局呼び出した大元でエラーが出る

つまりnullチェックするのは最上層部のみですること
244 :デフォルトの名無しさん2011/10/23(日) 19:14:47.10
Compositパターンにすればあなたのお悩み全て解決
288 :2352011/10/24(月) 11:06:43.06
お休みで掲示板見れなかったけど、色々書き込みしてくださってありがとうございますm(_ _)m

処理の内容ですが、http://ideone.com/KXvAO にあるようなクラスが入れ物クラスとなっていて
あるところ(ファイルやシリアルポートなど)からデータが来て、そのデータを解析して入れ物クラス
に格納してメインロジックに渡すという使い方になります。

メインロジックではその入れ物クラスからさらに自分が使うところ(値)を抜き出して画面に表示する
ようにしております。

シリアル・ファイル=>解析=>(入れ物クラス)=>メインロジック=>画面表示

>>244さっそくコンポジットパターンで検索してみます。ありがとうございます><
248 :デフォルトの名無しさん2011/10/23(日) 20:58:19.01
一般に a.b.c.d みたいに階層掘るのは依存が増えるので良くない
249 :デフォルトの名無しさん2011/10/23(日) 21:10:48.56
>>248
プロの俺から言わせていただくと
階層構造を持たないプログラムは見通しの悪いコードであり
より問題が発生しやすくなる

フォーム>dllを利用するクラス>dlllをインポートするクラス>dll

これらの構造をフォームだけで書けと言われたらプロをやめる
251 :デフォルトの名無しさん2011/10/23(日) 21:15:21.66
>>249
自称プロさんは理解力不足
252 :デフォルトの名無しさん2011/10/23(日) 21:15:42.76
>>249
プログラムやデータの構造じゃなくてコード中で階層掘るなって話だぞ
256 :デフォルトの名無しさん2011/10/23(日) 21:30:17.80
>>252
プロの俺が質問するけど
どういう意味?
250 :デフォルトの名無しさん2011/10/23(日) 21:12:55.08
return A.With(a=>a.B.With(b=>b.C.With(c=>c.H)));
こんな感じでいいなら拡張メソッドでできなくもないw
まあ普通は例外にしちゃうんじゃないかな
253 :デフォルトの名無しさん2011/10/23(日) 21:16:10.44
つまりプロの俺が誇りをかけて言わせてもらうと
階層を持ちつつ階層を持たない構造が最強
255 :デフォルトの名無しさん2011/10/23(日) 21:20:14.90
デメテルの法則は改名したほうがいいよね
名前を聞いただけじゃ意味がわからない
262 :デフォルトの名無しさん2011/10/23(日) 22:07:38.02
>>255
メーテルの。。。ゴホンゴホン
261 :デフォルトの名無しさん2011/10/23(日) 22:06:17.91
class A
public string Z{get{return b.X}}
class B
public string X{get{return c.Y;}}
こうしようと
A.b.c.Y
こうしようと実質一緒じゃないか?
264 :デフォルトの名無しさん2011/10/23(日) 22:09:11.81
確かに>>261は"今は"実質一緒だけど、未来永劫そうとは限らないだろ?
そのためにプロパティを使うんだから。
263 :デフォルトの名無しさん2011/10/23(日) 22:07:47.56
DataGridView.Rows[0].Cells[0].Value
これなんてどうよ?これもダメなの?
265 :デフォルトの名無しさん2011/10/23(日) 22:11:13.30
>>263
DataGridView[0,0].Valueって別解が用意されてるじゃないか
266 :デフォルトの名無しさん2011/10/23(日) 22:13:41.47
>>263だけ見てどうというより、>>263みたいなことをしてるクラスが限定されてるかどうかでしょ
プログラムのあちこちで>>263が出てくるならもちろんクソコード
268 :デフォルトの名無しさん2011/10/23(日) 22:15:52.85
>>266
俺一杯あるんだが
267 :デフォルトの名無しさん2011/10/23(日) 22:14:10.61
a.b.c.d.Z
俺が嫌なのはcがネームスペースなのか
クラス名なのか変数なのかさっぱりわからにところだな
275 :デフォルトの名無しさん2011/10/23(日) 23:06:33.45
>>267
メソッドとプロパティとネームスペースを大文字時まりにする糞決めごとが悪い
269 :デフォルトの名無しさん2011/10/23(日) 22:19:31.70
デメテルの法則かー早く教えてくれよ
この法則に従って書くようにするわ
270 :デフォルトの名無しさん2011/10/23(日) 22:20:51.28
初心者はフォーム(外見)から作り始める
中級者はモデルクラスから作り始める
上級者はインターフェースから作り始める
277 :デフォルトの名無しさん2011/10/23(日) 23:39:17.89
>>270
なんかそれってインターフェイスって言いたいだけの初心者の言に聞こえるぞむしろw

初心者は最初に設計をやる人が偉いみたいに勘違いしてる人が多いけど、
それって余程才能がある人以外なかなか難しいんじゃないかと俺は思うよ。
作る物にもよるけど。

むしろ凡人は、UIのデザインなどをやって時間稼ぎをしながら設計を考える方が
効率がいいように経験上思う。
その方がモチベーションも上がるしね。
278 :デフォルトの名無しさん2011/10/23(日) 23:45:03.32
>>277
UIから作って、UI動かすためのコード書いて、
コードが増えてきたから新しいクラス作って
データ構造が間違っていてることに気付いて全部書き直しするんですね
280 :デフォルトの名無しさん2011/10/23(日) 23:48:18.88
>>277
まずUIつくらないと、設計すべき内容が解らないとそういう状態になる
単なるプログラム設計ならそれが悪いとは言わないが、大規模な開発のシステム設計に向かないのも確か
285 :デフォルトの名無しさん2011/10/24(月) 01:24:48.23
>>280
大規模の定義にもよるけど、一人でUIもその他のコーディングも全部やる
大規模なプログラムなんてあるのかよw

無理して適当なこと言わない方がいいと思うよ。
って、言ってるそばから、経験がない奴って最初から設計やるのが偉いと思ってるし、
そんなことが可能だと思ってるのな。

そんなのは幻想だよ。
フォンノイマンクラスの頭脳の持ち主なら別かもしれないけど。
271 :デフォルトの名無しさん2011/10/23(日) 22:34:44.11
俺中級者だわ
最初からインターフェイスとか作っても無駄になることが多くてやめたわ
273 :デフォルトの名無しさん2011/10/23(日) 22:40:11.71
インターフェイスってインターフェイス型じゃなくて「外部設計」的な意味じゃない?
276 :デフォルトの名無しさん2011/10/23(日) 23:13:07.56
デメテル調べてみたがこの原則に従ってやると
抽象的で何しているかわからないようなクラスだらけになりそう
受け渡しクラスの受け渡しクラスの受け渡しクラスって感じで
279 :デフォルトの名無しさん2011/10/23(日) 23:46:27.55
>>276
それでいいんだよ
お前は.NETのクラスライブラリのクラスを使うときに実装がどうなってるか常に意識してるのか?
281 :デフォルトの名無しさん2011/10/23(日) 23:58:18.07
>>279
でもラッパークラスが増えて処理重くなりそうなんだけど?
284 :デフォルトの名無しさん2011/10/24(月) 01:20:16.37
デメテルなんだけど

a.Items.Add()

こういうのもだめなんだよね?
確かにクラスAがデータを監視したい場合
コレクションクラスも自作しなくていはいけなくなるけど・・・

a.Add()だと変な感じ

DataGridView.Add(dt);
295 :デフォルトの名無しさん2011/10/24(月) 20:25:08.73
>>284
それはOKなんじゃないかな「オブジェクトを直接的に構成するオブジェクト」のメソッドだから

>より形式的に言えば、関数に対するデメテルの法則に従った場合、
>オブジェクトO上のメソッドMが呼び出してもよいメソッドは以下のオブジェクトに
>属するメソッドのみに限定される。
> 1. Oそれ自身
> 2. Mの引数に渡されたオブジェクト
> 3. Mの内部でインスタンス化されたオブジェクト
> 4. Oを直接的に構成するオブジェクト(Oのインスタンス変数)
297 :デフォルトの名無しさん2011/10/24(月) 20:42:45.76
>>295
その条件にどれも該当しないんだが
286 :デフォルトの名無しさん2011/10/24(月) 01:29:08.53
言いたいことは、難しいことは後回しにした方が効率的だし上手くいくってことね。

要は設計は難しいって言ってるんであって、設計なんかどうでも良いとは言ってない(むしろその逆)
なので誤解のなきよう。
287 :デフォルトの名無しさん2011/10/24(月) 01:55:28.73
UIデザインなんて大抵グラフィッカーが作るけどな
俺は内部ロジックしか作らないから
実際どんなものができるかわからないんだが?
289 :デフォルトの名無しさん2011/10/24(月) 13:59:13.84
フォーム(外見)から作り始めると
実装がユーザー視点に近いアプリができる。
最も実装コストが低いが、スパゲティ風味。

モデルクラスから作り始めると、綺麗なモデルができる。
ただし、拡張性は低い。
綺麗なモデルができるまでの実装コストは低いが、
UIとモデルが合わないと、モデルがどんどん複雑になり、実装コストが高くなる。

インターフェースから作り始めると、拡張性の高いアプリができる。
モデルから作り始めた場合と同じような特性を持つが、
UIとモデルが合わなくなる可能性がより高い。
また、綺麗なモデルができるまでの実装コストも高い。
290 :デフォルトの名無しさん2011/10/24(月) 15:22:35.23
どこから始めてもその人のスキルに応じたものができるだけだよ
291 :デフォルトの名無しさん2011/10/24(月) 15:54:36.47
>>290
だよな
294 :デフォルトの名無しさん2011/10/24(月) 20:10:20.07
俺は、モデルから作って半分位作った当たりからUIとあわせて「あーでもない、こーでもない。」って言ってる。
個人開発だからできるのだろうけどね。
296 :デフォルトの名無しさん2011/10/24(月) 20:33:53.48
開発手法もいろいろあるしな。それを活かすも殺すも本人次第
299 :デフォルトの名無しさん2011/10/24(月) 20:54:18.46
4が指してるのは this.hoge.Hage() だろ
出来合いの物を使ってるだけなんだからどうでもいいよ
DataGridViewやDataGridViewRowCollectionを後で変更したりしないだろ
301 :デフォルトの名無しさん2011/10/24(月) 21:08:18.80
a.b.c()が良くないのは、bの変更に弱くなる(またはbを変更しづらくなる)からで
標準のライブラリに当てはめても無意味
302 :デフォルトの名無しさん2011/10/24(月) 21:31:04.95
標準ライブラリじゃなくても同じような動作をするカスタムライブラリの場合もあるわけで
そういうことについて話しているんだけど
303 :デフォルトの名無しさん2011/10/26(水) 20:12:36.46
Generic.Dictionaryを使用するとき、ContainsKeyとTryGetValueのどちらを使うべきなんですか?
307 :デフォルトの名無しさん2011/10/26(水) 20:57:27.69
>>303
ここは中級者以上の怖い人ばかりだからふらっとで訊いたほうがいいよ
305 :デフォルトの名無しさん2011/10/26(水) 20:37:21.00
キーの存在を確認するときは前者、Valueを使うときは後者
キーにアクセス時間が半分で済む
308 :デフォルトの名無しさん2011/10/26(水) 20:57:48.46
>>305
ありがとうございます
つまりTryGetValueを使うべきなんですね

その他の行間を読めない馬鹿は放置で

309 :デフォルトの名無しさん2011/10/26(水) 21:04:08.93
>>305
じゃあValueに値をセットしないで
キーに値をセットしたほうがいいってことですね
313 :デフォルトの名無しさん2011/10/26(水) 21:10:40.88
>>309
Dictionaryの意味わかってないんじゃないの?
ふらっとで訊いてきたほうがいいよ
317 :デフォルトの名無しさん2011/10/26(水) 22:24:57.81
はあ?同じ性質のものだからインターフェイスにしたわけだが
それの何がだめなんだ?バカかおまえは
320 :デフォルトの名無しさん2011/10/27(木) 18:18:09.23
DataGridViewで、コンボボックスの列を作りました。こいつはデザイナで作ったもので
コードは全部自動生成です。このコンボボックスの色を変えたいのですがうまくいきません。
まず、ここをみて試してみたところ、
http://dobon.net/vb/dotnet/datagridview/cellcolor.html
TextBoxのセルは成功しましたが、Comboboxでは色がかわらない。選択肢が下にのびる
ところだけは変わるけど。
Display StyleをNothingにすると、一応色変わるけど、選択できることをユーザに示さないと
いけないので、StyleはDropDownかCombo必須です。あと、選択中はまた白に戻るので
ちょっとかっこわるい。

なんかいい方法ないでしょうか。DataGridViewは難しくて、初心者がつかうんじゃなかった
と少し後悔中
321 :デフォルトの名無しさん2011/10/27(木) 18:50:20.07
初心者とかいうレベルの問題ではないな
323 :デフォルトの名無しさん2011/10/27(木) 22:03:22.22
>>321
答える気がないなら黙ってろよカス
325 :3202011/10/28(金) 09:42:07.26
自前描画っていまいちどうしていいかピンとこないのだけどサンプルとかありませんか?
326 :デフォルトの名無しさん2011/10/28(金) 10:48:23.79
OnDrawItemをoverrideして(protected override void OnDrawItem(DrawItemEventArgs e))
e.Graphics.DrawStringで文字を書く。背景色はe.Graphics.FillRectangle
フォーカスを示す四角形はe.DrawFocusRectangleでOK。
327 :3202011/10/28(金) 13:27:58.50
>>326 アドバイスありがとうございます。
ただ、どこのOnDrowItemをoverrideするのかちょっと具体的なものがわからなかった
のですが、検索のヒントにつながって、以下のサイトにたどりつきました。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=9219&KLOG=9
私もこの質問者と同じところまではたどり着きましたが、同じように選択を外すと描画
が元に戻ってしまうところでまたつまりました。
元のOnDrawItemのさらなるヒントか、上記サイトの未解決問題についてなにか
ありませんか?
334 :デフォルトの名無しさん2011/10/28(金) 22:08:36.74
ゼロから学べるC#

そろそろこういうサイトもできていいんじゃないの?
どこかのサイトみたいに、C++やJavaを例えに出すのは混乱するだけなので無しで
335 :デフォルトの名無しさん2011/10/28(金) 22:09:57.33
C++でいうところの関数のようなものです

↑こういうことを平気で書いちゃう奴は池沼だと思うの^^
340 :デフォルトの名無しさん2011/10/28(金) 22:28:27.81
教えるのが難しいってだけ

初心者がOOPLからはじめるのは大いに結構
最終的にOOPLを使うのに別のパラダイムで基礎を
勉強するよりずっといい
341 :デフォルトの名無しさん2011/10/28(金) 22:38:41.36
C#のような高級言語は裏に隠された部分を知らないと
のちのち苦労するんだよな
隠蔽化された部分は知らなくていいじゃなくて
やっぱり知らないとだめなんだよ
342 :デフォルトの名無しさん2011/10/28(金) 22:44:40.63
プログラミングの学び方 - Web/DB プログラミング徹底解説

http://keicode.com/book.php

このサイトすごくわかりやすい
343 :デフォルトの名無しさん2011/10/28(金) 22:49:12.64
最近は C# などによある .NET プログラミングが盛んですが、 本気で Windows を使っていろんなことを出来るようになりたいなら、 C/C++ を使って Windows API を直接使う方法を学ぶのが一番良いとおもっています。
354 :デフォルトの名無しさん2011/10/29(土) 15:34:28.85
>>343
順番的には、必要になったらしょうがかなく腰を上げてWinAPIを叩くぐらいが一番良いですね。
344 :3202011/10/28(金) 22:50:03.63
せっかく回答頂いた326のOnDrawItemがあまりよく理解できなかったのが心残りですが、
これ以上回答つかないようなのでふらっとC#初心者のほうへ移動してみたいと思います
345 :デフォルトの名無しさん2011/10/28(金) 22:56:52.20
そうそう、年寄りの話は半分でいいんだよ
ボケ始めてんだから
347 :デフォルトの名無しさん2011/10/29(土) 00:15:38.63
まあ、「年寄り」だの「ゆとり」だの言って自分以外の世代を否定したがる奴が
優秀かって言うと.....まずその反対だろうなって気もするけどねw

きっと無能でストレス溜まってるから2chくんだりでクダ巻かないと
やってられないんだろうなと邪推。
348 :デフォルトの名無しさん2011/10/29(土) 00:17:38.61
マジで反論してしまった時点であなたもそちら側の人間なのでは・・・
352 :デフォルトの名無しさん2011/10/29(土) 13:15:34.90
昔から疑問に思ってることなんだけど、ロックされたファイルへアクセスするとき、ロックが解除するまで待機する方法ってないの?
今は必要なときはファイル名でmutexを取得してやってるんだけど、OSが対応しているならそれを使いたいです
355 :デフォルトの名無しさん2011/10/29(土) 16:11:42.40
ハマれば言語も手広くやってみたくなるよ。
仕事でないなら自らの興味に任せとけ。
356 :デフォルトの名無しさん2011/10/29(土) 16:48:30.57
2つのデータセットを比較したいとき、

DataSet a;
DataSet b;

if (a == b) {
}

これは中身が同一かを比較してくれる?
それとも、参照の比較だけなので絶対偽?
360 :デフォルトの名無しさん2011/10/29(土) 18:20:08.88
広大なライブラリの海でずっとおぼれている感じ
自分でもわかっている今俺が必死に勉強しているのは
ライブラリの使い方であって言語が変われば通用しないことを
俺にはもっと基本的な知識が必要なのに
コピペでなんとかなっちゃうから深く学ぼうとする機会が失われている
362 :デフォルトの名無しさん2011/10/29(土) 18:32:32.59
言語が変わっても、同じようなライブラリは存在するはずなので、別に通用しますが。
363 :3562011/10/29(土) 20:01:46.57
必ず偽が返ってくるので、参照で比較しているか、データがどこか食い違っているのか
判断つかないんです。
364 :デフォルトの名無しさん2011/10/29(土) 20:19:38.61
>>363
判断以前の問題だ

>指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)

これ意味分かる?
366 :デフォルトの名無しさん2011/10/29(土) 20:35:51.68
分かってないのは>>364
==演算子とObject.Equalsは無関係
関係があるのはop_Equality

DataSetにはop_Equalityは無いから、既定の参照比較が動く
データを比較したければ基本的には全部の行の全フィールドを自分で比較しないとダメ
369 :デフォルトの名無しさん2011/10/29(土) 22:21:23.78
>>363
それは、小さな同じデータを持つDataSetを二つ作って比較すればいいのでは。
365 :デフォルトの名無しさん2011/10/29(土) 20:35:13.01
オーバーライドされている場合

>オブジェクトが Size のインスタンスと等価であるかどうかを比較します。 (ValueType.Equals(Object) をオーバーライドします。)

できればふらっとに行ってくんね
367 :デフォルトの名無しさん2011/10/29(土) 20:36:03.83
参照型でオーバーライドしてる奴の方が例としては適切だったか…
368 :3562011/10/29(土) 20:45:21.12
ありがとうございます。
自前で比較する処理を書こうと思います。
370 :デフォルトの名無しさん2011/10/29(土) 23:40:02.16
「ふらっとで××」と抜かしてるやつは同じやつ
そして上級者気取りの半可通
371 :デフォルトの名無しさん2011/10/30(日) 00:01:14.12
VSTO(Microsoft.Office.Interop.Excel)で

のように書いた場合、パターン1,2はなぜそうなるのかは理解できるけど
パターン3でなぜ1の時と同じエラーが発生するのか分らない。

foreachでアクセスしているはずだから、範囲外のsheetが渡されてくることは無いはずだし
万が一と考えてsheetがnullかどうか確かめたけど、nullなシートって訳じゃ無いみたいだし…

xlsなデータを一括処理するためにVBAでチマチマやってたけど、あまりにも難しいから
C#に逃げてきたんだけど、それでもなんかよく分らないことになってる><
373 :デフォルトの名無しさん2011/10/30(日) 00:55:29.65
>>371
そもそもCOMのラッパークラスがC#のforeachに対応していると期待するのが間違ってる気もするけど....
374 :デフォルトの名無しさん2011/10/30(日) 01:01:32.94
>>373
やっぱり中身はCOMなのか…

自動生成されたラッパーならそう言うオチが有ってもおかしくは無いけど
あくまで、オフィシャルがリリースしたものなんだから、その辺は大丈夫なんじゃ無いの?
372 :デフォルトの名無しさん2011/10/30(日) 00:31:06.69
orz URL貼り付け忘れた
http://privatepaste.com/a04209c90b
こんな感じです。

それにしてもやはりExcelってむずい…
Worksheet.Columns[]の戻り値がdynamicってどう言うこと?
Worksheet.Range型以外が返ってくるシチュエーションがよく分らない。
375 :デフォルトの名無しさん2011/10/30(日) 01:13:56.70
MSDN見てみると、一応SheetsオブジェクトはGetEnumeratorを実装してはいるようだけど、
それ以前に、

-----
The Sheets collection can contain Chart or Worksheet objects.
-----

となってるね。
言われてみれば確かに、エクセルのシートはワークシートだけではないような。
376 :デフォルトの名無しさん2011/10/31(月) 04:55:40.30
配列を任意の値で初期化する、スマートな書き方無い?
int[] array = new array[count];
for(int i = 0 ; i < array.length;i++)
_array[i] = -1;
をお手軽にこなしたいんだが;
378 :デフォルトの名無しさん2011/10/31(月) 05:52:33.67
2次元、3次元と増えると、だんだんじゃまになってくるんだが…
380 :デフォルトの名無しさん2011/10/31(月) 09:01:50.42
多次元配列は使わない
381 :デフォルトの名無しさん2011/10/31(月) 10:42:57.67
C#でExcelにデータを出力する機能を作ってて、一つのセルに設定した文字の一部を太文字にしたいんだけど、いい方法ある?
http://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.excel.namedrange.characters%28v=vs.80%29.aspx
一応この記述を見つけたんだけど、サンプルロジックの「AddNamedRange」と「Range」の参照関係をどうしても解決できないんだ。
環境は、OSがWinXP SP3、Visual Studioは2008、Officeは2007です。
382 :デフォルトの名無しさん2011/10/31(月) 11:27:52.53
>>380
それってint[] hogera = new int[width * height];しろって馬鹿にしてるだけ?それとも何か代替があるの?

>>381
ちょっと気になったのでカンで触ってみた。
単に一部のフォントをいじりたいだけならNamedRangeに手を出す必要は無いよ。
http://privatepaste.com/7e1d67c0f4

NamedRangeって、Excelの機能で言うところの名前付き範囲じゃないかな?
範囲選択して、"A1:E3"って書かれてるところに名前を付けると
=SUM(hogeTable) みたいに扱えるようになる例の機能。

あと、上のやつはVS2010/Office2010で作ったものなので、あなたの環境だと
ひょっとするとvar を適切な型に書き換えたり、Type.Missingを追加したりとする必要があるかも
384 :デフォルトの名無しさん2011/10/31(月) 11:43:28.41
>>382
ありがとう、でもそういうロジックもいくつか見つけていたんだけど、Rangeに対してCharactersプロパティが出てこないんだ。Value2はあるけど。
だからVS2008じゃ無理なのかと思って、Charactersプロパティを使えるものを色々探してさっきのに辿り着いたんだよね……。

あと、さっきのパスは2005のだった。こっちの2008のサンプルロジックはどっちも駄目だった。
http://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.excel.namedrange.characters%28v=VS.90%29.aspx
386 :デフォルトの名無しさん2011/10/31(月) 11:50:53.87
>>384
VS2010でExcel12(2007)のを使ってみたが、特に問題が無かった。
アセンブリのバージョン/ランタイムは 12.0.0.0/v1.1.4322 14.0.0.0/v2.0.50727

14(2010)用のを試しに使ってみるとか、再起動してみるとか
Windows Updateをオプションを含めてアップデートしてみるとか…
387 :デフォルトの名無しさん2011/10/31(月) 13:10:11.42
>>386
自分が使っていたのは、まさに「12.0.0.0/v1.1.4322」でした。
新規プロジェクトを作って先ほどのロジックを貼り付けて参照設定を設定しても同じ、他の人の環境でも同じなので、他のプログラムが悪さをしているわけでもないようです。
 ・引数を '0' 個指定できる、メソッド 'Add' のオーバーロードはありません。
 ・プロパティ、インデクサまたはイベント 'Range' はこの言語でサポートされていません。アクセサ メソッドの 'Microsoft.Office.Interop.Excel._Worksheet.get_Range(object, object)' を直接呼び出してください。
 ・引数を '1' 個指定できる、メソッド 'SaveAs' のオーバーロードはありません。

まずは14用のを探して試してみようと思います。ありがとうございました。
383 :デフォルトの名無しさん2011/10/31(月) 11:32:05.31
多次元配列は列挙型の恩恵が受けられないから普通は配列の配列を使う
385 :デフォルトの名無しさん2011/10/31(月) 11:43:44.26
>>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();
出来たら良いなぁとか考えてた。ちょっとキモいけど
388 :デフォルトの名無しさん2011/10/31(月) 13:29:24.59
>>385
多次元配列にすると処理速度が一気に落ちるからね
連続画像処理なんて特に差が出る
389 :デフォルトの名無しさん2011/10/31(月) 19:32:31.83
>>383
意味が分からんので詳しく
390 :デフォルトの名無しさん2011/10/31(月) 19:45:59.33
しょうがないにゃあ・・

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>' に変換できません
391 :デフォルトの名無しさん2011/10/31(月) 19:50:07.65
>>390
それのどこに列挙型が出てるんだよ?
393 :デフォルトの名無しさん2011/10/31(月) 20:04:41.00
IEnumerable<T>関連だから列挙型という表現をしただけだよ
Enumは確かに関係ないね
394 :デフォルトの名無しさん2011/10/31(月) 20:48:47.24
>>393
ポカーン
395 :デフォルトの名無しさん2011/10/31(月) 20:54:30.78
>>393
俺用語はママとの会話だけにしときまちょうね
397 :デフォルトの名無しさん2011/10/31(月) 21:01:26.18
最近は列挙と言われるとLinqのほうを先に連想するからじゃね?
399 :デフォルトの名無しさん2011/10/31(月) 21:25:35.87
ふらっとC#,C♯,C#(初心者用)で最初に質問したのですが、こちらのスレに移った方が良いと言われたので…
これはもしかしたらC#の問題では無いかもしれないけれど、質問させてください。

現在、Visual C# 2010 Express でスクリーンセーバーを作成しています。そしてスクリーンセーバーの
各設定(背景の色など)をアプリケーション構成ファイル(app.config)に保存する仕様にしました。

設定変更用のダイアログボックスを作成し、そこで「Properties.Settings.Default.○○」を利用して
設定を変更しており、設定した値はきちんと保存されています。.scrファイルを右クリックして「テスト」
でスクリーンセーバーを起動すると、設定がきちんと反映されて動作します。

しかし、私は今 Windows7 マシンを使っているのですが、.scrファイルを右クリックして
「インストール」を選択するとスクリーンセーバーの種類や待ち時間を設定するダイアログが
表示されます。ここにある小さなプレビュー画面や、「プレビュー」ボタンを押して呼び出される
スクリーンセーバーは、きちんと設定が反映されて動作します。

しかし、待ち時間の経過によりスクリーンセーバーが呼び出される場合は、何故か設定が全く反映されず
app.configのデフォルト値で動作してしまいます。ちなみに、サブとして WindowsXP のマシンも持っている
のですが、そちらではこのような問題は起こらず設定がきちんと反映されます。

いくら考えても、どれだけネットなどで検索しても、全く原因の見当がつきません。
どなたかご助言をいただければうれしいです。
403 :デフォルトの名無しさん2011/10/31(月) 21:49:28.37
>>399です。どうやらこちらではスレ違いのようですね。失礼しました。
405 :デフォルトの名無しさん2011/10/31(月) 21:51:36.45
>>403
質問は2chなんて使わないほうがいいよ

これから質問者がいなくなるように潰しにかかるから
409 :デフォルトの名無しさん2011/11/01(火) 01:32:22.85
>>399
初心者を馬鹿にするだけの粘着に絡まれて可哀想だと思ったが
ふらっとで回答出てるじゃねーか。

そりゃこっち来ても馬鹿にされるわ。
401 :デフォルトの名無しさん2011/10/31(月) 21:38:38.02
>これはもしかしたらC#の問題では無いかもしれないけれど、質問させてください。

わかってるくせにずうずうしいな
406 :3992011/10/31(月) 21:53:16.99
ほんとだ、質問した俺がバカでした
こんなきしょく悪い奴らしかいないなんて
やっぱり2ちゃんやってるやつは底辺の腐った奴らですね
ありがとうございました
407 :デフォルトの名無しさん2011/10/31(月) 21:54:00.08
>>406
2度とくんなよカス
412 :デフォルトの名無しさん2011/11/01(火) 05:01:09.80
C#って自作クラス用の順位キューって出来ないんでしょうか?
413 :デフォルトの名無しさん2011/11/01(火) 08:44:00.53
作れば出来るだろ
414 :デフォルトの名無しさん2011/11/01(火) 10:08:12.61
>>413
バカはここにくるな
416 :デフォルトの名無しさん2011/11/01(火) 10:19:25.16
順位キューってなんだっけ?
ランダムアクセスできるキューのこと?
417 :デフォルトの名無しさん2011/11/01(火) 10:28:40.04
優先順位付きキューのこと…かな
.NETのコレクションクラスには標準では用意されてないけど
418 :デフォルトの名無しさん2011/11/01(火) 10:46:26.38
ありがと
LINQのおかけであまり気にならないけど、.NETのコレクションは地味に弱いよね
419 :デフォルトの名無しさん2011/11/01(火) 11:51:39.55
数日前から何か妙だな
また変なのが居着いたか

つくづく池沼に絡まれる言語だな
間口が広いってことだろうが
420 :デフォルトの名無しさん2011/11/01(火) 12:46:24.24
ASP.NETでC#を使ってます
XmlDocument.LoadXmlで"aaa"などXMLではない文字列を渡してやってXmlExceptionを出してやるとcatchに飛ぶのはいいがcatch内の処理を一通り終えてもエラーページを表示しません
処理が終了しない感じです
LoadXmlの前に渡されるデータの始めにXMLタグがない場合はExceptionに飛ばすようにするとcatch内の処理がすべて実行されます
もちろん、catchは同じものです
421 :デフォルトの名無しさん2011/11/01(火) 15:31:02.78
>>420
ご報告ありがとうございます
次回からはご自身のブログにでも書きやがって下さい
423 :デフォルトの名無しさん2011/11/01(火) 19:09:05.42
>>420
何を言っているのか全くわからない、エラーページとかいうからWebBrowserかと思ったらそうでもないようだし
425 :デフォルトの名無しさん2011/11/01(火) 19:20:50.60
ASP.NETかよ・・・
凄まじいクズ仕様で魂が震えたわ
馬鹿正直にサンプル通り作ってないで間接的にDLL呼べ
427 :デフォルトの名無しさん2011/11/02(水) 04:20:13.61
上級もへったくれも、ASP.NETを言われるままに作ってたらひどいことになるだろ
生成されるHTMLはゴミだし、他の言語で全く応用のきかない汚い謎コードになるのが関の山
ASP.NETはサーバーサイドプログラムをC#様で書けるようになる部分だけ活用するのが一番
いつもの押し付けがましい謎ソリューションは無視するのが無難だね
俺何か間違ったこと言ってるか?
431 :デフォルトの名無しさん2011/11/02(水) 10:43:04.51
>>427
間違ったことは言ってない。
言ってないが、「俺何か間違ったこと言ってるか?」の部分は沸点の低い人から見たらケンカを売っているように見えるんだぜ。
落ち着いた日本語を心がけるのが吉なんだぜ。
432 :デフォルトの名無しさん2011/11/02(水) 11:58:21.37
>>431
悪かった、言い過ぎたよ
428 :デフォルトの名無しさん2011/11/02(水) 05:20:03.90
自社製品にしか通用しない技術に投資させて客を囲い込むのはマイクロソフトのお家芸だな
430 :デフォルトの名無しさん2011/11/02(水) 08:40:05.88
GoogleAppsの料金改定で一部の自称情強がわめいたのは記憶に新しいね
433 :デフォルトの名無しさん2011/11/02(水) 17:56:48.00
分かればいいんだよ
次から気をつけろよったく
434 :4312011/11/02(水) 18:00:22.90
>>433
ちょwwそんなこと思ってねーよww
435 :43I2011/11/02(水) 18:29:49.10
誰がこの話題をここで終わらすと言った
俺は微塵も許す気ねーしw

たとえおまえにその気は無くても、こっちはけんか売られた事には変わりないんだ
この板にはIDが無いからIDが変わるまで粘るとかそんなちゃちなことはしないぜ!
このスレが終わるまでねちねちと言い続けてやる
436 :デフォルトの名無しさん2011/11/02(水) 18:50:48.12
43I…えぇと…?
437 :デフォルトの名無しさん2011/11/02(水) 18:54:50.46
>>436
そいつがルパンだ!ルパンをおえぇぇー!!!
439 :4З12011/11/02(水) 22:39:29.78
成りすましはよくないよ
440 :デフォルトの名無しさん2011/11/02(水) 22:49:28.39
>>439
貴様からルパンのニオイがするぞ!
442 :デフォルトの名無しさん2011/11/03(木) 09:04:13.15
ここまで1人の自演
IDなしってのは、こういう遊びをするためなんですね。
450 :デフォルトの名無しさん2011/11/05(土) 22:17:16.56
int, double のarray の宣言しただけの各初期値が0
ってのは言語仕様?処理系依存ですか?
0か1を挿入するときに1だけ挿入ですませたら気持ちいいので
452 :デフォルトの名無しさん2011/11/05(土) 22:24:42.77
>>450
MSDNを見れば分るけど、「配列は型の初期値で初期化されます」とある
これは言語というか.netの仕様だね。 Monoだとどうなるかは知らん。

あと、三項演算子使えば、見た目は綺麗に書けるよ!
451 :デフォルトの名無しさん2011/11/05(土) 22:23:04.32
仕様だったはず
Cの処理系依存な部分を排除する方針だったし
453 :デフォルトの名無しさん2011/11/05(土) 22:34:25.89
仮にCLRの仕様とC#の仕様が一致していなかったとしても、C#コンパイラが配列を初期化するILを吐くだけの話だと思うが
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++と一緒に開発できないので。。)

462 :デフォルトの名無しさん2011/11/06(日) 11:43:46.00
>>455
そのライブラリをCから呼べるようにしてC#からDllImportがスマート
C++/CLIはMSに見捨てられてる
463 :デフォルトの名無しさん2011/11/06(日) 11:53:15.76
>>462
> C++/CLIはMSに見捨てられてる
マジで?どういうことなの?
456 :デフォルトの名無しさん2011/11/06(日) 05:52:31.73
できればCLIスレあるんだからで聞いて欲しいんですが。。
457 :デフォルトの名無しさん2011/11/06(日) 05:58:58.80
EEだからC#使いたくないってのが意味不明
458 :デフォルトの名無しさん2011/11/06(日) 06:21:39.34
IDE使わないのが最強
460 :デフォルトの名無しさん2011/11/06(日) 06:38:47.97
インテリセンス使ってると、CなんとかクラスのBなんとかメソッドとしか記憶してなくて誰かと話すとき困ったりするよなww
464 :デフォルトの名無しさん2011/11/06(日) 12:03:49.45
デザイナはバグだらけ
WPF,Silverlight,XNA非対応
初版以降LINQなどの言語機能追加一切なし
VS2010でインテリセンス削除
CLR4との互換性なし(.NET4で動かすには再コンパイルが必要)
WinRTではサポートしないと明言
お察しください
465 :デフォルトの名無しさん2011/11/06(日) 12:21:57.16
>>456
ゴメン知らなかった。
>>457
ソリューション別にしないとダメだし
IDEも2個起動しないとダメだし
>>458〜
無理!
>>462
Cから呼べるようにするとC#でよべますか?
>>464
色々悲しい現実が・・
ってゆーかマイクロソフトは飽きっぽいな。
ちゃんと最後まで面倒見てあげてほしい。


皆さんありがとうございました。
466 :デフォルトの名無しさん2011/11/06(日) 12:24:55.70
>>464
ありがとう
そんなひどい事になってたのか・・・
468 :デフォルトの名無しさん2011/11/06(日) 14:51:31.31
無理
C++/CLIと違ってExcelVBAやらAccessVBAやらの資産が多すぎて、そこからVBに入門した人も多いから
自分もC++/CLIとVBどっちもなくなってほしい。
むしろExcelC#AとかAccessC#Aとか作ってほしい。
476 :デフォルトの名無しさん2011/11/06(日) 15:45:09.68
>>468
> むしろExcelC#AとかAccessC#Aとか作ってほしい。
んだ。
481 :デフォルトの名無しさん2011/11/07(月) 00:11:25.44
>>468
>Excel C#A
別にC#である必要は無いけど、今のCOMベースのを、VBAで扱わなければいけないのをどうにかしてほしいな。

過去の(負の)遺産の維持のために使われる労働力とVBAを使わされるユーザーの負担と
新しい言語・環境に移植するコストとその維持、を比較すると、後者の方が遙かに少ない気がするんだが…

とりあえず、例外機構の強化と、完全評価の撤廃は必須。あと出来れば、行と列やシートの添え文字が1から始まる変態序数をやめてくれ。
483 :デフォルトの名無しさん2011/11/07(月) 18:07:17.24
>>481
>行と列やシートの添え文字が1から始まる変態序数
大昔のBASICからの流れだと、添え字0の方が変態仕様なんだが
普通に物を数えるときにゼロから数え始めるか?
10個って宣言したら1〜10まで使えるほうが自然じゃないか?
ゼロオリジンなんて機械の都合のいい方法を押しつけられてるだけだぞ
498 :デフォルトの名無しさん2011/11/07(月) 22:29:07.54
どうでもいいけど、>>483辺りから読むと、どっちが文脈読めない
恥ずかしい馬鹿かははっきりすると思うよw
469 :デフォルトの名無しさん2011/11/06(日) 14:59:17.30
要するにC++/CLIは儲からなかったんだろうな
VBの客とか問題解決のためならいくらでも出しそうだもん
470 :デフォルトの名無しさん2011/11/06(日) 15:05:12.17
つーかVBはVC++(C++/CLIの方ではない)で作ったコンポーネントを金出して買うのが基本だからな。
472 :デフォルトの名無しさん2011/11/06(日) 15:18:37.00
勘違いしてるのは>>471の方だな。
RADこそVBの本質であり存在意義だったわけで、「何を血迷ったか」も糞もない。

それでなきゃ>>470の話とも矛盾するだろ
471 :デフォルトの名無しさん2011/11/06(日) 15:14:56.04
何を血迷ったかWinFormsデザイナ付けちゃったから勝手に勘違いされたんだよ
もともと糊付け言語以上のものではないから今更
473 :4712011/11/06(日) 15:19:46.81
C++/CLIのこと
申し訳ない
475 :デフォルトの名無しさん2011/11/06(日) 15:32:36.31
>>473
そういう意味かw
こちらこそごめんw
477 :デフォルトの名無しさん2011/11/06(日) 15:48:24.89
プログラミングを始めようと思って、C++が有名とわかり、VC++をダウンロード
しかし、ウィンドウにつられよくわからず何時の間にかC++/CLIをやり始める
そして資料が少なすぎて死亡というパターンがありそう

C++とC#orVBの両方に詳しくないとC++/CLIは無理だよな
478 :デフォルトの名無しさん2011/11/06(日) 16:01:35.94
もともとC++を使っていて.NETに移行した人が旧システムを活用しやすくするためのC++/CLIだしな
484 :デフォルトの名無しさん2011/11/07(月) 18:33:27.81
VBAでゼロオリジンに切り替えられることからしてどっちがデファクトだか分かりそうなもんだが
486 :デフォルトの名無しさん2011/11/07(月) 18:35:17.96
それに配列は場所なんだからその場はゼロだろ
原点は1mか?
488 :デフォルトの名無しさん2011/11/07(月) 20:23:46.40
まあ0起番号でも1起番号でもどっちでもいいと言えばいいけど、
エクセルでふざけてると思ったのは、確かRange.Valueって戻り値が二次元配列なんだけど、
原点が[1, 1](0の列と0の行の値は全部null)になってるんだよな。
490 :デフォルトの名無しさん2011/11/07(月) 20:56:00.88
あーそうだったかもしれん。
初めてデバッガで見たときはこんな妙な世界があるのかと
491 :デフォルトの名無しさん2011/11/07(月) 21:20:55.76
1オリジンがあること自体許しがたい
自分が使わなければいいとかそういう次元ではない。
FOR文はかなりの確立でTO x.Count - 1とか書くことになる。
狂ってるとしか思えない。
502 :デフォルトの名無しさん2011/11/07(月) 23:24:16.11
>>491
当たり前だ
indexは座標であって、個数単位ではない

コントロールをフォームの一番左上に置くときに

x.Index-1,y.Index-1とする方が気持ち悪い
3Dゲーム作るときもあらゆる線形配列を-1にするのか?
バカモノ
492 :デフォルトの名無しさん2011/11/07(月) 21:26:39.35
確率を確立と書くこと自体許しがたい
自分が使わなければいいとかそういう次元ではない。
あまつさえ確立と書く部分を確率と書いていたりする。
狂ってるとしか思えない。
495 :デフォルトの名無しさん2011/11/07(月) 22:09:26.79
For i = 0 To x.Count - 1とか書かないといけないのは0ベースの方だと思うが、C#スレで話すことでもない
497 :デフォルトの名無しさん2011/11/07(月) 22:20:02.55
C#に存在しない FOR TO 構文を根拠に論理組み立てられてもな・・・
500 :デフォルトの名無しさん2011/11/07(月) 23:17:09.87
配列はメモリの座標だからな
X,Yの2次元の原点は0、0だ
配列の要素の個数は1でも
その要素がある座標は0だ
503 :デフォルトの名無しさん2011/11/07(月) 23:25:43.50
>>500

    〃〃∩  _, ,_
     ⊂⌒( `Д´) < ウルサイウルサイ!
       `ヽ_つ ⊂ノ
              ジタバタ

      _, ,_
     (`Д´ ∩ < スレチだスレチだ!!!
     ⊂   (
       ヽ∩ つ  ジタバタ
         〃〃

504 :デフォルトの名無しさん2011/11/07(月) 23:28:57.41
宇宙の始まった時間は1なのか?
1の前はなんだ?
ここに人類の特異点が存在する
505 :デフォルトの名無しさん2011/11/07(月) 23:30:44.10
>>504
そういう話はいらねえw
506 :デフォルトの名無しさん2011/11/07(月) 23:40:19.27
>>504
西暦の世紀が1から始まるのは混乱の元だよな
2011年が21世紀って今でもしっくり来ない
507 :デフォルトの名無しさん2011/11/07(月) 23:42:23.71
ようするにマトモな人間は0から数えるってことだ。
バカかガキか未熟者が1から数えると。
508 :デフォルトの名無しさん 2011/11/07(月) 23:49:11.69
すげーすれちがいの話題だな。
ちなみに、数学初期には0の概念が無かった
宗教の無の概念により0の概念も加わった。
ちなみにマトモな人間は0から数えない。
どこの世界に、「ぜろ、いち、にぃ、さん」なんて
数え方するやつがいんだよ。
511 :デフォルトの名無しさん2011/11/07(月) 23:53:42.91
>>508
プログラマでも個数をゼロからは数えないという
説明をしてやったのにお前は理解力ゼロだろ
512 :デフォルトの名無しさん2011/11/07(月) 23:56:28.84
だってCの配列は、ポインターとオフセットだからな
両者の扱いが異なると使いにくくなる

一見不合理でもCの世界では合理的に完結している
513 :デフォルトの名無しさん2011/11/08(火) 02:55:52.36
プログラミング言語の出自自体、物理シミュレーションとかから始まってるからなぁ。
数学だと0ベースの方が自然(というか、式が簡単になる)ことが多いし。
516 :デフォルトの名無しさん2011/11/08(火) 10:52:20.03
3 5 7 9 11 13 15 17
518 :デフォルトの名無しさん2011/11/08(火) 11:29:08.00
>>516
2 の立場はどうなる?
517 :デフォルトの名無しさん2011/11/08(火) 11:19:43.56
数学なら順番数えるだけのインデックスは普通1からだし
その昔科学技術計算に使われた(その分野ではまだ現役だが)FORTRANだって1からだし
アルゴリズムの本に書いてある疑似コードもだいたい1からだろ
順番だけなら統一されてさえいれば別に何で始まっても問題ない
Cは順番だけでなく基準位置からのオフセットという意味を持たせたから
532 :デフォルトの名無しさん2011/11/08(火) 19:31:37.86
>>517
数学、高校までだと1ベースだけど、数論とかやりだすと途端に0ベースにならない?
なんというか、配列の開始番号問題と、自然数に0を含めるかどうか議論は似てる気もする。
519 :デフォルトの名無しさん2011/11/08(火) 12:08:56.49
優位性を語ってんだから、どっちでもいいとか抜かすコウモリはすっこんでろ
520 :デフォルトの名無しさん2011/11/08(火) 12:22:13.13
1からと0からでどっちが自然なコードになるかは場合によりけり。

サイズに注意するのとセルが1個無駄になることを除けば、0からでも
使えるものを1から使うことはできるが、逆はできない。
524 :デフォルトの名無しさん2011/11/08(火) 13:19:26.04
Cだと a[5] と *(a+5)は等価である。だから0から始める必要があった
そんだけ
525 :デフォルトの名無しさん2011/11/08(火) 13:23:33.16
恐ろしいことに、a[5]と5[a]も等価だったりする
526 :デフォルトの名無しさん2011/11/08(火) 13:28:03.80
>>525
落ち着いて考えたらたしかに・・・これはおもろいな、気づかなかった
528 :デフォルトの名無しさん2011/11/08(火) 14:35:35.59
バカばっか
531 :デフォルトの名無しさん2011/11/08(火) 15:08:26.02
>>528
ルリルリぺろぺろ
529 :デフォルトの名無しさん2011/11/08(火) 14:52:21.72
5[a]→*(5+a)→*(a+5)→a[5]
一見強引だが規則通りなんだよなw
539 :デフォルトの名無しさん2011/11/08(火) 20:29:45.14
>>529
それはCが本質を突いてるってことだよ。
ブビーじゃこうはならん
533 :デフォルトの名無しさん2011/11/08(火) 20:00:08.06
後置演算子の評価っていつおこわなわれるのでしょうか?
i = 0;
a(b(c(d(e ... xxx(i++) ... ) ) ) );

としたとき、aの評価が終わるまで
i==0 なのでしょうか?

537 :デフォルトの名無しさん2011/11/08(火) 20:19:34.81
どう見ても後置です。ありがとうございました。

というか、前置はそれが作用する式が参照される前、後置は参照されたあとにインクリメント、デクリメントされるって覚えときゃいいよ
それ以上複雑で、式の評価順序が問題になるようなケースで前置後置は使うべきじゃない
538 :デフォルトの名無しさん2011/11/08(火) 20:24:54.31
さあどうなるかな

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));
540 :デフォルトの名無しさん2011/11/08(火) 20:39:39.80
>>538
この例いいね、ちゃんと理解していないと結果の意味がわからない
541 :デフォルトの名無しさん2011/11/08(火) 21:28:44.06
>>540
理解しているかの例としては良いけど、
同時に実際には組んではいけないコードの例としても良いなw
542 :デフォルトの名無しさん2011/11/08(火) 21:42:39.40
>>540
仕事上でそんなコード書く奴クビにするんで。
良いとは言えないかな。
544 :デフォルトの名無しさん2011/11/08(火) 21:49:12.09
>538
それは結果が保証されてないでしょ。
546 :デフォルトの名無しさん2011/11/08(火) 21:53:17.45
>>544
結果が保証されてないのはCじゃなかった?
C#はそれを踏まえて引数の評価順序を固定したはず
549 :3832011/11/09(水) 12:35:32.01
System.Xml.XmlDocuments の説明のところに、「既定では数値エンティティは展開されます」とかいてあるのですが、エンティティを展開させずに出力する方法はありませんか?
数値エンティティや、特定のエンティティを展開せずに出力したいです。
550 :デフォルトの名無しさん2011/11/09(水) 19:03:15.52
ttp://msdn.microsoft.com/ja-jp/library/ms404247(v=VS.100).aspx

「長期間の弱い参照」の使い道が思い浮かばないのですが
どういうときに使うものなんですか?
553 :デフォルトの名無しさん2011/11/10(木) 05:13:46.80
>>550
「長い期間の弱参照」より先に、↓こういう、Finalize内で自分自身を復活させるようなコードの用途考えないといけない
http://www.netframeworkdev.com/common-language-runtime/weakreference-trackresurrection-44443.shtml

けども、それ自体まったく使い道思いつかない。
551 :デフォルトの名無しさん2011/11/09(水) 19:42:49.38
IronPythonの中で使われてたのを見たことがある
循環参照の検知に使えるらしい
552 :デフォルトの名無しさん2011/11/10(木) 02:37:33.49
記述量とか含めC# で実用的なパターンマッチは作れるかな
C#モナドが大体わかったのでやってみようかと思う
どう思いますか?
554 :デフォルトの名無しさん2011/11/10(木) 05:15:00.34
556 :デフォルトの名無しさん2011/11/10(木) 22:34:21.05
int?
これってなんだっけ?
シリアライズはいろいろ制約があったはず
558 :デフォルトの名無しさん2011/11/10(木) 22:42:04.76
XmlSerializerとかトラブルのもとだからやめとけ
楽しようとしたはずがつまらない制約でどんどんコードが複雑になっていくよ
XDocumentでちゃっちゃかXML化コード書いたほうが最終的には早い
562 :デフォルトの名無しさん2011/11/11(金) 00:32:14.96
>>558
それやると、バージョアップでクラス削除したりしたとき問題おきないか?
下位バージョンにも手動で対応しないとだめじゃん
559 :デフォルトの名無しさん2011/11/10(木) 22:50:36.41
むむ!!ヌルアブルはだめなのかぁ〜〜orz
ガックシorz

うーん、ほかにいいデシリアライズ方法を考えないとなぁ・・・
564 :デフォルトの名無しさん2011/11/12(土) 00:17:44.99
XML系のクラスってバージョンがあがったり
新しいものが出てくると、宣伝文句として
「より厳密に勧告に従うことが出来ます」
とか言うよね。

でも、はっきり言って余計なトラブルの元なんだよなw
XMLクラスのアップデートはうれしくない
あいつらもわかって言ってんだろうけど
565 :デフォルトの名無しさん2011/11/12(土) 09:52:07.97
新しいオプションとして追加されたり、
XLINQのように今までと全く別物として追加される分には何も問題ないだろ
新規コードでだけ使われるんだから
MSなので下位互換性のポリシーはしっかりしてる
566 :デフォルトの名無しさん2011/11/12(土) 13:01:03.86
Slimeクラスが分裂で新しいslimeインスタンスを作るとして

Slime slime3 = slime1 // slime3 == slime1
slime1 = slime0.bunretsu();
//slime3 != slime1
slime1 = slime3 // slime3 == slime1

ここでslime1のアドレスが変わらないようにしたいですが
どうすればいいでしょうか?slime3のようにアドレスのバックアップをとるしか
ないのでしょうか
569 :デフォルトの名無しさん2011/11/12(土) 13:17:12.99
>>566
なんか難しく考えすぎてるんじゃね?

var new_slime = slime0.bunretsu();

でよくね?

それともslime0はプロトタイプパターンか何かなの?
567 :デフォルトの名無しさん2011/11/12(土) 13:03:36.02
はい
あとアドレスじゃなくて参照だからアドレス言うな
オブジェクトのアドレスは放っといてもGCで勝手に変わる
570 :デフォルトの名無しさん2011/11/13(日) 13:53:17.39
末尾再帰最適化ってまだ安定して出来ない?
571 :デフォルトの名無しさん2011/11/13(日) 15:19:46.58
>>570
64ビット版の.NETで、ほんとに最後の行での再帰(ifとかの末尾でなく)に限り、
JIT時に最適化される。

きわめて限定的。
あと、C#→ILの段階では一切最適化しない。
573 :デフォルトの名無しさん2011/11/13(日) 22:15:35.20
なんか
System.Xml名前空間が見当たらないのですが
なんなんでしょうか?
VS11です
574 :デフォルトの名無しさん2011/11/13(日) 22:16:43.18
>>573
プロジェクトはwinformで作ってる?
576 :デフォルトの名無しさん2011/11/13(日) 22:25:50.39
>>574-575
空のプロジェクトで作ってました。
ありがとうございます
578 :デフォルトの名無しさん2011/11/14(月) 10:19:28.76
下記のような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>

580 :デフォルトの名無しさん2011/11/14(月) 11:11:36.20
>>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);
}
581 :デフォルトの名無しさん2011/11/14(月) 12:40:55.32
>>580
遅延実行再帰かよwww
質問者じゃないけどいいもの見れて良かった
582 :5802011/11/14(月) 12:45:09.90
>>581
ほんとだうっかりしてた
この場合トラブルの元にしかならないと思うから最後の行のchildrenはchildren.ToArray()で
583 :5782011/11/14(月) 14:10:19.36
ごめんなさい・・・
.NET2.0の縛りがあってXElementがつかえませんでした。。。orz
587 :デフォルトの名無しさん2011/11/14(月) 15:31:26.49
>>583
2.0にはSystem.Xml.XmlElementがあるはず。

このクラス、SilverlightやWinRTで使えなくなるけどもね。
レガシー乙。
586 :デフォルトの名無しさん2011/11/14(月) 15:21:16.74
iTextSharp以外の、日本語が扱えるPDF(ファイル)操作ライブラリってあります?
いくつか発見はしたのですが、どれももうメンテされていない(最終更新日が2年以上前)ようなのです。

ランタイムフリーなら有料でもいいんですが、iText Softwareと商用ライセンスを結ぶ場合もどうやら配布数で金額が変動するようですし・・・。
お心当たりがありましたら、是非ご教授ください。
588 :デフォルトの名無しさん2011/11/14(月) 20:14:12.47
>>586
iTextSharpのAGPL版使ってPDF操作のところだけ
全く別の汎用的に使えるコンソールアプリとして作ってAGPLで公開したら
589 :5862011/11/15(火) 14:49:48.51
>>588
やはり、それしかありませんか・・・。一応、ソレも検討はしていたのです。
いかにも「GPL回避してます」という感じがしてあまり好きになれませんが、背に腹は変えられませんね。

アドバイス、ありがとうございました。そちらの方向で検討しましょう。
590 :5782011/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; }
}
593 :デフォルトの名無しさん2011/11/16(水) 17:00:43.16
namespase N1 の間で
一つの静的クラスのメンバを自由に呼び出したいと思いましたが
あまり現実的ではないっぽいので

public static class a{...}

としてメソッドを h.p();,h.q(); などとタイピングに適した形にして
間に合わせました。
個人用途ですし最終稿では書き換えるのでこれがベストですよね?
594 :デフォルトの名無しさん2011/11/16(水) 17:04:52.23
>>593
リファクタリング前提であれば、そのようにしてもいいけど、
設計段階でおかしなことをしてると、依存関係ができたときに関係解消の手間がかかるので、
そこだけ注意すればいいんじゃないかな。
596 :デフォルトの名無しさん2011/11/16(水) 17:47:47.85
作法の問題はともかくアクセスレベルがpublicはいかんでしょ(>>594の理由で)
internalで
599 :デフォルトの名無しさん2011/11/16(水) 18:34:42.02
>>593
コードスニペット作るとかで対処するなあ。
そういうの、あまり良いとは思えない。
595 :デフォルトの名無しさん2011/11/16(水) 17:40:26.27
長い名前で不便に思ったことはないな
どうせインテリセンスに頼るしそんなにパパッと書きたいものはC#なんて使わんし
597 :デフォルトの名無しさん2011/11/16(水) 18:21:01.47
名前空間といえば、フォルダ階層掘って置いたクラスを別のフォルダに移動させると警告量産されてうざい
あれ何とかならないんだろうか
598 :デフォルトの名無しさん2011/11/16(水) 18:27:21.55
それC#か?
物理パスには依存しないだろ
600 :デフォルトの名無しさん2011/11/16(水) 23:36:49.84
>>598
いやフォルダの中にクラス作ると名前空間にフォルダ名がつきやがるんだよ
それをそのままにして移動させると警告出まくりんぐ
601 :デフォルトの名無しさん2011/11/17(木) 01:50:56.77
>>600
フォルダにクラス作って、フォルダ名変えてみ
エラーでないから
602 :デフォルトの名無しさん2011/11/17(木) 09:08:31.40
やはりIDEを使わないのが最強
604 :デフォルトの名無しさん2011/11/17(木) 13:03:24.47
>>602
冗談で言ってるんだよね?^^
606 :デフォルトの名無しさん2011/11/17(木) 19:09:30.01
はぁ?
マジ言ってんの?
バイナリエディタなんたらかんたら
607 :デフォルトの名無しさん2011/11/17(木) 19:21:56.26
要するに、防壁回路を構築するのは疑似画像プログラムを見ながら電脳で直接やるのが一番ってこと?
616 :デフォルトの名無しさん2011/11/18(金) 02:11:37.28
普通にキャストできるよ。
(Language)1;
621 :デフォルトの名無しさん2011/11/18(金) 09:59:14.04
まさかお前ら本気で>>616の方法が出て来なかったの?
622 :デフォルトの名無しさん2011/11/18(金) 10:16:06.32
>>616の方法が出てきてるじゃない
624 :デフォルトの名無しさん2011/11/18(金) 11:11:32.13
public enum Language
{
 ENGLISH = 0x10,
 JAPANESE = 0x11
}

(language)1;

みたいに数字の1をぶっ込んだらJAPANESEになるような方法ってないの?
俺のやりたいことをなんとなく察して、どうにかしてくれ
625 :デフォルトの名無しさん2011/11/18(金) 11:20:54.72
>>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;
}
みたいにすればいいんじゃねーの?
626 :デフォルトの名無しさん2011/11/18(金) 11:55:46.85
>>624
flags属性つけろ
627 :デフォルトの名無しさん2011/11/18(金) 12:40:10.19
>>625
列挙型の場合値以外に1番目を指定する方法はないってこと?
でもforだと値が何であってもちゃんと順番通りでるよ
631 :デフォルトの名無しさん2011/11/18(金) 13:51:18.45
enum Language
{
Japanese="日本語"
}
Language jpn= Language[1]
Language jpn=Language["日本語"]
string 母国語=Language.Japanese;

こんな感じで出来たら楽なのに
実際はできないから引数に応じて
switch文書かないといけないから面倒
635 :デフォルトの名無しさん2011/11/18(金) 20:00:23.78
>>634
それいいな、>>631じゃないけどありがとう
634 :デフォルトの名無しさん2011/11/18(金) 19:57:23.89
DescriptionAttributeあたりのstringを取るカスタム属性を各フィールドに貼っといて、
リフレクションでstaticなディクショナリに入れとくのが定石かな
636 :デフォルトの名無しさん2011/11/18(金) 20:44:27.86
[C#] enum に文字列の属性を: いげ太のブログ
ttp://igeta.cocolog-nifty.com/blog/2007/11/enum_string.html
637 :デフォルトの名無しさん2011/11/18(金) 21:06:05.89
>>636
それC#3.0なら拡張メソッド使えっていうのが意味不明
別に拡張メソッド無くても普通に静的メソッド呼ぶだけだし
属性は属性で宣言と一緒に書けるとか列挙体の型に依存しないとかメリットはあるわけで
640 :デフォルトの名無しさん2011/11/18(金) 21:17:36.10
MyEnumExt.ToStringExt(value) が value.ToStringExt() と書けるようになって
前者なら属性の方が良いが後者の書き方ができるなら速いしスマートだしで拡張メソッド一択とか
そもそも何のために属性使ってるのか全く理解してない
642 :デフォルトの名無しさん2011/11/18(金) 22:16:12.46
JAVAと違うのは何か意図があっての事では無かったの?
まぁどうでもいいけど。
Enumはタイプセーフが保証されなくて好きになれない。
643 :デフォルトの名無しさん2011/11/18(金) 22:28:29.38
>>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) の方が、ビット演算とかじゃ無くて集合演算してるって気になれるし
644 :デフォルトの名無しさん2011/11/18(金) 22:30:22.54
Javaと同じのが欲しければ普通にクラスにすればいいだろ
現にJavaのライブラリなんてint定数だらけなんだからそれよりはタイプセーフじゃないenumでも遥かにマシ
C#式のenumさえあれば、メモリやパフォーマンスを気にしてAndroidのAPIがintだらけになることも無かったんだぞ
645 :デフォルトの名無しさん2011/11/18(金) 22:56:49.57
よくタイプセーフと一つ覚えのように言われるが、Javaのenumオブジェクトを扱うときに
一切switch使わないでenumクラスに定義したメソッドを呼ぶならいいけど
switch使ったらタイプセーフなんて全く意味ないぜ?
その時点で値を限定してしまってるんで同じこと
647 :デフォルトの名無しさん2011/11/18(金) 23:38:31.27
>>645
Enumが拡張されたら意味ないって事?
650 :デフォルトの名無しさん2011/11/19(土) 00:12:16.66
>>647
どうせcase全部書いてもdefaultでエラー投げるようにするだろ?
652 :デフォルトの名無しさん2011/11/19(土) 00:40:51.24
>>650
そりゃそうだけど当然過ぎて問題視してなかったわ
Enum拡張する際、影響範囲を調べ対応方針を決める
対応後に問題があれば対応漏れであって、タイプセーフとか全然関係ない
646 :デフォルトの名無しさん2011/11/18(金) 23:30:12.01
Enum+拡張メソッドのお陰で、ある程度は不便な点は解消されたので、これはこれでいいとは思う。
JavaのEnumはほとんど普通のクラスと変わらなくて、
使うのが面倒になってる部分があるので、あまりすきじゃない。
648 :デフォルトの名無しさん2011/11/18(金) 23:53:54.33
そもそもenumを文字列にしたいとか、intをenumにしたいとか、
皆無とは言わないけどレアケースだからどうでもいいといえばどうでもいい。

ただビットフィールドの機能はなんか中途半端に感じる。
いちいちビットマスクと論理演算しなきゃ値のチェックもできないんじゃ、有難味があんまりない
649 :デフォルトの名無しさん2011/11/19(土) 00:05:54.25
>>648
>ただビットフィールドの機能はなんか中途半端に感じる。
確かに敷居は下がったけど、
10進数しか知らない同僚には理解できないだろうなw
651 :デフォルトの名無しさん2011/11/19(土) 00:29:42.71
範囲外の値を入れたらエラーになる引数なんて世の中に腐るほどあるのに
なんでenumだけ特別に目くじら立てるんだろうな
確かにenumに好きな値持たせたりできるのは便利な場面はあるかもしれないが
タイプセーフなんか全くどうでもいいわ
653 :デフォルトの名無しさん2011/11/19(土) 01:14:34.72
で、タイプセーフの利点は?
想定外の値が入らないことをタイプセーフと呼ぶなら、それをコンパイル時に検出できないと意味がない
655 :デフォルトの名無しさん2011/11/19(土) 10:42:50.43
http://scan.netsecurity.ne.jp/article/img/2011/11/13/27625/93.html
tokuhirom、ma.la?っていう人の話だけ聞きたい
色々なスレで見かけるけどWEB業界で有名らしいね
動画ありませんか?
657 :デフォルトの名無しさん2011/11/19(土) 14:38:15.16
>>655
ネットストーカーきもっ
658 :デフォルトの名無しさん2011/11/20(日) 01:11:21.91
String.Format()で{って文字列として埋め込めないんですか?
FormatExceptionになってしまいます。

例:
String.Format("hello{ {0} }", 1);
659 :デフォルトの名無しさん2011/11/20(日) 01:19:52.69
以下のコードは通ったよ・・・。@VC#10EE
string.formatのパーサーエラーなんだとおもうけど、変なエラーだね。

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(string.Format("{0} {1} {2}",'{',10,'}'));
        }
    }
}
670 :デフォルトの名無しさん2011/11/20(日) 05:03:48.56
>>659-660
ありがとうございます。できました。
660 :デフォルトの名無しさん2011/11/20(日) 01:24:29.14
>左中かっこ ({) および右中かっこ (}) は、書式指定項目の開始および終了として解釈されます。
>したがって、左中かっこおよび右中かっこを文字として表示するためには、エスケープ シーケンスを使用する必要があります。
>左中かっこを 1 つ ("{") 表示するには、左中かっこ 2 つ ("{{") を固定テキストに指定します。
>また、右中かっこを 1 つ ("}") 表示するには、右中かっこ 2 つ ("}}") を指定します。
http://msdn.microsoft.com/ja-jp/library/txafckwd(v=vs.80).aspx
661 :6592011/11/20(日) 01:45:09.22
>>660
まともなプログラマだったら、エスケープ記号は\だと思うとおもうんだけど。
どうしてそうなった・・・。
663 :デフォルトの名無しさん2011/11/20(日) 01:50:04.21
>>661
ただのC文字列のローカルルールだろそんなの。
井の中の蛙がまともなプログラマなのかい
679 :デフォルトの名無しさん2011/11/20(日) 13:17:14.76
>>661
\ に意味があるなら \\
" に意味があるなら ""
% に意味があるなら %%
{ に意味があるなら {{
全然問題ない
665 :デフォルトの名無しさん2011/11/20(日) 02:02:14.26
エスケープを同じ文字の連続でやるとかよくあるっていうか
それこそ文字列中の\もその一種じゃないか
666 :6592011/11/20(日) 02:13:27.91
>>665
自分自身のエスケープに自分を2連続は有ると思うけど、とっさの判断で出てくるのは\記号だと思うね。
資料がぱっと検索できればまた違うのかもしれないけど。うーん。。。
667 :デフォルトの名無しさん2011/11/20(日) 02:13:31.69
それに、ライブラリがコンパイラと同じエスケープ記号を使うのはむしろ気持ちが悪い。
正規表現パターンなんかはそれだけど
669 :デフォルトの名無しさん2011/11/20(日) 03:21:04.39
つか正規表現はそのせいでraw文字じゃないと醜くてかなわん
671 :デフォルトの名無しさん2011/11/20(日) 05:47:06.17
お前らって参考になることもあるけどすげーどうでもいいこと議論してることも多いよな
672 :デフォルトの名無しさん2011/11/20(日) 08:48:50.78
お前らって参考になることも1000レスに2〜3回あるけど、すげーどうでもいいこと議論してることが多いよな
673 :デフォルトの名無しさん2011/11/20(日) 09:05:49.53
有意義な時間という言葉があるくらいだから人生のほとんどは有意義じゃないのさ
676 :デフォルトの名無しさん2011/11/20(日) 12:35:32.48
\は文字列中でエスケープしないといけないから\\{になって不自然だからじゃね?
682 :デフォルトの名無しさん2011/11/20(日) 14:59:52.47
>>676
それおかしいでしょ。
680 :デフォルトの名無しさん2011/11/20(日) 13:23:34.77
そのせいでXAMLのマークアップ中にエスケープしようとすると悲惨なことになるがな
683 :デフォルトの名無しさん2011/11/20(日) 16:30:35.90
{}の二重化だと期待する動作になるフォーマットが存在しないことがあるんだよな
@"\{{0:g}\}" となることを期待して

Console.WriteLine("{{{0:g}}}", DateTime.Now);

とか書くと、実際には @"\{{0:g\}}" になるという
686 :デフォルトの名無しさん2011/11/21(月) 01:30:31.82
>>683 応用したらなんか攻撃的なウィルス作れそうだな
687 :デフォルトの名無しさん2011/11/21(月) 01:48:48.95
ごめん俺には>>683が言ってる意味がマジで分からない。
っていうか、その\ってどっから出てくるの?w
685 :デフォルトの名無しさん2011/11/21(月) 00:13:16.20
正直、最初にC#に入って書式文字列の仕様を知ったとき嫌な予感はした。

689 :デフォルトの名無しさん2011/11/21(月) 10:49:06.31
どこからと言われてもスレの流れからとしか
流れも含めて補足すると、

> フォーマットのエスケープは {{, }}
> \ じゃねーのかよ
> (以下、それぞれに対する話)
これを受けて683

仮にエスケープが \ なら @"\{{0:g}\}" とかけるフォーマットが、
エスケープが {{, }} だと記述不可能 ("{{{0:g}}}" だと別物になる)
690 :デフォルトの名無しさん2011/11/21(月) 11:59:56.04
いや、言いたい事に対して {{{って書くと分けわかんないから
使えないけど説明用に\使ったんだろ?
691 :デフォルトの名無しさん2011/11/21(月) 12:38:31.49
架空の構文じゃなくて望ましい出力結果書けば数レスは圧縮できたのにね
692 :デフォルトの名無しさん2011/11/21(月) 14:48:51.33
void HogeMethod()
{
 var wr = new WeakReference(this);
 Task.Factory.StartNew(()=>{ /* wrを使う */ }
}

ラムダ式に直接・間接的にthisの参照や、thisを必要とするコードを書かない限り
内部で勝手にthisの強参照を持つことはないですよね?
694 :デフォルトの名無しさん2011/11/21(月) 19:20:51.38
うん、標準化があるの実は2.0まで。

まあ、MS以外のC#は実質的にmonoしかなく、
そのmonoは4.0どころか、すでに5.0対応済みなんだけども。
697 :デフォルトの名無しさん2011/11/21(月) 21:18:40.23
long t = DateTime.Now.ToFileTimeUtc();
MessageBox.Show(DateTime.FromFileTimeUtc(t).ToString());

普通に考えると上手く行きそうですが実際に実行すると9時間の時差が生まれるようです。
longにして上手く戻す方法はないでしょうか?

698 :デフォルトの名無しさん2011/11/21(月) 21:20:56.35
>>697
事故です
UTC使わなければ良かったw
しかしUTC同士の変換で時差が生まれるのは違和感あるな
700 :デフォルトの名無しさん2011/11/21(月) 21:23:41.67
>>698
「UTC同士の変換」 で時差が生まれてる訳じゃ無いだろw
JST = UTC + 9:00 なんだから、当然っつーかなんつーか。

マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006
マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006