C#, C♯, C#相談室 Part68

このエントリーをはてなブックマークに追加
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になって生き残るだよな
6デフォルトの名無しさん:2011/09/23(金) 22:09:53.92
WindowsがなくなるまでWinForms使ってると思いますよ
7デフォルトの名無しさん:2011/09/23(金) 22:12:23.61
>>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  /
      ... ̄ ̄ ̄\/____/ ̄ ̄
9デフォルトの名無しさん:2011/09/23(金) 23:11:20.98
マンガ脳クンって幼稚だな、まで読んだ。
10デフォルトの名無しさん:2011/09/23(金) 23:56:28.45
WPF消えそうってどういうこと?
11デフォルトの名無しさん:2011/09/24(土) 00:03:07.75
>>1乙じゃねーの
12デフォルトの名無しさん:2011/09/24(土) 00:05:44.89
>>10
WinRT が WPF とは別に作られたからそういう話題になってるのかな。

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

という状況。
13デフォルトの名無しさん:2011/09/24(土) 00:09:34.24
WPF → C#+XAML
SL → C#+XAML
WinRT → C#+XAML

スキル的には何の問題も無い
14デフォルトの名無しさん:2011/09/24(土) 12:18:14.08
WinRTスレ (Metro, .NET Core, C++/CX)
http://hibari.2ch.net/test/read.cgi/tech/1316832663/
15デフォルトの名無しさん:2011/10/01(土) 18:29:43.10
コントロールパネルの「自動再生」をプログラムから変更したいのですが
どの様にすればいいのでしょうか?
16デフォルトの名無しさん:2011/10/01(土) 23:25:53.23
Aアイテムが鮭茶漬けだらけです
17デフォルトの名無しさん:2011/10/01(土) 23:26:49.30
ごめん誤爆しちゃた
18デフォルトの名無しさん:2011/10/02(日) 19:07:13.75
関数ポインタ(≒デリゲートのハッシュテーブル)を使いたがるC上がりが同僚にいるんだけど、
それじゃ可読性損ねる上にVSの支援も効かなくなるからSwitchで分岐してメソッドを呼ぶように
しろと言っても「ソースが長くなる」と納得してくれない


ありがちな光景だよね
19デフォルトの名無しさん:2011/10/02(日) 19:15:01.95
お前も初心者スレ行った方が良さそうだぜ
20デフォルトの名無しさん:2011/10/02(日) 19:17:04.85
VSの支援が効かなくなるって何?
21デフォルトの名無しさん:2011/10/02(日) 19:22:58.73
たぶんDictionary<int, Delegate>を言ってるんじゃないかと思われる
22デフォルトの名無しさん:2011/10/02(日) 19:27:28.05
delegate宣言ってどこにかくの?
delegate使うクラス内?
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使いたがり厨はよく見る
26デフォルトの名無しさん:2011/10/02(日) 20:52:27.06
Visitor使えば
多分同僚が発狂するだろうけど
27デフォルトの名無しさん:2011/10/02(日) 20:54:46.03
>>22
名前空間の直下
型なのでクラスなどと同格
28デフォルトの名無しさん:2011/10/02(日) 20:57:02.24
マルチスレッドプログラム以外でDelegateってなにに使うの?
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とやってることは同じ
32デフォルトの名無しさん:2011/10/02(日) 21:28:07.34
(dynamicでシリアライザーが作れるとは)知らなかった
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言語ってメソッド名が大文字始まりなの?
気持ち悪くね?
小文字にしてくれるだけで気持ちよく書けるわ
36デフォルトの名無しさん:2011/10/03(月) 00:11:52.82
俺は普段からアッパーキャメルで書いてるから全然問題ない。
37デフォルトの名無しさん:2011/10/03(月) 00:16:58.48
Javaも使ってるし全小文字アンダースコア区切りなpythonも使ってるけど
むしろ違ったほうが切り替えができていい
38デフォルトの名無しさん:2011/10/03(月) 00:43:55.58
小文字のほうが不自然。
39デフォルトの名無しさん:2011/10/03(月) 00:50:43.45
常に動詞で始まるならキャメルでも良いが、
JavaはDouble.doubleValue()とかtoString()
とか破綻して見苦しい。
Pascalの方がまっとう
40デフォルトの名無しさん:2011/10/03(月) 00:51:49.32
はいはいケースとかどうでもいいから初心者スレでやってね
41デフォルトの名無しさん:2011/10/03(月) 01:05:49.50
Intはインターフェース
42デフォルトの名無しさん:2011/10/03(月) 01:19:06.98
インターフェイスならINtだろう
43デフォルトの名無しさん:2011/10/03(月) 04:21:26.60
>>35
setHogeとgetHogeでプロパティ代わりとか、センスのない田舎言語よりマシだろ
44デフォルトの名無しさん:2011/10/03(月) 08:24:06.37
c# は後発のパクリだから比較されてもなあ
45デフォルトの名無しさん:2011/10/03(月) 09:52:53.03
パクラレの方は身売りされ、何も決めれず停滞して見るも無残な有様だなぁ
46デフォルトの名無しさん:2011/10/03(月) 10:40:00.47
オラクルさんっパねえっす!
47デフォルトの名無しさん:2011/10/03(月) 17:28:26.39
スレが進みはじめた
48デフォルトの名無しさん:2011/10/03(月) 18:00:35.39
パクラレの方に今更usingが入ったね
asyncが入るのは10年後くらいかな
49デフォルトの名無しさん:2011/10/03(月) 18:06:09.46
みっともない書込みはやめなよw
50デフォルトの名無しさん:2011/10/03(月) 18:28:15.73
拡張tryなんかよりJodaが欲しかった
51デフォルトの名無しさん:2011/10/03(月) 19:24:41.26
DynamicObject でメンバはTryGetMember使って適当に返せるのに
メソッドは適当にでっち上げてかえせないの?
52デフォルトの名無しさん:2011/10/03(月) 19:30:24.88
デリゲート返してごまかす
ちゃんとやるならDynamicMetaObjectを実装する
5352:2011/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
エイリアスなので必要な人には必要。
58デフォルトの名無しさん:2011/10/04(火) 18:07:22.01
無いとタイプが面倒だし見た目が格好悪い
59デフォルトの名無しさん:2011/10/04(火) 18:10:32.18
EnumのUnderlyingTypeを指定するのに必要。

enum T : Int32

みたいには書けないからね。
60デフォルトの名無しさん:2011/10/04(火) 18:33:10.78
59 以外だと好みになるのかな?
うせるから 55 の意見を聞かせてくれ
書籍やwebをみると小文字でエイリアスですとしか読み取れない
型が小文字だったり大文字だったりして統一されてないように見える
些細な事だとは思うんだが。
61デフォルトの名無しさん:2011/10/04(火) 18:33:56.21
俺はどっちでもいいや
62デフォルトの名無しさん:2011/10/04(火) 19:01:39.95
スタイルの問題だが、FCLの型守るならInt32とか書けばいい。
C++/CLIと混ざるとlongの型で注意がいるってくらいでね。
63デフォルトの名無しさん:2011/10/04(火) 19:10:04.10
コンパイラがおもいっきり特別扱いするので実際はSystem.Int32もキーワードみたいなもん
64デフォルトの名無しさん:2011/10/04(火) 19:44:16.78
>>60
微妙な違いは言語仕様の「単純型(Simple types)」のとこ読め

> 型が小文字だったり大文字だったりして統一されてないように見える
小文字の型はC系言語の予約語
大文字の型は.NET Frameworkの命名規則
統一はされてる
65デフォルトの名無しさん:2011/10/04(火) 20:41:29.23
>>64
さんくす!
勉強してくる!
66デフォルトの名無しさん:2011/10/05(水) 09:58:38.84
デリゲート型のクラスメンバって決まった接尾辞とかあります?
67デフォルトの名無しさん:2011/10/05(水) 10:16:22.60
ない
というか普通はイベント使うから
引数でデリゲートを受け取ることはあってもプロパティやフィールドでデリゲートを公開することはまずない
68デフォルトの名無しさん:2011/10/05(水) 20:59:31.95
delegate void FooDelegate();
delegate void BarCallback();

↑これは止めろとMSが言ってた気がする
69デフォルトの名無しさん:2011/10/05(水) 21:30:40.65
いや、〜Delegateは止めて〜EventHandlerか〜Callbackにしろってガイドラインだぞ
70デフォルトの名無しさん:2011/10/06(木) 00:34:27.43
といいつつBCLに〜Callbackなんか見たことないけどあるんかな。
71デフォルトの名無しさん:2011/10/06(木) 01:00:52.01
WaitCallbackとかWaitOrTimerCallbackとかあるじゃん
72デフォルトの名無しさん:2011/10/06(木) 13:28:19.07
アプリが動いている間は
Alt+TabとかCtrl+EscとかWindowsキーとかの
Windowsの特殊キー操作を完全に無効にして、
タスクバーもウィンドウで隠して触れないようにして、
アプリを終了するまではアプリの操作以外できないようにする
そんなアプリって作れるもんですかね?
73デフォルトの名無しさん:2011/10/06(木) 14:39:12.36
>>72
マウスとキーボード入力をフックすればできるんじゃね?
74デフォルトの名無しさん:2011/10/06(木) 14:39:57.51
戻り値があるデリゲートの名前はどうしたらいいですか?
75デフォルトの名無しさん:2011/10/06(木) 15:29:09.89
XMLの簡易エディタ作ろうと思ってます
カーソルのあるタグをハイライトしたいのですが、
文字位置から直近のXElement等を取得するには
どうすればよいでしょうか?
76デフォルトの名無しさん:2011/10/06(木) 18:22:47.22
正攻法なさそうだな
77デフォルトの名無しさん:2011/10/06(木) 21:20:23.91
テキスト系エディタの自作は死亡フラグ
78デフォルトの名無しさん:2011/10/06(木) 21:45:06.13
C#(というか.NET)製テキストエディタって需要あるの?
79デフォルトの名無しさん:2011/10/06(木) 21:52:00.75
今君の目の前にあるVS2010はc#製だけど
80デフォルトの名無しさん:2011/10/07(金) 13:12:30.01
なるほど
死亡フラグ、確かに。
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アプリはガシガシ作れるがアプリの全体像をクラス図で見渡すとかそういう
サポート部分が無料にはない
85デフォルトの名無しさん:2011/10/07(金) 16:15:02.91
silverlight もだいたいできるの?
webdeveloper いれたらできるようなんだが
86デフォルトの名無しさん:2011/10/07(金) 16:15:53.75
.netの物なら問題ないよ
WP7.xも作れる
87デフォルトの名無しさん:2011/10/07(金) 16:19:47.62
すごくね?
いつから太っ腹になったんだ
88デフォルトの名無しさん:2011/10/07(金) 16:21:13.91
囲い込み作戦だよ
.net戦略もあるし
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 は文字列のやりとりだろ
9289:2011/10/07(金) 18:51:49.62
>>91
アホは黙ってろ
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´ '"´ /::::/-‐  \    超スピードだとか催眠術だとか
   / //   广¨´  /'   /:::::/´ ̄`ヽ ⌒ヽ    そんなチャチなもんじゃあ 断じてねえ
  ノ ' /  ノ:::::`ー-、___/::::://       ヽ  }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::...       イ  もっと恐ろしいものの片鱗を味わったぜ…

↑こういう状況なのはわかった
落ち着いて具体的に説明しろ
双子の片割れでもなければエスパーでもないので
お前のはまってるところなんてスレの人間にはわからん
94デフォルトの名無しさん:2011/10/07(金) 18:58:21.56
具体的に説明できると思えないからプロジェクトファイル見せてみ
95デフォルトの名無しさん:2011/10/07(金) 20:39:28.01
ふらっとスレへGo
96デフォルトの名無しさん:2011/10/07(金) 21:15:29.77
>>92
どこが間違ってんの?
キミんとこではバイナリでやりとりしてんの?
それともフレームワークにのっかってるだけなのにオブジェクトでやりとりできると思ってんの?
97デフォルトの名無しさん:2011/10/07(金) 21:24:28.40
.NET RemotingやWCF使えばオブジェクトでやり取りできるよ
通信はバイナリ、テキストどちらでも可(意識しない)
98デフォルトの名無しさん:2011/10/07(金) 21:27:51.53
>>97
無知ですまんかった
99デフォルトの名無しさん:2011/10/07(金) 21:53:26.52
こういうことできませんか?

Class Foo : Int32 {
}

Foo foo = 1;
100デフォルトの名無しさん:2011/10/07(金) 21:54:31.64
なぜそうしたいの?w
101デフォルトの名無しさん:2011/10/07(金) 22:04:07.22
できる
implicit operator
102デフォルトの名無しさん:2011/10/07(金) 22:19:38.10
取り敢えず、Int32は構造体なので継承できない
あと継承したからって派生クラスの変数に直接基底クラスのインスタンスを代入するのはできない
Object o = new Object();
String s = o; // これは無理
103デフォルトの名無しさん:2011/10/07(金) 22:27:30.84
継承はできないけど代入できるようにすることはできるよ
>>101
むしろ継承関係があるとダメ
104デフォルトの名無しさん:2011/10/08(土) 16:29:05.32
ありがとう、implicit operatorでできました。
105デフォルトの名無しさん:2011/10/09(日) 12:48:36.14
値型は全部継承して使うことみたいな基地外コーディング規約あったな。
106デフォルトの名無しさん:2011/10/09(日) 12:50:39.70
どこの言語界隈の話だか…
107デフォルトの名無しさん:2011/10/10(月) 22:51:37.71
メソッドをset(get)で始まらせることでプロパティとみなす既知外言語もあるからね
108デフォルトの名無しさん:2011/10/10(月) 23:18:47.91
始まらせるってのは日本語なのか?
109デフォルトの名無しさん:2011/10/10(月) 23:25:07.62
日本人?
110デフォルトの名無しさん:2011/10/10(月) 23:43:51.05
Javaを批判するのはいいけど、いい加減その行為に生産性が無いと気付くべき。
111デフォルトの名無しさん:2011/10/11(火) 00:53:59.98
シーシャーパァは狂犬が多いな
112デフォルトの名無しさん:2011/10/11(火) 23:41:16.94
c#でアクセスにつないでセレクト文で一行とってきて適当な(何でもいい) フォームに表示させたいんだけど教えてくれません?
一行とるのは出来たっぽいんだけどそれをどうやって表示するのかググってもさっぱりわからなくて…
テーブル丸ごと表示のやり方は見つけたんだけどなぁ。

113デフォルトの名無しさん:2011/10/12(水) 00:29:37.25
MessageBox.Show()
114デフォルトの名無しさん:2011/10/12(水) 00:45:58.08
ふぉーむのなんね?
115デフォルトの名無しさん:2011/10/12(水) 00:48:47.56
System.Windows.Forms.Label
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]);
}
118デフォルトの名無しさん:2011/10/12(水) 12:04:54.90
メッセージショウだとオブジェクトがなんちゃら?(忘れた)とかエラーがでるのよね。
とってきた一行を違う型に変換する必要があるの?
119デフォルトの名無しさん:2011/10/12(水) 12:29:24.56
DBには行と列ってもんがあってだな・・・
120デフォルトの名無しさん:2011/10/12(水) 14:16:17.66
MessageBox.Show()でエラーは出ないだろ普通wwwどんだけ初心者なんだよwww
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に入れてやりゃでるよ
124デフォルトの名無しさん:2011/10/12(水) 19:19:46.63
DBの列には型ってもんがあってだな・・・
つうかnullってないだろうな?
125デフォルトの名無しさん:2011/10/12(水) 19:24:01.27
初心者か
126デフォルトの名無しさん:2011/10/12(水) 19:30:32.35
取り敢えずToString()
127デフォルトの名無しさん:2011/10/12(水) 19:32:12.15
>>123
とにかくはじめは何かしら表示するところからやろうと思ったんだけど、詳しく書いた方が答えやすそうだったからかいたんです。申しわけない。

一行二列のデータが入ってる変数っぽいやつを返還したあと、一個ずつ取り出すのは何使えばよい??
128デフォルトの名無しさん:2011/10/12(水) 19:34:08.84
ぬるじゃなくてちゃんとはいってます! データはちゃんといれてあります
129デフォルトの名無しさん:2011/10/12(水) 19:34:16.80
バインディングだよバインディング
textBox1.DataBindings.Add("Text", dataTable, "列名");
130デフォルトの名無しさん:2011/10/12(水) 19:42:00.13
>>127
>>117は別の人?
あんな感じで行を取り出して添え字つければ各列にアクセスできるよ

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

こんな感じ
131デフォルトの名無しさん:2011/10/12(水) 19:44:34.05
バインディングとか鬼畜すぎワロタwww
132デフォルトの名無しさん:2011/10/12(水) 19:48:27.21
ActionScriptだってバインディングあるよ

3なら
2は知らん
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 層が中間言語でも持ってて、いろんな言語移植できるとかだったら面白そうだったんだけど。
137デフォルトの名無しさん:2011/10/13(木) 17:50:45.14
go言語はもう飽きちゃったのかな?
138デフォルトの名無しさん:2011/10/13(木) 17:51:48.94
>>137
GOはアプリケーション書くための言語で、DartはDLS。っていう雰囲気にみえるけど。
139デフォルトの名無しさん:2011/10/13(木) 17:52:27.18
おっと、DSLだった。。。Orz
140デフォルトの名無しさん:2011/10/13(木) 17:52:48.18
Noopは…
141デフォルトの名無しさん:2011/10/13(木) 18:01:21.92
>>136
JavaじゃなくてJSの置き換えでしょ?記事読む限りDartで組んでからHTML5+JSにコンパイルしてブラウザ上で実行する物でしょ
ある意味JSを中間言語として使用している
142デフォルトの名無しさん:2011/10/13(木) 18:11:00.42
Better JSって感じかな?普及するといいね
143デフォルトの名無しさん:2011/10/13(木) 18:11:08.32
このスレ的にはCILからJSに変換できればいいんじゃね・・・
144デフォルトの名無しさん:2011/10/13(木) 18:22:35.31
JS.NETはどうなったのか
145デフォルトの名無しさん:2011/10/13(木) 18:29:26.49
>>141
いや、JavaScirpt と同じ用途の位置に、「リセットした Java」みたいな言語を置いたってこと。

JS を中間言語にするんじゃ、パフォーマンス問題が解決しない。
Dart を導入しようとしてる最大の理由は、JS の仕様じゃどんなに頑張ってももう VM 速くならないという判断もはいてるはず。
146デフォルトの名無しさん:2011/10/13(木) 18:32:12.28
Chrome には Dart ネイティブな VM を実装。

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

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

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

スクリプトだからできるんであって、C# に導入してもいまいち。
155デフォルトの名無しさん:2011/10/13(木) 18:53:24.89
個人的にはそうそう書かないと思うからいらないかな
156デフォルトの名無しさん:2011/10/13(木) 18:53:50.87
ただ入力を楽にしたいだけなら他にやりようがあるからな
157デフォルトの名無しさん:2011/10/13(木) 18:54:08.60
こういうの嫌いなんだよ

string _url;

public ○○(string url) //コンストラクタ
{

_url=url

}

public string URL{get{return _url;}…以下略
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 みたいなののほうがいいかなぁ。
161デフォルトの名無しさん:2011/10/13(木) 19:06:42.71
>>158
Dartのことはよく分からんが、>>150見る限りメンバ変数は消せないようだが
162デフォルトの名無しさん:2011/10/13(木) 19:10:59.62
m_urlにしたらいいのに…
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
同名にできるは知ってるしそれがバグの温床なのも知ってる
166デフォルトの名無しさん:2011/10/13(木) 19:22:12.47
初期化子で十分のような
167デフォルトの名無しさん:2011/10/13(木) 19:23:39.03
フィールド名とコンストラクター引数がいわゆる DRY 問題になってるのは確かだけど、
それの解決策として、Dart の Compact Constructor はいまいちだなぁ。
結局、DRY なままだし。
168デフォルトの名無しさん:2011/10/13(木) 19:25:29.90
public string URL{get;private set;}にでもすれば?
169デフォルトの名無しさん:2011/10/13(木) 19:31:06.95
初期化じゃスマートじゃないよ
引数が多いと途中で1個2個抜けてても気づかないよ
バグの温床だよ
170デフォルトの名無しさん:2011/10/13(木) 19:34:28.47
子が抜けてた…
171デフォルトの名無しさん:2011/10/13(木) 19:52:29.40
>>143
それはScript#だな
172デフォルトの名無しさん:2011/10/13(木) 20:05:56.90
濡れ衣を着せられた初期化子w
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を代入している)がある
174デフォルトの名無しさん:2011/10/13(木) 20:13:28.98
Rectangleさん
175デフォルトの名無しさん:2011/10/13(木) 20:23:59.90
今度は並び順間違えないようにしないと・・・
176デフォルトの名無しさん:2011/10/13(木) 20:29:43.93
コンストラクタに大量の引数を付ける設計自体が好かんな
値型はそんな大量に実装しないし
177デフォルトの名無しさん:2011/10/13(木) 20:30:46.15
まあ引数が無駄に多いこと自体を回避したくなるな
178デフォルトの名無しさん:2011/10/13(木) 20:31:57.33
結婚きんもー
179デフォルトの名無しさん:2011/10/13(木) 20:34:53.90
他人が使うライブラリなどで必須パラメータ知らせるには
コンストラクタの引数がいいんじゃないの?
staticで Create〜とか
180デフォルトの名無しさん:2011/10/13(木) 20:41:35.73
>>173はwidthとheightが負だったら例外投げないといけないんで、代入を省略できない例だろ
181デフォルトの名無しさん:2011/10/13(木) 20:51:24.73
そうだよな
uintにしないとw
182デフォルトの名無しさん:2011/10/13(木) 21:14:46.54
>>179
引数4つならそれらをプロパティに持つ初期化パラメータクラスを作ることを検討する
5つ以上ならノータイム
183デフォルトの名無しさん:2011/10/13(木) 21:20:31.86
コーディング量がガンガン増えていくな
184デフォルトの名無しさん:2011/10/13(木) 21:31:27.25
毎回コンストラクタでファッキンな思いするよりまし
185デフォルトの名無しさん:2011/10/13(木) 22:20:52.66
>>179
コンストラクターの意義としてはその通りなんだけど、
MS が実際に人使ってやったユーザビリティ テストの結果では、
引数多すぎるとみんなうざくて使いにくいというらしい。
なので、MS も、ガイドライン的にはあんまり引数の数増やすなと言ってる。
186デフォルトの名無しさん:2011/10/13(木) 23:03:44.00
それよりデニス・リッチー死んだらしいぜ
187デフォルトの名無しさん:2011/10/13(木) 23:19:02.89
Hello! Next World!
188デフォルトの名無しさん:2011/10/13(木) 23:30:10.48
Good by World!
189デフォルトの名無しさん:2011/10/13(木) 23:34:03.02
Welcome to Underworld!
190デフォルトの名無しさん:2011/10/14(金) 03:55:39.88
191デフォルトの名無しさん:2011/10/14(金) 08:14:11.61
省略記法なんてなるべく避けるべき。
192デフォルトの名無しさん:2011/10/14(金) 08:31:51.94
好みの問題に「べき。」か
これだからマは
193デフォルトの名無しさん:2011/10/14(金) 08:40:28.50
言語の設計論もあるし好みとは言い切れないだろう。
省略はあるに越したことはない派だけど。

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

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

芸術家の意見より実務家の意見の方が説得力があるだろう。
194デフォルトの名無しさん:2011/10/14(金) 09:02:19.32
初期化子「両サイドから否定されてる気がする!」
195デフォルトの名無しさん:2011/10/14(金) 09:05:12.37
好みの問題だから、「べき」なんじゃないか。

おまえが勝手に脳内で「なければならない」と混同してるだけだろw
これだから論理がデタラメな非マは困る。
196デフォルトの名無しさん:2011/10/14(金) 09:11:08.26
dynamic「俺を使えば万事解決」
197デフォルトの名無しさん:2011/10/14(金) 11:03:51.14
おれを初期化するな
198デフォルトの名無しさん:2011/10/14(金) 13:39:33.65
>>193
まあ、実務家の意見見るときに気を付けないといけないのは、
目先の簡単さを求めてあとから苦労しないかどうかよく考えたほうがいい。

省略は、後から泣きたくなること多いし(書くの楽だけど読むの/引き継ぐのしんどい)。
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
203デフォルトの名無しさん:2011/10/14(金) 18:23:38.70
202の要旨は
リフレクションで無理やりコンパレータ作れば最強!
ってこと
204デフォルトの名無しさん:2011/10/14(金) 18:25:26.81
優しい203にほれた
205デフォルトの名無しさん:2011/10/14(金) 18:30:33.84
さっきふらっとで思わず煽っちゃったからね
206デフォルトの名無しさん:2011/10/14(金) 18:35:54.32
BindingList使う
207デフォルトの名無しさん:2011/10/14(金) 18:45:38.93
BindingList クラスは並べ替えの基本実装を提供していないため、既定では、SupportsSortingCore は常に false を返します。
208デフォルトの名無しさん:2011/10/14(金) 18:50:37.28
まあ向こうのスレを見ると
順番無視して主キー使うのが唯一の正解
209199:2011/10/14(金) 18:54:25.16
>>203
なるほど、よくわかった。ありがとう
210デフォルトの名無しさん:2011/10/16(日) 20:54:07.97
>>202
これやってみたけど恐ろしくソートの時間がかかるな・・・
211デフォルトの名無しさん:2011/10/16(日) 21:20:52.02
当たり前じゃん
コード書くコストをリフレクションにぶん投げたんだよ

いいだろ
質問で速度は求められていないのだから
212デフォルトの名無しさん:2011/10/16(日) 21:27:59.57
たしかにー
でも徹夜で勉強してやっと作ったのにこんな有様だとは・・・
213デフォルトの名無しさん:2011/10/16(日) 21:44:01.03
IComparerの書き方次第である程度はフォローできる
リフレクションは遅いのにCompareごとに呼び出すとか狂気の沙汰
214デフォルトの名無しさん:2011/10/16(日) 23:22:11.76
>>212-213
直すんならIComparerでなくて自作クラス
PropertyDescriptorを自作してICustomTypeDescriptorとかで返してやれば?
215デフォルトの名無しさん:2011/10/18(火) 11:59:50.43
TabPage下にあるTextBoxコントロールにアクセスする方法ってないですか?
並び替えできるようにしてあるのでTabPageのインスタンスだけ並び替えてもTabPage下にあるTextBoxコントロールはそのままなんです
216215:2011/10/18(火) 12:01:30.93
ふらっとC#に書き込むつもりが間違えて誤爆しました。質問は取り消します
217デフォルトの名無しさん:2011/10/19(水) 19:33:57.70
C#でイベントコリレーションみたいな機能ありんす?
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つを並列に語るのはおかしいだろ
220デフォルトの名無しさん:2011/10/19(水) 20:42:41.62
>>217
ただのフィルタ処理できるログってことでいいならTraceSource
221デフォルトの名無しさん:2011/10/19(水) 22:53:29.55
イベントコリレーションが何なのか分からんが、CorrelationManagerと関係あるの?
222デフォルトの名無しさん:2011/10/20(木) 21:32:22.65
>>218
XmlSerializerはシリアライザ
XmlDocumentはDOMでツリーを構築
XDocumentはLINQで扱いやすい形でツリーを構築
あとはXmlReader(Pull型パーサー)
シリアライザだとDataContractSerializer。

ぐらいかな。

基本的にはXDocument、
シリアライズはDataContractSerializer、
メモリの都合や速度が欲しい時はXmlReader。
223デフォルトの名無しさん:2011/10/21(金) 22:19:31.98
protected virtual void OnDragEnter(
DragEventArgs drgevent
)

これって.Netの命名規則に違反してない?
224デフォルトの名無しさん:2011/10/21(金) 23:13:39.57
具体的にどの規則?
225デフォルトの名無しさん:2011/10/21(金) 23:19:21.85
226デフォルトの名無しさん:2011/10/21(金) 23:36:36.35
>>223,>>225みたいなレスこそ常識に反してるな。
他人に向かって何か問いかけたいのなら明示的に書けよ馬鹿と言いたい。
227デフォルトの名無しさん:2011/10/21(金) 23:37:47.33
ああ、うん、そうですね…
228デフォルトの名無しさん:2011/10/21(金) 23:44:47.43
EventArgs自体ガイドライン違反だし
229デフォルトの名無しさん:2011/10/21(金) 23:56:31.36
日本は英語圏じゃないからArgsもArgumentsも大して変わらないけどね
まあ米国人がやっていることだが
230デフォルトの名無しさん:2011/10/22(土) 00:30:44.25
自分で作ったフレームワーク中では
自分で決めたガイドラインくらい率先して守ってほしいね
231デフォルトの名無しさん:2011/10/22(土) 00:32:07.84
>>226
気に食わないならスルーしていいですよ
232デフォルトの名無しさん:2011/10/22(土) 01:25:30.51
スルーしたかったらスルーしていいし、文句言いたかったら言ってもいいんだよ。
233デフォルトの名無しさん:2011/10/22(土) 01:28:17.48
ヲタ丸出しなコミュニケーションで吐き気がする
234デフォルトの名無しさん:2011/10/22(土) 01:36:14.02
吐くのも自由だよ。思いっきり、吐けばいい。
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なの?
以下略
とかさ
237デフォルトの名無しさん:2011/10/22(土) 15:00:11.89
というか各クラスの骨格ソースだけでも
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参照を返さないようにするとか
241デフォルトの名無しさん:2011/10/22(土) 15:46:09.49
DataAnnotations使えば
242デフォルトの名無しさん:2011/10/22(土) 23:50:07.24
面倒だからtryでいいよそんなの
243235:2011/10/23(日) 18:18:22.63
実際の構造とは違いますがこんな感じのクラス構造です。
http://ideone.com/KXvAO

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

ネーミングセンスは・・・すいませんorz
244デフォルトの名無しさん:2011/10/23(日) 19:14:47.10
Compositパターンにすればあなたのお悩み全て解決
245デフォルトの名無しさん:2011/10/23(日) 19:23:24.09
昔の人は偉い
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チェックするのは最上層部のみですること
248デフォルトの名無しさん:2011/10/23(日) 20:58:19.01
一般に a.b.c.d みたいに階層掘るのは依存が増えるので良くない
249デフォルトの名無しさん:2011/10/23(日) 21:10:48.56
>>248
プロの俺から言わせていただくと
階層構造を持たないプログラムは見通しの悪いコードであり
より問題が発生しやすくなる

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

これらの構造をフォームだけで書けと言われたらプロをやめる
250デフォルトの名無しさん:2011/10/23(日) 21:12:55.08
return A.With(a=>a.B.With(b=>b.C.With(c=>c.H)));
こんな感じでいいなら拡張メソッドでできなくもないw
まあ普通は例外にしちゃうんじゃないかな
251デフォルトの名無しさん:2011/10/23(日) 21:15:21.66
>>249
自称プロさんは理解力不足
252デフォルトの名無しさん:2011/10/23(日) 21:15:42.76
>>249
プログラムやデータの構造じゃなくてコード中で階層掘るなって話だぞ
253デフォルトの名無しさん:2011/10/23(日) 21:16:10.44
つまりプロの俺が誇りをかけて言わせてもらうと
階層を持ちつつ階層を持たない構造が最強
254デフォルトの名無しさん:2011/10/23(日) 21:20:10.02
a.GetHoge().GetHageManager().GetHage().HageInfo.GetName()
とかテスト不可能なクソコード
255デフォルトの名無しさん:2011/10/23(日) 21:20:14.90
デメテルの法則は改名したほうがいいよね
名前を聞いただけじゃ意味がわからない
256デフォルトの名無しさん:2011/10/23(日) 21:30:17.80
>>252
プロの俺が質問するけど
どういう意味?
257デフォルトの名無しさん:2011/10/23(日) 21:42:56.47
デメテルの法則でググれ
258デフォルトの名無しさん:2011/10/23(日) 21:46:01.65
うるせぇなぁ、動きゃいいんだよ
259デフォルトの名無しさん:2011/10/23(日) 22:02:03.18
プロと素人を見分ける方法を教えてくださいよ
260デフォルトの名無しさん:2011/10/23(日) 22:04:51.28
行は100文字で改行しろ!とか下らないことに拘るのがプロ
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
こうしようと実質一緒じゃないか?
262デフォルトの名無しさん:2011/10/23(日) 22:07:38.02
>>255
メーテルの。。。ゴホンゴホン
263デフォルトの名無しさん:2011/10/23(日) 22:07:47.56
DataGridView.Rows[0].Cells[0].Value
これなんてどうよ?これもダメなの?
264デフォルトの名無しさん:2011/10/23(日) 22:09:11.81
確かに>>261は"今は"実質一緒だけど、未来永劫そうとは限らないだろ?
そのためにプロパティを使うんだから。
265デフォルトの名無しさん:2011/10/23(日) 22:11:13.30
>>263
DataGridView[0,0].Valueって別解が用意されてるじゃないか
266デフォルトの名無しさん:2011/10/23(日) 22:13:41.47
>>263だけ見てどうというより、>>263みたいなことをしてるクラスが限定されてるかどうかでしょ
プログラムのあちこちで>>263が出てくるならもちろんクソコード
267デフォルトの名無しさん:2011/10/23(日) 22:14:10.61
a.b.c.d.Z
俺が嫌なのはcがネームスペースなのか
クラス名なのか変数なのかさっぱりわからにところだな
268デフォルトの名無しさん:2011/10/23(日) 22:15:52.85
>>266
俺一杯あるんだが
269デフォルトの名無しさん:2011/10/23(日) 22:19:31.70
デメテルの法則かー早く教えてくれよ
この法則に従って書くようにするわ
270デフォルトの名無しさん:2011/10/23(日) 22:20:51.28
初心者はフォーム(外見)から作り始める
中級者はモデルクラスから作り始める
上級者はインターフェースから作り始める
271デフォルトの名無しさん:2011/10/23(日) 22:34:44.11
俺中級者だわ
最初からインターフェイスとか作っても無駄になることが多くてやめたわ
272デフォルトの名無しさん:2011/10/23(日) 22:37:14.27
キチガイ:専用の言語を作成する
273デフォルトの名無しさん:2011/10/23(日) 22:40:11.71
インターフェイスってインターフェイス型じゃなくて「外部設計」的な意味じゃない?
274デフォルトの名無しさん:2011/10/23(日) 22:40:53.94
情弱:既にある物の劣化版を作る
275デフォルトの名無しさん:2011/10/23(日) 23:06:33.45
>>267
メソッドとプロパティとネームスペースを大文字時まりにする糞決めごとが悪い
276デフォルトの名無しさん:2011/10/23(日) 23:13:07.56
デメテル調べてみたがこの原則に従ってやると
抽象的で何しているかわからないようなクラスだらけになりそう
受け渡しクラスの受け渡しクラスの受け渡しクラスって感じで
277デフォルトの名無しさん:2011/10/23(日) 23:39:17.89
>>270
なんかそれってインターフェイスって言いたいだけの初心者の言に聞こえるぞむしろw

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

むしろ凡人は、UIのデザインなどをやって時間稼ぎをしながら設計を考える方が
効率がいいように経験上思う。
その方がモチベーションも上がるしね。
278デフォルトの名無しさん:2011/10/23(日) 23:45:03.32
>>277
UIから作って、UI動かすためのコード書いて、
コードが増えてきたから新しいクラス作って
データ構造が間違っていてることに気付いて全部書き直しするんですね
279デフォルトの名無しさん:2011/10/23(日) 23:46:27.55
>>276
それでいいんだよ
お前は.NETのクラスライブラリのクラスを使うときに実装がどうなってるか常に意識してるのか?
280デフォルトの名無しさん:2011/10/23(日) 23:48:18.88
>>277
まずUIつくらないと、設計すべき内容が解らないとそういう状態になる
単なるプログラム設計ならそれが悪いとは言わないが、大規模な開発のシステム設計に向かないのも確か
281デフォルトの名無しさん:2011/10/23(日) 23:58:18.07
>>279
でもラッパークラスが増えて処理重くなりそうなんだけど?
282デフォルトの名無しさん:2011/10/24(月) 00:15:38.62
最初からパフォーマンスを気にするのはクソコードの始まり
283デフォルトの名無しさん:2011/10/24(月) 00:28:44.34
ラッパークラスで重くなるって・・JavaScriptじゃあるまいし
284デフォルトの名無しさん:2011/10/24(月) 01:20:16.37
デメテルなんだけど

a.Items.Add()

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

a.Add()だと変な感じ

DataGridView.Add(dt);
285デフォルトの名無しさん:2011/10/24(月) 01:24:48.23
>>280
大規模の定義にもよるけど、一人でUIもその他のコーディングも全部やる
大規模なプログラムなんてあるのかよw

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

そんなのは幻想だよ。
フォンノイマンクラスの頭脳の持ち主なら別かもしれないけど。
286デフォルトの名無しさん:2011/10/24(月) 01:29:08.53
言いたいことは、難しいことは後回しにした方が効率的だし上手くいくってことね。

要は設計は難しいって言ってるんであって、設計なんかどうでも良いとは言ってない(むしろその逆)
なので誤解のなきよう。
287デフォルトの名無しさん:2011/10/24(月) 01:55:28.73
UIデザインなんて大抵グラフィッカーが作るけどな
俺は内部ロジックしか作らないから
実際どんなものができるかわからないんだが?
288235:2011/10/24(月) 11:06:43.06
お休みで掲示板見れなかったけど、色々書き込みしてくださってありがとうございますm(_ _)m

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

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

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

>>244さっそくコンポジットパターンで検索してみます。ありがとうございます><
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
だよな
292デフォルトの名無しさん:2011/10/24(月) 19:43:13.43
動きゃいいのさ
293デフォルトの名無しさん:2011/10/24(月) 20:07:18.98
応じたものができるけど、作り方でスキルがわかるって話さ
294デフォルトの名無しさん:2011/10/24(月) 20:10:20.07
俺は、モデルから作って半分位作った当たりからUIとあわせて「あーでもない、こーでもない。」って言ってる。
個人開発だからできるのだろうけどね。
295デフォルトの名無しさん:2011/10/24(月) 20:25:08.73
>>284
それはOKなんじゃないかな「オブジェクトを直接的に構成するオブジェクト」のメソッドだから

>より形式的に言えば、関数に対するデメテルの法則に従った場合、
>オブジェクトO上のメソッドMが呼び出してもよいメソッドは以下のオブジェクトに
>属するメソッドのみに限定される。
> 1. Oそれ自身
> 2. Mの引数に渡されたオブジェクト
> 3. Mの内部でインスタンス化されたオブジェクト
> 4. Oを直接的に構成するオブジェクト(Oのインスタンス変数)
296デフォルトの名無しさん:2011/10/24(月) 20:33:53.48
開発手法もいろいろあるしな。それを活かすも殺すも本人次第
297デフォルトの名無しさん:2011/10/24(月) 20:42:45.76
>>295
その条件にどれも該当しないんだが
298デフォルトの名無しさん:2011/10/24(月) 20:47:40.91
a.Items.Add()のItemsはaを直接的に構成するオブジェクトじゃないの?
299デフォルトの名無しさん:2011/10/24(月) 20:54:18.46
4が指してるのは this.hoge.Hage() だろ
出来合いの物を使ってるだけなんだからどうでもいいよ
DataGridViewやDataGridViewRowCollectionを後で変更したりしないだろ
300デフォルトの名無しさん:2011/10/24(月) 20:57:17.96
あーなるほど
勘違いしてたわ
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のどちらを使うべきなんですか?
304デフォルトの名無しさん:2011/10/26(水) 20:21:32.39
違う機能なんだから使い分けろよ
305デフォルトの名無しさん:2011/10/26(水) 20:37:21.00
キーの存在を確認するときは前者、Valueを使うときは後者
キーにアクセス時間が半分で済む
306デフォルトの名無しさん:2011/10/26(水) 20:53:18.25
見て分からないのかと思うけどな
307デフォルトの名無しさん:2011/10/26(水) 20:57:27.69
>>303
ここは中級者以上の怖い人ばかりだからふらっとで訊いたほうがいいよ
308デフォルトの名無しさん:2011/10/26(水) 20:57:48.46
>>305
ありがとうございます
つまりTryGetValueを使うべきなんですね

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

309デフォルトの名無しさん:2011/10/26(水) 21:04:08.93
>>305
じゃあValueに値をセットしないで
キーに値をセットしたほうがいいってことですね
310デフォルトの名無しさん:2011/10/26(水) 21:05:42.09
class Print
{
//「印刷するプログラム」
}

class main_program
{
public static void Main(){
Print pri = new Print(); //印刷するクラスのオブジェクトを作成
}
}

こんばんわ^^初心者です
今クラスについて調べてるんですけど、上のコードだとvoid Mainにオブジェクトを作成してますよね
クラスが100個あったとしたらvoid Mainに100個オブジェクトを作成するんですか?
これが普通なんでしょうか?教えてください
311310:2011/10/26(水) 21:08:41.13
自己完結しますた。
312デフォルトの名無しさん:2011/10/26(水) 21:09:22.95
108個ならBonnouクラスにまとめるべき
313デフォルトの名無しさん:2011/10/26(水) 21:10:40.88
>>309
Dictionaryの意味わかってないんじゃないの?
ふらっとで訊いてきたほうがいいよ
314デフォルトの名無しさん:2011/10/26(水) 21:12:01.14
急に釣り臭いレスが増えたね( ^ω^)
315310:2011/10/26(水) 21:33:44.79
継承すればいいんですね!奥が深いです><
316デフォルトの名無しさん:2011/10/26(水) 21:38:55.53
何でもかんでもインターフェイスにしますです
317デフォルトの名無しさん:2011/10/26(水) 22:24:57.81
はあ?同じ性質のものだからインターフェイスにしたわけだが
それの何がだめなんだ?バカかおまえは
318デフォルトの名無しさん:2011/10/26(水) 22:29:50.60
やかましい
ここをエントリポイントとする
319デフォルトの名無しさん:2011/10/27(木) 11:25:00.01
ミスターサタンスレでやれ
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
初心者とかいうレベルの問題ではないな
322デフォルトの名無しさん:2011/10/27(木) 21:55:13.53
小心者とかいうつもり
323デフォルトの名無しさん:2011/10/27(木) 22:03:22.22
>>321
答える気がないなら黙ってろよカス
324デフォルトの名無しさん:2011/10/28(金) 06:54:58.66
自前描画。

はい次
325320:2011/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。
327320:2011/10/28(金) 13:27:58.50
>>326 アドバイスありがとうございます。
ただ、どこのOnDrowItemをoverrideするのかちょっと具体的なものがわからなかった
のですが、検索のヒントにつながって、以下のサイトにたどりつきました。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=9219&KLOG=9
私もこの質問者と同じところまではたどり着きましたが、同じように選択を外すと描画
が元に戻ってしまうところでまたつまりました。
元のOnDrawItemのさらなるヒントか、上記サイトの未解決問題についてなにか
ありませんか?
328デフォルトの名無しさん:2011/10/28(金) 20:44:59.47
わんくま未解決が2chの自称上級者に解けると思うかね?
329デフォルトの名無しさん:2011/10/28(金) 20:46:51.68
敵わんわー
わんくま様には敵わんわー
マジ敵わんわー
330デフォルトの名無しさん:2011/10/28(金) 20:51:36.99
RowPostPaintでも試せば?
331デフォルトの名無しさん:2011/10/28(金) 21:11:33.04
わんくまってそんなにすごいの?
332デフォルトの名無しさん:2011/10/28(金) 21:26:40.75
すごい人も山ほどいるって意味ではすごいけども。
333デフォルトの名無しさん:2011/10/28(金) 21:51:22.55
わんくまなんて教育という点ではたいしたことないよ
334デフォルトの名無しさん:2011/10/28(金) 22:08:36.74
ゼロから学べるC#

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

↑こういうことを平気で書いちゃう奴は池沼だと思うの^^
336デフォルトの名無しさん:2011/10/28(金) 22:20:35.94
OOPLをゼロからは難しい
337デフォルトの名無しさん:2011/10/28(金) 22:23:32.88
初心者はC言語やアセンブリからやれってこと?
338デフォルトの名無しさん:2011/10/28(金) 22:26:32.40
Javaやれ
339デフォルトの名無しさん:2011/10/28(金) 22:26:44.44
今時ならむしろ関数型言語なんじゃね?よく知らんけど
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 を直接使う方法を学ぶのが一番良いとおもっています。
344320:2011/10/28(金) 22:50:03.63
せっかく回答頂いた326のOnDrawItemがあまりよく理解できなかったのが心残りですが、
これ以上回答つかないようなのでふらっとC#初心者のほうへ移動してみたいと思います
345デフォルトの名無しさん:2011/10/28(金) 22:56:52.20
そうそう、年寄りの話は半分でいいんだよ
ボケ始めてんだから
346デフォルトの名無しさん:2011/10/29(土) 00:01:32.35
レガシーおじさんの話は役に立ちそうでたたないから困る
347デフォルトの名無しさん:2011/10/29(土) 00:15:38.63
まあ、「年寄り」だの「ゆとり」だの言って自分以外の世代を否定したがる奴が
優秀かって言うと.....まずその反対だろうなって気もするけどねw

きっと無能でストレス溜まってるから2chくんだりでクダ巻かないと
やってられないんだろうなと邪推。
348デフォルトの名無しさん:2011/10/29(土) 00:17:38.61
マジで反論してしまった時点であなたもそちら側の人間なのでは・・・
349デフォルトの名無しさん:2011/10/29(土) 00:19:41.56
とムキになって反応したキミは無能確定
350デフォルトの名無しさん:2011/10/29(土) 00:56:07.21
以下ループなのでつぎの方どうぞ
351デフォルトの名無しさん:2011/10/29(土) 11:28:00.56
視力が凄く落ちてきたんだが、視ぃsharpとはこれいかに?
352デフォルトの名無しさん:2011/10/29(土) 13:15:34.90
昔から疑問に思ってることなんだけど、ロックされたファイルへアクセスするとき、ロックが解除するまで待機する方法ってないの?
今は必要なときはファイル名でmutexを取得してやってるんだけど、OSが対応しているならそれを使いたいです
353デフォルトの名無しさん:2011/10/29(土) 13:26:14.76
無かです
354デフォルトの名無しさん:2011/10/29(土) 15:34:28.85
>>343
順番的には、必要になったらしょうがかなく腰を上げてWinAPIを叩くぐらいが一番良いですね。
355デフォルトの名無しさん:2011/10/29(土) 16:11:42.40
ハマれば言語も手広くやってみたくなるよ。
仕事でないなら自らの興味に任せとけ。
356デフォルトの名無しさん:2011/10/29(土) 16:48:30.57
2つのデータセットを比較したいとき、

DataSet a;
DataSet b;

if (a == b) {
}

これは中身が同一かを比較してくれる?
それとも、参照の比較だけなので絶対偽?
357デフォルトの名無しさん:2011/10/29(土) 17:00:58.21
DataSetがEqualsをオーバーライドしていなければ単なる参照比較
358デフォルトの名無しさん:2011/10/29(土) 17:00:58.76
簡単にテストできることは自分でやればいいと思うんだ
359デフォルトの名無しさん:2011/10/29(土) 17:02:04.04
reflectorでEqualsのデフォルト実装とか見といたほうがいいよ
360デフォルトの名無しさん:2011/10/29(土) 18:20:08.88
広大なライブラリの海でずっとおぼれている感じ
自分でもわかっている今俺が必死に勉強しているのは
ライブラリの使い方であって言語が変われば通用しないことを
俺にはもっと基本的な知識が必要なのに
コピペでなんとかなっちゃうから深く学ぼうとする機会が失われている
361デフォルトの名無しさん:2011/10/29(土) 18:27:39.92
ポエム
362デフォルトの名無しさん:2011/10/29(土) 18:32:32.59
言語が変わっても、同じようなライブラリは存在するはずなので、別に通用しますが。
363356:2011/10/29(土) 20:01:46.57
必ず偽が返ってくるので、参照で比較しているか、データがどこか食い違っているのか
判断つかないんです。
364デフォルトの名無しさん:2011/10/29(土) 20:19:38.61
>>363
判断以前の問題だ

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

これ意味分かる?
365デフォルトの名無しさん:2011/10/29(土) 20:35:13.01
オーバーライドされている場合

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

できればふらっとに行ってくんね
366デフォルトの名無しさん:2011/10/29(土) 20:35:51.68
分かってないのは>>364
==演算子とObject.Equalsは無関係
関係があるのはop_Equality

DataSetにはop_Equalityは無いから、既定の参照比較が動く
データを比較したければ基本的には全部の行の全フィールドを自分で比較しないとダメ
367デフォルトの名無しさん:2011/10/29(土) 20:36:03.83
参照型でオーバーライドしてる奴の方が例としては適切だったか…
368356:2011/10/29(土) 20:45:21.12
ありがとうございます。
自前で比較する処理を書こうと思います。
369デフォルトの名無しさん:2011/10/29(土) 22:21:23.78
>>363
それは、小さな同じデータを持つDataSetを二つ作って比較すればいいのでは。
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#に逃げてきたんだけど、それでもなんかよく分らないことになってる><
372デフォルトの名無しさん:2011/10/30(日) 00:31:06.69
orz URL貼り付け忘れた
http://privatepaste.com/a04209c90b
こんな感じです。

それにしてもやはりExcelってむずい…
Worksheet.Columns[]の戻り値がdynamicってどう言うこと?
Worksheet.Range型以外が返ってくるシチュエーションがよく分らない。
373デフォルトの名無しさん:2011/10/30(日) 00:55:29.65
>>371
そもそもCOMのラッパークラスがC#のforeachに対応していると期待するのが間違ってる気もするけど....
374デフォルトの名無しさん:2011/10/30(日) 01:01:32.94
>>373
やっぱり中身はCOMなのか…

自動生成されたラッパーならそう言うオチが有ってもおかしくは無いけど
あくまで、オフィシャルがリリースしたものなんだから、その辺は大丈夫なんじゃ無いの?
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;
をお手軽にこなしたいんだが;
377デフォルトの名無しさん:2011/10/31(月) 05:23:34.62
それでいいじゃん
378デフォルトの名無しさん:2011/10/31(月) 05:52:33.67
2次元、3次元と増えると、だんだんじゃまになってくるんだが…
379デフォルトの名無しさん:2011/10/31(月) 06:31:19.29
関数化すればいいじゃん
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を追加したりとする必要があるかも
383デフォルトの名無しさん:2011/10/31(月) 11:32:05.31
多次元配列は列挙型の恩恵が受けられないから普通は配列の配列を使う
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
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();
出来たら良いなぁとか考えてた。ちょっとキモいけど
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用のを探して試してみようと思います。ありがとうございました。
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
それのどこに列挙型が出てるんだよ?
392デフォルトの名無しさん:2011/10/31(月) 20:02:45.16
なんだ言葉尻に噛み付きたいだけの馬鹿か
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
俺用語はママとの会話だけにしときまちょうね
396デフォルトの名無しさん:2011/10/31(月) 20:54:39.54
普通にLinqと言えばいいのにw
397デフォルトの名無しさん:2011/10/31(月) 21:01:26.18
最近は列挙と言われるとLinqのほうを先に連想するからじゃね?
398デフォルトの名無しさん:2011/10/31(月) 21:22:09.67
しねえよ
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 のマシンも持っている
のですが、そちらではこのような問題は起こらず設定がきちんと反映されます。

いくら考えても、どれだけネットなどで検索しても、全く原因の見当がつきません。
どなたかご助言をいただければうれしいです。
400デフォルトの名無しさん:2011/10/31(月) 21:34:23.55
うるせーばか、ふらっとに帰れ
401デフォルトの名無しさん:2011/10/31(月) 21:38:38.02
>これはもしかしたらC#の問題では無いかもしれないけれど、質問させてください。

わかってるくせにずうずうしいな
402デフォルトの名無しさん:2011/10/31(月) 21:39:24.15
人を叩くのは気持ちいい、イキそうになる
403デフォルトの名無しさん:2011/10/31(月) 21:49:28.37
>>399です。どうやらこちらではスレ違いのようですね。失礼しました。
404デフォルトの名無しさん:2011/10/31(月) 21:50:15.60
プログラマは障害者ばかり
405デフォルトの名無しさん:2011/10/31(月) 21:51:36.45
>>403
質問は2chなんて使わないほうがいいよ

これから質問者がいなくなるように潰しにかかるから
406399:2011/10/31(月) 21:53:16.99
ほんとだ、質問した俺がバカでした
こんなきしょく悪い奴らしかいないなんて
やっぱり2ちゃんやってるやつは底辺の腐った奴らですね
ありがとうございました
407デフォルトの名無しさん:2011/10/31(月) 21:54:00.08
>>406
2度とくんなよカス
408デフォルトの名無しさん:2011/10/31(月) 22:13:01.30
二度アルことは三度アルニダ
409デフォルトの名無しさん:2011/11/01(火) 01:32:22.85
>>399
初心者を馬鹿にするだけの粘着に絡まれて可哀想だと思ったが
ふらっとで回答出てるじゃねーか。

そりゃこっち来ても馬鹿にされるわ。
410デフォルトの名無しさん:2011/11/01(火) 01:38:42.57
4時間前のネタにえらそうに
411デフォルトの名無しさん:2011/11/01(火) 02:26:14.41
ずっと張り付いてないとレスできない廃人仕様になったのか
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
バカはここにくるな
415デフォルトの名無しさん:2011/11/01(火) 10:18:56.54
さすがIDのない香ばしい流れだなw
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
ご報告ありがとうございます
次回からはご自身のブログにでも書きやがって下さい
422デフォルトの名無しさん:2011/11/01(火) 18:57:28.66
http://ideone.com/NQPrJ
これ動くかね
423デフォルトの名無しさん:2011/11/01(火) 19:09:05.42
>>420
何を言っているのか全くわからない、エラーページとかいうからWebBrowserかと思ったらそうでもないようだし
424デフォルトの名無しさん:2011/11/01(火) 19:14:39.26
<%@ Page Language="C#" %>
<html>
<body>
<p>
<%
try {
XmlDocument.LoadXml("aaa");
} catch (XmlException) {
}
%>
</p>
</body>
</html>

こういうことだろ?
なぜかブラウザにエラーが表示されないと

当たり前
425デフォルトの名無しさん:2011/11/01(火) 19:20:50.60
ASP.NETかよ・・・
凄まじいクズ仕様で魂が震えたわ
馬鹿正直にサンプル通り作ってないで間接的にDLL呼べ
426デフォルトの名無しさん:2011/11/01(火) 22:11:01.20
今日も自称上級者の狂犬ばかりです
427デフォルトの名無しさん:2011/11/02(水) 04:20:13.61
上級もへったくれも、ASP.NETを言われるままに作ってたらひどいことになるだろ
生成されるHTMLはゴミだし、他の言語で全く応用のきかない汚い謎コードになるのが関の山
ASP.NETはサーバーサイドプログラムをC#様で書けるようになる部分だけ活用するのが一番
いつもの押し付けがましい謎ソリューションは無視するのが無難だね
俺何か間違ったこと言ってるか?
428デフォルトの名無しさん:2011/11/02(水) 05:20:03.90
自社製品にしか通用しない技術に投資させて客を囲い込むのはマイクロソフトのお家芸だな
429デフォルトの名無しさん:2011/11/02(水) 06:01:08.17
AppleもGoogleもやってるじゃないか。
430デフォルトの名無しさん:2011/11/02(水) 08:40:05.88
GoogleAppsの料金改定で一部の自称情強がわめいたのは記憶に新しいね
431デフォルトの名無しさん:2011/11/02(水) 10:43:04.51
>>427
間違ったことは言ってない。
言ってないが、「俺何か間違ったこと言ってるか?」の部分は沸点の低い人から見たらケンカを売っているように見えるんだぜ。
落ち着いた日本語を心がけるのが吉なんだぜ。
432デフォルトの名無しさん:2011/11/02(水) 11:58:21.37
>>431
悪かった、言い過ぎたよ
433デフォルトの名無しさん:2011/11/02(水) 17:56:48.00
分かればいいんだよ
次から気をつけろよったく
434431:2011/11/02(水) 18:00:22.90
>>433
ちょwwそんなこと思ってねーよww
43543I:2011/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
そいつがルパンだ!ルパンをおえぇぇー!!!
438デフォルトの名無しさん:2011/11/02(水) 22:19:04.07
数字も書けねえ奴と喧嘩するのか?
疲れそうだなw
4394З1:2011/11/02(水) 22:39:29.78
成りすましはよくないよ
440デフォルトの名無しさん:2011/11/02(水) 22:49:28.39
>>439
貴様からルパンのニオイがするぞ!
441デフォルトの名無しさん:2011/11/02(水) 23:10:36.12
ノレノヾヽノの二才イはしない
442デフォルトの名無しさん:2011/11/03(木) 09:04:13.15
ここまで1人の自演
IDなしってのは、こういう遊びをするためなんですね。
443デフォルトの名無しさん:2011/11/03(木) 09:10:21.22
それに気付くとは
444デフォルトの名無しさん:2011/11/03(木) 09:54:19.34
根菜か
445デフォルトの名無しさん:2011/11/03(木) 10:11:34.72
大根だけに
446デフォルトの名無しさん:2011/11/03(木) 15:08:33.05
太鼓判
447デフォルトの名無しさん:2011/11/04(金) 23:23:02.95
e?
448デフォルトの名無しさん:2011/11/05(土) 01:09:34.74
お前らって仲いいよな
449デフォルトの名無しさん:2011/11/05(土) 20:07:00.33
おホモだちだからな
450デフォルトの名無しさん:2011/11/05(土) 22:17:16.56
int, double のarray の宣言しただけの各初期値が0
ってのは言語仕様?処理系依存ですか?
0か1を挿入するときに1だけ挿入ですませたら気持ちいいので
451デフォルトの名無しさん:2011/11/05(土) 22:23:04.32
仕様だったはず
Cの処理系依存な部分を排除する方針だったし
452デフォルトの名無しさん:2011/11/05(土) 22:24:42.77
>>450
MSDNを見れば分るけど、「配列は型の初期値で初期化されます」とある
これは言語というか.netの仕様だね。 Monoだとどうなるかは知らん。

あと、三項演算子使えば、見た目は綺麗に書けるよ!
453デフォルトの名無しさん:2011/11/05(土) 22:34:25.89
仮に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++と一緒に開発できないので。。)

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使わないのが最強
459デフォルトの名無しさん:2011/11/06(日) 06:34:19.96
秀丸で十分
460デフォルトの名無しさん:2011/11/06(日) 06:38:47.97
インテリセンス使ってると、CなんとかクラスのBなんとかメソッドとしか記憶してなくて誰かと話すとき困ったりするよなww
461デフォルトの名無しさん:2011/11/06(日) 08:03:47.60
マならばキーボードで会話しようぜ
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に見捨てられてる
マジで?どういうことなの?
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
ありがとう
そんなひどい事になってたのか・・・
467デフォルトの名無しさん:2011/11/06(日) 14:43:51.87
C++切る前にまずVBを切れよ
VBコード見るだけで吐き気がする
468デフォルトの名無しさん:2011/11/06(日) 14:51:31.31
無理
C++/CLIと違ってExcelVBAやらAccessVBAやらの資産が多すぎて、そこからVBに入門した人も多いから
自分もC++/CLIとVBどっちもなくなってほしい。
むしろExcelC#AとかAccessC#Aとか作ってほしい。
469デフォルトの名無しさん:2011/11/06(日) 14:59:17.30
要するにC++/CLIは儲からなかったんだろうな
VBの客とか問題解決のためならいくらでも出しそうだもん
470デフォルトの名無しさん:2011/11/06(日) 15:05:12.17
つーかVBはVC++(C++/CLIの方ではない)で作ったコンポーネントを金出して買うのが基本だからな。
471デフォルトの名無しさん:2011/11/06(日) 15:14:56.04
何を血迷ったかWinFormsデザイナ付けちゃったから勝手に勘違いされたんだよ
もともと糊付け言語以上のものではないから今更
472デフォルトの名無しさん:2011/11/06(日) 15:18:37.00
勘違いしてるのは>>471の方だな。
RADこそVBの本質であり存在意義だったわけで、「何を血迷ったか」も糞もない。

それでなきゃ>>470の話とも矛盾するだろ
473471:2011/11/06(日) 15:19:46.81
C++/CLIのこと
申し訳ない
474デフォルトの名無しさん:2011/11/06(日) 15:21:37.48
もともとでっち上げ感が半端無かったしね
475デフォルトの名無しさん:2011/11/06(日) 15:32:36.31
>>473
そういう意味かw
こちらこそごめんw
476デフォルトの名無しさん:2011/11/06(日) 15:45:09.68
>>468
> むしろExcelC#AとかAccessC#Aとか作ってほしい。
んだ。
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だしな
479デフォルトの名無しさん:2011/11/06(日) 18:17:28.96
これからはC++/CXの時代だから仕方ないね
480デフォルトの名無しさん:2011/11/06(日) 18:42:11.82
Xaml+C++/Android
481デフォルトの名無しさん:2011/11/07(月) 00:11:25.44
>>468
>Excel C#A
別にC#である必要は無いけど、今のCOMベースのを、VBAで扱わなければいけないのをどうにかしてほしいな。

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

とりあえず、例外機構の強化と、完全評価の撤廃は必須。あと出来れば、行と列やシートの添え文字が1から始まる変態序数をやめてくれ。
482デフォルトの名無しさん:2011/11/07(月) 00:19:54.51
だからC++/CLIは相互運用以外には絶対使うなとあれほど(ry
483デフォルトの名無しさん:2011/11/07(月) 18:07:17.24
>>481
>行と列やシートの添え文字が1から始まる変態序数
大昔のBASICからの流れだと、添え字0の方が変態仕様なんだが
普通に物を数えるときにゼロから数え始めるか?
10個って宣言したら1〜10まで使えるほうが自然じゃないか?
ゼロオリジンなんて機械の都合のいい方法を押しつけられてるだけだぞ
484デフォルトの名無しさん:2011/11/07(月) 18:33:27.81
VBAでゼロオリジンに切り替えられることからしてどっちがデファクトだか分かりそうなもんだが
485デフォルトの名無しさん:2011/11/07(月) 18:34:11.80
そしてVB.NETでは0にされた
486デフォルトの名無しさん:2011/11/07(月) 18:35:17.96
それに配列は場所なんだからその場はゼロだろ
原点は1mか?
487デフォルトの名無しさん:2011/11/07(月) 19:51:33.36
発明を押し付けとかどんだけ頭悪いの・・・
488デフォルトの名無しさん:2011/11/07(月) 20:23:46.40
まあ0起番号でも1起番号でもどっちでもいいと言えばいいけど、
エクセルでふざけてると思ったのは、確かRange.Valueって戻り値が二次元配列なんだけど、
原点が[1, 1](0の列と0の行の値は全部null)になってるんだよな。
489デフォルトの名無しさん:2011/11/07(月) 20:43:06.06
え、1ベースの2次元配列だろ?
490デフォルトの名無しさん:2011/11/07(月) 20:56:00.88
あーそうだったかもしれん。
初めてデバッガで見たときはこんな妙な世界があるのかと
491デフォルトの名無しさん:2011/11/07(月) 21:20:55.76
1オリジンがあること自体許しがたい
自分が使わなければいいとかそういう次元ではない。
FOR文はかなりの確立でTO x.Count - 1とか書くことになる。
狂ってるとしか思えない。
492デフォルトの名無しさん:2011/11/07(月) 21:26:39.35
確率を確立と書くこと自体許しがたい
自分が使わなければいいとかそういう次元ではない。
あまつさえ確立と書く部分を確率と書いていたりする。
狂ってるとしか思えない。
493デフォルトの名無しさん:2011/11/07(月) 21:44:14.87
気色悪い奴だな...
494デフォルトの名無しさん:2011/11/07(月) 21:58:50.33
んじゃ、漢字の間違い以外は同意するんだな?w
495デフォルトの名無しさん:2011/11/07(月) 22:09:26.79
For i = 0 To x.Count - 1とか書かないといけないのは0ベースの方だと思うが、C#スレで話すことでもない
496デフォルトの名無しさん:2011/11/07(月) 22:16:30.46
でたw困ったときのスレチw
497デフォルトの名無しさん:2011/11/07(月) 22:20:02.55
C#に存在しない FOR TO 構文を根拠に論理組み立てられてもな・・・
498デフォルトの名無しさん:2011/11/07(月) 22:29:07.54
どうでもいいけど、>>483辺りから読むと、どっちが文脈読めない
恥ずかしい馬鹿かははっきりすると思うよw
499デフォルトの名無しさん:2011/11/07(月) 22:55:26.83
実際スレ違いなんだから仕方がない。
500デフォルトの名無しさん:2011/11/07(月) 23:17:09.87
配列はメモリの座標だからな
X,Yの2次元の原点は0、0だ
配列の要素の個数は1でも
その要素がある座標は0だ
501デフォルトの名無しさん:2011/11/07(月) 23:24:01.85
もうやめ!VBの話やめよ!ここC#スレだよ!!
502デフォルトの名無しさん:2011/11/07(月) 23:24:16.11
>>491
当たり前だ
indexは座標であって、個数単位ではない

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

x.Index-1,y.Index-1とする方が気持ち悪い
3Dゲーム作るときもあらゆる線形配列を-1にするのか?
バカモノ
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から数えない。
どこの世界に、「ぜろ、いち、にぃ、さん」なんて
数え方するやつがいんだよ。
509デフォルトの名無しさん:2011/11/07(月) 23:51:10.30
まともな人間はな。プログラマは0から数えないと。
510デフォルトの名無しさん:2011/11/07(月) 23:52:14.31
カウントダウンすると必ず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ベースの方が自然(というか、式が簡単になる)ことが多いし。
514デフォルトの名無しさん:2011/11/08(火) 03:23:38.78
1 2 3 4 5 6 7 8 9 11 12 13
515デフォルトの名無しさん:2011/11/08(火) 07:52:02.32
素数を数えるんだ!
516デフォルトの名無しさん:2011/11/08(火) 10:52:20.03
3 5 7 9 11 13 15 17
517デフォルトの名無しさん:2011/11/08(火) 11:19:43.56
数学なら順番数えるだけのインデックスは普通1からだし
その昔科学技術計算に使われた(その分野ではまだ現役だが)FORTRANだって1からだし
アルゴリズムの本に書いてある疑似コードもだいたい1からだろ
順番だけなら統一されてさえいれば別に何で始まっても問題ない
Cは順番だけでなく基準位置からのオフセットという意味を持たせたから
518デフォルトの名無しさん:2011/11/08(火) 11:29:08.00
>>516
2 の立場はどうなる?
519デフォルトの名無しさん:2011/11/08(火) 12:08:56.49
優位性を語ってんだから、どっちでもいいとか抜かすコウモリはすっこんでろ
520デフォルトの名無しさん:2011/11/08(火) 12:22:13.13
1からと0からでどっちが自然なコードになるかは場合によりけり。

サイズに注意するのとセルが1個無駄になることを除けば、0からでも
使えるものを1から使うことはできるが、逆はできない。
521デフォルトの名無しさん:2011/11/08(火) 12:28:45.83
どうでもいい・・・
522デフォルトの名無しさん:2011/11/08(火) 12:33:27.75
じゃあ読むな
消えろ
523デフォルトの名無しさん:2011/11/08(火) 12:47:32.52
そういうのふらっとでやれよ
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
落ち着いて考えたらたしかに・・・これはおもろいな、気づかなかった
527デフォルトの名無しさん:2011/11/08(火) 14:21:07.27
ただの仕様に変な理由後付する必要ないと思うの。
528デフォルトの名無しさん:2011/11/08(火) 14:35:35.59
バカばっか
529デフォルトの名無しさん:2011/11/08(火) 14:52:21.72
5[a]→*(5+a)→*(a+5)→a[5]
一見強引だが規則通りなんだよなw
530デフォルトの名無しさん:2011/11/08(火) 14:59:45.25
どうでもいいですよっ
531デフォルトの名無しさん:2011/11/08(火) 15:08:26.02
>>528
ルリルリぺろぺろ
532デフォルトの名無しさん:2011/11/08(火) 19:31:37.86
>>517
数学、高校までだと1ベースだけど、数論とかやりだすと途端に0ベースにならない?
なんというか、配列の開始番号問題と、自然数に0を含めるかどうか議論は似てる気もする。
533デフォルトの名無しさん:2011/11/08(火) 20:00:08.06
後置演算子の評価っていつおこわなわれるのでしょうか?
i = 0;
a(b(c(d(e ... xxx(i++) ... ) ) ) );

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

534デフォルトの名無しさん:2011/11/08(火) 20:01:53.77
そりゃxxx呼ぶ直前だろ
535デフォルトの名無しさん:2011/11/08(火) 20:05:28.35
前置演算子でした
int x = -900;
print(x++)

で-900の出力は確認したのですが
536デフォルトの名無しさん:2011/11/08(火) 20:16:06.03
それも確認すりゃ良かろう
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));
539デフォルトの名無しさん:2011/11/08(火) 20:29:45.14
>>529
それはCが本質を突いてるってことだよ。
ブビーじゃこうはならん
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
仕事上でそんなコード書く奴クビにするんで。
良いとは言えないかな。
543デフォルトの名無しさん:2011/11/08(火) 21:47:14.00


    〃〃∩  _, ,_
     ⊂⌒( `Д´) < クビダ!クビダ!
       `ヽ_つ ⊂ノ
              ジタバタ

      _, ,_
     (`Д´ ∩ < 俺が理解できないコード書く奴はクビだ!!!
     ⊂   (
       ヽ∩ つ  ジタバタ
         〃〃
544デフォルトの名無しさん:2011/11/08(火) 21:49:12.09
>538
それは結果が保証されてないでしょ。
545デフォルトの名無しさん:2011/11/08(火) 21:49:46.74
C#ェ・・・
546デフォルトの名無しさん:2011/11/08(火) 21:53:17.45
>>544
結果が保証されてないのはCじゃなかった?
C#はそれを踏まえて引数の評価順序を固定したはず
547デフォルトの名無しさん:2011/11/08(火) 22:03:03.25
>The expressions of an argument list are always evaluated in the order they are written.
548デフォルトの名無しさん:2011/11/08(火) 22:04:20.49
書いてある順に評価されます
549383:2011/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

「長期間の弱い参照」の使い道が思い浮かばないのですが
どういうときに使うものなんですか?
551デフォルトの名無しさん:2011/11/09(水) 19:42:49.38
IronPythonの中で使われてたのを見たことがある
循環参照の検知に使えるらしい
552デフォルトの名無しさん:2011/11/10(木) 02:37:33.49
記述量とか含めC# で実用的なパターンマッチは作れるかな
C#モナドが大体わかったのでやってみようかと思う
どう思いますか?
553デフォルトの名無しさん:2011/11/10(木) 05:13:46.80
>>550
「長い期間の弱参照」より先に、↓こういう、Finalize内で自分自身を復活させるようなコードの用途考えないといけない
http://www.netframeworkdev.com/common-language-runtime/weakreference-trackresurrection-44443.shtml

けども、それ自体まったく使い道思いつかない。
554デフォルトの名無しさん:2011/11/10(木) 05:15:00.34
555デフォルトの名無しさん:2011/11/10(木) 22:32:46.35
以下のクラスを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; }
}
556デフォルトの名無しさん:2011/11/10(木) 22:34:21.05
int?
これってなんだっけ?
シリアライズはいろいろ制約があったはず
557デフォルトの名無しさん:2011/11/10(木) 22:39:30.76
Nullableはどうしても無理
558デフォルトの名無しさん:2011/11/10(木) 22:42:04.76
XmlSerializerとかトラブルのもとだからやめとけ
楽しようとしたはずがつまらない制約でどんどんコードが複雑になっていくよ
XDocumentでちゃっちゃかXML化コード書いたほうが最終的には早い
559デフォルトの名無しさん:2011/11/10(木) 22:50:36.41
むむ!!ヌルアブルはだめなのかぁ〜〜orz
ガックシorz

うーん、ほかにいいデシリアライズ方法を考えないとなぁ・・・
560デフォルトの名無しさん:2011/11/10(木) 22:55:55.69
Nullableなんてあったのね
勉強になった
561デフォルトの名無しさん:2011/11/10(木) 22:56:05.24
TじゃなくてフィールドがNullableならXmlElementAttribute.IsNullableで抜けられるけどね
562デフォルトの名無しさん:2011/11/11(金) 00:32:14.96
>>558
それやると、バージョアップでクラス削除したりしたとき問題おきないか?
下位バージョンにも手動で対応しないとだめじゃん
563デフォルトの名無しさん:2011/11/11(金) 22:18:42.22
DataContractSerializerじゃダメですかねー?
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のようにアドレスのバックアップをとるしか
ないのでしょうか
567デフォルトの名無しさん:2011/11/12(土) 13:03:36.02
はい
あとアドレスじゃなくて参照だからアドレス言うな
オブジェクトのアドレスは放っといてもGCで勝手に変わる
568デフォルトの名無しさん:2011/11/12(土) 13:15:16.34
すいません、初心者スレにいきます
569デフォルトの名無しさん:2011/11/12(土) 13:17:12.99
>>566
なんか難しく考えすぎてるんじゃね?

var new_slime = slime0.bunretsu();

でよくね?

それともslime0はプロトタイプパターンか何かなの?
570デフォルトの名無しさん:2011/11/13(日) 13:53:17.39
末尾再帰最適化ってまだ安定して出来ない?
571デフォルトの名無しさん:2011/11/13(日) 15:19:46.58
>>570
64ビット版の.NETで、ほんとに最後の行での再帰(ifとかの末尾でなく)に限り、
JIT時に最適化される。

きわめて限定的。
あと、C#→ILの段階では一切最適化しない。
572デフォルトの名無しさん:2011/11/13(日) 18:15:13.20
F#を使え
573デフォルトの名無しさん:2011/11/13(日) 22:15:35.20
なんか
System.Xml名前空間が見当たらないのですが
なんなんでしょうか?
VS11です
574デフォルトの名無しさん:2011/11/13(日) 22:16:43.18
>>573
プロジェクトはwinformで作ってる?
575デフォルトの名無しさん:2011/11/13(日) 22:20:30.19
参照設定がされてなかったりしてね〜。
576デフォルトの名無しさん:2011/11/13(日) 22:25:50.39
>>574-575
空のプロジェクトで作ってました。
ありがとうございます
577デフォルトの名無しさん:2011/11/14(月) 08:22:40.09
カポーン
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>

579デフォルトの名無しさん:2011/11/14(月) 10:55:20.31
それをシリアライズしたのと逆の方法
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
質問者じゃないけどいいもの見れて良かった
582580:2011/11/14(月) 12:45:09.90
>>581
ほんとだうっかりしてた
この場合トラブルの元にしかならないと思うから最後の行のchildrenはchildren.ToArray()で
583578:2011/11/14(月) 14:10:19.36
ごめんなさい・・・
.NET2.0の縛りがあってXElementがつかえませんでした。。。orz
584デフォルトの名無しさん:2011/11/14(月) 14:29:00.59
そろそろXPを捨てる準備を・・・出来ないから困るw
585デフォルトの名無しさん:2011/11/14(月) 14:49:00.62
捨てる準備はしてるよ…まだ捨てれないけど
586デフォルトの名無しさん:2011/11/14(月) 15:21:16.74
iTextSharp以外の、日本語が扱えるPDF(ファイル)操作ライブラリってあります?
いくつか発見はしたのですが、どれももうメンテされていない(最終更新日が2年以上前)ようなのです。

ランタイムフリーなら有料でもいいんですが、iText Softwareと商用ライセンスを結ぶ場合もどうやら配布数で金額が変動するようですし・・・。
お心当たりがありましたら、是非ご教授ください。
587デフォルトの名無しさん:2011/11/14(月) 15:31:26.49
>>583
2.0にはSystem.Xml.XmlElementがあるはず。

このクラス、SilverlightやWinRTで使えなくなるけどもね。
レガシー乙。
588デフォルトの名無しさん:2011/11/14(月) 20:14:12.47
>>586
iTextSharpのAGPL版使ってPDF操作のところだけ
全く別の汎用的に使えるコンソールアプリとして作ってAGPLで公開したら
589586:2011/11/15(火) 14:49:48.51
>>588
やはり、それしかありませんか・・・。一応、ソレも検討はしていたのです。
いかにも「GPL回避してます」という感じがしてあまり好きになれませんが、背に腹は変えられませんね。

アドバイス、ありがとうございました。そちらの方向で検討しましょう。
590578: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; }
}
591デフォルトの名無しさん:2011/11/15(火) 16:16:18.65
XmlElement属性
592デフォルトの名無しさん:2011/11/15(火) 16:19:04.48
おお!ありがとうございました><
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
リファクタリング前提であれば、そのようにしてもいいけど、
設計段階でおかしなことをしてると、依存関係ができたときに関係解消の手間がかかるので、
そこだけ注意すればいいんじゃないかな。
595デフォルトの名無しさん:2011/11/16(水) 17:40:26.27
長い名前で不便に思ったことはないな
どうせインテリセンスに頼るしそんなにパパッと書きたいものはC#なんて使わんし
596デフォルトの名無しさん:2011/11/16(水) 17:47:47.85
作法の問題はともかくアクセスレベルがpublicはいかんでしょ(>>594の理由で)
internalで
597デフォルトの名無しさん:2011/11/16(水) 18:21:01.47
名前空間といえば、フォルダ階層掘って置いたクラスを別のフォルダに移動させると警告量産されてうざい
あれ何とかならないんだろうか
598デフォルトの名無しさん:2011/11/16(水) 18:27:21.55
それC#か?
物理パスには依存しないだろ
599デフォルトの名無しさん:2011/11/16(水) 18:34:42.02
>>593
コードスニペット作るとかで対処するなあ。
そういうの、あまり良いとは思えない。
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を使わないのが最強
603デフォルトの名無しさん:2011/11/17(木) 11:29:28.03
やはりコンパイラを使わないのが最強
604デフォルトの名無しさん:2011/11/17(木) 13:03:24.47
>>602
冗談で言ってるんだよね?^^
605デフォルトの名無しさん:2011/11/17(木) 14:59:50.71
そんな糞レス返さなくていいよ
606デフォルトの名無しさん:2011/11/17(木) 19:09:30.01
はぁ?
マジ言ってんの?
バイナリエディタなんたらかんたら
607デフォルトの名無しさん:2011/11/17(木) 19:21:56.26
要するに、防壁回路を構築するのは疑似画像プログラムを見ながら電脳で直接やるのが一番ってこと?
608デフォルトの名無しさん:2011/11/17(木) 20:33:05.54
お、おう…
609デフォルトの名無しさん:2011/11/17(木) 23:57:01.86
public enum Language
{
 ENGLISH = 0,
 JAPANESE = 1
}



public Language language = 1;

みたいに数字の1をぶっ込んだらJAPANESEになるような方法ってないの?
俺のやりたいことをなんとなく察して、どうにかしてくれ
610デフォルトの名無しさん:2011/11/18(金) 00:00:43.71
(int)lang==1?lang.ToString()
611デフォルトの名無しさん:2011/11/18(金) 00:03:38.72
ここエスパースレだっけ
612デフォルトの名無しさん:2011/11/18(金) 00:03:50.44
public string[] Lang=new string[]
{
Japanese,
English
}

var lng=Lang[1]
613デフォルトの名無しさん:2011/11/18(金) 00:06:49.67
public string this[int idx]
{
get
{
if(idx==1) return Japanese;
}
}
614デフォルトの名無しさん:2011/11/18(金) 00:14:20.61
public enum Language
{
 ENGLISH = 0,
 JAPANESE = 1
}

Language[] lang=new Language[]{Language.English,Language.Japanese};

Language jpn=Language[1];
615デフォルトの名無しさん:2011/11/18(金) 00:17:05.47
いい加減にしろ
616デフォルトの名無しさん:2011/11/18(金) 02:11:37.28
普通にキャストできるよ。
(Language)1;
617デフォルトの名無しさん:2011/11/18(金) 02:13:23.60
IDEよシリアル!ATATATATA
オマエはもう死んでいるっ
S.S.D?!
618デフォルトの名無しさん:2011/11/18(金) 03:32:29.58
(Language)Enum.Parse(typeof(Language), "JAPANESE");
619デフォルトの名無しさん:2011/11/18(金) 05:25:57.99
Distinct()とOrderBy()ってどっちを先にやるのが効率がいいですかね
620デフォルトの名無しさん:2011/11/18(金) 05:30:54.31
線形に処理するDistinct()を先にやったほうがいいんじゃない?
621デフォルトの名無しさん:2011/11/18(金) 09:59:14.04
まさかお前ら本気で>>616の方法が出て来なかったの?
622デフォルトの名無しさん:2011/11/18(金) 10:16:06.32
>>616の方法が出てきてるじゃない
623デフォルトの名無しさん:2011/11/18(金) 11:00:20.38
というか結局何がしたいのか分らない
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だと値が何であってもちゃんと順番通りでるよ
628デフォルトの名無しさん:2011/11/18(金) 13:40:42.85
Enum.GetName(typeof(Language), 1)
こういうこと?
629デフォルトの名無しさん:2011/11/18(金) 13:45:36.61
Language[] langage = (Language[])Enum.GetValues(typeof(Language));
630デフォルトの名無しさん:2011/11/18(金) 13:49:24.09
今日の列挙型スレ
631デフォルトの名無しさん:2011/11/18(金) 13:51:18.45
enum Language
{
Japanese="日本語"
}
Language jpn= Language[1]
Language jpn=Language["日本語"]
string 母国語=Language.Japanese;

こんな感じで出来たら楽なのに
実際はできないから引数に応じて
switch文書かないといけないから面倒
632デフォルトの名無しさん:2011/11/18(金) 13:53:50.90
3番目はだめだな
string 母国語=Language[Language.Japanese];
こんな感じ
633デフォルトの名無しさん:2011/11/18(金) 16:29:21.09
ハッシュでも使ってろ
634デフォルトの名無しさん:2011/11/18(金) 19:57:23.89
DescriptionAttributeあたりのstringを取るカスタム属性を各フィールドに貼っといて、
リフレクションでstaticなディクショナリに入れとくのが定石かな
635デフォルトの名無しさん:2011/11/18(金) 20:00:23.78
>>634
それいいな、>>631じゃないけどありがとう
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なら拡張メソッド使えっていうのが意味不明
別に拡張メソッド無くても普通に静的メソッド呼ぶだけだし
属性は属性で宣言と一緒に書けるとか列挙体の型に依存しないとかメリットはあるわけで
638デフォルトの名無しさん:2011/11/18(金) 21:08:37.31
enumにメソッド書けんやろw
639デフォルトの名無しさん:2011/11/18(金) 21:17:18.66
enumでtoStringがオーバーライドできたら何も問題はなかった
640デフォルトの名無しさん:2011/11/18(金) 21:17:36.10
MyEnumExt.ToStringExt(value) が value.ToStringExt() と書けるようになって
前者なら属性の方が良いが後者の書き方ができるなら速いしスマートだしで拡張メソッド一択とか
そもそも何のために属性使ってるのか全く理解してない
641デフォルトの名無しさん:2011/11/18(金) 21:21:12.32
とりあえず誰でも望むことだよな
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使ったらタイプセーフなんて全く意味ないぜ?
その時点で値を限定してしまってるんで同じこと
646デフォルトの名無しさん:2011/11/18(金) 23:30:12.01
Enum+拡張メソッドのお陰で、ある程度は不便な点は解消されたので、これはこれでいいとは思う。
JavaのEnumはほとんど普通のクラスと変わらなくて、
使うのが面倒になってる部分があるので、あまりすきじゃない。
647デフォルトの名無しさん:2011/11/18(金) 23:38:31.27
>>645
Enumが拡張されたら意味ないって事?
648デフォルトの名無しさん:2011/11/18(金) 23:53:54.33
そもそもenumを文字列にしたいとか、intをenumにしたいとか、
皆無とは言わないけどレアケースだからどうでもいいといえばどうでもいい。

ただビットフィールドの機能はなんか中途半端に感じる。
いちいちビットマスクと論理演算しなきゃ値のチェックもできないんじゃ、有難味があんまりない
649デフォルトの名無しさん:2011/11/19(土) 00:05:54.25
>>648
>ただビットフィールドの機能はなんか中途半端に感じる。
確かに敷居は下がったけど、
10進数しか知らない同僚には理解できないだろうなw
650デフォルトの名無しさん:2011/11/19(土) 00:12:16.66
>>647
どうせcase全部書いてもdefaultでエラー投げるようにするだろ?
651デフォルトの名無しさん:2011/11/19(土) 00:29:42.71
範囲外の値を入れたらエラーになる引数なんて世の中に腐るほどあるのに
なんでenumだけ特別に目くじら立てるんだろうな
確かにenumに好きな値持たせたりできるのは便利な場面はあるかもしれないが
タイプセーフなんか全くどうでもいいわ
652デフォルトの名無しさん:2011/11/19(土) 00:40:51.24
>>650
そりゃそうだけど当然過ぎて問題視してなかったわ
Enum拡張する際、影響範囲を調べ対応方針を決める
対応後に問題があれば対応漏れであって、タイプセーフとか全然関係ない
653デフォルトの名無しさん:2011/11/19(土) 01:14:34.72
で、タイプセーフの利点は?
想定外の値が入らないことをタイプセーフと呼ぶなら、それをコンパイル時に検出できないと意味がない
654デフォルトの名無しさん:2011/11/19(土) 03:10:47.81
またどうでもいい事で騒いでんのな
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業界で有名らしいね
動画ありませんか?
656デフォルトの名無しさん:2011/11/19(土) 11:05:27.47
スレ違い
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,'}'));
        }
    }
}
660デフォルトの名無しさん:2011/11/20(日) 01:24:29.14
>左中かっこ ({) および右中かっこ (}) は、書式指定項目の開始および終了として解釈されます。
>したがって、左中かっこおよび右中かっこを文字として表示するためには、エスケープ シーケンスを使用する必要があります。
>左中かっこを 1 つ ("{") 表示するには、左中かっこ 2 つ ("{{") を固定テキストに指定します。
>また、右中かっこを 1 つ ("}") 表示するには、右中かっこ 2 つ ("}}") を指定します。
http://msdn.microsoft.com/ja-jp/library/txafckwd(v=vs.80).aspx
661659:2011/11/20(日) 01:45:09.22
>>660
まともなプログラマだったら、エスケープ記号は\だと思うとおもうんだけど。
どうしてそうなった・・・。
662デフォルトの名無しさん:2011/11/20(日) 01:46:59.18
2chってこういうの多いけど、気色悪い引用の仕方だな。
663デフォルトの名無しさん:2011/11/20(日) 01:50:04.21
>>661
ただのC文字列のローカルルールだろそんなの。
井の中の蛙がまともなプログラマなのかい
664659:2011/11/20(日) 01:51:47.03
個人的には多数派だと思うけどね。
665デフォルトの名無しさん:2011/11/20(日) 02:02:14.26
エスケープを同じ文字の連続でやるとかよくあるっていうか
それこそ文字列中の\もその一種じゃないか
666659:2011/11/20(日) 02:13:27.91
>>665
自分自身のエスケープに自分を2連続は有ると思うけど、とっさの判断で出てくるのは\記号だと思うね。
資料がぱっと検索できればまた違うのかもしれないけど。うーん。。。
667デフォルトの名無しさん:2011/11/20(日) 02:13:31.69
それに、ライブラリがコンパイラと同じエスケープ記号を使うのはむしろ気持ちが悪い。
正規表現パターンなんかはそれだけど
668デフォルトの名無しさん:2011/11/20(日) 02:37:30.08
個人的なのか多数派なのか
669デフォルトの名無しさん:2011/11/20(日) 03:21:04.39
つか正規表現はそのせいでraw文字じゃないと醜くてかなわん
670デフォルトの名無しさん:2011/11/20(日) 05:03:48.56
>>659-660
ありがとうございます。できました。
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
有意義な時間という言葉があるくらいだから人生のほとんどは有意義じゃないのさ
674デフォルトの名無しさん:2011/11/20(日) 12:07:28.36
キリッ
675デフォルトの名無しさん:2011/11/20(日) 12:30:05.38
この板でキリッてついてないレスのが珍しい(キリッ
676デフォルトの名無しさん:2011/11/20(日) 12:35:32.48
\は文字列中でエスケープしないといけないから\\{になって不自然だからじゃね?
677デフォルトの名無しさん:2011/11/20(日) 12:45:47.43
verbatim string があるだろ
678デフォルトの名無しさん:2011/11/20(日) 12:52:26.67
Python3なんか.NET式になったな
新しいスタンダードなんだよ
679デフォルトの名無しさん:2011/11/20(日) 13:17:14.76
>>661
\ に意味があるなら \\
" に意味があるなら ""
% に意味があるなら %%
{ に意味があるなら {{
全然問題ない
680デフォルトの名無しさん:2011/11/20(日) 13:23:34.77
そのせいでXAMLのマークアップ中にエスケープしようとすると悲惨なことになるがな
681デフォルトの名無しさん:2011/11/20(日) 13:25:42.40
entity reference の嵐ですよっと
682デフォルトの名無しさん:2011/11/20(日) 14:59:52.47
>>676
それおかしいでしょ。
683デフォルトの名無しさん:2011/11/20(日) 16:30:35.90
{}の二重化だと期待する動作になるフォーマットが存在しないことがあるんだよな
@"\{{0:g}\}" となることを期待して

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

とか書くと、実際には @"\{{0:g\}}" になるという
684デフォルトの名無しさん:2011/11/20(日) 17:03:45.84
{}のネストは出来ないって明記されてるんだけど
685デフォルトの名無しさん:2011/11/21(月) 00:13:16.20
正直、最初にC#に入って書式文字列の仕様を知ったとき嫌な予感はした。

686デフォルトの名無しさん:2011/11/21(月) 01:30:31.82
>>683 応用したらなんか攻撃的なウィルス作れそうだな
687デフォルトの名無しさん:2011/11/21(月) 01:48:48.95
ごめん俺には>>683が言ってる意味がマジで分からない。
っていうか、その\ってどっから出てくるの?w
688デフォルトの名無しさん:2011/11/21(月) 07:07:11.65
http://msdn.microsoft.com/ja-jp/library/txafckwd%28v=VS.100%29.aspx
これの「エスケープ中かっこ ({})」の話だと思うよ
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の強参照を持つことはないですよね?
693デフォルトの名無しさん:2011/11/21(月) 18:25:43.32
どうなってんだろうなあと思って検索したら

>no ECMA and ISO/IEC specifications exist for C# 3.0 and 4.0

は?
694デフォルトの名無しさん:2011/11/21(月) 19:20:51.38
うん、標準化があるの実は2.0まで。

まあ、MS以外のC#は実質的にmonoしかなく、
そのmonoは4.0どころか、すでに5.0対応済みなんだけども。
695デフォルトの名無しさん:2011/11/21(月) 19:22:48.00
Monosuge-
696デフォルトの名無しさん:2011/11/21(月) 19:30:31.43
【審議中】
    ∧,,∧  ∧,,∧
 ∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U (  ´・) (・`  ) と ノ
 u-u (l    ) (   ノu-u
     `u-u'. `u-u'
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同士の変換で時差が生まれるのは違和感あるな
699デフォルトの名無しさん:2011/11/21(月) 21:22:55.41
UTC+09:00じゃないの?
700デフォルトの名無しさん:2011/11/21(月) 21:23:41.67
>>698
「UTC同士の変換」 で時差が生まれてる訳じゃ無いだろw
JST = UTC + 9:00 なんだから、当然っつーかなんつーか。
701デフォルトの名無しさん:2011/11/21(月) 21:28:49.14
ToFileTimeUtcはUTCに自動で変換されるけど
FromFileTimeUtcはローカル時刻に変換されないってだけだな
702デフォルトの名無しさん:2011/11/21(月) 22:00:45.94
APIとして微妙な感じだな
703デフォルトの名無しさん:2011/11/21(月) 22:27:56.41
DateTimeの数字だけ指定するコンストラクタもDateTimeKindを指定しなければUTCになる罠
文字列にして+9:00がついてなかったら注意すべき
704デフォルトの名無しさん:2011/11/23(水) 11:55:52.88
SQL文を実行するときに、検索条件を動的につなげていくことがあると思います。
今までは以下のようなコードを書いてきましたが、if文で条件わけするのが面倒になりました。
何かよい方法ないでしょうか?

sqlText1 += " select * from";
sqlText1 += " where 1 = 1";
if (s != null) {
  sqlText1 += " and id = :id";
  command.Parameters.Add(":id", s);
}
705デフォルトの名無しさん:2011/11/23(水) 11:58:25.06
その前にStringBuilder使おうよ
706デフォルトの名無しさん:2011/11/23(水) 12:05:48.99
Builderパターンで書き直す
707デフォルトの名無しさん:2011/11/23(水) 12:10:55.98
select * from table where (:id is null or id = :id)
708デフォルトの名無しさん:2011/11/23(水) 13:06:36.45
>>705
この程度ならいらないだろ。
709704:2011/11/23(水) 13:49:13.58
ERPではこのような問題をどうやって解決しているんですか
前見たときは独自に実装していたような..

>>706
クラスごとにインターフェイスを実装しないといけないと思うのですが、
面倒ではありませんか?

>>708
コンパイラが最適化してくれるのを期待して、
10行程度のSQL文はすべてstringで実装してます。
StringBuilderを使ってもいいのですが可読性が落ちるので..
710デフォルトの名無しさん:2011/11/23(水) 13:54:07.29
コンパイラはそんな最適化しない。
711デフォルトの名無しさん:2011/11/23(水) 14:11:56.97
>704
ラムダ式を使って遅延実行する。









ごめんラムダ式って言葉聞いたばかりで。
712デフォルトの名無しさん:2011/11/23(水) 14:14:56.87
必然的にめちゃくちゃな回答になったなw
713デフォルトの名無しさん:2011/11/23(水) 14:15:16.07
>>709
StringBuilderのほうが可読性が高いと思うが。

StringBuilder SQL = new StringBuilder();
SQL.AppendLine("SELECT *");
SQL.AppendLine("FROM foo");
SQL.AppendLine("WHERE ***");

デバッグ時文字列切り出すとき改行ついて便利だけど・・・
714デフォルトの名無しさん:2011/11/23(水) 14:17:59.64
どっちもどっち。何かもっt根っこの部分で間違ってると思うよ。
715デフォルトの名無しさん:2011/11/23(水) 14:23:08.12
>>714
お前が生きていること自体も間違っているけどな
716デフォルトの名無しさん:2011/11/23(水) 14:24:08.52
>>715
どうした。どこかでいじめられたか?
717デフォルトの名無しさん:2011/11/23(水) 14:31:49.09
誰かさんが反論できずに逃げ回っているからねw
718デフォルトの名無しさん:2011/11/23(水) 14:32:43.63
そう言えば、三項演算子使って一気に生成したこともあったなw
それで大幅に速度改善されるって訳でもないのに、メンテナンス性最悪だったわ
719デフォルトの名無しさん:2011/11/23(水) 14:45:19.36
>>
>>706
720デフォルトの名無しさん:2011/11/23(水) 14:48:51.11
すまん途中で書き込んだ
>>706が言ってるのはStringBuilderじゃない。

検索ロジックに応じた、その画面専用の条件句ビルダーだろ。
ビルダーの中でnull判定することで呼び出し側の分岐を無くすと読めるが。
可読性は上がるはず
721デフォルトの名無しさん:2011/11/23(水) 15:32:27.68
暇さにかまけてこういうの作ってみた。
ttp://ideone.com/i4dPK

SQL覚えるときにでもつくろうと思ってたが当面出番はなさそうだ。
こういうのはどういう感じに見えるのかよくわからないので、意見があれば頂戴したい。
722デフォルトの名無しさん:2011/11/23(水) 15:35:02.02
>>721
変数名がソフトバンクみたいだな
723デフォルトの名無しさん:2011/11/23(水) 15:36:21.82
Seasar2のクエリビルダとか参考にすると面白いかもしれないし頭がぐるぐるするかもしれない
724デフォルトの名無しさん:2011/11/23(水) 15:39:56.43
>>722
気のせいだし、関連性もありません!
変数の命名がダサいのは仕様じゃー!

>>723
調べてみる。
725デフォルトの名無しさん:2011/11/23(水) 15:56:25.07
http://samsaffron.com/archive/2011/09/05/Digging+ourselves+out+of+the+mess+Linq-2-SQL+created
SQL用のユーティリティ作るなら、クエリビルダーだけじゃなくてマッパーまでやって欲しいものだし
この手のはあんま自分で作るもんじゃないねえ。
726デフォルトの名無しさん:2011/11/23(水) 17:06:00.51
ORマッパーとか使うなら直接SQLさわるもんじゃないだろうと思うが
727デフォルトの名無しさん:2011/11/23(水) 17:11:18.33
あながちそうともいえない
728デフォルトの名無しさん:2011/11/23(水) 21:30:10.61
asp.netでsoapをしゃべるアプリケーションを作りたい
何かさくっと作れる方法ないですか?
729デフォルトの名無しさん:2011/11/23(水) 21:37:49.72
・.asmx Webサービス
・WCF
・ジェネリックハンドラー+SoapFormatter
730デフォルトの名無しさん:2011/11/23(水) 23:33:15.25
普通にWEBサービス作ったら良いだけでは
731デフォルトの名無しさん:2011/11/23(水) 23:34:58.37
LINQ使っても余り効果のない状況や
逆効果になる状況というのは何かあるでしょうか?
732デフォルトの名無しさん:2011/11/23(水) 23:36:04.19
>>731はパフォーマンスの観点での質問でした。
733デフォルトの名無しさん:2011/11/23(水) 23:37:56.88
パフォーマンスの観点でいうと、LINQは常に不利なような。
IEnumerableになるぶん、メモリ使用量的に有利な場面はあれど。
734デフォルトの名無しさん:2011/11/23(水) 23:59:28.39
あれ、そーなんだっけ?
defferedだからコレクションとかに対しても速いイメージあるんだけど
735デフォルトの名無しさん:2011/11/24(木) 00:01:57.69
遅延実行と速度は関係ない
736デフォルトの名無しさん:2011/11/24(木) 00:05:02.63
全要素が必要とは限らないから、速度に関係あるんでねーの?
737デフォルトの名無しさん:2011/11/24(木) 00:06:08.23
foreachだって全要素必要なく結果が出たところでbreakすれば一緒でしょー
多段にならない分、パフォーマンスの観点から見るならベタforeachのほうが速い
738デフォルトの名無しさん:2011/11/24(木) 00:08:39.65
要素数が多いとメモリにやさすぃ
要素の途中でうちきれる場合はもっとやさすぃ
って理由でLINQの方が速いっしょ
メモリの罪具合にもよるけどフルガベコ避けやすいし
739デフォルトの名無しさん:2011/11/24(木) 00:12:27.70
ぬるぽといいフルガベコといいお前ら略すの好きだな
740デフォルトの名無しさん:2011/11/24(木) 00:12:50.60
インデクサでアクセスしましょう
前時代的に
741デフォルトの名無しさん:2011/11/24(木) 00:13:43.23
まあ、最初に確保したバッファーを使いまわす書き方もできるし<非LINQ。
要件しだいだけども。
742デフォルトの名無しさん:2011/11/24(木) 01:02:32.42
わざわざそんなことしたくねえなあ
743デフォルトの名無しさん:2011/11/24(木) 08:47:48.89
その場に最適化した実装をすれば汎用実装(=LINQ)より有利なのは間違いない
だがいちいち最適化した実装書くほどのことってまずないよね
744デフォルトの名無しさん:2011/11/24(木) 09:16:28.20
べたなforループが好きです。でも、降順forループはもっと好きです
745デフォルトの名無しさん:2011/11/24(木) 18:19:35.24
昔LINQは100倍遅くなると言う人が居てだな…
怒られるから使わない方がいいよ
746デフォルトの名無しさん:2011/11/24(木) 18:25:14.31
LINQは100倍遅くなる
---
日本語訳
私は馬鹿なのでLINQが理解できません。
747デフォルトの名無しさん:2011/11/24(木) 18:58:37.14
LINQってしっくりこないんです
748デフォルトの名無しさん:2011/11/24(木) 18:59:09.50
スタテック
749デフォルトの名無しさん:2011/11/24(木) 19:42:18.01
star tech
750デフォルトの名無しさん:2011/11/24(木) 19:46:58.09
>>745
ひどいとこ勤めてるんだな
転職すれば?
751デフォルトの名無しさん:2011/11/24(木) 19:51:10.25
だいぶ住人が入れ替わったんだな
752デフォルトの名無しさん:2011/11/24(木) 19:54:44.13
長寿と繁栄を
753デフォルトの名無しさん:2011/11/24(木) 20:30:14.19
やあ、クラさんだよ
754デフォルトの名無しさん:2011/11/24(木) 21:02:46.87
まあ確かにlinqはそれ以前のC#っぽくないから嫌われるのは分る。
というかC#はバージョンアップするに従って、どんどんキモくて楽ちんな書き方ができるようになってるしな。
755デフォルトの名無しさん:2011/11/24(木) 21:04:38.32
俺はどうにも自動実装プロパティが好きになれない
756デフォルトの名無しさん:2011/11/24(木) 22:12:44.80
from where なんちゃらは気持ち悪くて使ってないな
Where().Select()のほうが書きやすいしわかりやすい
757デフォルトの名無しさん:2011/11/24(木) 23:56:35.06
>>745
検証結果つきで遅くなる!って結論づけてたサイトって
のきなみ、コメントでダメだしされて
deferredを理解してないことが発覚したり
そもそも本来比べることの出来ないものを比べてたりで
理解できてない人が勘違いした飛ばし記事書いてただけ
じゃなかったっけ?
っても海外のページしか見てないけど
758デフォルトの名無しさん:2011/11/25(金) 00:08:15.52
>>755
>俺はどうにも自動実装プロパティが好きになれない

そう?
俺にとっては、結構待ってました機能なんだが。
759デフォルトの名無しさん:2011/11/25(金) 00:10:35.12
自動実装プロパティってどんなメリットがあるの?
というか、値を出し入れするだけの何もしないプロパティって意味あるの?
760デフォルトの名無しさん:2011/11/25(金) 00:18:38.53
その話も、もう100ぺんぐらい聞いた気がするよ。
761デフォルトの名無しさん:2011/11/25(金) 00:33:35.03
同じ議論を繰り返すもいいかもな。前時代的に。
762デフォルトの名無しさん:2011/11/25(金) 00:37:26.85
2ch掲示板が技術系の議論に向いてないんだよな
昔結論の出たことが簡単に参照できないから何も蓄積されない
763デフォルトの名無しさん:2011/11/25(金) 00:40:02.59
「君」がまとめサイト作ればいいんじゃね。
764デフォルトの名無しさん:2011/11/25(金) 00:43:58.37
C#は今はメインで触ってなくて、久しぶりに来たんだが、
最近おもしろい動きとかないの?
スレみてると3年前と何もかわらない話題しかないんだが
765デフォルトの名無しさん:2011/11/25(金) 00:44:05.37
>>759
自動プロパティを使わないで実装してみればいい
766デフォルトの名無しさん:2011/11/25(金) 00:47:17.73
「将来プロバティーとして本格実装する為」という、どうでも良い理由で片付けられているから疑問視する人が後を絶たない
いや、その程度でしか理由がないならパブリックフィールドでも全然構わないと思うが
767デフォルトの名無しさん:2011/11/25(金) 00:48:05.37
.net 4.5も微修正だけっぽいしなぁ
768デフォルトの名無しさん:2011/11/25(金) 00:50:02.18
>>766
ライブラリを出荷するようになれば、違いがわかるよ。全然構うでしょ。
769デフォルトの名無しさん:2011/11/25(金) 00:50:33.14
>>762
そうそう、だからwikiを併用する必要がある
(そしてきちんと編集する人がいて活発なら情報が集約されてかなりいい感じにはなるが)

あと、次スレ作成機能とかあれば、重複スレの乱立もないし、スレ番号の付け間違いもないし
過去ログ参照もしやすくなるし、ある程度勢いがある/スレが続いてるなら、自動的に次スレをたてれば便利だし。
いいことずくめな気がするんだがな。 良くも悪くも2chは変化がないな。

>>759
たとえばpulbic int hoge { get; private set;} とか。
770デフォルトの名無しさん:2011/11/25(金) 00:52:44.38
>>767
C#の話ならasyncが入るだろ
微修正どころかLINQ級の新機能だぞ
771デフォルトの名無しさん:2011/11/25(金) 00:58:06.15
>>768
人によっては必要な機能なんだが、説明がメンドイからなのか一般向けには適当な理由で誤魔化されているって話
private setとかwpfのバインドとか、結構普通の使い方でも必要になる機能なんだけどね
そこら辺も不要な人は使わなくても良いと思うよ
772デフォルトの名無しさん:2011/11/25(金) 01:04:12.98
>>770
concurrent系に注力してく感じなのかな
新機能ってつくと心なしかワクワクするな
773デフォルトの名無しさん:2011/11/25(金) 01:04:25.65
>>763
まとめサイトは上手に管理しないと続かないじゃん

>>769
だよな、運営の仕方なんか見てても今後何か進化があるようには思えない
2chの上位互換規格で例えば>>65+763とかでスレ65のレス763が参照できるような掲示板けっこうまじめに考えてるわ
問題は新規が気軽に入ってこれる窓口なんだよなぁ
774デフォルトの名無しさん:2011/11/25(金) 01:07:38.71
>>755
実際、「たまたまAndersの起源が良かったからOKが出たんじゃね?」とか言われる程度には微妙扱いではある。
個人的な感想としては、入ってよかったと思ってるけど。

>>759
あとからの変更に強い。
個人で、単一プロジェクトでやってる分には、
フィールドにしておいて、必要があればあとからプロパティに書き換えればいいじゃんとか思うけど、
人とかプロジェクトまたぐと最初からプロパティでないとまずい。
775デフォルトの名無しさん:2011/11/25(金) 01:08:32.39
>>772
asyncはマルチスレッドでも便利に使えるけどスレッドとは直接関係ないよ
Clickイベントが発生して1秒以内にキーが押されたらダウンロードを開始して
それが終わったら画面に表示する
みたいなイベントで書いてると状態変数が必要になって
とってもめんどくさい非同期(≠マルチスレッド)処理を簡単に書ける機能
776デフォルトの名無しさん:2011/11/25(金) 01:09:27.90
>>770
まあ、ライブラリにはあんまり手が入らないけどね。
async はほとんどコンパイラーの仕事なんで。

>>772
concurrent と async はまた微妙に違うんだわ。
まあ、ライブラリ的には concurrent にも力入ってるけど。

あと、.NET 4.5 はメタデータの読み出しの辺りに手が入ってる。
WinRT 連携用。
777デフォルトの名無しさん:2011/11/25(金) 01:14:19.16
>>775
マルチスレッドじゃない非同期処理ってのが、いまいちピンとこないんだが
invocationとexecutionとを別に扱うような場面を想像すればいいんかな?
なんだか面白そうだから、久しぶりにちと触ってみるか
778デフォルトの名無しさん:2011/11/25(金) 01:29:04.30
>>777
IO待ちとか、別にスレッド要らないでしょ。

まあ、WindowsのIO待ちは内部的には専用スレッド立ってるだけって話も聞くけど、
少なくともユーザーにとっては。

あと、.NET 4以降のTaskクラスは、継続タスクを可能であれば同じスレッドで実行する。
C# 5.0のawaitも、非同期タスクがすでに完了済みだった場合はサスペンドなしでそのまま続行。
779デフォルトの名無しさん:2011/11/25(金) 01:30:10.90
>>777
順番に処理したいのに、途中にイベントやコールバック待ちが入って書きづらいことってよくあるだろ
ShowConfirmMessage(ok => { if (ok) DownloadDataAsync(data => { textBox.Text = data; }); );
こんなキモいことしなくても
var ok = await ShowConfirmMessage(); if (ok) { await DownloadDataAsync(); textBox.Text = data; }
と自然に書けるようになる
上のは継続渡し使ってるからマシだけど、継続渡しも使わないならステート図でも書かないとわけわからん
780デフォルトの名無しさん:2011/11/25(金) 01:31:22.35
自動実装プロパティは、ASP.NETやXAMLのデータバインドがプロパティを要求するから
というのが一番大きいかなあ。
パブリックフィールドじゃ動かないケースが結構あるからね。
将来の変更云々はどうでもいい、とは言わないけど、そんな対した話ではないかな。
781デフォルトの名無しさん:2011/11/25(金) 01:34:56.88
データバインディングがプロパティしか対応しようとしないのも、
最初からプロパティ使うの推奨したいってことでしょ。
782デフォルトの名無しさん:2011/11/25(金) 01:48:50.85
>>778
なるほど
>>779
Futureパターンっぽいのかな。読みやすくていいなこれ
783デフォルトの名無しさん:2011/11/25(金) 01:53:42.85
>>782
Task<T>クラス自身がFutureになってる。

asyncは、Taskクラス+yield returnを使ったコード生成で実現してる。
784デフォルトの名無しさん:2011/11/25(金) 01:56:33.18
なるほど。とても分かりやすい説明だ。
785デフォルトの名無しさん:2011/11/25(金) 04:48:40.49
>>745
で比べたら60倍ぐらいしか遅くならないんだったな。
786デフォルトの名無しさん:2011/11/25(金) 08:14:29.18
やりなおし
787デフォルトの名無しさん:2011/11/25(金) 08:19:59.84
TaskってDisposeあったからなんだかいやだったけど
awaitでつかわれるのなら、もうDispose呼ぶの気にしなくても良くなったのかにゃあ。
元々気にしすぎかな
788デフォルトの名無しさん:2011/11/25(金) 08:20:04.86
>>785は何もわかってない
789デフォルトの名無しさん:2011/11/25(金) 08:49:38.65
BitmapがIDisposableなのはどうせ単にnew Bitmap(Filename)したときのファイルロックをはずすためだけだから
ファイルから作らないBitmapは解放しなくてもいいやとか思ってて
「なぜか最近Windowsの調子が悪いな、7になってもこのざまか!」とか考えながら
自分のプログラムでデバイスコンテキストリソースを大量に浪費してたのはいい思い出。
790デフォルトの名無しさん:2011/11/25(金) 11:57:11.76
自動実装プロパティは

var c = new Test(){ A = 1, B = 2};

という書き方を知ってから捗るようになった。
データ格納用のクラスを良く作るので。
791デフォルトの名無しさん:2011/11/25(金) 12:21:00.64
>>787
MSDN、MS公式提供のものを含めて、TaskのDisposeをちゃんと呼んでる例をみたことない。

Dispose呼ばない場合、WaitHandleの解放がGCのタイミングまで遅れるだけ。
WaitHandleとかってせいぜい1ワード程度のネイティブリソースなので、
GCまで解放されなくても特に何の問題もない。
792デフォルトの名無しさん:2011/11/25(金) 13:22:27.26
結局これからもC++は消えないんだな
C++でできることをC#でできるようになぜしないんだ
793デフォルトの名無しさん:2011/11/25(金) 14:17:21.46
ネイティブとマネージは狙うところが違いすぎて統一は無理ね。
しょうがない。
794デフォルトの名無しさん:2011/11/25(金) 17:10:25.05
そんなにその子の家がいいんならその家の子になっちゃいなさい!
795デフォルトの名無しさん:2011/11/25(金) 17:14:29.56
796デフォルトの名無しさん:2011/11/25(金) 22:31:34.93
>>793
C#の文法で、ネイティブコードも吐ける様にしてくれた方が
今のC++を使い続けるよりも、ずっと嬉しいんだがなあ

…あれ?C#+WinRTってネイティブになるんだっけ?
797デフォルトの名無しさん:2011/11/25(金) 22:39:26.23
>>757
>deferredを理解してないことが発覚したり

「そんなことも理解しないで遅いとか言うな!」
見たいに言う人が居るけど、実際どこまで知ってたらいいんですか?
はっきり言って、直感的に使ってみて、速さが感じられないなら
遅いといわれてもしょうがないよ。
だって、そこが開発効率とか、そういう売り文句になってるわけだから。

ぶっちゃけ、売り文句も「ちゃんと言語仕様をよく理解すれば、直感的で使いやすい」ってすればいいんだよw



798デフォルトの名無しさん:2011/11/25(金) 22:51:13.83
>>790
それは一応フィールドでもできるのではかと
799デフォルトの名無しさん:2011/11/25(金) 22:53:25.15
リフレクションとか使ってた場合もフィールドからプロパティに変えられると終わるし
自動実装プロパティはまぁ便利なんじゃね
800デフォルトの名無しさん:2011/11/25(金) 23:12:25.14
動的コード生成でもプロパティの簡単さに比べると、フィールドが混ざると相当面倒になる
801デフォルトの名無しさん:2011/11/25(金) 23:20:58.70
たぶんもう誰かが散々言ったことだと思うけど、あえて(自動実装)プロパティーを使う理由はあるのか、
っていう設問自体がそもそも奇妙なんだろうな。

むしろ今となっては、あえて生のフィールドを晒す理由はあるのか、と設問する方が自然。

プロパティーはフィールドより機能が高い上に、自動実装プロパティによってフィールドを晒すのと
そう変わらない手間でとりあえず書けるようになったのだから。
802デフォルトの名無しさん:2011/11/25(金) 23:24:40.91
初期化子書けないのどうにかしてくれたら完全に置き換えるよ
803デフォルトの名無しさん:2011/11/26(土) 00:15:51.75
その点は確かに。

でも仮に書けるようになった場合、フィールドと同じように行番号が若い順に
初期化されるのかね。なんかスクリプトみたいでちょっと気持ち悪い気も
804デフォルトの名無しさん:2011/11/26(土) 00:40:52.40
>>796
まあ、C++の文法を整理したものが必要というのは確かなんだけど、
805デフォルトの名無しさん:2011/11/26(土) 00:42:10.36
途中で切れた。804の続き

C#はガベコレやら、.NETのライブラリやらを前提にした機能が多いから。

>>797
その通りなんだけど、
わかってない人のコードってLINQに関係なく遅くなるしね。
806デフォルトの名無しさん:2011/11/26(土) 01:06:58.37
>>797
LINQの売りが速さだったことなんてないでしょ
直感的に使ってみて遅く感じられないなら、それでいいじゃん
807デフォルトの名無しさん:2011/11/26(土) 02:25:42.52
Access の VBA に限界を感じたので、.NET で書きたいんだけど、
LightSwitch ほどとは言わないものの、簡単にAccessライクなアプリを作るには
どういった方法がおすすめですか?できればフリーの環境がよいです。

フォームや分割フォームの、レコード切り替えなど基本的な部分が書きやすければなんでもいいです。
今のところDBはSQLiteを考えています。
808デフォルトの名無しさん:2011/11/26(土) 05:55:13.38
ADO.NET
809デフォルトの名無しさん:2011/11/26(土) 08:26:36.48
>>790
単純にデータ格納用ならいいと思うけど
その書き方って隠蔽ができてなくね?
コンストラクタ使って生成すべきじゃね?
と思ってしまう

うまく言えないけど
810デフォルトの名無しさん:2011/11/26(土) 09:15:41.60
>>809
ぶっちゃけ手抜き用の機能だから、隠蔽とかきちんとしたいときはコンストラクタ用意すればいい
811デフォルトの名無しさん:2011/11/26(土) 13:17:53.99
>>810
だよね。
勘違いして乱用されたら痛いなあと思って。
812デフォルトの名無しさん:2011/11/26(土) 13:19:24.15
>>808
ADO.NET って、オプティミスティック同時実行制御 とか、衝突対策の仕組みが元々あるんですね。
なるほどです。
813デフォルトの名無しさん:2011/11/27(日) 11:35:24.65
linqって何でこんなにも、とっつき難いんだろうー
SQL文と似ているけど、何か違う
814デフォルトの名無しさん:2011/11/27(日) 11:40:17.03
技術者のオナニーでしょw
そういうオナニーはよくあるよ

Cの構文なんかも技術者のオナニー要素あるし

変に楽しようとするとオナニー実装しちゃうことよくある
815デフォルトの名無しさん:2011/11/27(日) 11:41:56.42
>>813
単に慣れの問題だと思うんだ
普段慣れ親しんでいる物と違うから、とっつき難く感じる
816デフォルトの名無しさん:2011/11/27(日) 11:44:25.85
fromキーワードとか使ってるからだろ
Where().Select()表記なら何もわかりにくいものはない
817813: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文と違うやん
818デフォルトの名無しさん:2011/11/27(日) 12:05:41.59
XElement.Parse(Text).Desendants("user")
819813:2011/11/27(日) 12:23:00.81
>>818
とりあえず、動いた
ありがとう

from p in XXX
XXXには何でも書いてOK?
820デフォルトの名無しさん:2011/11/27(日) 13:15:30.55
まずはmsdnを調べる習慣を付けよう
821デフォルトの名無しさん:2011/11/27(日) 13:19:41.91
クエリ式は中途半端にメソッドが混じるから止めた方がいいと思うんだよねえ
中途半端に似てるせいで違いに戸惑うことの方が多いと思うんだけど
822デフォルトの名無しさん:2011/11/27(日) 13:20:50.83
>一般に、LINQ クエリを記述する場合、可能なときは常にクエリ構文を使用し、必要に応じてメソッド構文を使用することをお勧めします。
>この 2 つの形式の間に意味および動作についての違いはありません。
>クエリ式は多くの場合、メソッド構文で記述された同等の式に比べてわかりやすくなります。

こんなこと言ってるけどさ
ハァ?って感じだよね
823デフォルトの名無しさん:2011/11/27(日) 13:25:36.05
なにより遅いし。
824デフォルトの名無しさん:2011/11/27(日) 13:36:12.49
分かりやすくないし
825デフォルトの名無しさん:2011/11/27(日) 13:51:12.12
>クエリ式は多くの場合、メソッド構文で記述された同等の式に比べて誤解を招きます。

こうしよう
826デフォルトの名無しさん:2011/11/27(日) 13:54:47.34
俺は別に判り難いと思わんがなあ
慣れてないだけじゃない?
827デフォルトの名無しさん:2011/11/27(日) 13:57:46.77
多くの人は慣れるほど使わないかと
828デフォルトの名無しさん:2011/11/27(日) 14:00:20.04
ILとの直交性がないからなぁ。ふつう使わないだろ。
829デフォルトの名無しさん:2011/11/27(日) 14:07:35.61
クエリ式はfromをいっぱい並べたいときだけメソッド式より有利
830デフォルトの名無しさん:2011/11/27(日) 14:20:47.83
>>813
オラクルのPro*Cも相当ひどかったが
あれと同じにおい?
831デフォルトの名無しさん:2011/11/27(日) 14:38:26.98
最初頑張って使ってたけどメソッド式を見た瞬間に乗り換えたわ
マジで存在意義がわからん
832813:2011/11/27(日) 15:13:02.31
>>827
そうだよね〜
Enterpriseじゃ未だに.NET 2.0だから、Linq覚えれないよね
仕事で使わないと実践的な使い方とか、なかなか覚えれない

>>830
SQL ServerメインだからOracleはわからん
Oracleは最近使い始めたばかりだから、まだストアド書けるレベルにもなってないもので
833デフォルトの名無しさん:2011/11/27(日) 15:17:29.24
エンタープライズだから.NET 2.0というのは違うでしょ
自分の世界がすべてだと思わないように
834デフォルトの名無しさん:2011/11/27(日) 15:18:06.77
Pro*Cは吐かれたソースがわけわかめでわろた
835デフォルトの名無しさん:2011/11/27(日) 16:44:26.55
Pro*Cは単純なサンプルのソースすら汚い。
オラクルはバグが多いはずだ。
836デフォルトの名無しさん:2011/11/27(日) 19:06:39.29
ラムダはlinqとセットで使わないとメリットがないと思うのは俺だけ?
普段使うところない気がする
837デフォルトの名無しさん:2011/11/27(日) 19:12:28.77
今となってはdelegateの存在感が・・・
838デフォルトの名無しさん:2011/11/27(日) 19:17:57.28
>>836
お手軽な匿名関数としての利用価値がめっちゃあるじゃん
839デフォルトの名無しさん:2011/11/27(日) 19:21:08.01
ヘジたんはデモでLINQ使うときいっつもメソッド形式使ってるよね
840デフォルトの名無しさん:2011/11/27(日) 19:21:17.81
お手軽っていう理由だけだと通らない現場もある。
841デフォルトの名無しさん:2011/11/27(日) 19:33:26.83
現場ごとにあわせればいいだけの話
頭の融通が利かないのが一番悪
842デフォルトの名無しさん:2011/11/27(日) 20:22:50.87
>>836
用意されているのでもLazyやDelegateCommand
自分で使っていくにもfactory的に引数で受けるようにしたりとか
使おうとすれば幾らでも使いどころあるよ(その辺の使い方は関数型言語の考え方を見るといいかも)
843デフォルトの名無しさん:2011/11/27(日) 20:24:39.74
このスレでfactoryってよくきくけどなんなの?
そういう用語どこで覚えてるの?
844デフォルトの名無しさん:2011/11/27(日) 20:25:36.39
>>836が無名関数とラムダを区別している一方で
返答者は区別せずに回答してる件
845デフォルトの名無しさん:2011/11/27(日) 20:33:23.91
C#では () => { } と () => 式 の両方をラムダ式と呼ぶから匿名メソッドと実質的な違いはない
delegate() { } との表記の違いだけ
846デフォルトの名無しさん:2011/11/27(日) 20:49:43.47
>>843
デザインパターン本を一冊読む
847デフォルトの名無しさん:2011/11/27(日) 20:50:17.90
Expressionになるラムダを指すのなら、
LINQ以外でも式がデータとして取れるのでタイプセーフに名前を取り出したり
それとILビルダー(最後にCompileしてFuncを作る)としての役割もあるね
848デフォルトの名無しさん:2011/11/27(日) 20:53:07.66
>>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);
}
849デフォルトの名無しさん:2011/11/27(日) 20:53:21.36
MSって基本的にクラスやメンバの名前にデザインパターンの慣用名使わないから
Javaなんかと違って知らないうちに使っててもわかりにくいんだよね
デザパタ名嫌いだからMSの方針は好みだけど
850デフォルトの名無しさん:2011/11/27(日) 20:55:55.85
Prismなんか持ち出さんでもASP.NET MVCにあるよ
851デフォルトの名無しさん:2011/11/30(水) 00:14:03.70
>>848
コードはhttp://ideone.com/とか使ってくれ
すごく読みにくい
852デフォルトの名無しさん:2011/11/30(水) 09:47:10.34
var threadSafeHandler = Interlocked.CompareExchange(ref Raised, null, null);

Livetのイベント呼び出しがこんなコードになってるけど
32bit環境なら32bitまで、64bit環境なら64bitまでの代入や取得ってアトミックだった気がするんだけど
違いました?
853デフォルトの名無しさん:2011/11/30(水) 09:53:47.17
それはCompareとExchangeをスレッドセーフで処理するメソッドじゃね?
854デフォルトの名無しさん:2011/11/30(水) 10:30:15.47
>>853
nullとの比較だと、元の値を変えずに取り出す事と同じになる。
Interlocked.Readの参照版が無いからこれで代替してるんだろう。
855デフォルトの名無しさん:2011/11/30(水) 10:39:12.04
最適化を抑制してるんだろうけど、本当に必要なのかこれ
MSのコードでそんなことやってるの見たことないし、VBのRaiseEventもそんなことしてないはず
C#の言語仕様だと、データの依存関係は必ず保持されて変数の値は順番通りに計算されるとあるが
856デフォルトの名無しさん:2011/11/30(水) 10:48:45.78
>>855
コレクションのSyncRootはComapreExchangeで生成されてるよ
857デフォルトの名無しさん:2011/11/30(水) 10:50:13.74
CompareExchangeってダブルチェックロッキングの代替だと思ってたんだけど違うの?
858デフォルトの名無しさん:2011/11/30(水) 10:59:14.81
http://blogs.msdn.com/b/cburrows/archive/2010/03/30/events-get-a-little-overhaul-in-c-4-afterward-effective-events.aspx
MSの人もこうだからやっぱりCompareExchange要らないんじゃない
C#4.0からイベントの+=や-=がロックフリーになってるけど、それで生成されるコードも
フィールドのローカル変数への代入が最適化で消えたり順番が変わったりすることは前提にないみたいだよ
859デフォルトの名無しさん:2011/11/30(水) 11:09:22.31
>>856
そりゃうっかり2つ作っちゃったら困るからな
852はreadの代わりにしてるだけ
860デフォルトの名無しさん:2011/11/30(水) 13:07:08.36
>>857
ダブルチェックロッキングみたいな、比較“代入”だけなら、問題にならないはず。
86系 CPU だと確かダブルチェックロッキング正常に動くって話だったと思うし、
.NET 2.0 以降のメモリモデルなら、volatile つければ他の環境でも動く保障つくはず。

CompareExchange は比較“交換”だから勝手違うと思う。

>>858
4.0 で lock(this) は消えたけど、代わりに CompareExchange 使ったパターンになったのよね?
あの CompareExchange は必要なんじゃないの?
861デフォルトの名無しさん:2011/11/30(水) 13:25:43.43
>>860
イベントアクセサのあれは本当にcompare−>exchangeしてる
readだけの箇所にはInterlocked使ってない
862デフォルトの名無しさん:2011/11/30(水) 13:51:05.63
>>861
そうそう、それを確認したく。
863デフォルトの名無しさん:2011/11/30(水) 14:08:24.64
じゃあ、ロックフリーな遅延初期化って
Hoge a = this.x;
if (a == null) {
 a = new Hoge();
 Interlocked.CompareExchange(ref this.x, a, null);
}
だけでいいの?
少なくともthis.x != nullなのに初期化が終わってない状態には
ならないと思うけど
864デフォルトの名無しさん:2011/11/30(水) 18:15:53.32
ちと話しぶった切るけど、、、ある文字列をゼロサプレスするのに
効率的な方法ってどんなのがあるのでしょうか?
自分は一文字ずつsubstringで取得して精査する方法しか思いつかないのですが・・・

例)
00005 => 5
AB00001 => AB1
AB0000 => 0

のようにしたいです。
865デフォルトの名無しさん:2011/11/30(水) 18:30:14.45
後ろから0検索してごにょるだけじゃないの
866デフォルトの名無しさん:2011/11/30(水) 18:33:13.91
([A-Z]*)0*([1-9][0-9]*)?
でキャプチャしたら
867デフォルトの名無しさん:2011/11/30(水) 18:45:04.04
AB0500はどうなるんだろう
AB0501とか
868デフォルトの名無しさん:2011/11/30(水) 18:54:47.30
すいません、仕様を伝えていませんでした。。。先頭のゼロサプレスのみなので
AB0500=>AB500
AB0501=>AB501
になります。
全てのゼロを削除するならstr.Replace("0","");で良かったのですが・・・
869デフォルトの名無しさん:2011/11/30(水) 19:00:34.27
なら>>866でいけるはず
870デフォルトの名無しさん:2011/11/30(水) 19:08:23.00
正規表現使うほどのものでもないような。
substring何回も使うくらいなら、stringをchar配列にして走査したほうが早いんじゃないの
871デフォルトの名無しさん:2011/11/30(水) 19:26:12.32
>>870
それだと2バイト文字が来るとどうにも・・・orz
872デフォルトの名無しさん:2011/11/30(水) 19:33:53.72
こんなんはどうだろうか・・・

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;

とか・・?
873デフォルトの名無しさん:2011/11/30(水) 19:34:46.92
.NETには1バイト文字なんて存在しないぞ
874デフォルトの名無しさん:2011/11/30(水) 19:35:58.72
>>864
AB0000 => 0

なんでゼロサプレスで "AB" が消えるの?
875デフォルトの名無しさん:2011/11/30(水) 19:53:10.26
初心者弄り始まったな
相談者は正規表現で満足しておくべきだった
876デフォルトの名無しさん:2011/11/30(水) 19:53:38.99
>>874
ごめんなさい
AB0000=>AB0
ですm(_ _)m

>>処理系がShift-Jisでしていたからできなかったのかなぁ、、、
その昔うまくできなくて、2バイトだからか?って思ってあきらめてた><
ひとつためになりました♪よく考えたら.NETてunicodeだもんね・・・
877デフォルトの名無しさん:2011/11/30(水) 20:09:35.39
この件に使うかどうかは別にしても正規表現は覚えとけ
これほど学習コストが低い割に恐ろしく広く応用できる技術ってそうないんじゃないか
878デフォルトの名無しさん:2011/11/30(水) 20:10:00.11
>>875
あの正規表現は間違ってる。

AB0000 => 0
のせいで正しい正規表現自体が存在しなかったけど。

>>876
これでどうだ?
Regex.Replace(input,"(?<![0-9])0+(?=[0-9])","")
879デフォルトの名無しさん:2011/11/30(水) 20:21:54.73
>>876
ふらっといけよ、お前みたいな初心者が来るとネタですらないどうでもいい内容のレスが増えて迷惑
880デフォルトの名無しさん:2011/11/30(水) 20:40:27.97
>>879
ほんと、どうでもよくて意味がないよな。
881デフォルトの名無しさん:2011/11/30(水) 20:55:38.62
まるで糞仕様を発注してきて何度も確認したのに
その通りに作るとクレーム入れてくる糞カスタマーみたいだな
882デフォルトの名無しさん:2011/11/30(水) 20:57:01.42
> それだと2バイト文字が来るとどうにも・・・orz
どうでもいいどころかこういうノイズを撒き散らして脳にダメージを与えてくるからたちが悪い
883デフォルトの名無しさん:2011/11/30(水) 20:57:58.45
IPさらしながら書けよ雑魚
884デフォルトの名無しさん:2011/11/30(水) 20:59:49.34
>>883
こういう糞みたいなカス煽りも出てくるしな
885883:2011/11/30(水) 21:01:26.87
だからお前みたいな基地外はこて半つけるか
IPさらせって
ばればれの自演してんじゃねーよボケ
886HRDfa-01p6-100.ppp11.odn.ad.jp:2011/11/30(水) 21:02:30.26
それで?
887デフォルトの名無しさん:2011/11/30(水) 21:02:57.72
この板をIDなしにしたやつは賢明だよな
888デフォルトの名無しさん:2011/11/30(水) 21:03:27.92
>>886
しばらく待て
889876:2011/11/30(水) 21:06:37.16
すいませんでした。ここで質問したのは場違いだったみたいです。
スレが荒れる原因になってごめんなさい。
初心者スレのほうに移ります。
890デフォルトの名無しさん:2011/11/30(水) 21:08:00.94
ほら、お前らが苛めるから泣いちゃったじゃねーか
891デフォルトの名無しさん:2011/11/30(水) 21:16:01.44
Twitterか海外に行こうぜ
892デフォルトの名無しさん:2011/11/30(水) 21:30:59.03
ID在ったほうがいいと思うんだけどなぁ
893デフォルトの名無しさん:2011/11/30(水) 21:34:47.24
LINQ厨が大反対するだろうな。
894デフォルトの名無しさん:2011/11/30(水) 22:40:40.10
ふらっとはさらっと
ここはどろっとしている。
895デフォルトの名無しさん:2011/11/30(水) 22:47:04.09
Twitter氏と海外フォーラム殿と例外と100倍が荒れ狂うんじゃねえの
896デフォルトの名無しさん:2011/11/30(水) 22:52:59.38
>>895 ←このスレの主? 書き込んでる単語の意味が全然分からないんだけど・・・。いつもここで荒らしてるしひと?
897デフォルトの名無しさん:2011/11/30(水) 22:53:44.34
そいつキチガイだから触れちゃダメ。
898デフォルトの名無しさん:2011/11/30(水) 22:55:42.02
主って何だよどこかの厨房ですか
899デフォルトの名無しさん:2011/11/30(水) 22:56:28.06
「ぬし」だろ
「しゅ」と読んだお前こそ
900デフォルトの名無しさん:2011/11/30(水) 22:58:59.22
今日スカンク頭のジジイに「アルジを呼べ!」ってゆあれた
901デフォルトの名無しさん:2011/11/30(水) 23:03:56.20
Twitterと海外がいたのはふらっとスレとWPFスレだぞ
ここには来てない
902デフォルトの名無しさん:2011/11/30(水) 23:05:34.96
>>898
ニコ厨がこんなスレに何の用なん?
903デフォルトの名無しさん:2011/11/30(水) 23:24:29.06
System.Linq.Expressionでthisを参照する方法はありますか?
904デフォルトの名無しさん:2011/11/30(水) 23:43:28.35
書きたいExpressionをラムダ式で表現してみてくれ
905デフォルトの名無しさん:2011/12/01(木) 01:12:50.83
Λ人入λ
906デフォルトの名無しさん:2011/12/01(木) 04:51:42.80
ダーリン、浮気は許さないっちゃ
907デフォルトの名無しさん:2011/12/01(木) 08:58:12.72
一人、なんでもあだ名つけて通ぶってる馬鹿ってなんなの?
908デフォルトの名無しさん:2011/12/01(木) 09:45:09.65
そいつキチガイだから触れちゃダメ。
909デフォルトの名無しさん:2011/12/01(木) 11:21:42.62
そうだ俺に触るな、欝は伝染するぞ
910デフォルトの名無しさん:2011/12/01(木) 19:56:48.55
駄目って言われてもやるのが馬鹿の馬鹿たる所以
911デフォルトの名無しさん:2011/12/01(木) 23:15:02.61
IPさらせって言ってんだろバカ
912デフォルトの名無しさん:2011/12/01(木) 23:27:15.56
研修1ヶ月、実務に入って3ヵ月になる新人です。
入門書的なテキストじゃ少し物足りないってレベルなのですが
オススメの参考書とかあったら教えてください。
913デフォルトの名無しさん:2011/12/01(木) 23:46:08.93
>>912
プログラミング.NET Framework第3版
914デフォルトの名無しさん:2011/12/02(金) 09:05:27.85
>>913
これは良書、買い
915デフォルトの名無しさん:2011/12/02(金) 09:13:13.50
お断りします。
916デフォルトの名無しさん:2011/12/02(金) 09:18:55.44
『.NETのクラスライブラリ設計 』の糞訳の人じゃん。
917デフォルトの名無しさん:2011/12/02(金) 09:40:23.17
>>912
「VisualC#実践講座」
918デフォルトの名無しさん:2011/12/02(金) 10:19:42.69
C言語のK&Rだって糞訳だけど、買わなきゃいけない本なんだよ!
919デフォルトの名無しさん:2011/12/02(金) 10:53:32.57
本当の糞訳ってのはプログラミング言語C++第三版だろ。
920デフォルトの名無しさん:2011/12/02(金) 11:01:03.56
ここで誰も「原本を買え」っていう奴がいなくて安心した
921デフォルトの名無しさん:2011/12/02(金) 11:26:02.73
原本??
922デフォルトの名無しさん:2011/12/02(金) 11:27:02.50
機械翻訳とコピペだけで内容を確認せず仕上げる糞訳者は晒さないとな。
923デフォルトの名無しさん:2011/12/02(金) 11:52:37.08
いつもコピーしている奴は原本なんて言っちゃうんだろうなw
924デフォルトの名無しさん:2011/12/02(金) 12:16:35.37
>>923 >>921
自炊はしてみたいとは思うがやってない…

翻訳する元の本を原本っていわないか?
たとえば>>918だったらhttp://amzn.com/0131103628 とか
925デフォルトの名無しさん:2011/12/02(金) 12:48:14.20
>>919
それ買ってあまりの糞訳に絶望して本屋に返品しに行ったわ
すっげええ嫌な顔されたけどあれはもはや日本語じゃなかった
926デフォルトの名無しさん:2011/12/02(金) 12:52:04.03
原著だろ。
927デフォルトの名無しさん:2011/12/02(金) 13:26:35.88
翻訳前の本を原本というみたいだけど
普通は複写に対してオリジナルを原本,翻訳される本を原著というのが一般的かと思う。
928デフォルトの名無しさん:2011/12/02(金) 14:24:25.15
Richter本はなんで訳者を駄目な人に変えちゃったんだろうな...

MS Pressは良書ほど糞訳が付きやすいような気がする
豊田孝とか読んでてイライラしますねん
929デフォルトの名無しさん:2011/12/02(金) 21:23:34.00
>>928
前の人はもう.NETとは関わってないみたいだからしょうがないのかもねえ
930デフォルトの名無しさん:2011/12/03(土) 13:14:33.19
コンボボックスに選択肢にないものを文字入力した場合、SelectedItemの値がnullになるんですけど、どうしたら自分で入力していた値を取得できますか?
931デフォルトの名無しさん:2011/12/03(土) 13:21:55.46
.Text
選択されてないんだからnullじゃないと
932デフォルトの名無しさん:2011/12/03(土) 13:26:42.38
まぁ、ワシのティンコはヌルヌルですけどね
933デフォルトの名無しさん:2011/12/03(土) 13:27:25.79
そんなことどでもいいがな゚.+:。(ノ^∇^)ノ゚.+:。
934デフォルトの名無しさん:2011/12/03(土) 13:31:12.93
>>932
しね。
935デフォルトの名無しさん:2011/12/03(土) 13:33:22.93
ありがとうございました。
936デフォルトの名無しさん:2011/12/03(土) 13:50:13.47
SelectedItemとは何だったのか
937デフォルトの名無しさん:2011/12/03(土) 14:40:00.99
.Textだけだと、選択肢から選んだのか手で打ったのかわかんねーじゃん。
938デフォルトの名無しさん:2011/12/03(土) 15:04:48.69
.NEXT
939デフォルトの名無しさん:2011/12/03(土) 16:13:20.26
>>852
ttp://www.codeproject.com/KB/cs/WeakEvents.aspx

これによると、ただの代入だとローカル変数が最適化で消される可能性があるから
確実にローカル変数に格納するという意味でCompareExchange使ってるみたいね。
でもMSの実装なら必要ないみたいだけど。
940デフォルトの名無しさん:2011/12/04(日) 10:08:37.20
言語仕様に、フィールドのローカル変数への代入は最適化で消えないと明記すればいいのにな
完全に公然の了解になっていて、今さら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 です。
944デフォルトの名無しさん:2011/12/07(水) 21:58:52.27
聞きたいことを先ず最初に書かないとだめよ?
だらだら読ませて、興味を無くした人に、最後に質問ですって
そら、答える人は奇特な人しか居らんわ。
945デフォルトの名無しさん:2011/12/07(水) 22:01:29.96
うるせー馬鹿
946デフォルトの名無しさん:2011/12/07(水) 22:01:35.55
>>943
Hogeプロパティに[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]を付ける
947デフォルトの名無しさん:2011/12/07(水) 22:33:25.27
>>946
できました!
これで胃の痛みからも解消されます
ありがとうございました
948デフォルトの名無しさん:2011/12/07(水) 22:55:55.38
もう少しで危篤な人になるところだったのか・・・
949デフォルトの名無しさん:2011/12/07(水) 22:56:58.46
どんだけ苦しんでるんだよ・・・。
950デフォルトの名無しさん:2011/12/07(水) 23:04:28.05
と思ったら、setter のあるプロパティしか反映されないー
AConverter を使ってくれないのですね・・・
951デフォルトの名無しさん:2011/12/07(水) 23:10:19.66
A の中の setter のあるプロパティしか反映されない・・・ということです
Hoge にはもちろん setter はあります
952デフォルトの名無しさん:2011/12/07(水) 23:13:09.68
int型の計算でi = i + 1というのはC#だとどう書けばいいですか?
953デフォルトの名無しさん:2011/12/07(水) 23:14:28.71
i++;
++i;
i+=1;
954デフォルトの名無しさん:2011/12/07(水) 23:24:00.65
ありがとん
955デフォルトの名無しさん:2011/12/07(水) 23:33:13.30
構造体の中のstring配列に文字列を代入したいのですが
構造体の宣言部に数を定義していないのですが string names[] ←こんな感じ
この中に代入するにはどうすれば良いですか?
最大値の分からない繰り返しの中で
hogehoge.names[i] = "hoge"のように代入したいです
956デフォルトの名無しさん:2011/12/07(水) 23:35:48.09
>>955
配列じゃなくList<T>じゃダメなの?
957デフォルトの名無しさん:2011/12/07(水) 23:40:48.62
それ初めて見ました
ちょっと調べてみます。ありがとう
958943,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度目からエラーが出るようになります。
どうにかならないものでしょうか・・・。
959958:2011/12/08(木) 00:54:33.91
ダンプコードを入れてみると、
やはりビルドしてもAやAConverterが昔のままのようですね
新しくできたアセンブリと齟齬を起こして
(新しい)Aから(昔の)Aへのキャストに失敗してエラーになるようです
BControlは新しくなるのになんでこんな中途半端な実装なんだろう・・・
960デフォルトの名無しさん:2011/12/08(木) 01:02:49.71
>>958
なんか名前がすごいことになったなw
つか、なんでこのスレってID表示されないん? いっつもすげー不便だと思うんだけど。
過疎スレなんだからID生成程度のリソースをけちらないでくれ
961959:2011/12/08(木) 01:42:04.39
ConvertToの第3引数(変換元のAの値)を
無理矢理Aにキャストするとエラーが詳しく出てくるようになりました
やはり使用するアセンブリが異なるようです
アセンブリのフルパスが表示されていましたが、
...\ProjectAssembly\????????\********.exe の ? の部分が異なっていました。
(? はテンポラリディレクトリ名っぽいランダムな名前)

プロパティの値を入力する分には問題がないようですが、
いざ保存するとなるとこのエラーになるようです。
プロパティの値を入力する時のアセンブリは新しいアセンブリが使われますが、
保存するときは古いアセンブリが使われてしまうようです。(なんじゃそりゃ)

悔しいので、型チェックは Type の比較でなく FullName の比較にして、
ConvertToの第3引数からリフレクションを使ってInstanceDescriptorを作ってやる事で
なんとかする事はできました。
ただ、Aのコンストラクタが変化した場合には、AConverterのコードを変更した後、
やはりVSを再起動する必要があるようです。

まあ苦肉の策には違いないので、古いアセンブリを見なくする方法があれば
引き続きお教えいただければと思います。
962デフォルトの名無しさん
>>960
ID表示すると喧嘩になるじゃん