C#, C♯, C#相談室 Part83at TECH
C#, C♯, C#相談室 Part83 - 暇つぶし2ch1:デフォルトの名無しさん
14/04/20 08:07:52.10 tLxbFHYI
前スレ
C#, C♯, C#相談室 Part82
スレリンク(tech板)

Visual Studio 2010 Express 他
URLリンク(www.visualstudio.com)

2:デフォルトの名無しさん
14/04/20 11:53:40.75 X23Clxno
>>1

> Visual Studio 2010 Express 他

そろそろ 2013 にしてもいいかと

3:デフォルトの名無しさん
14/04/20 21:32:16.44 ekNgbe08
初学者はExpress for windows desktopが正解だっけ

4:デフォルトの名無しさん
14/04/20 22:12:26.60 PF/kKHEc
>>1

5:デフォルトの名無しさん
14/04/20 22:30:23.93 NkZ8yLaE
他って何があるの?

6:デフォルトの名無しさん
14/04/20 22:35:19.76 pm6pQF/U
Express For Webの方が段違いに高機能だよ
For Windows Desktopからテンプレートを抜いてExpress For Webで使うのがベスト

7:デフォルトの名無しさん
14/04/21 00:42:05.10 eYdH8FCu
ライセンス大丈夫なのそれ

8:デフォルトの名無しさん
14/04/21 11:09:25.71 RwXDTsmn
>>6 kwsk

9:デフォルトの名無しさん
14/04/22 12:28:30.66 6+D188bl
桁数が無制限の10進小数BigDecimalクラスを作って
その型をメンバに持つユーザーコントロールを
作ったのですが、プロパティウィンドウで
灰色表示になっていて編集できません。

どのようにすれば、プロパティウィンドウで
通常のdecimalなどと同じように入力できるでしょうか。

10:デフォルトの名無しさん
14/04/22 12:43:28.85 XBfi1btF
TypeConverter実装してStringとの相互変換を書く、だっけ

11:デフォルトの名無しさん
14/04/22 15:32:26.26 LLIZuTLq
Windows8.1 UPDATEがリリースされました。
使用メモリが少なくなって1GBメモリのマシンでも動作するようなことが言われています。

アップデート(8 →8.1 →8.1 UPDATE)しようと思いますが、
c#や、.netはきちんと動作してくれるんでしょうか。

試した人います?

12:デフォルトの名無しさん
14/04/22 15:34:35.91 hiWtVD31
大丈夫に決まってるだろ・・・

13:デフォルトの名無しさん
14/04/22 15:56:53.67 z8WHMXPV
新らし物好きならば体を張って確かめるべき

14:デフォルトの名無しさん
14/04/22 17:58:51.02 UE2PHjX0
>>11
OSの実装に依存するようなクソなコードじゃなければ動くに決まってるだろ。






というのが建前

15:デフォルトの名無しさん
14/04/22 18:04:40.83 z8WHMXPV
DLLHELLへようこそ

16:デフォルトの名無しさん
14/04/22 21:18:01.26 FcSpgIwh
8系は昔のバージョンが入ってない

17:デフォルトの名無しさん
14/04/22 23:11:07.13 WX6xzJqE
旧バージョンも一応入れることも出来るけどね。
まぁ、4.5.1 も互換性あるらしいから一通り動かしてみて
おかしな所を修正するだけでいいんじゃないかと。

18:デフォルトの名無しさん
14/04/23 19:18:50.80 uDUMTt2m
>>12-17
レスありがとうございました。

>>17
.net 2から、WINDOWS8の.net 4?に、ASP.NETアプリを移行して困ったことは、
接続文字列を格納したweb.confの要素を読み込むためのクラスが変わっていたことだったな。

Windows 8 も、Windows 8.1 UPDATEも、.net周辺は互換性があるとして、
アップデートやろうかな。でも、テスト環境を用意して、様子を見よう。

19:デフォルトの名無しさん
14/04/23 21:09:51.51 8RvEXtF8
C#は初めてでjavaはそれなりに分かる程度なんですが、
インターフェースを実装した匿名型みたいなのってどう作るのが一般的ですか?
具体的にはSystem.Collections.Generic.IEnumerable<E>を実装したクラスを作りたいのですが、
GetEnumratorはどう実装するのが一般的なのかで戸惑っています。
javaでやった時はreturn new IEnumerator<E>(){...};みたいなのを書いていたのですが、
C#では全然違うやり方するんだろうなと思いつつもググってもみつかりませんでした。

宜しくお願い致します。

20:デフォルトの名無しさん
14/04/23 21:12:43.10 9b5aah45
もうIEnumerable<T>は自前で実装せずyieldで書くわ
インターフェイス一般なら普通にclass内部にネストしたprivate classで書けば良いんじゃね

21:デフォルトの名無しさん
14/04/23 21:18:29.46 oHxA5I3Z
インターフェースじゃなくて出来るだけdelegateとラムダ式を使うことやね

22:デフォルトの名無しさん
14/04/23 21:28:40.77 Jwmg0nMc
イベントやラムダがあるからインターフェイスをネストクラスで実装するのは
あんまり必要ないんだよ
というかJavaが異常
ちなみにJavaみたいにネストクラスが暗黙的に外のオブジェクトの参照を持つってのも
C#には無い(C#のネストクラスは全部Javaのstatic class相当)
要らないからね

23:デフォルトの名無しさん
14/04/23 21:42:39.32 FOWeiF78
>Javaが異常
18年かかって反省した結果がSAM(Single abstract method)

24:デフォルトの名無しさん
14/04/23 21:52:08.48 Jwmg0nMc
反省して7年間悩んだ結果が
外のローカル変数を変更できず検査例外と相容れない代物

25:デフォルトの名無しさん
14/04/23 22:27:47.84 B15hE1J5
いい加減検査例外が欠陥品だと認めろ

26:デフォルトの名無しさん
14/04/23 22:34:21.45 Jwmg0nMc
>>25
公式にそう認めたよ
とうとうjava.io.UncheckedIOExceptionが導入された

27:デフォルトの名無しさん
14/04/23 22:37:37.71 FOWeiF78
C#の真似して失敗した劣化版enum
C#の真似して失敗したクロージャもどきのラムダ
C#の真似して失敗した劣化版タイプジェネリクス
C#の真似したboxing
C#の真似した世代別ガベコレ
C#の真似した劣化版デリゲート「SAM」
失敗を認めた検査例外

もうJAVAのライフはゼロ

28:デフォルトの名無しさん
14/04/23 22:45:31.11 PHSt4KVS
C#も最初はJava以下の代物だったのにこんなに立派になって・・・
ここ数年、Javaがパッとしないってのもあるんだけどさ。

29:デフォルトの名無しさん
14/04/23 22:51:46.29 qZjbiDWM
>>28
こんな記事もあったぐらいでそれはない。
URLリンク(www.atmarkit.co.jp)

この記事のコメントで暴れてたJava信者の人今はどうしてるかねw

30:デフォルトの名無しさん
14/04/23 23:52:36.57 8RvEXtF8
いや、javaがダメだってのはそれでいいんだけど、
実際delegateとか書くにはどうしたらいいの?
yieldで作ったIEnumerableを再帰したら重すぎたので
用途限定の無限リスト実装クラスを書きたいだけなんだよね。

31:デフォルトの名無しさん
14/04/23 23:58:41.49 oHxA5I3Z
yieldで作ったIEnumerableを再帰する ってどんなん?

32:デフォルトの名無しさん
14/04/24 00:01:23.94 eSsn4FqQ
イテレータ―のベストプラクティスはこんな感じ

class Hoge: IEnumerable<T> {
 public struct Enumerator :IEnumerator<T>{}
 public Enumerator GetEnumerator(){ return new Enumerator();}
 IEnumerator<T> IEnumerable<T>.GetEnumerator(){return GetEnumerator();}
}

IEnumeratorの中身が分からんなら諦めて

33:デフォルトの名無しさん
14/04/24 00:01:42.26 eeIDhPaJ
関数型っぽくいくなら
static IEnumerable<object> Infinite() { while (true) yield return default(null); }
var inflist = Infinite().Select(_ => 好きな値());

34:33
14/04/24 00:03:22.24 eeIDhPaJ
default(null)はnullの間違い

35:デフォルトの名無しさん
14/04/24 00:14:49.41 BDmsfKX9
>>31
IEnumerable<T> sample(IEnumerable<T> tailBase)
{
 var e = tailBase;
 while(true)
 {
  var r = e.ElementAt(0);
  e = from v in e where Filter(v) select v;
  yield return r;
 }
}
かなり省いたけど大体こんな感じの。

36:デフォルトの名無しさん
14/04/24 00:18:00.24 7gol0BjG
foreach(var item in e)
{
 if(Filter(item)){ yield return item; }
}

じゃダメなの?

37:デフォルトの名無しさん
14/04/24 00:19:44.03 7gol0BjG
なんかわけわかんないことかいたな
return e.Where(Filter);

こうか

38:デフォルトの名無しさん
14/04/24 00:53:46.66 eeIDhPaJ
>>35
SelectMany

39:デフォルトの名無しさん
14/04/24 11:07:28.13 RPJZFTzy
Windows Live Mail に足りない機能をC#で追加したいと思っています。
そんな組み込みは可能でしょうか?

Windows Live Mail自体がコンパイルされて出来上がった
アプリケーションである以上、そこにC#で新たにプログラムを作って組み込みする方法とか無いのでは?
とも考えています。

40:デフォルトの名無しさん
14/04/24 12:39:46.74 efYzmxgq
1から作った方が早いわな

41:デフォルトの名無しさん
14/04/24 12:45:23.88 mnsZs1hI
そういう奴は「プラグイン(アドイン)追加でxxできます!!」と謳ってるから
まずそこを確認するところから

42:デフォルトの名無しさん
14/04/24 15:46:36.51 2R+2SMgf
>>41
プラグイン開発方法とか解説しているサイトの中でオススメはありますか?

43:デフォルトの名無しさん
14/04/24 17:53:40.24 YxnFmXEY
だからそもそもWindows Live Mailがプラグインを、それも.net製のプラグインを使えるアプリケーションなの?って話

44:デフォルトの名無しさん
14/04/24 17:56:03.77 tDJuXksa
Outlookのアドオン市場ってそれなりにあるんでは
個人的に1つ使ってる
外国製で30ドル位だった

45:デフォルトの名無しさん
14/04/24 18:01:30.58 qWN4hsJ9
いろんな本に出てくるマネージヒープってなにもの?

46:デフォルトの名無しさん
14/04/24 18:06:32.37 6IsMFN2k
.NETが管理してるメモリ領域のうち、参照型の実体を置いておく領域

47:デフォルトの名無しさん
14/04/24 18:07:22.79 qgz+WFm0
Outlookの開発はVSにテンプレートがあるほどだしな

48:デフォルトの名無しさん
14/04/24 18:11:00.42 qWN4hsJ9
>>46
じゃあ参照型の変数(ポインタ?といっていいのか?)はどこにあるの?

49:デフォルトの名無しさん
14/04/24 18:12:15.63 6IsMFN2k
ローカル変数ならスタック

50:デフォルトの名無しさん
14/04/24 18:16:31.07 qWN4hsJ9
>>49
ありがとう
じゃクラスのフィールドに参照型が定義されてたら?

51:デフォルトの名無しさん
14/04/24 18:18:04.70 6IsMFN2k
参照型のフィールドは参照型の実体の一部

52:デフォルトの名無しさん
14/04/24 18:25:41.81 qWN4hsJ9
>>51
thx
なんとなくわかった気がする、ありがとー

53:デフォルトの名無しさん
14/04/24 21:09:08.42 eyNeUV4V
>>43
サンクス

Windows Live Mailしか使った事がなぃんだけどOutLookと比べてどっちの方が使い勝手が良いですか?
もしOutLookは10年位前に使った事はある程度です。

54:デフォルトの名無しさん
14/04/24 21:14:01.68 mu7aLjm1
そりゃもうスレ違いだ ソフトウェア板かどっかに行ってこい

55:デフォルトの名無しさん
14/04/25 09:26:40.97 IZttWr8m
使い勝手の良さなんて個人の趣味で変わるしな
あえて言えばテンプレ改良してマイメーラーが最強w

56:デフォルトの名無しさん
14/04/25 11:24:17.40 ooCgI5xK
Exchangeで使うなら、言うまでもなくOutlook
Outlook.comで使う場合もOutlookの方がいいと思う
PopやImapでしか接続しないならWindows liveメールの方が手軽でいいかな

57:デフォルトの名無しさん
14/04/30 18:00:42.73 DNQbhBwD
www.infoq.com/jp/news/2014/04/roslyn_oss

58:デフォルトの名無しさん
14/04/30 18:34:06.89 EzgfB9pv
データーの永続化で一番高速な方法ってなんですか?

59:デフォルトの名無しさん
14/04/30 18:36:18.93 4l7lcAfF
君が何を永続化しようとしてるのかによって取れる方法が違うんだから
先にそれを言った方が二度手間にならなくていいぞと忠告してやる

60:デフォルトの名無しさん
14/04/30 18:43:10.80 EzgfB9pv
深さが二段階しかないツリーデータです

61:デフォルトの名無しさん
14/04/30 18:54:33.47 I6H+jm99
neueとかいうブログの人がシリアライザのパフォーマンス比較の記事を書いてたように思ったが、
まあ気になるなら自分で確認するのが一番だよね。

62:デフォルトの名無しさん
14/05/03 12:01:57.25 HBcfi/y3
OWINてどうなの? IIS捨てれるの?

63:デフォルトの名無しさん
14/05/03 23:34:23.75 oJLHNYzb
ASP.NETのように、ビハインドでビジネス層のクラスを組み立てながら、
WEBアプリの構築は、JAVA + JSP + サーブレット でもできます。

しかし、ASP.NETのサーバーコントロールのように高度に抽象化されたデザイン用クラスは、
JAVAを使った開発でも最近はあるんでしょうか。

64:デフォルトの名無しさん
14/05/03 23:38:27.42 oJLHNYzb
あるいは、ASP.NETのオープンソース版、.NETフレームワークのオープンソース版って、実用的なんでしょうか。
最近では、c#のコンパイラがオープンソース化されたようですけど。
お金のかからない環境を構築したいとおもって。

65:デフォルトの名無しさん
14/05/03 23:52:34.97 Cu6JPOBx
>>63
Struts 1のtaglibがそのものなのだが

66:デフォルトの名無しさん
14/05/03 23:56:18.73 oJLHNYzb
>>65
本屋でパラパラページをめくりながら探していると、
Structってもはや古い技術だというような記述があったので、意外でした。
taglibは本屋では見つからなかったです。

ちょっと調べてきます。
ありがとうございます!

67:デフォルトの名無しさん
14/05/04 02:14:44.21 eMoGcgcA
どっちもStaticなグローバル変数で持ってますよね、SingletonとStaticの違いってなんですか?って質問されて上手く答えられなかった・・・

68:デフォルトの名無しさん
14/05/04 02:40:26.63 dx9xU03u
Singletonはクラスのアクセスメソッドで制限をかけることができる。
グローバル変数は誰がいつどのタイミングで読み書きするかわからない。

69:デフォルトの名無しさん
14/05/04 02:49:01.63 mi+P20vl
シングルトンは遅延初期化させたい時かな
静的コンストラクタはあまり使いたくない

70:デフォルトの名無しさん
14/05/04 06:58:07.82 IPFrsn/P
静的プロパティだって遅延初期化できるっぺ

C#的にシングルトンって意味あるのかな?
プライベートコンストラクタ書きたいだけちゃうんか

71:5
14/05/04 07:13:45.27 q7rdqljv
>>6

72:デフォルトの名無しさん
14/05/04 07:14:36.75 q7rdqljv
>>65
調べてみたところ、strutsはオワコンでした

73:72
14/05/04 07:20:59.25 q7rdqljv
>>71は間違いです。すみません。

>>65
ASP.NETライクに、抽象化されたUIコンポーネントでwebプログラミングするには、
JAVA標準環境(Java EE 6)+ JFS 2.0 を使うと良いようでした。
お金のかからない世界へ行ってきます。さようなら~

74:デフォルトの名無しさん
14/05/04 07:38:14.97 rJLJvrVe
破棄して作り直そうとする可能性がある時、静的だとメモリリークの危険が高い

75:デフォルトの名無しさん
14/05/04 09:07:48.46 eMoGcgcA
どっちにしろSingletonは利用者側からすると依存関係がわかりにくくて密結合だから、Singletonで取得するインスタンスを利用して実装しないといけないとマジでイライラするんだよね
とにかくテストがやりづらい

76:デフォルトの名無しさん
14/05/04 12:22:07.49 UE0Fc6EI
グローバル変数的に使おうとするから糞コード量産することになる

77:デフォルトの名無しさん
14/05/04 21:50:12.84 F1HNpjLt
ジェネリックではまっていますが、なにかいい解説書はないですか‥‥

78:デフォルトの名無しさん
14/05/05 09:40:10.76 SGaFRyg3
>>77
Javaスレの奴か
ジェネリックな比較はIComparableではなくIComparer<T>を使うべき
それに伴ってstruct制約も不要になる
C#のジェネリックは静的メソッドもクラスの型パラメータを引き継ぐから<S>要らん
URLリンク(ideone.com)

79: ◆QZaw55cn4c
14/05/05 15:17:50.63 CN0OEHd5
>>78
ありがとうございます.無事コンパイルができました.

C#4.0 のオプション引数を使ってみようとしましたが,
public static void insertNode(ref Node<T> root, T key, IComparer<T> cmp = Comparer<T>.Default)
の最後のはコンパイル時定数ではない,とはねられてしまいました‥

80:デフォルトの名無しさん
14/05/05 15:29:26.22 W0z8fvUt
「??演算子」の使用例

public static void insertNode(ref Node<T> root, T key, IComparer<T> cmp = null)
{
 cmp = cmp ?? Comparer<T>.Default
 以下略

81:デフォルトの名無しさん
14/05/05 15:38:16.15 4eyingVq
>cmp = cmp ?? Comparer<T>.Default

とても頭の悪そうなコードですね
意味を考えたら不適切

82:デフォルトの名無しさん
14/05/05 15:40:22.59 fN/Sve3O
>>70
wpfのVMを書くとき、一応4.5はスタティッククラス対応しているがシングルトン使ったほうが何かと便利
4.5以前に作られたライブラリは当然のことながらスタティッククラスのVMに対応していない

83:デフォルトの名無しさん
14/05/05 15:47:24.88 TyYoKThg
諦めてオーバーロードをもう一つ書くのがいいんだろうね
でも面倒

84:デフォルトの名無しさん
14/05/05 16:06:11.24 fN/Sve3O
あと、スタティッククラスは継承使えないから何かと不便

85:デフォルトの名無しさん
14/05/05 18:39:14.80 HLVvNfN0
>>79
それコンパイル時定数なんで、仕様変更考えるならpublicでは使わない方がいいかもね

86:デフォルトの名無しさん
14/05/05 19:04:06.57 AGglXxAj
「コンパイル時定数」に単語レベルで反応して「仕様変更」を連想した>>85

87:デフォルトの名無しさん
14/05/05 21:43:48.00 OT0COKe0
だらだらとオーバーロードかくよりオプション引数を使ったほうがすっきりするよな

>>81
べつに問題あるとは思えないが

88:デフォルトの名無しさん
14/05/05 21:52:22.83 fgsSBVMQ
引数の変更に反応してるのかな?
こういう趣味の問題を所詮趣味の問題だと認識せずに吹っかける奴のが頭悪く見えるけど

89:デフォルトの名無しさん
14/05/05 22:44:12.82 AY4EFaK1
オプション変数はなんかのコード分析でお行儀が悪いって言われるらしい

90:デフォルトの名無しさん
14/05/05 22:58:33.82 SGaFRyg3
オプション引数はアセンブリパブリックなメソッドに使うとFxCopとVSのコード分析で警告出るよ
定数が呼び出し元にハードコードされてしまうから変更時に呼び出し元を再コンパイルしなきゃいけなくなる

91:デフォルトの名無しさん
14/05/06 00:09:44.86 e2Zd8aJi
シングルトンのメリットってどれも弱いよね、オブジェクト指向の利点である再利用できるってメリットを完全に破壊してる

オーバーロードよりオプションが良いか悪いかは問題点がわからないから何とも言えないな
少なくとも全ての基準であるMSのソースではオーバーロードが圧倒的多数だからオーバーロード使う

92:デフォルトの名無しさん
14/05/06 00:34:48.26 tmSUYm6J
>>91
シングルトンはインターフェイス経由で使うんだよ
ちょうどComparer<T>.Defaultみたいにな
そうすれば差し替えができて「利用する側の」再利用性が上がる
利用する側のクラスはシングルトンの具象クラスに依存しちゃダメ

93:デフォルトの名無しさん
14/05/06 00:36:31.71 ug+nXQnt
オーバーロードだと再コンパイル要らんのか?

94:デフォルトの名無しさん
14/05/06 00:41:20.84 bRku9hxr
>>91
>再利用できるってメリットを完全に破壊
んなこたーない。おまえアホか。

>>92
まるでインターフェースにしなきゃ差し替えが出来ないような物言いだな。

95:デフォルトの名無しさん
14/05/06 00:47:18.77 48oaCWRM
>>93
3つ前のレスくらい読んだらどうだ?

96:デフォルトの名無しさん
14/05/06 00:58:35.11 IXzBb183
>>67からずっと思ってたが、デザパタの用語はだいたいどれもそうだけど、
シングルトンって言葉が指すものの解釈は一つじゃなくていろんなバリエーションがあるから、
どういう意味でシングルトンって言ってるのかはっきりさせないと、傍から見て
ずいぶん頭の悪い奴同士の会話に見えちゃうよ。

97:デフォルトの名無しさん
14/05/06 01:50:22.83 jzwUbQuH
そもそもデザインパターンって適材適所で使うアルアルをまとめただけのもんだしな。
それを使わないとダメとかそう言うもんでもないし。
オブジェクト指向がうんたら言う奴ってそこを忘れてルールにはまって自爆してる奴が多い印象。
まぁだから本とかにも何がなんでも型にはめようとするなと冒頭に書かれてるんだろうけど。

98:デフォルトの名無しさん
14/05/06 01:59:59.48 tmSUYm6J
デザパタなんて大半はオブジェクト指向の機能を利用したハックだろ
オブジェクト指向というより関数型みたいなことをやろうとしてるものが多い

99:デフォルトの名無しさん
14/05/06 02:08:17.42 BqjYYF2K
シングルトンはスタティッククラスで代用できるから、今更面倒なシングルトンを使う必要はないって意見が多かったようだが
一々staticと、すべてのフィールドやメソッドに書くほうが面倒だと思うんだが・・・
それと再利用というならベースクラスを使い回しできるシングルトンのほうが優れているだろ

スタティッククラスの利点は、知らない人に説明するのがシングルトンより楽だぐらいしか思い浮かばん

100:デフォルトの名無しさん
14/05/06 03:55:27.39 pzJ6+ovS
staticクラスはどういうクラスなのかがわかりやすいから
「フレームワークがstaticクラスを提供する」みたいなのが主な使用場面じゃね?

101:デフォルトの名無しさん
14/05/06 04:32:14.78 8bjutxl2
staticってそのクラス、メソッドだけで自己完結しているって意味合いがあるから
信頼できる関数として利用できる
Singletonをstaticで代用なんてのは本来の使い方じゃない

102:デフォルトの名無しさん
14/05/06 05:30:07.66 ug+nXQnt
>>95
それ見て書いてるんだが?

103:デフォルトの名無しさん
14/05/06 06:40:02.97 UJ0wmmRA
>>102
おまいは関数の中身を修正したら
呼び出し側の再コンパイルが要ると思ってるのか?

104:デフォルトの名無しさん
14/05/06 12:23:20.78 5vOxwoqv
System.Diagnostics.Processが子プロセスを持っているかの判断は出来る?
親プロセスを殺す際に、親プロセスが起動させた不定の子プロセスもまとめて殺したいんだが。

105:デフォルトの名無しさん
14/05/06 12:36:16.61 q1ZxUZrt
>>93
要らんね
オプション引数の省略はデフォルト値を渡すようコンパイルされる為、後で変更してもだめ

106:デフォルトの名無しさん
14/05/06 12:51:46.80 +EFNtusy
>>103
そりゃそうだな、なんかボケてたわ

107:デフォルトの名無しさん
14/05/07 08:00:22.27 DJPE+VwE
其の程度のデメリットならオプション引数使うべきだわ

108:デフォルトの名無しさん
14/05/07 08:09:39.64 WkJIpITC
いや1か0かじゃなくてデメリットがある場合だけ使わなきゃいいでしょ
使ってはいけないのはdllのパブリック型のパブリックメンバだけだ

109:デフォルトの名無しさん
14/05/07 09:43:01.96 9Lrwf94O
>>104
W32のプロセスに親とか子って概念あるの?

110:デフォルトの名無しさん
14/05/07 10:04:41.39 MuNUQFgX
あるよー
ハンドルの継承とかに使われる
タスクマネージャでのプロセスツリーの終了とかもある

ただマネージでは公開されてないんじゃないかなぁ
CreateToolhelp32Snapshot, Process32First, Process32Next関数で親プロセスもとれるみたいだから
プロセス列挙してツリー構築してやればいけるかな

111:デフォルトの名無しさん
14/05/07 13:27:14.07 7TKwW6oG
ラムダ式がある現在デザパタを使おうとしてる奴って単に時代遅れ
デザパタありがたがってる奴なんて目も当てられない

112:デフォルトの名無しさん
14/05/07 14:34:20.95 TQOtgjUI
オブジェクト指向のそれとは違うだろうけど
ラムダ式にはラムダ式のデザインパターンがあるんじゃねぇの

113:デフォルトの名無しさん
14/05/07 17:39:53.54 v8XT9GT6
ラムダ式があっても一部のパターンが使われなくなるだけ
>>111はデザインパターンしらんだろ

114:デフォルトの名無しさん
14/05/07 17:58:29.45 jRfFl2VD
プログラマレベル2になったところなんですよ彼は

115:デフォルトの名無しさん
14/05/07 20:32:56.58 c2xx/D15
デバッグ時にラムダ含んでるとコード書き換えられないのはどうにかなんないのかな

116:デフォルトの名無しさん
14/05/07 22:14:53.79 sNbvGfp5
デバッグ時コード書き換えの必要性を感じないんだけど

117:デフォルトの名無しさん
14/05/07 23:01:32.27 c2xx/D15
>>116さんカッケー

118:デフォルトの名無しさん
14/05/07 23:18:30.74 os5r5Muw
DataGridView をFormに配置したところデータバインドをしていないにも
関わらず、DataGridView上に1行の何も値の設定されていない行が表示されしまいます。

どうすればデータバインドをするまではこれを非表示にする事が出来ますか?

119:デフォルトの名無しさん
14/05/07 23:56:51.71 DMZdYPQ9
>>115
メソッドにすればいい

120:デフォルトの名無しさん
14/05/08 00:19:41.92 NDnDtFMt
shdocvw の参照ってどこから行えば良いのですか?

参照項目より探しているのですが、見当たりません。

121:デフォルトの名無しさん
14/05/08 00:21:51.27 /gsLR9fm
Edit&amp;Continue(の事を言ってるんだと思うけど)ってそもそも有効な場面は
かなり限られる気がする。

俺もほとんど必要性を感じたことがないな。

122:デフォルトの名無しさん
14/05/08 00:28:46.29 wgDbyxsw
>>120

【VISUAL STUDIO 2010】USING SHDOCVW; の参照が出来ない場合の対処方法


URLリンク(know-how-tree.com)

123:デフォルトの名無しさん
14/05/08 02:36:19.31 66RGGE3G
>>118
AllowUserToAddRows = false

124:デフォルトの名無しさん
14/05/08 03:13:05.77 LX70lqIo
>>123
サンキュー!

125:デフォルトの名無しさん
14/05/08 07:17:26.76 /TlFaqSl
>>110
遅くなった。Process32Nextとかを調べてみるわ。

126:デフォルトの名無しさん
14/05/08 10:04:18.03 4TK84oe8
>>115
64bit だと常にダメだけどな。
32bit環境でデバッグしてるのか

127:デフォルトの名無しさん
14/05/08 10:40:50.38 rM+Ugqpp
>>126
VS2013から出来るようになった

128:デフォルトの名無しさん
14/05/08 10:52:19.49 4TK84oe8
あ、そうなんだ。
自宅のWindows7に2013入れたけど、メインが2010だから知らなかった、、、
ありがとう

129:デフォルトの名無しさん
14/05/08 13:56:48.08 jPbn7lXq
set内で、valueとして渡されたクラスインスタンスのクローンをsetするのって、マナー違反なのかな?

クラスのプロパティにsetしたクラスインスタンスが
外部で書き換えられるのが嫌だからクローンをsetしたいんだけど。

130:デフォルトの名無しさん
14/05/08 14:01:57.49 vzTWemg/
メソッドの方が理解しやすいな

131:デフォルトの名無しさん
14/05/08 18:45:29.03 NviPB3le
普通にアリ
防御的コピーという非常に一般的なテクニック

132:デフォルトの名無しさん
14/05/08 20:47:40.52 gk0aEWIW
>>129
それならその型そのものをイミュータブルにするか値型にすることをまず検討
すべきだと思うけどね。

配列やコレクションは別として。

133:デフォルトの名無しさん
14/05/08 21:09:23.08 01rpyJ3E
配列をプロパティにすること自体が

134:デフォルトの名無しさん
14/05/08 22:43:47.23 9vcPvL0x
>>113
デザインパターンっていうのは

Singletonのような本質は何にも変わってないけど通ぶりたいバカがカッコつけて使うものと
ラムダ式でおきかえられるもの
ラムダ式を使って違う形にしたほうが良いもの

の3つに分類できる
つまり今使ったほうがいいものは一つもありゃせん

135:デフォルトの名無しさん
14/05/08 22:48:54.86 rRrDSl0D
おっ、おう

136:デフォルトの名無しさん
14/05/08 23:12:07.48 z0nVVjCj
エースコンバットの嘘字幕かな?

137:デフォルトの名無しさん
14/05/08 23:16:22.83 GL2M0rb4
覚えたばかりのものを使ってみたいだけなんじゃない?
たぶんラムダ式もデザインパターンも理解してない。

138:デフォルトの名無しさん
14/05/09 00:24:12.10 aGSQbVG9
ラムダ計算は俺には無理だった

139:デフォルトの名無しさん
14/05/09 01:35:48.87 4s2/CMbE
通ぶりたいバカが語っちゃんてんよ(苦笑)

140:デフォルトの名無しさん
14/05/09 03:53:38.78 Wvmtqnkm
こてっちゃん

141:デフォルトの名無しさん
14/05/09 08:46:58.05 Ijv/Ccl+
>>134
通ぶりたいバカはお前だろww

142:デフォルトの名無しさん
14/05/09 19:37:24.31 ++5Ylz+V
メンバー、変数に一々public書くのだるいよう…
省略したらpublicでいいだろこんなもん…

143:デフォルトの名無しさん
14/05/09 19:38:52.20 E9SfM4pV
できるだけprivateにしましょうっていうオブジェクト指向の毒が蔓延してたからね

144:デフォルトの名無しさん
14/05/09 19:39:54.12 7rX/IBWU
変数というか、フィールドをpublicにすることなんてないだろ

145:デフォルトの名無しさん
14/05/09 19:42:43.70 v/oaYztB
publicにする手間もっと上げたら
まともなコードたくさん生まれるようにならんかな

146:デフォルトの名無しさん
14/05/09 19:45:31.17 mXNWQt6t
プロパティにしてたから助かったなんて状態になるのも
(場合によっては)滅多に無いけど、
公開するのは意識してやりたいからいいんじゃないの。

publicなフィールドやらプロパティやらが多いのは、
大体がカプセル化できてない似非オブジェクト指向。

147:デフォルトの名無しさん
14/05/09 19:49:33.08 4s2/CMbE
まともってどういう観点で?
欠陥が少ないことをまともと評するか
それとも規約をかっちり守っていることをまともと評するか

148:デフォルトの名無しさん
14/05/09 19:51:59.12 Ijv/Ccl+
やっぱ基本はprivateだからな

149:デフォルトの名無しさん
14/05/09 20:40:28.22 ogcBElPA
クソみたいなコードのさらにクソなprivateな部分も公開したいってどんな露出狂だよ

150:デフォルトの名無しさん
14/05/09 20:45:37.38 E9SfM4pV
privateなんて公開されてても使わなければいいだけの話だからな
下手なライブラリは公開メンバを少なくしようとして使いにくくなってたり
そもそも出来ないことがあったり目も当てられない

151:デフォルトの名無しさん
14/05/09 20:50:03.66 ogcBElPA
一般的なルールに苦言を呈しちゅうオレかっこいいみたいな感じ?

152:デフォルトの名無しさん
14/05/09 20:50:53.52 Mn4+ksrv
「下手なライブラリ」の本来privateにすべき変数いじるとか怖くてできないんですけど

153:デフォルトの名無しさん
14/05/09 20:58:23.84 4s2/CMbE
誤字ってカッコいいよね
生き急いでる感じがしてさ

154:デフォルトの名無しさん
14/05/09 21:29:04.87 eHd2TX5N
varとdynamicは確実にうんこ

155:デフォルトの名無しさん
14/05/09 21:32:51.61 NDcf6f8g
>>150
これプログラマのバカの壁の一つだが、ダメグラマって本当に君みたいに思ってるらしいな。
こういうセンスの奴がGUIデザインするとButtonやTextBoxが100個とか並んでる画面を
平然と作るんだよね。

156:デフォルトの名無しさん
14/05/09 21:35:50.04 E9SfM4pV
var使わずに型名みたいな無意味な情報を一生懸命タイプして可読性下げてる奴って
アホちゃうか? としか思えん

157:デフォルトの名無しさん
14/05/09 21:39:42.12 4s2/CMbE
皆さんなかなか凝った辞世の句を披露なさいますねえ

158:デフォルトの名無しさん
14/05/09 22:20:33.56 Ijv/Ccl+
使わなければいいだけとか…だめだこりゃww

159:デフォルトの名無しさん
14/05/09 22:32:44.73 7rX/IBWU
そんなにつかいたきゃprivateでも無視してアクセスすればいいだろ
わざわざ公開する必要もない

160:デフォルトの名無しさん
14/05/09 23:45:48.23 WJR4c6c3
>>151
えっ、かっこわるい?

161:デフォルトの名無しさん
14/05/09 23:48:25.77 WJR4c6c3
>>151
えっ、かっこわるい?

162:デフォルトの名無しさん
14/05/10 01:27:17.61 g90VX2nj
>>156
もう君はVB6でVariantだけ使ってプログラム書いてれば良いんじゃないの?

163:デフォルトの名無しさん
14/05/10 01:57:42.12 B1lUTN0m
なんでvarとVariantが関係あるんだ

164:デフォルトの名無しさん
14/05/10 02:43:26.46 omhafWBq
ラムダ使っちゃっていいの?
どうせFramework2.0で製品化するんでしょ

165:デフォルトの名無しさん
14/05/10 03:08:54.91 z3D5bdCD
バリアント 打てぃ

166:デフォルトの名無しさん
14/05/10 03:13:52.62 KeiPU5wL
varはマイクロソフトも推薦してたろ

167:デフォルトの名無しさん
14/05/10 08:54:51.34 /Dqge85C
仕様を理解してないで無視すれば良いとか言ってる奴はいたいな。

168:デフォルトの名無しさん
14/05/10 09:52:51.72 hc+7iE7K
表計算より電卓使うことを強要する老害みたいだな
嫌だねえ、年は取りたくないものだ

169:デフォルトの名無しさん
14/05/10 10:13:19.98 hc+7iE7K
URLリンク(referencesource.microsoft.com)
ほぼ全て変数宣言はvar使ってますね
boolとList<Task>とExceptionってのが僅かにあるか
アンチvarはReferenceSource読んでるうちに憤死しそうやね

170:デフォルトの名無しさん
14/05/10 10:22:53.61 Om1HfajV
>>162
ひょっとして var で宣言したら Variant みたいになんでも入る変数になると思ってるんじゃ... (w

171:デフォルトの名無しさん
14/05/10 10:35:44.40 BTCa0fTB
えっ違うの?

172:デフォルトの名無しさん
14/05/10 10:38:47.96 R5teS7FH
この話題定期的に出るNe!
URLリンク(www.atmarkit.co.jp)

173:デフォルトの名無しさん
14/05/10 11:05:02.42 jrUh4jRE
varはインターフェイスの時に困る

174:デフォルトの名無しさん
14/05/10 11:17:14.54 hc+7iE7K
>>169だって既定型で受けるためにException使ってるし用途次第よ

馬鹿は記憶領域が一つしかないから万能解を求め、臨機応変を考えない

175:デフォルトの名無しさん
14/05/10 11:22:46.52 oHlIlrM8
(゚д゚)ハァ?
明示したいときゃすりゃいいだけの話でございましょう?

176:デフォルトの名無しさん
14/05/10 11:41:47.12 R5teS7FH
>>164
シンタックスシュガー的な機能で実現されてる文法
たとえばラムダ式、var、yieldなんかは
コンパイラが対応してれば対象プラットフォームが2.0でも使える
使えないのはLinqとかdynamicとかawait/asyncとか

177:デフォルトの名無しさん
14/05/10 12:00:52.40 Om1HfajV
>>174
またでかいブーメラン投げたなぁ (w

178:デフォルトの名無しさん
14/05/10 13:01:29.64 oljZpcA6
ま、C++11 でも auto とかあるしねえ

179:デフォルトの名無しさん
14/05/10 13:25:05.10 tcPcNt/v
C++のautoは、ラムダを軽量バインドするときに必要だし、
defaultテンプレートパラメーターを使わないでテンプレートの演算結果を宣言する際に必要だから

180:デフォルトの名無しさん
14/05/10 14:00:09.11 hS3sE/YA
型名は本質的な情報じゃないんだよね
変数名こそが本当の情報で
型名は付加情報としても場所を取り過ぎて本質を見えなくするだけ

181:デフォルトの名無しさん
14/05/10 14:08:31.12 m/AO6ufT
>>180
それは実数や整数のように汎用性が高い型の場合にだけ言えること。

182:デフォルトの名無しさん
14/05/10 16:09:32.82 70kPlgga
ハンガリアンバリバリのソースみるとイライラする

183:デフォルトの名無しさん
14/05/10 16:18:45.70 70kPlgga
MSの糞SEが用途間違えたシステムハンガリアンの方な

184:デフォルトの名無しさん
14/05/10 18:31:45.83 /Dqge85C
>>171
C#のvarはコンパイル時に型を推定してくれる。
何でも入るのはdynamic

185:デフォルトの名無しさん
14/05/10 19:24:38.38 EnEZoBM+
varはメンバーフィールドやファンクションの引数・戻値には使えないから
無茶しようと思っても無茶できんな

186:デフォルトの名無しさん
14/05/10 19:58:09.90 jrUh4jRE
dynamicは基本的には使うべきではないだろ

187:デフォルトの名無しさん
14/05/10 21:51:23.62 rYs4anx5
dynamicは引数の型によってオーバーロードを動的に選択させられるのが便利
そもそも型で分岐すること自体クソではあるけど、どうしても仕方ない場合には
if is並べるよりはよっぽどマシだ

188:デフォルトの名無しさん
14/05/10 22:02:24.72 a9DcGAOB
dynamicはExcel制御するとき大活躍だろ?
アーリーバインディングはOfficeのバージョンに依存していかん

189:デフォルトの名無しさん
14/05/10 22:39:41.83 rYs4anx5
dynamicが凄いのはCOM Interopに使えたりするのがMSの独自拡張じゃないところ
ちゃんとプロトコルが公開されていて、誰でも独自のオブジェクトシステムを
dynamicで透過的に扱うためのバインダを作れる

190:デフォルトの名無しさん
14/05/10 23:18:18.72 ryDslySJ
C#で復興君を作ろうと思っています。

191:デフォルトの名無しさん
14/05/11 06:37:11.02 lXX0usu0
>>187
どの場面でもifやswitchを使わないに越したことはないな。
ちなみに俺がいちばん嫌いなコードは、
if(a==true)
a=false;
else
a=true;

192:デフォルトの名無しさん
14/05/11 07:15:58.47 zdamCAAu
>>191
お前は俺か!
すごく同意できるわ。

193:デフォルトの名無しさん
14/05/11 09:09:37.25 r3f59Bax
>>191
幾ら何でも、そんなコード書く奴居ないだろw

194:デフォルトの名無しさん
14/05/11 09:38:55.24 wSEeMjm/
a=!a で済むもんな

195:デフォルトの名無しさん
14/05/11 11:31:48.67 uayAIi6x
それ以前に{}でくくらないのは嫌いだわー。
そんな事よりコメントも書かずに三項演算子の中に更に三項演算子を複数重ねるのは止めてくれ。
書いてるほうは行数減らせてノリノリで嬉しいんだろうが解読がめんどいわ。

196:デフォルトの名無しさん
14/05/11 11:40:30.44 qOyx0lRS
またswitchを見たら仮想関数に書き換えて
可読性や依存関係をメチャクチャにする
オブジェクト指向に洗脳されたカスか

197:デフォルトの名無しさん
14/05/11 11:46:08.37 ty2I7rZM
メソッドへの振り分けは別にオブジェクト指向関係ないだろ
ソースコードのレイアウトの問題に過ぎない
関数ポインタ入れたテーブルで振り分けるとか太古の昔からあるわ

198:デフォルトの名無しさん
14/05/11 11:48:07.86 qOyx0lRS
動作を決定する権利がオブジェクトの側にあるか
オブジェクトを使う側にあるのかというのは
本当に決定的な違いなんだよ

そして大半のケースでオブジェクトを使う側にないと柔軟性が確保できない
オブジェクトの側で動作を規定するのは最悪の設計である場合がほとんど

199:デフォルトの名無しさん
14/05/11 11:50:35.06 wSEeMjm/
==true って最悪だよな
boolean値なのにいちいち比較するとか

200:デフォルトの名無しさん
14/05/11 11:53:18.60 ty2I7rZM
>>198
型による分岐をdynamic+オーバーロードに置き換える話なら
制御は使う側にあるだろ
それがいいか悪いかとお前の思想はともかく

201:デフォルトの名無しさん
14/05/11 12:09:24.23 9KkBQwht
>>194
俺はあえて
a ^= true;
と書く

202:デフォルトの名無しさん
14/05/11 12:18:23.07 DD3eXZ56
>>195
三項演算子は lisp は cond 以来の由緒ある書式。

>>196
OOは正義!

203:デフォルトの名無しさん
14/05/11 12:43:02.89 zdamCAAu
>>202
cond は三項に限らんし、中途半端な知識乙

204:デフォルトの名無しさん
14/05/11 14:21:05.81 1r+yUbjA
==true、==falseは見やすさ目的で十分使えるだろ

205:デフォルトの名無しさん
14/05/11 14:30:56.81 9KkBQwht
>>204
それが見やすいと思うなら何か勘違いしてるんだよ。
まあ、hoge == falseは微妙かもしれないが == trueはないね。

206:デフォルトの名無しさん
14/05/11 14:31:32.41 eQruSjkp
==false は頭が疲れた時でもぱっと見でわかりやすいからたまに使う。
==trueはあんま使ったこと

207:デフォルトの名無しさん
14/05/11 14:44:15.01 1r+yUbjA
あー==trueだけの事を言ってたのか

208:デフォルトの名無しさん
14/05/11 14:48:01.46 0sJXE8ur
if ( ( value == 1 ) == false ) {
}

209:デフォルトの名無しさん
14/05/11 14:52:01.18 wSEeMjm/
true は、代入に利用するくらいで等価比較は御法度だよ。
処理系によってはどのビットが立っているかわからないときがあるからね。

210:デフォルトの名無しさん
14/05/11 14:54:41.32 mBV2CEmk
>>209
スレ違いです
労害は去れ

211:デフォルトの名無しさん
14/05/11 14:54:41.86 8CXG23Kv
そんなわけないじゃん

212:デフォルトの名無しさん
14/05/11 15:01:00.89 mJ1nU0nf
>>209
C:値1と定義
C++:true/falseの2値しか取らない
Java:true/falseの2値しか取らない
C#::true/falseの2値しか取らない
Visual Basic 6:ビットがオール1と定義

で どの言語と間違えたの?

213:デフォルトの名無しさん
14/05/11 15:01:50.58 Izszoovs
スレチだけど、C++だと

bool a = ( b == TRUE );

なんて書いたことはあったな。

214:デフォルトの名無しさん
14/05/11 15:05:43.80 Tv+UCCd6
>>213はどうしようもないバカ

215:デフォルトの名無しさん
14/05/11 15:12:17.35 DD3eXZ56
>>212
C/C++ に関していえば、
処理系は必ず true == 1 と扱うが、
ライブラリ関数の中にはそうでないものがある。ctype.h の isalpha() のようなポピュラーなものでさえそうだ。
ctype.h は C++ でも標準ライブラリ扱い

>>209 の C/C++ の項は使い手に即した内容ではない役立たずだね、他は大丈夫なの?

216:デフォルトの名無しさん
14/05/11 15:12:24.22 wSEeMjm/
bool a = b ? true : false ;

217:デフォルトの名無しさん
14/05/11 15:20:14.51 wSEeMjm/
>>212
ある処理系で問題なくても true と比較するコード書く時点でトーシロー

218:デフォルトの名無しさん
14/05/11 15:22:52.49 4d9sdM5b
以下、休日の昼下がりを下らない言葉尻の取り合いでお楽しみ下さい。
なお明日は月曜日ですので、その点ご了承下さいませ。

219:デフォルトの名無しさん
14/05/11 15:24:47.77 r0lCuLjc
==trueが見やすいなんて言っちゃうのは変数名が原因だろ
==falseはアリかな

220:デフォルトの名無しさん
14/05/11 15:27:12.37 8CXG23Kv
>>217
C#ではすべての処理系で問題ない

221:デフォルトの名無しさん
14/05/11 15:27:39.25 DD3eXZ56
>>212
証拠だ、C/C++ の説明は間違っているから書きなおせ
URLリンク(codepad.org)

222:デフォルトの名無しさん
14/05/11 15:28:31.82 03X5e1jP
なんか始まった

223:デフォルトの名無しさん
14/05/11 15:32:38.72 bgvuJmwK
>>221
intとboolを比較したそらあかんやろ
(bool)isalpha(c) == true
ってせな

(int)trueは間違いなく1

224:デフォルトの名無しさん
14/05/11 15:39:58.47 DD3eXZ56
>>223
URLリンク(codepad.org)
それもそだねえ、じゃ

>>212 C の項はかきなおせ、というか C には true/false の二項対立はない。
あと VB あたりもちょっと怖いが、実際どうなんだ?

225:デフォルトの名無しさん
14/05/11 15:48:45.26 ttO2ycsK
んなこたーない
URLリンク(ideone.com)

226:デフォルトの名無しさん
14/05/11 15:54:49.57 wSEeMjm/
ホント馬鹿だな
いちいち型キャストして比較するとかながったらしすぎw

227:デフォルトの名無しさん
14/05/11 15:57:44.93 DD3eXZ56
>>224
そうか、C99 にはブーリアンが入ったんだね、って、予約語としては _Bool じゃなかったっけ?
URLリンク(ideone.com)

C99 strict といいながら srict じゃないね、これは gcc 拡張?

228:デフォルトの名無しさん
14/05/11 15:59:34.63 ttO2ycsK
>>227
_Boolをboolというスペルマで使用できるようにするのがstdbool.h

229:デフォルトの名無しさん
14/05/11 16:00:31.04 DD3eXZ56
>>226
_Bool isalpha(int c) とか変更しなかった/できなかったからね、ま、古い言語だから仕方がない‥

230:デフォルトの名無しさん
14/05/11 16:02:36.34 DD3eXZ56
>>228
thx 確認した

231:デフォルトの名無しさん
14/05/11 16:20:10.30 ttO2ycsK
さて話を戻すと、c#で「==true」が意図しない動作
をすることは一応 無いのだけれど…

232:デフォルトの名無しさん
14/05/11 16:37:59.01 wSEeMjm/
いまは問題なくても後々移植性に問題出たりするんだよ

233:デフォルトの名無しさん
14/05/11 16:40:41.81 f0TnWCT6
>>228
誤変換? ///

234:デフォルトの名無しさん
14/05/11 16:54:14.59 uayAIi6x
相談スレっぽくなくなってしまった。自分も片棒を担いだんだが。

流れを戻すとして、char型をSystem.Windows.Forms.Keysに変換する方法ってある?

235:デフォルトの名無しさん
14/05/11 17:22:30.76 8m9s6VXd
>>232
へー

236:デフォルトの名無しさん
14/05/11 17:41:37.11 0yrYxZ6d
移植性を気にする奴がC#とか頭悪すぎw

237:デフォルトの名無しさん
14/05/11 17:47:01.65 8CXG23Kv
>>232
いつだよw
突然仕様変更になるのか?
あんなに破壊的変更嫌って文脈キーワードガンガン増やす言語が

238:デフォルトの名無しさん
14/05/11 17:58:08.19 ZXeumQz3
>>234
char <-> Keysは1対1の対応じゃないから無理じゃないかなぁ
変換テーブルを自分で作っておくしかないと思う

239:デフォルトの名無しさん
14/05/11 18:43:26.19 uayAIi6x
>>238
やっぱり自力でやるしかないか。コードが綺麗じゃないけど仕方が無い。

240:デフォルトの名無しさん
14/05/11 19:08:40.28 rIItupz1
しかし bool? という if(xxx == true) を強要する型があるんだよね

241:デフォルトの名無しさん
14/05/11 19:15:41.89 ReOxbOV9
強要された妄想にとりつかれているんですね
困ったものです

242:デフォルトの名無しさん
14/05/11 19:24:20.20 0yv5+mef
xxx ?? falseでいいんじゃね

243:デフォルトの名無しさん
14/05/11 19:31:27.95 +H+hcwQY
if ( xxx.HasValue && xxx.Value )
だろjk

244:デフォルトの名無しさん
14/05/11 19:44:28.84 ESdFar+G
>>239
MSDNによると、

 - Keysの値はWin32の仮想キーコードに対応している
 - ANSI文字の仮想キーコードはANSIコードそのまま

らしいから普通に、
char ⇒ ANSIでデコード ⇒ Keysにキャスト
でいけるんじゃないの?

っていうかVBだとOption Strict Offにしとけば暗黙変換してくれたような気がw

245:デフォルトの名無しさん
14/05/12 07:15:26.62 ACtGf3jF
>>242-243
代用で文字数増やしてどうするんだ

246:デフォルトの名無しさん
14/05/12 07:20:25.07 mZu2z8hr
>>245
文字数が少ない方がいいという前提はどこからきた?

247:デフォルトの名無しさん
14/05/12 07:32:31.27 vNBTKcrK
>>242>>243と書くのは
if(flag == true)と同じぐらい冗長だと思う

248:デフォルトの名無しさん
14/05/12 07:42:20.80 vNBTKcrK
ごめん、ちょっと例えとしてよくなかった
「xxx is SomeType ? (SomeType)xxx : null;」って書くぐらい冗長
って方が俺の言いたいことに近い

249:デフォルトの名無しさん
14/05/12 07:50:33.17 b2+C7k5G
nullならtrueと見做したい場合
!(flag == false), flag ?? true, !flag.HasValue || flag.Value
一貫性を考えたら??一択

250:デフォルトの名無しさん
14/05/12 07:51:50.67 zZkIxMS0
後で解読しやすく書いてくれれば文字数が多くても文句は言わん

251:デフォルトの名無しさん
14/05/12 09:44:05.52 3qLmw1Qv
一文字いくらで金額決めてるんだから一文字でも無駄にするんじゃねーよ

252:デフォルトの名無しさん
14/05/12 11:18:53.54 0w5L2iBG
C++で
union{
bool bl; char ch;
} x;
x.ch = 2;
bool a = x.bl == true;
ってやったらaはtrueにならなかったけど
C#で
[StructLayout(LayoutKind.Explicit)]
struct X{
[FieldOffset(0)] bool bl;
[FieldOffset(0)] byte bt;
}
X x;
x.bt = 2;
bool a = x.bl == true;
てやったらちゃんとaにtureが入ったw

253:デフォルトの名無しさん
14/05/12 11:53:52.63 L/eGs81n
C++にboolなんかあったんだ

254:デフォルトの名無しさん
14/05/12 12:01:58.51 hkuqweKu
asmどうなってる?

255:デフォルトの名無しさん
14/05/12 12:11:54.31 qgWJrp5s
>>252
x.ch=2なんでしょ?
x.bl==1じゃないとtrueにならないの当たり前じゃん

256:デフォルトの名無しさん
14/05/12 12:41:13.43 BCJ2/LGP
bool 知らないとかモグリかよ

257:デフォルトの名無しさん
14/05/12 13:36:11.27 8MSpjbBf
マジレスすると0以外はtrue

258:デフォルトの名無しさん
14/05/12 18:16:31.09 1Oc6ahzf
蒸し返してすまんが>>162はE9SfM4pVの発言に対する皮肉で書いたんだけどさ
勿論知っていると思うけどVariantは見えないだけで中に型情報ある物な訳で
直接型推論するのとコード上の論理的な意味合いはなんら変わらないと思うんだが。

個人的にはvarって最近は使うようにしていてコード量が減るのは確かなんだけど自分で
書いたコードならまだいいんだけども開発環境の支援が無いと読みづらくなることが
多いから手放しに良いものだとは思っていないオールドタイプなんだけど世間一般の
認識はそうでもないのかね?

259:デフォルトの名無しさん
14/05/12 18:18:04.63 1w9leY4l
うわあ
何だこのキチガイ怖い

260:デフォルトの名無しさん
14/05/12 18:24:32.11 vIiN2rHa
C#をVisualStudioの支援なしで読むの?

261:デフォルトの名無しさん
14/05/12 18:26:54.09 rRKhLlHV
>>258
> 勿論知っていると思うけどVariantは見えないだけで中に型情報ある物な訳で
> 直接型推論するのとコード上の論理的な意味合いはなんら変わらない

出直してください

262:デフォルトの名無しさん
14/05/12 18:49:50.27 1Oc6ahzf
>>260
GitHubみたいなのでコードレビューとかしたらそうなると思うケド?

>>261
具体的にどの部分に対してのツッコミ?

263:デフォルトの名無しさん
14/05/12 18:50:10.34 rNMuS3MH
C#のvarって、別に読みにくくならないと思うが。同じ事を2回書かないで済むようになっているだけって認識だな。

それと、C#のvarとVBのvariantって全然ちがくね。どっちかっていうと、dynamicがvariantに近いよね

264:デフォルトの名無しさん
14/05/12 19:01:02.89 lehFDRdw
varはただの糖衣構文だからね
dynamicは内部的にはObjectって聞いたことあるような気がするけど

265:デフォルトの名無しさん
14/05/12 19:09:08.86 1w9leY4l
dynamicは動的言語的な名前でのアクセスを高速にやるために
動的なコード生成的なハックをしてるって聞いたけど

VBはもともと動的言語だからvariantも素直に名前でアクセスしてるだけじゃねえの

266:デフォルトの名無しさん
14/05/12 19:09:26.04 /j+EhCNv
話の流れを読まずにレスすると
>C#のvarとVBのvariantって全然ちがくね

そんなことは みんなわかってる

267:デフォルトの名無しさん
14/05/12 19:11:17.79 /j+EhCNv
>>265
>VBはもともと動的言語
えっ? インターフェースに基づいてメソッド呼び出しする言語なのに?

268:デフォルトの名無しさん
14/05/12 19:14:20.20 OiSoC7y/
>>262
マゾいなぁ
うん、オールドタイプだよあんた

269:デフォルトの名無しさん
14/05/12 19:16:49.39 1w9leY4l
いやいやvariantとvarの違いも分かってないキチガイが低レベルなオナニーしてるだけでしょ

270:デフォルトの名無しさん
14/05/12 19:17:33.57 1Oc6ahzf
別に俺もvar=Variantとか主張する気はサラサラない。
使い方として一緒にしちゃってない?って聞いているだけで。

>>265
C++からVariant触ってみればどういう実装かすぐわかるよ。
VBからVariantつついても内部的な型を意識しないとハマるのも一緒。

>>263

var hoge = hogeList.GetNextData();

こんなコード一行見てどんな型か想像つく?

var hoge = new ObservableCollection<string>();

とかなら分かるが。

271:デフォルトの名無しさん
14/05/12 19:23:06.49 1w9leY4l
>>270
それはvarが悪いんじゃなくて
hogeという変数名が悪いの

変数名を目立たせるためにvarがある

まあhogeなんて変数名を意図的に付けなければvarを付けて可読性が下がるコードなんて作れないよ

272:デフォルトの名無しさん
14/05/12 19:37:37.98 vIiN2rHa
>>262
ある程度の規模になるとどちらにせよ落として支援つけないときついな
Reference Sourceみたいにメソッドだけでもたどれるとまだマシなんだけど

273:デフォルトの名無しさん
14/05/12 19:40:53.44 eFwDCItY
>>271
それは一般的には話が逆だと思うよ。

一般的にローカル変数については暗号的な名前でも構わないとされているし、
その理由は、それが何者であるかは型と前後の文脈から分かるから。

もちろんvar使ってもVS使う限りインテリセンスで型はわかるし、そうでなくても
メソッド名その他から型がわかるケースも多いけどね。

274:デフォルトの名無しさん
14/05/12 19:46:33.94 ACtGf3jF
vaiantの凶悪なところは a =1 +"1" で aが2になる挙動だわ
せめて入っている型と代入した型が異なったらエラーで止まって欲しい

275:デフォルトの名無しさん
14/05/12 19:47:28.93 koOZGk+1
>一般的にローカル変数については暗号的な名前でも構わないとされているし、

(´・∀・`)ヘー

276:デフォルトの名無しさん
14/05/12 19:48:12.33 koOZGk+1
VariantがクソなんじゃなくてVBがクソということでFAだな

277:デフォルトの名無しさん
14/05/12 19:52:28.17 ACtGf3jF
>>276
アレでも前世代のBasicに比べたらはるかにマシなんだけどね

278:デフォルトの名無しさん
14/05/12 21:25:47.98 b2+C7k5G
Roslynプロジェクトの規約だとvarは原則禁止で
>>270の後者のように右辺に型名がくる場合だけOKだよ
LINQ禁止だしforeachも列挙子が構造体でないものは禁止
さすがにコンパイラだから保守的になるわな

279:デフォルトの名無しさん
14/05/12 21:47:10.68 oYZZ6D9M
C#の場合var使ってローカルの変数名もある程度まともにするのが流儀だと思うが
LINQとか何が入ってるのかよーわからんし

280:デフォルトの名無しさん
14/05/12 21:50:13.73 1hZHnOd8
リーダブルコードでは説明的な名前にしろって書いてあったな

暗号ね、どこの一般やら

281:デフォルトの名無しさん
14/05/12 21:51:28.22 vNBTKcrK
Linqのクエリ形式は苦手だなぁ

>>278
>foreachも列挙子が構造体でないものは禁止
これって何を危惧してのことなんだろう?
列挙中にクラスインスタンスの状態が変更されないように、とか?

282:デフォルトの名無しさん
14/05/12 21:55:10.30 dBEplP4G
パフォーマンス

283:デフォルトの名無しさん
14/05/12 21:58:44.92 zjVah+tY
TreeNode _1838e3376;

とか宣言するのか。
目頭が熱くなってきた。

284:デフォルトの名無しさん
14/05/12 22:04:22.44 kkPuRxjD
>>280
リーダブルコードなら、明らかな一時変数ならどうでもいいって書いてあったような

285:デフォルトの名無しさん
14/05/12 22:05:14.02 1w9leY4l
>>273
そもそもローカル変数の名前が暗号でいいなんて考えは論外だから
可読性というものを一度でも考えたことがあるならそんな結論にはなりようがない

286:デフォルトの名無しさん
14/05/12 22:05:39.18 1hZHnOd8
>>284
一時変数だと分かればいい、だよ
ようなじゃない

287:デフォルトの名無しさん
14/05/12 22:09:44.30 rDnznASh
暗号的にする意味もわからない。
手作業での難読化を強要されている可能性以外には。

288:デフォルトの名無しさん
14/05/12 22:10:26.89 XToYxcYs
>>285
馬鹿馬鹿しくて反論する気にもなれないが、他人の書いたコード読んだことある?

ローカル変数で説明的な名前が適切なケースももちろんあるが、そちらの方がむしろ例外的。
ローカル変数に説明的な命名をする人なんかいないよ。

289:デフォルトの名無しさん
14/05/12 22:12:16.20 dBEplP4G
俺は納品前に説明的にリファクタリングするけど

290:デフォルトの名無しさん
14/05/12 22:12:32.11 6r4KrQ0C
暗号「的」って暗号使うって意味じゃないでしょ
kbtitとかそんな話でしょ

291:デフォルトの名無しさん
14/05/12 22:13:39.55 1hZHnOd8
なんか話が通じない気がしてきた
こりゃ駄目だわ

292:デフォルトの名無しさん
14/05/12 22:14:35.51 1w9leY4l
説明的になりすぎて名前が長くなりすぎるのも好ましくないからな
ひと目で見渡せる範囲で何の処理をしてるか分からないと直感的に読みやすいコードにならないから

型名を分かりやすく短くしたものが変数名になる
っていうパターンが多いね俺は

293:デフォルトの名無しさん
14/05/12 22:16:18.20 twKZ90SO
話題になってるリーダブルコードでは、
タイプ数なんかケチるなよモダンなエディタ使ってんだろ?
って書いてありました。

294:デフォルトの名無しさん
14/05/12 22:17:43.69 twKZ90SO
auは毎回id変わるのか…。
ハゲは変わらなかったのに。

295:デフォルトの名無しさん
14/05/12 22:17:48.11 rRKhLlHV
ANSI Cの関数みたいな感じに短縮した名前ならよく使うけども

296:デフォルトの名無しさん
14/05/12 22:18:26.37 XToYxcYs
>>287
暗号的というのは機能を明示的に表してないという程度の意味だよ。
var fs = new FileStream(path, FileMode.Create)

これをいちいち、

var fileStreamToReadWriteLog = new FileStream(path, FileMode.Create)

なんて説明的な名前を付けるのはダメグラマ。
そんなの前後のコード見ればわかるし、わかるように書けと。

297:デフォルトの名無しさん
14/05/12 22:19:25.38 1hZHnOd8
逆に聞きたいけどそれのどこが「暗号的」なんだ

298:デフォルトの名無しさん
14/05/12 22:20:33.90 1w9leY4l
意味の薄いことを長ったらしく書いていいんだとすれば
varを使わず型名をいちいちかけって言うことになる

見るのが大変で直感的にわかりづらい長ったらしいコードになっていいなら
varを使う理由もない

299:デフォルトの名無しさん
14/05/12 22:20:54.99 4cnM3h7R
暗号という言葉が利用されるところで仕事をしたことが無いんじゃないか?
アクロニムって単語が出てこないんだろ。

300:デフォルトの名無しさん
14/05/12 22:21:26.99 XToYxcYs
>>297
君みたいな非常識な奴にとっては違うんだろうねとしか言いようがない。
では何というべきなのか。

こういう場合は暗号的っていう表現を使うんだよ馬鹿。

301:デフォルトの名無しさん
14/05/12 22:24:32.30 6r4KrQ0C
そもそもvarとかうんこって書いたの俺だけどここで話してるようなことについて言ったわけじゃないからな
まぁC#スレはプログラミング言語についての議論できるようなレベルじゃないからいちいちつっこまないけど

302:デフォルトの名無しさん
14/05/12 22:24:43.20 XToYxcYs
>>299
暗号的な命名はいつも頭辞語とは限らない。
じゃあhogeって何の頭文字なのか言ってみな

303:デフォルトの名無しさん
14/05/12 22:24:51.83 1hZHnOd8
普通に頭字語じゃないの
すさまじいねこれは

304:デフォルトの名無しさん
14/05/12 22:26:17.71 13D7ee2l
子供みてえにじゃあじゃあ言い出したな。

305:デフォルトの名無しさん
14/05/12 22:27:54.07 6r4KrQ0C
どっから引用したのか知らんけどそこはどうでもいいよ
単にその言葉の解釈について思ってたのと違ったってだけだから

306:デフォルトの名無しさん
14/05/12 22:28:19.55 1w9leY4l
言葉の定義につっかかって本質の議論ができないアスペの集まりか・・・

307:デフォルトの名無しさん
14/05/12 22:28:28.33 zZkIxMS0
1バイトを削るのに命を賭けたり、人生でキーボードを打つ事の出来る回数が決まっている人でも無い限り
変数名は分かりやすくしてクレヨン。
あんま長ったらしいのも問題だけど、変数名や関数名から役割を普通に判断できるくらいにはして欲しい。

>>298
個人的にはvar使わない派。型名を書くことを他人に強制する事までは無いがね。
使わない理由はぱっと見で型が分からないのが嫌いだから。
使うとしてもforeachとかくらいか。

308:デフォルトの名無しさん
14/05/12 22:28:34.03 XToYxcYs
>>304
なるほど、その幼稚な物言いが子供みたいだとは思わないんだ。
馬鹿だろお前。

309:デフォルトの名無しさん
14/05/12 22:29:37.19 1w9leY4l
varを使いさえすれば型名がいかに必要のない情報か実感を持ってわかるだろう

食わず嫌いはやめよう

310:デフォルトの名無しさん
14/05/12 22:31:20.65 rRKhLlHV
人格批判が出てきたので
このお祭りもそろそろ終わりですね

俺はごく狭い範囲でしか使わないFileStreamならfsって付けちゃうな
ログを書き出すような寿命の長い変数ならもうちょっと丁寧に付けるが

311:デフォルトの名無しさん
14/05/12 22:33:18.65 1w9leY4l
何のファイルのストリームかが自明ならfsでいいと思うけどね

312:デフォルトの名無しさん
14/05/12 22:33:45.43 1hZHnOd8
そもそも説明的な変数名をつけろってのは
スクロールしないと意味を追えない変数は邪魔だってのが本題だから
一時変数は一時変数だと分かればいい=寿命が短いなら寿命が短いことが分かればいい
ってのもそういう意味ですよ誤解しないでね

313:デフォルトの名無しさん
14/05/12 22:34:23.64 dBEplP4G
Streamって大抵の場合コンストラクタやメソッドに突っ込んでおしまいだし、
スコープもusingで明示されることが多いから変数名云々の議論には全く向かないだろ

314:デフォルトの名無しさん
14/05/12 23:12:10.79 4a9Ad8ki
>>300
> こういう場合は暗号的っていう表現を使うんだよ馬鹿。

使わねーよ。
使うと言うならその証拠だしなよ。

315:デフォルトの名無しさん
14/05/12 23:20:41.55 h67qSrzm
ArrayList は参照型なのでしょうか?

ArrayList に ref を付けずに外部ファンクションに渡して値を設定しました。
呼出し元で確認すると ref をつけていないにも関わらず値が格納されていました。

316:デフォルトの名無しさん
14/05/12 23:22:00.15 b2+C7k5G
むしろ何故参照型でないと思ったのか
関係ないけどArrayListは過去の遺物だから使うな

317:デフォルトの名無しさん
14/05/12 23:36:18.41 XToYxcYs
>>314
繰り返すが、では何というのか。
いや答えなくていいよ馬鹿。
URLリンク(ja.wikipedia.org)命名規則_(プログラミング)

こういう馬鹿ってたとえば「教科書的なサンプルコード」って表現を聞いたら教科書に書いてある
サンプルコードのことだとか思うのかね。

あるいは「文芸的プログラミング」って聞いたら文学的味わい(笑)のある人語の文章で
コーディングするとか思うのかね。

義務教育からやりなおした方がいいんじゃないのマジで。

318:デフォルトの名無しさん
14/05/12 23:44:24.50 FPCSC9Pj
歴史の授業よろしく過去の遺物だけ教えて
近現代史まで教えてない義務教育もどうかと思う

319:デフォルトの名無しさん
14/05/12 23:57:33.94 4a9Ad8ki
>>317
根拠として Wikipedia って...
笑いとろうとしてるのか?
マジで、意味はとれなくないけど、スゲー違和感あるし、アホっぽく聞こえるからな他所でしゃべらない方がいいぞ (w

320:デフォルトの名無しさん
14/05/12 23:59:57.05 dBEplP4G
普通のWikipedia記事と出典が与太話一カ所にしか付いてない>>317を同列に扱うのはちょっと…
無論全般的にうんこなんだけど

321:デフォルトの名無しさん
14/05/13 00:05:53.91 1w9leY4l
細かいことを気にして本質が見れない奴は駄目だ
プログラマはそうなりがちだから注意しろ

322:デフォルトの名無しさん
14/05/13 00:10:19.36 OtWszYiC
リンクはUrlエンコードして貼れとなんども

323:デフォルトの名無しさん
14/05/13 00:27:47.73 N+BzxmIn
>>321
× プログラマ
○ バカ

324:デフォルトの名無しさん
14/05/13 01:28:29.43 6lHeR6ab
>>309
型名が必要ないって全く理解出来ないなぁ。C#で型を意識しないって時点でネタだろ?
そもそも結局変数名短縮して書くとか言っている時点で型を意識してるんじゃないの?
そんな俺俺ルール全開の話展開されてもなんか一人でコード書いている人の
オナニーにしか見えないよ。

多人数で書いていたら命名規則とかをガチガチに決めない限りそんな曖昧な
コードは混乱するだけだし、人のコード読んだり見せたりした事無いんじゃない?
そんな事するくらいなら型名できっちり明示されていた方が間違いないだろ。

varは同じことを二回(宣言と初期化)書かなくていいって程度の話だと思うんだが
それは見通しが良くなるという意味であって型に関して意味が無いという話ではないぞ

325:デフォルトの名無しさん
14/05/13 01:59:28.36 VAAeDIGc
Dictionary<string, Dictionary<int, 自作クラス>>
みたいなの書かなければいけなくなったときに
型名を捨てました。
でも数値は型に関わらずnValueみたいにつけちゃうかも
Numberの意味で

326:デフォルトの名無しさん
14/05/13 02:06:16.80 SWSrJt6s
varを使うと、「変数は宣言時に初期化」が強制される
ってのが一番の利点だと思っているんですけど。

327:デフォルトの名無しさん
14/05/13 02:24:37.33 nxvHWi8Q
思ってりゃいいよ。口を開くな。

328:デフォルトの名無しさん
14/05/13 10:05:01.34 pfvuptpJ
>>326
このスレでは>>327の意に添わないレスは禁止されている。
以後気をつけなさい。

329:デフォルトの名無しさん
14/05/13 12:37:21.47 Q2oZdJZr
>>324
使うメソッドを持ってれば実行されるから、型なんてどうでも良い。

330:デフォルトの名無しさん
14/05/13 12:58:43.04 vRP8IXzs
>>326
> varを使うと、「変数は宣言時に初期化」が強制される

意味わからん。
var 無くても宣言時に初期化が必要な変数は初期化するし、不要な奴はしない。
なんにも変わらん、ちょっと書き易くなっただけ。

331:デフォルトの名無しさん
14/05/13 13:03:36.11 pOysepT3
昨日から馬鹿が多いな本当。

型なんかどうでもいい、って言ってる奴は、釣りで言ってるのでなければ
1週間後には書いた本人にも理解できないようなコードを書くタイプ。

要するに、今コードを書いている自分の頭に入っているような前提知識を持たない人から
自分のコードが可読的に見えるかどうか、っていう視点が欠如してるタイプ。

そりゃコード書いてる時にはコード上に型が明示されてなくても何も困らないに決まってる。
だってそんなの「今」コードを書いてる自分には自明だからな。

問題は「今」自分が持ってる一時記憶が失われた後でもコードが可読的かどうかのはずなんだが、
ダメグラマってこういう当たり前のことがわからないみたいね。

単にわからないだけじゃなくて、何度それで失敗してもその失敗から学習しない。

332:デフォルトの名無しさん
14/05/13 13:03:59.58 Q2oZdJZr
varは宣言時に代入もしないと、型が判らないからコンパイルエラー

333:デフォルトの名無しさん
14/05/13 13:20:44.11 Oq17BpUc
>>331
昼間から遊んでんなよ

334:デフォルトの名無しさん
14/05/13 15:30:35.03 Bi6mCPJj
宣言時に初期化することがメリットとは思えないなぁ。

他の言語ならともかく、C#ではvarを使わなくても、
初期化されていない可能性のある変数への参照は
コンパイラが警告を出してくれるんだから。

335:デフォルトの名無しさん
14/05/13 17:02:03.84 tPkiUW7x
思わなくていい。糞みたいな口を開くな。

336:デフォルトの名無しさん
14/05/13 17:07:01.01 +/9sUvLU
>>331
型なんかどうでもいいって書き込みなんか無いと思います。
プログラムが読めても日本語が読めない人ですか?

337:デフォルトの名無しさん
14/05/13 17:15:21.16 2bqSYurQ
>>336

>>309 型は必要のない情報
>>325 型名は捨てた

ちょっと遡っただけでも二つあるんだけど日本語読めない人ですか?
同じ主張していた人は前にも同様の事を書いていたと思う

338:デフォルトの名無しさん
14/05/13 17:56:00.21 RSJvu3WH
警告じゃなくてコンパイルエラーになるから、そこは間違えようがない

339:デフォルトの名無しさん
14/05/13 17:56:15.15 nxvHWi8Q
うるさい奴だな
規制も解けたし久しぶりに荒らすか

340:デフォルトの名無しさん
14/05/13 17:57:23.64 fEA3lkvv
ばかばっか

341:デフォルトの名無しさん
14/05/13 18:03:59.79 FaOmhydn
玉ねぎテスト

342:デフォルトの名無しさん
14/05/13 19:04:44.91 P6IZAQAm
>>337
型は何よりも重要だが型名として明示する必要は無いというだけ
型は論理的な制約としてコンパイラとIDEとプログラマを助けてる

ソースを読むときには意味を追うことが重要であって
型名は意味を表さないからソースに現れる必要はない

343:デフォルトの名無しさん
14/05/13 19:10:30.00 I3YIR7QR
それはシステム型ガリアンがわるいのであって
アプリケーション型ガリアンを使うのが正しい

344:デフォルトの名無しさん
14/05/13 20:48:39.72 OtWszYiC
そもそも.netでハンガリーを使うのは不適切

345:デフォルトの名無しさん
14/05/13 21:18:49.26 JYotVS6+
ハンガリーてw

346:デフォルトの名無しさん
14/05/13 21:41:54.30 g7aGY/I9
予約語varすら不要にはできないのかな
新しい識別子が突然出てきたらそこで型推論して変数定義するだけだと思うのだが

347:デフォルトの名無しさん
14/05/13 21:43:10.75 /YCqdFMA
それなんてブビ6?

348:デフォルトの名無しさん
14/05/13 21:45:37.20 P6IZAQAm
変数の定義なのか既存の変数への代入なのかは分からないとダメだろう
間違いの元だし

349:デフォルトの名無しさん
14/05/13 21:48:10.21 g7aGY/I9
>>348
それくらいインテリセンスとシンタックスハイライトで何とでもできそうだけど

350:デフォルトの名無しさん
14/05/13 21:49:38.78 2SjFSQn0
ローカル変数のスコープが絞れない無能言語

351:デフォルトの名無しさん
14/05/13 22:08:05.31 RSJvu3WH
不要にする意味がないじゃん
あとでその上とか、上位スコープに同じ名前の変数定義しても警告がでないとか、スクリプト言語かよ

352:デフォルトの名無しさん
14/05/13 22:58:51.07 VAAeDIGc
紙デバッグする人とIDE活用する人の違いでしょうか

353:デフォルトの名無しさん
14/05/13 23:05:11.66 OtWszYiC
紙でデバッグってどこでビルドするんですか?

354:デフォルトの名無しさん
14/05/13 23:06:36.97 6lHeR6ab
>>352
IDE活用するのは良いんだがそれに依存しちゃってる人って他人とレビューってどうやってやるの?

355:デフォルトの名無しさん
14/05/13 23:07:35.77 I3YIR7QR
最低限の構文要素は残しておかないとソース解析や支援機能が劣化する
ていうか今のものですら不足

356:デフォルトの名無しさん
14/05/13 23:08:53.54 2SjFSQn0
型明示しないとコード読めない奴がレビュアーとか恥ずかしくないの

357:デフォルトの名無しさん
14/05/13 23:09:40.76 OtWszYiC
レビューとか普通にソフトあるだろ
TFSならたしか標準だったはずだし

358:デフォルトの名無しさん
14/05/13 23:10:10.27 Gi8jm/Jb
var程度で劣化するわけないでしょ
リアルタイムのエラー表示とかに比べたら全く完全に無視できる程度の処理

359:デフォルトの名無しさん
14/05/13 23:22:12.28 2SjFSQn0
型推論っていうけど実際には変数型の解決と変換チェックを省いてるわけだからむしろ高速化しそう

360:デフォルトの名無しさん
14/05/13 23:35:11.58 ph3+WM+5
>>355
すみません、劣化の実例出してもらえます?

361:デフォルトの名無しさん
14/05/13 23:42:10.85 I3YIR7QR
すまん これからシアトル行きの飛行機に乗らないといけないんだ

362:デフォルトの名無しさん
14/05/14 00:44:05.28 eTwx7JM5
いまだにハンガリアンつかってるのはちょっとイケてないよね

363:デフォルトの名無しさん
14/05/14 01:15:52.45 9VDDjOUK
>>354
他人と一緒にIDE使えばいいんじゃね

364:デフォルトの名無しさん
14/05/14 01:17:18.00 OfRhuTl1
今のトレンドは何リアンですか?

365:デフォルトの名無しさん
14/05/14 02:34:49.11 NgeMMujl
ジャンガリアン

366:デフォルトの名無しさん
14/05/14 08:39:58.13 s/uWWHxP
>>350
絞れるよ。ただ、外側と同じ名前をつけらんないだけ。

367:デフォルトの名無しさん
14/05/14 14:25:27.66 d8cAyoWU
今どきイケてるとか言っちゃうナウでヤングなあなた

368:デフォルトの名無しさん
14/05/14 20:16:37.22 eTwx7JM5
時代はキャメリアンよ

369:デフォルトの名無しさん
14/05/14 20:49:19.94 duQE1tkX
いやポリアンナでしょ

370:デフォルトの名無しさん
14/05/14 21:01:07.09 TjISzePW
>>366
論点理解した上で「絞る」って口語表現の解釈で争うのか?
アスペかゴミかアスペのゴミだな

371:デフォルトの名無しさん
14/05/14 21:03:19.94 duQE1tkX
>>370
どう考えてもお前がアスペ

372:デフォルトの名無しさん
14/05/14 22:57:26.14 MatEjgRk
>>364
コリアンと言ってほしいんだろ?

373:デフォルトの名無しさん
14/05/14 23:10:26.66 hc7I7FLC
C# でフラッシュ上に描画されているボタンのクリックをする事は出来ますか?

例)
YouTubeの 再生ボタン 

374:デフォルトの名無しさん
14/05/14 23:28:08.62 OXjgNqNn
まっとうな方法はない
できないことはないけど非常に難しく、およそ初心者向きの課題ではない

375:デフォルトの名無しさん
14/05/14 23:30:16.49 CNlUMUNV
UWSCさんにお任せした方がお手軽
どうせお手軽に稼ぐ手段にしか興味ないんでしょ?

376:デフォルトの名無しさん
14/05/15 02:37:17.33 y4EzsQr3
4.5.1時点では各種コレクションやカスタマイズならIEnumerable<T>やIEnumerator<T>があるからインデクサ実装するメリットがパッと思いつかないな
逆にどういう時にあえてクラスにインデクサ実装するの?

377:デフォルトの名無しさん
14/05/15 05:43:37.91 VFnGSa+C
>>376
たしか、ElementAtはIListを実装していないクラスの場合、
インデクサを使わず先頭から一つずつ数えるとか聞いた

ともかくElementAtは効率的である保証がないから
ランダムアクセスが早いクラスではインデクサを実装したほうがいい

378:デフォルトの名無しさん
14/05/15 06:46:00.89 vWmJlxXD
ディクショナリとか多次元コレクションとか

379:デフォルトの名無しさん
14/05/15 06:50:35.28 PJUn3sxK
二次元幼女のコレクションか。納得。

380:デフォルトの名無しさん
14/05/15 15:32:47.39 hK9NRk/t
>>375
UWSC って何?

381:デフォルトの名無しさん
14/05/15 15:49:09.11 UhbfTRYa
>>380
ググったら一発で出てくるんだが

382:デフォルトの名無しさん
14/05/15 15:57:34.47 hK9NRk/t
じゃ、ぐぐって

383:デフォルトの名無しさん
14/05/15 18:09:38.25 6iCpTi+Y
ぐぐりました

384:デフォルトの名無しさん
14/05/15 21:16:35.16 VVboE5kT
おれもググった

385:デフォルトの名無しさん
14/05/15 21:33:42.13 t3vABwGH
ぐぐってきた、なるほどね

386:デフォルトの名無しさん
14/05/15 21:34:05.58 fEMnGPTM
ぐぐってあげたよ

387:デフォルトの名無しさん
14/05/15 21:55:32.39 /wvFfuuf
百度でも可

388:デフォルトの名無しさん
14/05/15 21:59:03.97 vWmJlxXD
優しい世界

389:デフォルトの名無しさん
14/05/16 18:40:47.57 VAV/Ywcf
Usage of NativeWindow.AssignHandle/ReleaseHandle when unmanaged code is involved.
URLリンク(blogs.msdn.com)

NativeWindowまわりで不可解なクラッシュが発生するんだけど
これ試してみようかな

390:デフォルトの名無しさん
14/05/17 16:30:44.41 QUUNT5cx
福島ヤクザの恫喝のお蔭で美味しんぼが休載になってしまった・・・



そ ん な に 福 島 県 の  野 菜 が 安  全 ・安 心

    と い う な ら ば 宮 内 庁 職 員 ・ 天 皇 家 に 全 て 無 料 で 提 供 し な さ い

391:デフォルトの名無しさん
14/05/17 16:40:04.62 /wPndJU8
コピペマン参上!まで読んだ。

392:デフォルトの名無しさん
14/05/17 21:01:02.22 Ii5h3iYQ
そんな事よりkeybd_eventで記号が送れないじゃないか。
入力対象がPostMessageは受け付けないしSendInputは動かないし困った。

393:デフォルトの名無しさん
14/05/17 21:10:07.58 pDUyUp0N
UIAutomationは?

394:デフォルトの名無しさん
14/05/17 22:17:04.68 Ii5h3iYQ
>>393
聞いたこと無かった。試してみるわ。

395:デフォルトの名無しさん
14/05/18 03:17:11.65 fAlXIwAd
以下のコードを書いているのですが #1 の部分でたまにブラウザが閉じない場合があります。
何が原因なのでしょうか?

きっちりと閉じる時は閉じますが、たまに閉じない場合があるのです。
その為現在は、 iexplorerのプロセスをむりくり消すという方法を行っています。

SHDocVw.InternetExplorer ie;
mshtml.IHTMLElementCollection mshtml_ec;
do
{
  url = "URLリンク(maxnko.com";)
  ie = new SHDocVw.InternetExplorer();
  ie.Navigate(url, null, null, null, null);
  
  ie.Quit(); ← #1
}while(true);

396:デフォルトの名無しさん
14/05/18 04:22:37.98 gCeF58LB
アウトオブプロセスのCOMサーバプロセスのサーバの寿命が気になるなら
・途中で手に入ったCOMオブジェクトすべてにMarshal.ReleaseComObject
・COMオブジェクト入れてた変数は全部参照を切ってGC.Collect×2
のどっちかが必要

397:デフォルトの名無しさん
14/05/18 06:27:29.62 y6C+E1dN
WaitForPendingFinalizersとSleepも入れとけ
URLリンク(bbs.wankuma.com)

398:デフォルトの名無しさん
14/05/18 11:55:53.57 0kvX68pZ
スレリンク(pc2nanmin板:145番)
  ↑ ↑ ↑  ↑ ↑ ↑

399:デフォルトの名無しさん
14/05/18 17:55:09.18 KNbj8c8D
超初歩で申し訳ないのですが

string[,] hoge = {{"a","b","c"},{"a","b","c"}};
のような多次元配列があるとして

string[] test = hoge[0];
みたいに配列を取り出して渡すのはどうしたらいいですか?エラーがでます。

400:デフォルトの名無しさん
14/05/18 18:14:59.78 5sxTIiRh
これで我慢しろ
string[][] hoge = { new[] { "a", "b", "c" }, new[] { "x", "y", "z" } };
string[] test = hoge[0];

401:デフォルトの名無しさん
14/05/18 18:44:56.99 KNbj8c8D
ありがとうござます・・
色々な宣言方法があるんですね。

402:デフォルトの名無しさん
14/05/18 18:54:58.24 VTr3IL1L
多次元配列 string[,] と ジャグ配列(配列の配列) string[][] は別物なんよ

403:デフォルトの名無しさん
14/05/18 20:55:49.12 eK7aomfp
インデクサで実装

404:デフォルトの名無しさん
14/05/19 01:44:57.19 iSQonB5j
string[] test = new string[6];
test[0]=hoge[0,0];

405:デフォルトの名無しさん
14/05/20 22:50:10.77 egyHbNr6
System.Collections.Specialized.OrderedDictionaryが使いづらいから
genericなOrderedDictionaryを自作しようと思ったら糞面倒臭くてワロタ。
みんなどうしてるんだ?

406:デフォルトの名無しさん
14/05/20 23:14:18.45 z25AfSXU
内部にList<T>とDictionary<TKey, TValue>を持つクラスを作った。

407:デフォルトの名無しさん
14/05/21 03:32:42.40 v/AOEN1J
OrderedDictionary ってなんのために使うの?
Dictionary の中身のソートならLINQですましているけど、、、

408:デフォルトの名無しさん
14/05/21 12:09:03.26 HVPC3tHt
互換性のために残してるんだろ。
ジェネリック版がないのがその証拠。

409:デフォルトの名無しさん
14/05/21 17:10:09.90 mq1dIck6
>>396
>アウトオブプロセス
あうと・おぶ・プロセス?

410:デフォルトの名無しさん
14/05/21 19:03:42.30 ejLigrZg
そうよ。別プロセスとして起動したCOMサーバのこと。

対になる言葉もちろんin-process server.
自プロセス内でアクティベートされたCOMサーバーオブジェクトよ

411:デフォルトの名無しさん
14/05/21 19:25:24.07 bWXCPWXI
WPFのDataGridで、どの列が画面内に表示されているかを知る方法をご存知の方いらっしゃいませんか。

広いDataGridの各セルに値を表示していて、一定間隔で表示を更新しているのだけど、
表示更新を行うのを画面内に表示されている範囲だけにしたくて、現在表示されている列を知りたいのです。
どの行が表示されるかは、DataGrid.LoadingRow/UnloadingRowイベントで簡単にわかるんだけど、
列に関してはこれに類似する便利なイベントなどが見つからなくて、悩んでいます。

ScrollChangedイベントが発生した時に各列の位置を計算して、
表示されている範囲内に収まっているかを確認するという方法を考えたんだけど、
「表示されている範囲」を取得する方法がわからず、実現できるかどうか・・・

詳しい方、知恵を貸していただけませんでしょうか。

412:デフォルトの名無しさん
14/05/21 19:35:47.40 vOQNrfJU
VisualTreeHelperとかじゃねえの
もっと直接的な方法があるかもしれんが

413:デフォルトの名無しさん
14/05/21 20:51:40.21 eQl8Z8s/
>>411
普通にバインドしてりゃそれくらいは自動でやってくれてるぞ
それでもDataGridの糞性能はどうしようもないから、
諦めてWindowsFormsHostでDataGridViewを使うのが吉

414:デフォルトの名無しさん
14/05/21 22:08:50.68 bWXCPWXI
>>412
VisualTreeHelperですか・・・
使ったことないので、調べてみます。

>>413
ありがとうございます。
表示更新以外にも内部的にやりたいことがあって、表示されている列をなんとかして取得したいと考えています。
やっぱりWPFのDataGridは使えないのですね・・・DataGridViewの便利さが身にしみます。
今回すでにDataGridが用意されている中での改造をやろうとしていて、WindowsFormsHostを使うことができないので、
WPFの範囲でなんとかできる方法をもう少し試行錯誤したいと思います。

415:デフォルトの名無しさん
14/05/26 11:41:59.18 C5RAjArj
C#で
Process.Kill("explorer");

Process.Start("explorer");


を実行するとエクスプローラーが起動しますが
自動でこれを閉じる方法はありませんか?

※エクスプローラを一定周期で再起動させたいです。
PCを付けっぱなしだとexplorerの調子が悪くなってしまう場合がある為です。

416:デフォルトの名無しさん
14/05/26 11:50:26.53 QBzBPwJ7
閉じる?

417:デフォルトの名無しさん
14/05/26 11:51:08.04 fNjo4Ias
var exp = Process.Start("explorer");
// 一定時間待つ
exp.Kill();

418:デフォルトの名無しさん
14/05/26 11:55:08.95 82lch4Bs
ウイルス系に感染してるんじゃない?

419:デフォルトの名無しさん
14/05/26 12:27:40.15 dlApJPlM
普通不安定になるならエクスプローラだけ再起動してもダメだろ
PC再起動しろよ

420:デフォルトの名無しさん
14/05/26 12:54:20.63 DINwIwST
とゆうかエクスプローラはタスクバーでも使ってるから通知領域がおかしくなるぞ
418の言う通りウイルス疑うべき

421:デフォルトの名無しさん
14/05/26 12:57:00.00 ptXAqcmg
OneDrive(SkyDrive) とか GoogleDrive 止めたら安定したことがある

422:デフォルトの名無しさん
14/05/26 13:12:12.75 lvFZnHPn
ウィンドウを出してタスクバーに登録するあたりがおかしいんだよなw

423:デフォルトの名無しさん
14/05/26 13:24:37.36 yHJImmyi
丸投げ姿勢で常駐系に手を伸ばすなんてろくな事にならん
身の程知らずというものよ

424:デフォルトの名無しさん
14/05/26 13:34:07.02 82lch4Bs
>>421
どっちも使ったことないから知らんが、その系統ならオーバーレイアイコンの問題じゃないかな

425:デフォルトの名無しさん
14/05/26 14:00:32.79 yHJImmyi
そう言えば TortoiseSVN のアイコン処理がいろいろ悪さすることがあると最近知ったな

426:デフォルトの名無しさん
14/05/26 14:40:35.43 2JzRM12h
TortoiseGit でもアイコンのせいで超重くなるな

427:デフォルトの名無しさん
14/05/26 14:43:51.58 2JzRM12h
>>415 >>417
PC を長時間ログインしたままで使う人は explorer を時々再起動した方が良いのは賛成なんだが
explorer をいくつも開いてると復元が面倒なんでついつい致命的に死ぬまでそのまま使う

あと explorer の再起動はすべての explorer プロセスを列挙して全部殺して
最後の一つがタスクバーになるようにする必要があるのかな

428:デフォルトの名無しさん
14/05/26 15:32:52.83 EGdbrytd
explorerってタスクマネージャーでプロセス消したら勝手に立ち上がってくるよな
あれはタスクマネージャー側で再起動してる?OS側?

429:デフォルトの名無しさん
14/05/26 16:02:51.07 2JzRM12h
完全に消滅させられるけど?

430:デフォルトの名無しさん
14/05/26 16:10:27.65 kDM+Ms7r
あいつは完全に消滅した

431:デフォルトの名無しさん
14/05/27 00:54:38.03 RQKxbKNp
>>425
あれのせいで作業遅れたことあるわ
インシデント登録のために再現しようとしたら再現しなくてなんだかんだ悩んで時間無駄にした

432:デフォルトの名無しさん
14/05/27 09:50:05.50 ukhP0HT2
完全に消滅させるとタスクバーもいなくなるので
コマンド起動ですぐたちあげちゃうよな

433:デフォルトの名無しさん
14/05/27 10:54:06.71 Oftvh7Y1
デスクトップにフォーカスがある状態でAlt+F4

ダイアログが出たら Ctrl + Shift + Alt + Esc 同時押し

(゚д゚)ウマー

434:デフォルトの名無しさん
14/05/28 03:17:16.11 7s/YdHrO
>>428
unix でいうところのシェルと同等だからね

435:デフォルトの名無しさん
14/05/28 04:37:57.28 hRiIfaso
シェルって勝手に再起動したっけ?

436:デフォルトの名無しさん
14/05/28 06:32:42.47 r/cEnKci
ウィルスの仕業じゃ

437:デフォルトの名無しさん
14/05/28 08:21:07.64 pSqJyVpX
Windows XP SP2以降、再起動してくれることが多くなった

438:デフォルトの名無しさん
14/05/28 10:34:03.90 o+iely1Y
落ちたら再起動するってオプションと
外から殺されたらそのまま死んでる
って違いでしょ

439:デフォルトの名無しさん
14/05/28 10:41:47.46 EmUl6u0+
そんな設定あったのか。OSでの挙動の違いかと思ってた

440:デフォルトの名無しさん
14/05/28 12:13:44.09 mw4ldslt
フォルダとデスクトップを別プロセスにする設定にしてて
タスクバーのプロセスが死んだときに
フォルダのプロセスが残ってると
タスクバーのプロセスは自動復活しない

441:デフォルトの名無しさん
14/05/31 08:17:04.13 IL91pjst
C# は、改行のエスケープシーケンス効くのか?
string text = "Hello \
world" ;

442:デフォルトの名無しさん
14/05/31 08:29:51.35 gddrhR3Z
>>441
ソース通り文字列に改行が入っていいなら@を使う。
文字列に改行を入れたくないなら複数行に分けて書くのは無理。必要なら+で繋ぐ。
その場合もちろん最適化は効くからパフォーマンスへの影響はない。

443:デフォルトの名無しさん
14/05/31 15:54:04.89 QHlXh24u
そんなのちょっとやってみりゃ分かるだろうに

444:デフォルトの名無しさん
14/05/31 16:29:13.74 PaG8/Dzb
馬鹿はプログラミングに向かない典型だな


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch