ふらっとVisual C#,C♯,C#(初心者用) Part107at TECH
ふらっとVisual C#,C♯,C#(初心者用) Part107 - 暇つぶし2ch1:デフォルトの名無しさん
13/09/25 20:02:22.30
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問。
質問者自身なんだか意味がよく分からない質問。
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて、他スレ・他板へ行くことを勧められることがあります、ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっとVisual C#,C♯,C#(初心者用) Part106
スレリンク(tech板)

■関連スレ
C#, C♯, C#相談室 Part80
スレリンク(tech板)

■コード貼るなら↓使ってください
URLリンク(ideone.com)

2:デフォルトの名無しさん
13/09/25 20:22:41.03
なんかideone使いにくくなってね?
てか、run code無効にできなくね?

3:デフォルトの名無しさん
13/09/25 20:39:37.83
だってcodepad.orgはC#使えないんだもん

4:デフォルトの名無しさん
13/09/25 20:50:50.35
前もbootstrap使ってたっけ
今は使ってるって一目で分かるな

5:デフォルトの名無しさん
13/09/25 20:56:58.18
前はチェックボックスむき出しだったから使ってないんじゃない。
量産型オサレになりましたね。

6:デフォルトの名無しさん
13/09/25 21:01:50.04
コンパイルエラーが出るようになってむしろどこがおかしいのかまで分かるようになったから
ある意味コンパイラを持ってない人には親切かも

ついでに5桁のIDが6桁に増やされたな

7:デフォルトの名無しさん
13/09/26 00:22:11.62
ループでファイル名列挙するプログラム書いてみた。
若干冗長だけど、出力結果は正しいと思う。

URLリンク(ideone.com)

8:デフォルトの名無しさん
13/09/26 01:29:29.69
SingletonのクラスをアプリのSettingデータとしてもってますが、
これを、設定画面でBindingしたいのですか、DataContextに普通にいれても無理でした。
どうやればいいでしょうか?

9:デフォルトの名無しさん
13/09/26 02:56:36.52
>>8
インスタンスを普通にDataContextに入れたら動くので、どこか他が間違っていると思うよ
デザパタで言うシングルトンじゃなくてstatic classをシングルトンと言っているなら.net4.5から対応しました
URLリンク(msdn.microsoft.com)
>静的プロパティへのデータ バインド、ICustomTypeProvider インターフェイスを実装するカスタム型へのデータ バインド、およびバインド式からのデータ バインド情報の取得。

あ、勿論プロバティーがstaticでも動きません

10:デフォルトの名無しさん
13/09/26 08:00:47.13
みなさん質問ですがWPFのデータ接続ってなにつかってますか?データセット?エンティティ?それともLINQ? 必死こいてエンティティでのバインド覚えようと思ってるけどどうもうまくいかなくて

11:デフォルトの名無しさん
13/09/26 12:35:28.66
>>7
EnumerateFiles使うなっていってんだろ

980 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/25(水) 12:24:09.75
>Directory.EnumerateFiles
これ中、再帰だろ、ボケ。

995 名前:デフォルトの名無しさん[] 投稿日:2013/09/25(水) 12:49:14.90
>>992
EnumerateFiles で見つかるのは名前だけだろ
そんな単純なもの以外に対応させるためには使えない
EnumerateFiles 使わずに書いてみてよ

FindFirstFile使え
URLリンク(ideone.com)

12:デフォルトの名無しさん
13/09/26 13:41:24.78
前スレの糞みたいな流れを持ち込むんじゃねーよこの糞が
死ね

13:デフォルトの名無しさん
13/09/26 13:51:47.91
糞スレに誘導したのに、勝手にスレ立てんな、糞ども。

14:デフォルトの名無しさん
13/09/26 18:35:58.41
C#入門のサイトを見ながら作ってみたした
C#はまったくの初心者です
これはどこがだめなのでしょうか?
また、どうすればなおりますでしょうか?
背景に画像をうつして、消すとき確認をとりたいです
URLリンク(i.imgur.com)

15:デフォルトの名無しさん
13/09/26 18:53:08.26
同じクラスあり過ぎてコンパイラが怒ってる

public Form1()
{
Bitmap ...
...
...

this.FormClosing += ... ←上のにまとめてここをコピー
 new FormClos...
}

上のForm1の
}から
下の
class Form1 : Form()までの行を消しちゃえ

16:デフォルトの名無しさん
13/09/26 18:56:11.78
書き直すわ
Form1とpublic Form1()が2つずつあるよな? これがいけない
public Form1()の閉じ括弧 } ←これ から
public Form1()の始まり括弧 { までを選択してバックスペースキー使って消したらいけるはず

17:デフォルトの名無しさん
13/09/26 19:06:18.13
エラーはひとつもでなくなりました
ありがとうございます
しかし、実行しても背景も表示されず閉じようとしても確認をとってくれません
何か間違ってたでしょうか?
URLリンク(i.imgur.com)

18:デフォルトの名無しさん
13/09/26 19:07:29.32
ClosingイベントやLoadイベントのハンドラーが登録されていない

19:デフォルトの名無しさん
13/09/26 19:51:54.76
色んな所で検索してイベントのハンドラーを調べてみて
色々実行してみたんですが
いまいち解決法が見つかりませんでした・・・
よろしければ、具体的な方法を教えていただけますか?

20:デフォルトの名無しさん
13/09/26 20:33:03.03
根本的にForm1じゃなくてFormのインスタンスnewしてるじゃないか
そりゃそうだよ

21:デフォルトの名無しさん
13/09/26 20:33:48.03
>>18
適当なこと言ってんじゃねーぞコラ?


>>19
Mainメソッドの
>Form form = new Form();

Form1 form = new Form1();
に修正してみそ

22:デフォルトの名無しさん
13/09/26 20:34:21.57
オブジェクトがnullだった時のメソッド呼び出しをエラーにしない方法ないですか
oppai.Momu();
この呼び出しがoppaiがnullの時でも例外を発生せずに単に無視して欲しい。

23:デフォルトの名無しさん
13/09/26 20:36:06.75
エラーにしない方法はないです

24:デフォルトの名無しさん
13/09/26 20:43:16.15
>>19
これでいいのか
URLリンク(ideone.com)

25:デフォルトの名無しさん
13/09/26 20:51:21.07
>>22
oppaiを何かのクラスでラップしてnullを返さないようにするとか

class Hoge
{
 public Oppai Oppai
 {
  get
  {
   if( oppai == null )
   {
    oppain = new Ginyu();
   }
   return oppai;
  }
 }
}

class Ginyu : Oppai
{...}

26:デフォルトの名無しさん
13/09/26 21:07:31.58
>>22
null objectパターン

27:デフォルトの名無しさん
13/09/26 21:09:05.98
>>25
if(Oppai != null)
{

}
で囲む以上のコードを書いたら意味ないだろ

28:8
13/09/26 21:13:36.61
>>9さんありがとう、Bindingうまくいくようになりました。
原因は、TextBoxに値を表示してたのですが、
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged
の追加で理想なうごきになりました。

29:22
13/09/26 21:21:44.02
>>22-25
それでは駄目です
oppai.GetChikubi().Nameru().MomuMomu();
みたいに関数呼び出しがチェーンします、そのうちの一部がnullでもエラーにならないようにしたいのです
一行で。

30:デフォルトの名無しさん
13/09/26 21:23:31.54
お帰りはあちら

31:デフォルトの名無しさん
13/09/26 21:24:05.87
間違った人は間違った方向に努力する典型と言わざるを得ない

32:デフォルトの名無しさん
13/09/26 21:25:59.70
駄目なのはお前だと

33:デフォルトの名無しさん
13/09/26 21:27:23.76
Objective-Cでもやれば

34:デフォルトの名無しさん
13/09/26 21:29:02.00
System::Windows::Forms::Show(NULL,L"C++/CLIも忘れんな",L"Win32APITest",MB_OK);

35:デフォルトの名無しさん
13/09/26 21:35:32.64
>>29
public static class Ext {
&nbsp; &nbsp; public static TOutput Do<TInput, TOutput>(this TInput obj, Func<TOutput> method) {
&nbsp; &nbsp; &nbsp; &nbsp;return obj == null ? default(TOutput) : method();
&nbsp; &nbsp; }
}

oppai.Do(GetChikubi).Do(Nameru).Do(Momu);
ぐらいで我慢しとけ

36:デフォルトの名無しさん
13/09/26 21:42:38.84
これは難しい暗号だ。

37:デフォルトの名無しさん
13/09/26 21:51:02.44
中途半端に代替案提示してやろうとするから食い下がるんだよ
有無を言わさず打ち砕け

38:デフォルトの名無しさん
13/09/26 21:53:59.36
>オブジェクトがnullだった時のメソッド呼び出しをエラーにしない方法 ← ここが間違いの根本

コンポジションしたメソッドチェーン対応クラスでも書くのが正解

39:35
13/09/26 21:54:19.91
色々問題があったけどまあいいや

40:デフォルトの名無しさん
13/09/26 21:55:47.35
言語機能に付いてないんだから諦めろとしか
どうしても自分でやりたいなら
リフレクションで全てモックオブジェクト返すようなNullableでも作ればいい

41:デフォルトの名無しさん
13/09/26 22:01:15.81
Roslynでも使えばいいんじゃない?
nullチェックの数千倍敷居が高いけど

42:22
13/09/26 22:09:29.11
オブジェクト指向の関数の呼び出しはthisポインターの省略に過ぎないわけで
関数には言ったら
 if (this == null){
  return;
 }
と書ければ一発で解決することがなぜできない

43:デフォルトの名無しさん
13/09/26 22:17:44.57
ようするにnullの時には、何もしない、という処理をしたいわけだ。
だから、>26が書いてるようにNullオブジェクトパターンで、
そもそものnullを、何もしない処理を実装したNullオブジェクトに置き換えればいいだけ。
Strem.Nullフィールドもそのパターンだな。

44:デフォルトの名無しさん
13/09/26 22:23:13.54
>>22
無理じゃねーの?
.NETがメソッドテーブルか型情報持ってるかは知らんけど、
抽象メソッドinvokeすんのに何かしらのポインタもってないとダメだろ
そんなこんなでnull大丈夫なんて前提作れないだろ

45:デフォルトの名無しさん
13/09/26 22:23:17.98
インスタンスないから関数にも入れないじゃん

46:デフォルトの名無しさん
13/09/26 22:42:00.91
解説すると。

Stream stream = null;
だと、
stream.ReadByte();
で例外になる訳だ。

これをNullオブジェクトパターンにすると、
Stream stream = Stream.Null;
stream.ReadByte();
値は読めないが、例外で落ちることは無い。

47:デフォルトの名無しさん
13/09/26 22:47:19.37
そんなこと誰でも知ってるが、それは何もしないオブジェクトをNull Objectと
呼んでいるだけのこと。

連想ゲームじゃねえんだから、名前にnullが付いてるからってnullと関係ないから。

試したわけじゃないけど、使うメソッド全てをあえて拡張メソッドで実装すれば
質問者の希望するような動作が可能かも知れないが、たとえ可能でもそんなアホなことするなと。

間違った方向に労力を投入するのはただの馬鹿

48:デフォルトの名無しさん
13/09/26 22:49:47.25
>>45
C++は変態言語の名に相応しく、呼び出せるんだよなーこれが
もちろんthisにアクセスしたらアクセス違反だが

49:デフォルトの名無しさん
13/09/26 22:51:23.12
ScalaのOptionがほしいんだろ?
型情報読み取って、その場で動的に作ればいい
どう見ても実用的じゃないが

50:デフォルトの名無しさん
13/09/26 22:53:59.67
>>48
そんな事してまで呼び出してどうするんだと
どうせvirtualじゃ無い物限定だろ

51:デフォルトの名無しさん
13/09/26 22:56:49.09
>>48
まったくこまった変態さんですね

52:デフォルトの名無しさん
13/09/26 22:57:28.28
>>48
変態もクソもチェックしてないだけだぜ
ILならnullのインスタンスメソッドは呼べるし呼べるのが自然だが、
わざとチェック入れて例外を発生させてる

53:デフォルトの名無しさん
13/09/26 23:04:06.27
>>47
別に名前なんてどうでもいいよ。
この質問者の目的をシンプルに解決する方法として、
Nullオブジェクトパターンと呼ばれている方法がいいんじゃないか、
というだけ。

54:デフォルトの名無しさん
13/09/26 23:06:45.38
シンプルに解決できないだろ。
>>47が言うように実装全部を変更する羽目になる。

55:デフォルトの名無しさん
13/09/26 23:08:58.83
>>21
おおおお!
原因はいまいち分かりませんができました!
ありがとうございます!
頑張ってソフトウェア完成させます!

56:22
13/09/26 23:14:07.39
>>53
くだらない事でクラス数を増やしたくないのでNullオブジェクトパターンは無理です
ただ単にnullのオブジェクトの関数を呼び出して何もしたくないだけなんですがね
はぁ、何故こんな簡単なことが書けないんだC#は

57:デフォルトの名無しさん
13/09/26 23:21:09.33
C#たんはダメな子なんです
我慢してください

58:デフォルトの名無しさん
13/09/26 23:22:56.72
F#でも使えばいいんじゃねーの?
できるかしらんけど

59:デフォルトの名無しさん
13/09/26 23:32:28.51
正常系でnullを返す自分の設計が糞なんだ

60:デフォルトの名無しさん
13/09/26 23:35:46.51
そういえばそうだな。
null返さなければいいだけだ。

61:デフォルトの名無しさん
13/09/26 23:36:19.15
nullなのにメソッド呼びたいとか考えたことなかった

62:デフォルトの名無しさん
13/09/27 00:09:06.34
まずこの議論がくだらない

63:デフォルトの名無しさん
13/09/27 00:11:23.66
疑問は(絶望的な方向に)解決したし、これ以上愚痴りたいなら穴掘ってどうぞ。
ここでやらないでね。

64:デフォルトの名無しさん
13/09/27 00:25:10.55
>>56
だから、書くだけなら拡張メソッドでいけるよ。

65:デフォルトの名無しさん
13/09/27 01:09:53.78
ところで、NULLはオブジェクトなのか?

66:デフォルトの名無しさん
13/09/27 06:12:13.68
var o = oppai;
if(obj != null) o = o.GetSize(ref size);
if(obj != null) o = o.Lick();
if(obj != null) o = o.UseCandle(true);
if(obj != null) o = o.AttackBySperma();
if(obj != null) o = GoToHeaven();

67:デフォルトの名無しさん
13/09/27 06:14:23.45
var o = oppai;
if(o != null) o = o.GetSize(ref size);
if(o != null) o = o.Lick();
if(o != null) o = o.UseCandle(true);
if(o != null) o = o.AttackBySperma();
if(o != null) o = GoToHeaven();

68:デフォルトの名無しさん
13/09/27 07:20:37.93
wpfのListBoxで、画面に見えていないアイテムを表示させようとしているんだが
ItemContainerGenerator.ContainerFromIndexでListBoxIemを拾おうとしても、一度表示するまではnullが返ってくる
何とかなりませんか?

69:デフォルトの名無しさん
13/09/27 08:44:51.92
確か仮想化を切ればいいはず

70:デフォルトの名無しさん
13/09/27 09:13:15.41
>>69
ありがとう、おかげで何とかなりました

<ListBox VirtualizingStackPanel.IsVirtualizing="false" って書けばいいなんて判るかよ!

71:デフォルトの名無しさん
13/09/27 12:08:56.90
失礼します。
Win7 64bitで作成しているのですが複数のdllを使用する時、一つでもx86用しか無い場合は
全てx86で使用するのが無難でしょうか?

72:デフォルトの名無しさん
13/09/27 12:24:42.46
無難もなにも混在などできない

73:デフォルトの名無しさん
13/09/27 12:31:30.07
>>72
返事ありがとうございます。
AnyCPUもどちらが動くかわからないから止めた方が良いと以前このスレで見かけましたので
ターゲットプラットフォームをx86で作るしか無さそうですね。

74:デフォルトの名無しさん
13/09/27 13:10:31.44
nullをオブジェクトで扱うべきという議論は他でもあって、
関数型言語などではSOME/NONE型として扱ってる

C#の場合は拡張メソッドでどうよ?
FooクラスにHelloIfNotNullを書けない所にまだ良心が残ってるといえよう

class Foo {
public void Hello() { Console.WriteLine("Hello Wolrd !"); }
}
static class FooExtentions {
public static void HelloIfNotNull(this Foo o) { if (o != null) o.Hello(); }
}

75:デフォルトの名無しさん
13/09/27 22:51:48.02
URLリンク(www.buzzword.jp)

76:デフォルトの名無しさん
13/09/28 17:31:45.92
Mac版Xamarin Studioが超絶バージョンアップ!C言語やD言語、F言語にも対応!Visual Studio不要に
スレリンク(poverty板)

77:デフォルトの名無しさん
13/09/28 17:42:08.49
コピペマン参上!まで読んだ。

78:デフォルトの名無しさん
13/09/28 18:25:39.29
C#はさ永遠とToString().ToString().ToString()....ってできるところがいいよね

79:デフォルトの名無しさん
13/09/28 18:49:40.24
そんなに釣り要素満載だと胃もたれしてしまうよ

80:デフォルトの名無しさん
13/09/29 15:26:33.18
動的に作成したコントロールに引数を追加する方法を探しています。

int i = 0;
while(true)
{
panel[i] = new Panel();
label[i] = new Label();

panel[i].Controls.Add(label[i]);

panel[i] += new EventHandler(panel_Click);
label[i] += new EventHandler(panel_Click);

this.Controls.Add(label[i]);
this.Controls.Add(panel[i]);

i++;
}
panel_Clickにiを渡したいのですが、方法がわかりません。
どうすれば出来ますか?

81:デフォルトの名無しさん
13/09/29 15:29:57.91
> panel_Clickにiを渡したい
そんなことは出来ないので、iをTagに入れるか、
またはFormのコードなどでコントロールをキーにするDictionaryを持つようにする

82:デフォルトの名無しさん
13/09/29 15:30:12.88
ソフトウェア板で答えたと思ったらマルチされてたでござるの巻

83:デフォルトの名無しさん
13/09/29 15:30:39.12
>>80
マルチ死ね

84:!ninja
13/09/29 18:17:59.40
c#6.0ってどうなってますか?

85:デフォルトの名無しさん
13/09/29 18:33:15.02
どうでしょうなあ・・・

86:デフォルトの名無しさん
13/09/29 18:34:18.89
マルチスレッドは簡単らしいです。

87:デフォルトの名無しさん
13/09/29 20:01:43.26
>>80
panel[i].Click += ( sender, e ) => MessageBox.Show( i.ToString() );

とか?w
動的にコントロール生成って、どうしても初心者の方がやりたくなってしまう魅力があるのかな


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