トップページ⇒tech
1001コメント247KB

C#, C♯, C#相談室 Part77

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/11/09(金) 22:22:38.15
前スレ
C#, C♯, C#相談室 Part76
http://toro.2ch.net/test/read.cgi/tech/1349896872/

Visual Studio 2010 Express
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx

Visual Studio 2012 Express
http://www.microsoft.com/visualstudio/jpn/products/visual-studio-express-products
0685デフォルトの名無しさん2012/12/14(金) 21:06:13.92
VC++とかが辛くなるというのはある
0686デフォルトの名無しさん2012/12/14(金) 21:12:48.69
入力ミスは少なくなるし、打鍵も少なくなる
使いたいメソッド名をちゃんと覚えてなくても
ある程度アタリをつけれる

いいこと尽くめ。バリバリ使う。

インテリセンスがない環境でプログラミングするのが
イヤになるだけで書けなくはならない
0687デフォルトの名無しさん2012/12/14(金) 21:20:18.03
#はハッシュって呼ぶ事もあるぜ
ハッシュタグもそうだし
0688デフォルトの名無しさん2012/12/14(金) 21:24:58.92
C#のメンバー名は短くて整理されてるからIntellisenseで打ってても大体覚える
0689デフォルトの名無しさん2012/12/14(金) 22:01:10.61
エクリプスのインテリセンスもどきは使っててイライラする
0690デフォルトの名無しさん2012/12/14(金) 22:03:13.60
# of pagesとか書いて#をナンバーと読ませたり
0691デフォルトの名無しさん2012/12/14(金) 22:03:21.33
>>684
Intellisenseガンガン使う。
コードスニペットもよく使うよ

ロジックの本質に集中できるしいいと思うけどね
難しい漢字は書けなくても困らないけど同じようなものだと思ってる。

C#でVisual Studio以外を使うこともないだろうし
他のIDEでもauto completeはあるのが普通になってきてるんじゃない

C#とVisual Studioの組みあわせは開発生産性最強だな

>>685
GCない言語には戻れなくなりそうだな
0692デフォルトの名無しさん2012/12/14(金) 22:11:23.49
稀にメモ帳とcsc.exeでバッチを作らざるを得ないこともある
0693デフォルトの名無しさん2012/12/14(金) 22:22:05.29
便利なものは、使って効率よく書いたほうが良いと思う。
バカ丁寧にタイプしてミスするよりは、インテリセンスなど使ってタイプミス防いだほうがいい。
0694デフォルトの名無しさん2012/12/15(土) 00:09:01.08
そもそもapiのシグニチャーを丸暗記する事に価値を見いだせない
0695デフォルトの名無しさん2012/12/15(土) 00:19:03.38
C++は補完のないテキストエディタ
C#はVSでやってるけど全然気にならない

結局全ては素養に過ぎないと思います
0696デフォルトの名無しさん2012/12/15(土) 00:33:02.36
インテリセンスばりばり使っていいんですね。
安心しました。
出来る人はインテリセンス使わないで
大文字も小文字もいちいちちゃんと打ってるのかと思いました
0697デフォルトの名無しさん2012/12/15(土) 01:08:06.05
インテリセンス使うなとかいう奴は、「俺も苦労したんだからおまえもしろ」とか言い出す奴だろ。
そんなの無視して便利に使えるものは、使えばいいと思う。
0698デフォルトの名無しさん2012/12/15(土) 09:17:29.99
日本語入力ソフトなんか使うな
日本語タイプライターを使え
というのと似てる
0699デフォルトの名無しさん2012/12/15(土) 09:43:05.72
C++/CLIですが、質問させてください。
文字列比較で、
System::String ^ some;
if(some == "aaa")
みたいに==で比較することで同じ文字列かどうか判断することは可能でしょうか?
(※それともCompareを使うなどしないと問題が起きるのでしょうか?)

どなたかお慈悲を
0700デフォルトの名無しさん2012/12/15(土) 09:46:32.83
文字列の同一性を保証するには1文字ずつ比較するしかない。
CLIだろうがjavaだろうがnative C++だろうが同じことでは。
0701デフォルトの名無しさん2012/12/15(土) 10:24:48.27
例に挙げた言語は知らんが、C#は==演算子で一文字ずつ比較するから
0702デフォルトの名無しさん2012/12/15(土) 10:57:53.64
>>700
文字列の==演算子オーバーロードはC#の基本
0703デフォルトの名無しさん2012/12/15(土) 11:19:17.04
TextBoxでMultiLine=falseのとき
テキスト位置を上下の中央に表示するにはどうすればいいですか?
LabelのTextAlign=MiffleLeftのように
0704デフォルトの名無しさん2012/12/15(土) 12:05:47.32
>>700
無慈悲な回答ありがとうございます

>>701-702
了解しました。
ありがとうございました。
0705デフォルトの名無しさん2012/12/15(土) 12:08:54.12
>>699
Compareは文字コードの矛盾や問題をある程度吸収してくれる
0706デフォルトの名無しさん2012/12/15(土) 12:25:47.36
ノートパソコンだと画面が小さいから
プログラムを組むには適さないですよね?
0707デフォルトの名無しさん2012/12/15(土) 12:27:11.80
いいえ
0708デフォルトの名無しさん2012/12/15(土) 12:28:55.88
インテリセンスのせいで似た名前の別の変数を使ってしまった事もあるから
そのあたりは気をつけた方がいいとは思う
似た名前の変数名をあまり作らない、という事も含めて
0709デフォルトの名無しさん2012/12/15(土) 13:31:29.33
【速報】 韓国 「在日同胞は自民をネガキャンするためにあらゆる手段を使え!!」
http://now2chblog.blog55.fc2.com/blog-entry-6073.html
0710デフォルトの名無しさん2012/12/15(土) 13:58:58.87
自民は原発でやらかしまくりだからネガキャンするまでも無く勝手に落ちて行くだろ
民主と仲良く地獄にいけやwww
0711デフォルトの名無しさん2012/12/15(土) 14:35:20.00
でもあなた選挙権ないでしょ?
0712デフォルトの名無しさん2012/12/15(土) 15:02:24.86
>>705
補足ありがとうございます。
やっぱりCompareを使うことにします。
ありがとうございました。
0713デフォルトの名無しさん2012/12/15(土) 15:18:33.82
>>712
よく分からないなら使わない方がいいよ
メモ帳の検索機能とかならCompareの方がユーザーフレンドリーかも知れないけどね
0714デフォルトの名無しさん2012/12/15(土) 15:22:16.43
==は、基本的に参照の比較だが、C#等では、演算子のオーバーロードで
stringについては、文字列として比較できるようになっている。
0715デフォルトの名無しさん2012/12/15(土) 15:23:04.37
>>708
それはインテリセンスのせいなのかw
0716デフォルトの名無しさん2012/12/15(土) 15:33:47.71
まあ数少ない弊害の一つではあるんじゃないの?
俺も何度かやった覚えがあるよ
0717デフォルトの名無しさん2012/12/15(土) 15:36:31.14
オペレーターオーバーロード破滅への分岐点
CPPを使い物にならないゴミへと堕落させた大きな要因の一つである
0718デフォルトの名無しさん2012/12/15(土) 15:43:55.65
個人的にはユーザーの質の問題だと思っているよ
○○を使ってこそC++みたいな記事多いもん
彼らは濫用という言葉が頭に存在しないのだろう
0719デフォルトの名無しさん2012/12/15(土) 15:46:55.58
個人的にはあのくそみたいなioライブラリだけでお腹いっぱいだけどね
cstdioの方が1000万倍マシ
0720デフォルトの名無しさん2012/12/15(土) 15:47:37.04
個人的には〜
0721デフォルトの名無しさん2012/12/15(土) 16:16:11.70
個人的には今とってもうんこしたい
0722デフォルトの名無しさん2012/12/15(土) 16:47:19.13
奇遇だな、俺もだ
0723デフォルトの名無しさん2012/12/15(土) 16:51:22.95
いっぱい出たよ
0724デフォルトの名無しさん2012/12/15(土) 17:53:22.45
でもスマートポインタはオペレーターオーバーロードしてほしいよね
0725デフォルトの名無しさん2012/12/15(土) 17:56:20.61
++の話はその辺にしとけよ
0726デフォルトの名無しさん2012/12/15(土) 18:20:42.95
interfaceでoperatorを使いたいんですけど、どうしたらいいでしょうか?
0727デフォルトの名無しさん2012/12/15(土) 18:21:29.88
無理
0728デフォルトの名無しさん2012/12/15(土) 19:20:31.47
>>727
なぜでしょうか?
0729デフォルトの名無しさん2012/12/15(土) 19:22:22.76
これ以上は喋るな
この会話は「ヤツ」に聞かれてる
殺されるぞ
0730デフォルトの名無しさん2012/12/15(土) 19:34:28.20
>>728
仕様だから
あ、自分で定義した型とインターフェイス型とのoperatorなら定義できるよ
0731デフォルトの名無しさん2012/12/15(土) 19:46:35.27
インターフェイスってインスタンスメンバーのシグネチャだけ定義するものなのに、
演算子を認めたらstaticメソッドの実装が発生するじゃないか
あと多重継承されたらいちいちキャストが必要になる

必要なら拡張メソッドでやれ
0732デフォルトの名無しさん2012/12/15(土) 22:18:08.74
どなたか>>703お願いします
0733デフォルトの名無しさん2012/12/15(土) 22:19:16.92
皆さんは変数名つけるとき
プリフィックスつけますか?
0734デフォルトの名無しさん2012/12/15(土) 22:24:25.67
.netの命名規則に従う
0735デフォルトの名無しさん2012/12/15(土) 22:25:38.30
>>732
できないんじゃないの?
0736デフォルトの名無しさん2012/12/15(土) 22:35:03.86
WPF なら。覚えてないし、試してないからホントかどうかは知らん。

>A. VerticalContentAlignment プロパティを Center に設定します。
0737デフォルトの名無しさん2012/12/15(土) 22:37:12.05
>>732
オーナードローでやるしかないんじゃね
0738デフォルトの名無しさん2012/12/15(土) 22:58:38.76
そもそもMultiLineがFalseならコントロールの高さは文字の高さ+αに制限されるわけで、
中央も糞もない気がするんだけど
0739デフォルトの名無しさん2012/12/15(土) 23:01:22.51
>>732
やりたいことがなんなのかわからないけど、根本的にTextBoxの使い方間違ってんじゃないの
0740デフォルトの名無しさん2012/12/15(土) 23:03:16.05
.netのTextBoxは自由度がないんだよな・・・
0741デフォルトの名無しさん2012/12/15(土) 23:04:01.54
ああ、winformのtextboxね
WPFとかSLの方はわからんけど
0742デフォルトの名無しさん2012/12/15(土) 23:08:07.02
悩むくらいなら作っちまえ
0743デフォルトの名無しさん2012/12/15(土) 23:15:19.13
テキストボックスと同じ色のパネル(TextBoxのフェイク)を用意して好きな位置ににBorderStyle NoneのTextBoxをおけばいい
0744デフォルトの名無しさん2012/12/16(日) 01:12:10.38
テキストボックスにフォーカスがある状態でF10を押したら
テキストボックスにF10って表示したいです。
F10に限らず、全部のキーを文字列にして表示したいと思っています。
キーコードを文字列に変換するのはよいのですが、
先にフォームがイベントをうけちゃうんで、コントロールのWndProcで待っていても
F11は取れるけどF10は取れなかったりします。

どうするのがいいのかな。。
フォームのWndProcでWM_KEYDOWNを拾って、そのときのMessageのHWNDが
テキストボックスだったらF10とか表示して
そうじゃなかったら無視させればいいですか?
0745デフォルトの名無しさん2012/12/16(日) 04:08:33.04
VS2012でテスト機能が変わったのでいろいろ試してたんだけど
これ素人が使ったらpublicクラス/public・public staticメソッドしかないプロジェクトが無限に増えていきそうなんだが

ほんとにプロの人たちはこんなもん使ってるの?
0746デフォルトの名無しさん2012/12/16(日) 06:22:04.64
>>744
フォームのKeyPreview = trueは試した?
0747デフォルトの名無しさん2012/12/16(日) 07:22:37.08
>> 745
プロは便利な部分だけを自分に都合の良い様に使うことが出来る
0748デフォルトの名無しさん2012/12/16(日) 07:41:54.77
都合って例えば?
0749デフォルトの名無しさん2012/12/16(日) 07:47:53.48
リソースマネージャとか
小文字→大文字自動変換とかは便利

でも慣れるとVSなしで書いちゃってしかもそれをWebに乗せちゃう
だからVSでゴルァされるコードばかりになる
0750デフォルトの名無しさん2012/12/16(日) 09:33:44.40
>>746
KeyPreviewはfalseでやっております。
だから先にコントロールのWndProcで処理できるはずなんだけどな〜
と思っております。
いろいろ試すとF10とAltとWindowsと漢字キーあたりは似たような動きします。
F10だとアプリのメニューがオレンジ色になったり解除されたりトグル動作します。
Altも同じみたい。
Windowsキーは文字列にできるけど、その後スタートメニューが開くので
もしかするとこれらのキーはアプリの外でハンドルされてるのかな?

というわけでもう少し悩んでみます。
ありがとうございました。
0751デフォルトの名無しさん2012/12/16(日) 10:09:13.40
ProcessCmdKeyとかProcessDialogKeyとかその辺
07527032012/12/16(日) 10:15:24.96
>>743をヒントにTextBoxを貼り付けてできました
ありがとうございました
0753デフォルトの名無しさん2012/12/16(日) 10:40:11.69
m_lpszHogeFugaとかやってたねえ
0754デフォルトの名無しさん2012/12/16(日) 11:17:15.37
俺はやってない
0755デフォルトの名無しさん2012/12/16(日) 12:57:54.48
初心者

デフォルトでformclosedイベントハンドらが記述されてないでしょ。で、
this.FormClosed += new FormClosedEventHandler(Form1_FormClosed);
の記述場所なんですが下記3つの場所のどれがいいのかなと。
private void InitializeComponent(){ コード エディタで変更しないでください。とあるが?}
public Form1(string[] args){ オーバーロードしている場合全部のコンストラクタに書くの?}
private void Form1_Load(object sender, EventArgs e){ここはどうなんだ?}
0756デフォルトの名無しさん2012/12/16(日) 13:01:01.28
デザイナでやっちゃうのが正解
0757デフォルトの名無しさん2012/12/16(日) 13:03:17.37
>>755
・デザイナ上で雷マークからFormClosedイベントを選択して自動で追加
・どうしても自分で追加した場合は、
protected override void OnFormClosed(FormClosedEventArgs e)
{
base.OnFormClosed(e);
}
を追加
0758デフォルトの名無しさん2012/12/16(日) 13:04:56.18
>private void InitializeComponent(){ コード エディタで変更しないでください。とあるが?}
注意書き通り
デザイナ上で変更かけるとIDEがいじる

コンストラクタのInitializeComponent()を呼び出して戻ってきた後でいいんじゃね?
0759デフォルトの名無しさん2012/12/16(日) 13:37:49.67
コンストラクタはForm1()の外に追加し、Form1の中には+=だけ書いておくほうが見やすい
あとForm1.Closingのほうが美しい気がする

という夢を見たw
0760デフォルトの名無しさん2012/12/16(日) 13:54:13.53
>>755
ShowDialog()するのでなければ基本的にどこでもお好みで。
そんなことに悩むのは時間の無駄。

そもそもOnFormClosedをオーバーライドすればそんな下らないことを考えずに済む。
07617552012/12/16(日) 14:30:28.34
うおおお
>>756-760
いままでずっとイベントハンドラでやってたわ

OnFormClosedをオーバーライドでやってみるといいね

みなさんありがとう
0762デフォルトの名無しさん2012/12/16(日) 15:38:48.75
初心者スレと分ける必要あるのか
0763デフォルトの名無しさん2012/12/16(日) 16:09:25.51
何をいまさら
0764デフォルトの名無しさん2012/12/16(日) 16:27:45.75
荒れてない方をメインで使うんだろ
0765デフォルトの名無しさん2012/12/16(日) 16:28:05.51
たしかにw
0766 忍法帖【Lv=37,xxxPT】(1+0:5) 2012/12/16(日) 20:42:52.83
t
0767 忍法帖【Lv=39,xxxPT】(1+0:5) 2012/12/18(火) 15:32:37.52
tt
0768 忍法帖【Lv=39,xxxPT】(1+0:5) 2012/12/18(火) 21:22:15.83
ttt
0769デフォルトの名無しさん2012/12/18(火) 21:56:41.85
VS2012 Express for Desktopで、拡張子が(.config)の
"Application Configuration File"の中で必ずWarningが出ます。

xxx.configファイルを追加した場合に、エラー(Warning)が出る人(出ない人)いますか?

環境はUpdate1は適用済みのVS2012 Expressで、
NuGetはEntity Frameworkくらいしか入れていません。


Add New Itemで、"Application Configuration File"を追加すると
App1.configファイルが作成されます。
これを開くと、<configuration>のところにwarningが出て、そのメッセージは

The 'configuration' element is not declared.

追加された.configファイルの中身は3行だけです。2行目にWarningが出ます。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
</configuration>
0770デフォルトの名無しさん2012/12/18(火) 21:57:08.27
【嫌儲プログラミング部】 C#でネイティブアプリの開発が可能に!ポトペタもできる!C++厨憤死www
http://engawa.2ch.net/test/read.cgi/poverty/1355832436/
0771デフォルトの名無しさん2012/12/18(火) 22:04:15.11
マルチポストするときは他の投稿先を明記するのがマナー
0772デフォルトの名無しさん2012/12/18(火) 22:08:10.17
>>771
このスレに書き込む前に取り消してきたからマルチポストじゃないよ

http://toro.2ch.net/test/read.cgi/tech/1355591507/21
0773デフォルトの名無しさん2012/12/18(火) 22:11:14.78
答えはそっちに書いた。よく英文を読めよ。そのままだろうが。
0774デフォルトの名無しさん2012/12/18(火) 22:14:08.60
>>770
ネイティブなの?
.NET の仮想マシンなんじゃないの?
0775デフォルトの名無しさん2012/12/18(火) 22:16:39.97
>>773
大間違いだから中学校からやり直してこい
0776デフォルトの名無しさん2012/12/18(火) 22:18:56.96
中間コードをネイティブにコンバートするだけだろ
そんなんだいぶ前からうちにあったし
0777デフォルトの名無しさん2012/12/18(火) 22:19:18.66
だいいちワーニングはエラーじゃないしw
0778デフォルトの名無しさん2012/12/18(火) 22:24:55.51
>>777
ワーニングじゃなくてウォーニングだし
0779デフォルトの名無しさん2012/12/18(火) 22:30:24.67
>>778
>>778
>>778
0780デフォルトの名無しさん2012/12/18(火) 22:32:53.68
競走馬じゃないし
0781デフォルトの名無しさん2012/12/18(火) 23:48:57.08
データ格納用のクラスに、string型の配列をクラス内に2つ宣言して、
外のクラスから、配列のようにアクセスすることってできないんでしょうか?

private string[] names;
private string[] ids;

public string[] this{
get { // 処理 }
set { // 処理 }
}


こうやってインデクサを2つ作ると、エラーが出ます・・・
0782デフォルトの名無しさん2012/12/19(水) 00:02:25.70
エラーはなんてでてるの?
0783デフォルトの名無しさん2012/12/19(水) 00:03:18.19
コマンドまたはファイル名が違います。
0784デフォルトの名無しさん2012/12/19(水) 00:06:39.43
そもそもインデクサの書き方を間違えている。

public string this[int i]{
  get{
    return names[i];
  }
  set{
    names[i] = value;
  }
}
■ このスレッドは過去ログ倉庫に格納されています