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

ふらっとVisual C#,C♯,C#(初心者用) Part111

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2014/04/05(土) 22:08:28.72ID:l3iN8hNI
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

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

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

■前スレ
ふらっとVisual C#,C♯,C#(初心者用) Part110
http://toro.2ch.net/test/read.cgi/tech/1388377636/

■関連スレ
C#, C♯, C#相談室 Part82
http://toro.2ch.net/test/read.cgi/tech/1386763696/

■コード貼るなら↓使ってください
http://ideone.com/
0153デフォルトの名無しさん2014/04/22(火) 23:27:01.60ID:COSeIpGW
アンセーフなコードが書ける
どんどん差がなくなってきてる
最近は真面目にそれぐらいしか差がない
0154デフォルトの名無しさん2014/04/22(火) 23:28:38.63ID:w4l4IAka
Roslynの登場でさらに差は縮まる
C#,VB.NETの両方読めるようにしとくと情報が見つけやすい
0155デフォルトの名無しさん2014/04/22(火) 23:30:33.98ID:qzRdlrJo
>>152
C#でプログラミングする必要はないが、C#が読めるようになると世界が広がる
C#が読めれば数々のオープンソースプロジェクトのソースが読めるしJavaも読める
また、一般にWebに転がってるC#の情報はVBより品質が高い
C#に無い機能は即ちVBでも使ってはいけない機能なので、それが分かっていれば実際使うのがVBだとしても高品質なコードが書けるようになる
0156デフォルトの名無しさん2014/04/22(火) 23:33:58.18ID:kADKmax/
VB.NetはデフォだとVB6時代の悪しき慣習を引き継いでいるからなぁ
フォームのシングルトンインスタンスにクラス名でアクセス出来るのとかまだあるんだっけ?
0157デフォルトの名無しさん2014/04/22(火) 23:34:08.54ID:kRq+wL8H
ありがとん
0158デフォルトの名無しさん2014/04/22(火) 23:34:09.41ID:COSeIpGW
大事なことを忘れていた
情報検索がしやすいメリットは大きいね
下手くそなコード書く人が少ないのも助かる
0159デフォルトの名無しさん2014/04/22(火) 23:35:12.43ID:kRq+wL8H
とりあえずVBと併せてC#もやってみます
0160デフォルトの名無しさん2014/04/23(水) 00:41:08.86ID:3zL5Y6EA
>>152
結局出来ることはほとんど違わないけど、VBのラムダ式とかジェネリックとか
AddressOf...とかの冗長さにイラっとしてるならそれから解放される。

あと、このスレでもそうだけどVBに偏見持ってる人は少なくないから、
メンタル的にはその辺も大きいねw
0161デフォルトの名無しさん2014/04/23(水) 00:45:47.04ID:JkkhAF2N
っていうか、コード書いてみて初めて分かる細かい違いは実は結構あるけど、
移行っていうほど大げさなもんじゃない。

VBが普通に書けるなら1週間でC#もスラスラ書けるようになるはず。
0162デフォルトの名無しさん2014/04/23(水) 01:02:34.08ID:Jwmg0nMc
>>160
偏見じゃなくて公式だ
MS自身がが先陣切ってVBerを馬鹿にしてるからなあ
0163デフォルトの名無しさん2014/04/23(水) 01:14:29.84ID:moWamiRQ
>>162
公式だから偏見じゃないとはちょっと…

自分もVBからC#に移ったが、情報やサンプルの多さは本当に助かってる
職場ではVBA使うからたまに混乱するが
0164デフォルトの名無しさん2014/04/23(水) 01:57:22.43ID:oEVDmUMc
>>160
偏見ってたとえば?
0165デフォルトの名無しさん2014/04/23(水) 03:45:53.21ID:L+2rWq+F
>>164
MS自身がが先陣切ってVBerを馬鹿にしてる とか
0166デフォルトの名無しさん2014/04/23(水) 07:03:44.22ID:aQjOrdcV
VB.NETは数値計算とか例外処理で旧VBの仕様を引きずっているのでILが汚い
機能が同等だとしてもあえて選ぶ意味は無い
0167デフォルトの名無しさん2014/04/23(水) 07:27:58.18ID:B15hE1J5
決裁権持ってる奴はいまだにBASIC(とPHP)は学習コストが低いと思ってるから
あるいは元VBerで信仰心があったり

公平な選択なんて有り得ないんですよ
例えそれが自分の首を締めても
0168デフォルトの名無しさん2014/04/23(水) 08:23:37.10ID:x9LZX8vX
別にできることはたいして変わらないんだから、好きな方使えばええやんか
0169デフォルトの名無しさん2014/04/23(水) 08:38:33.73ID:Wz2QSiNm
VB使ってると自分の将来が不安になる
0170デフォルトの名無しさん2014/04/23(水) 09:30:35.84ID:oEVDmUMc
VBはStrConv使える
0171デフォルトの名無しさん2014/04/23(水) 10:12:07.52ID:8Svp1K2C
偏見持ってるのは一般人も同じじゃね?
VBで作るって言うと遅くなるとかバカにされるけど、C#で作るって言うと安心するとか尊敬される
知らない人ほど「Basicって名前は遅くてCって名前は速い」と思ってるから性質が悪い
0172デフォルトの名無しさん2014/04/23(水) 12:43:00.67ID:To415BTT
VC#で新しくプロジェクト作ったりしたら
static void Main(string[] args)
{
}
見たいになってるけど、デフォルトで
static void Main(string[] args) {
}
こうするように出来ますか?
0173デフォルトの名無しさん2014/04/23(水) 12:54:41.59ID:Wav400Iz
VSのメニューの「ツール」→「オプション」→「テキストエディター」→「C#」→「書式設定」→「改行」

少なくともうちのExpressちゃんだと
0174デフォルトの名無しさん2014/04/23(水) 13:02:10.40ID:To415BTT
>>173
ありがとうございます
0175デフォルトの名無しさん2014/04/23(水) 13:14:45.44ID:HlzGISme
C#でつくられたDLLを使うときにVBだと
outのやつとかうまく行かない時ある
0176デフォルトの名無しさん2014/04/23(水) 17:00:14.97ID:gE6F061n
VBで作られたDLLをC#から呼ぶとき
インデックスつきプロパティとかどうすんだろ
0177デフォルトの名無しさん2014/04/23(水) 18:38:59.62ID:hEaBYDdC
VB.NetがC#より打鍵量が多いのも、コンパイル後のサイズが大きいのも、
パフォーマンスがC#より悪いのも、ヘルパーメソッド由来の妙なバグがあるのも全部事実であって偏見ではない
0178デフォルトの名無しさん2014/04/23(水) 20:26:11.53ID:TDgs+IDt
VB の癌は Module
MS にはとっとと切り捨てて欲しい

>>176
get_プロパティ名(インデックス)、set_プロパティ名(インデックス, セット値) でいける
0179デフォルトの名無しさん2014/04/23(水) 22:13:30.39ID:Wvay+xfF
>>170
VBのメリット、これしか見つからないな。
0180デフォルトの名無しさん2014/04/23(水) 22:17:47.88ID:9b5aah45
まあStrings.StrConvメソッドはC#からでも使えるんだけどな
0181デフォルトの名無しさん2014/04/23(水) 22:38:48.86ID:aQjOrdcV
Microsoft.VisualBasic.dllだとFileLogTraceListenerを一番よく使う
0182デフォルトの名無しさん2014/04/23(水) 23:05:07.94ID:gnPWMjpt
>>179
そんなことはないと思うが、2008の頃からは何を書くにもとにかく冗長という
欠点ばかりが目立つようになってしまった。
0183デフォルトの名無しさん2014/04/23(水) 23:30:13.86ID:aQjOrdcV
昔からReadOnly PropertyとかAddHandler, AddressOfとかDirectCastとかそんな感じだったでしょ
リフレクション多用するライブラリが増えてきて表面化しただけじゃないの
自動実装プロパティもC#にしかない時期だし
0184デフォルトの名無しさん2014/04/23(水) 23:30:18.44ID:O6CdnXOc
allocconsole だな
0185デフォルトの名無しさん2014/04/23(水) 23:32:30.95ID:Jwmg0nMc
>>182
2008からはVBチームがVB嫌いのヘジたんの傘下に入ったからね
0186デフォルトの名無しさん2014/04/23(水) 23:59:59.59ID:20pXoq+z
>>170
バグ生産機を使うなバカ
0187デフォルトの名無しさん2014/04/24(木) 01:31:15.85ID:ql05jL4b
>>186
すまん軽率だった
これ見て使ってしまう奴が居ないとも限らんしな
0188デフォルトの名無しさん2014/04/24(木) 20:30:02.51ID:4wdRys5m
MessageBoxIconに自分の用意したbitmapを表示させるにはどうしたらいいですか?
0189デフォルトの名無しさん2014/04/24(木) 20:44:58.88ID:YxnFmXEY
無理

それっぽいフォームを自分で作る
文字列を描画したときのサイズを計算してフォームの大きさ変えたりとか楽しいぞ
さあ作れ
0190デフォルトの名無しさん2014/04/24(木) 20:58:57.16ID:nZNRS/HT
無理ってことはないと思うけど自作した方が早いね。
そうでなくてもOS標準のはモーダルにしか出来ないしいろいろ使いづらい。
0191デフォルトの名無しさん2014/04/24(木) 21:15:44.44ID:DE2OqBZn
カーソルがピタット止まって気持ち悪い
0192デフォルトの名無しさん2014/04/24(木) 21:20:16.41ID:DE2OqBZn
誤爆った

public struct A{
public static string str;

public struct B{
public static string str_b1;
public static string str_b2;
}

public class Class{
public string c_str;
}
public static Class C = new C();

public static Class[] D = new D[2]{
new D(),
new D()
};
}

こんな構造体があるとして

A.B.str_b1;
A.B.str_b2;
A.C.c.str;
A.D[0].c_str;
A.D[1].c_str;

foreach的な感じで値取得ってできない?
0193デフォルトの名無しさん2014/04/24(木) 21:20:46.50ID:YxnFmXEY
>>190
無理ってことはないと思うならやってみろよハゲ
ちなみにあれMessageBox APIを呼んでるだけなんすよヅルムケが
0194デフォルトの名無しさん2014/04/24(木) 21:35:37.91ID:FFtq7Y66
>>193
正直、お前さんみたいな馬鹿丸出しな奴は相手にしたくない人種なんだが。

恐らくこれと同じ手法でいける。
http://msdn.microsoft.com/en-us/library/ms996463.aspx
0195デフォルトの名無しさん2014/04/24(木) 21:37:47.16ID:YxnFmXEY
>>192
それらの静的フィールドをyield return で返すIEnumerable<strign>なプロパティを書けばできるけど
意味があるかどうかはおいといて
つかそれ構造体の意味なくね?
0196デフォルトの名無しさん2014/04/24(木) 21:41:48.71ID:YxnFmXEY
>>194
すこしは自分でコード書いてみたら?
同じ手法でいけるって……全然試してないでしょあなた
0197デフォルトの名無しさん2014/04/24(木) 21:43:57.76ID:vQpzgEp0
>>192
foreach使うための、インターフェースの実装はわかりますよね?
あとは、イテレータ使えばできるはずです。
0198デフォルトの名無しさん2014/04/24(木) 21:49:14.36ID:VsJIW2Qh
>>196
馬鹿だろお前。
だったらてめえでやれ馬鹿。
0199デフォルトの名無しさん2014/04/24(木) 22:02:34.00ID:dPj9fjlZ
メッセージボックスもウインドウだから、フックかければ改造はできる。
ただ、意味はないからやらないだけだ
0200デフォルトの名無しさん2014/04/25(金) 15:25:09.99ID:IiOsF4m2
昔はC#からEXCEL呼ぶのがとてつもなく面倒だったから、VB使う余地があったんだけどね
0201デフォルトの名無しさん2014/04/25(金) 20:53:42.84ID:1OgLRHsj
>>200
オートメーションは今でもVBの方が向いてるよ。
Option Strict Offの唯一の見せ場といってもいいぐらい
0202デフォルトの名無しさん2014/04/25(金) 20:59:41.66ID:H8Us4HAR
>>201
つdynamic
0203デフォルトの名無しさん2014/04/25(金) 21:05:02.54ID:OpA3+M3d
dynamicとオプション引数でもう完全に遜色なくなったねー
0204デフォルトの名無しさん2014/04/25(金) 21:10:59.66ID:H8Us4HAR
あとrefパラメータへの値渡しな
0205デフォルトの名無しさん2014/04/25(金) 21:18:49.00ID:E6t4nrBH
>>202-203
いや、例えばRange.Valueをdoube[,]として出し入れする、なんて芸当はVBしかできない。
0206デフォルトの名無しさん2014/04/25(金) 21:27:17.50ID:BeYqZeZk
それエラーチェックをサボってるだけでは
0207デフォルトの名無しさん2014/04/25(金) 22:19:49.65ID:+sbVSSo6
激しくどうでも良いことだけど、Excel形式で出力するライブラリは沢山あるのに
Word形式で出力できるライブラリが殆ど無いのが納得いかない。
0208デフォルトの名無しさん2014/04/25(金) 22:32:43.08ID:v98LkHcr
2とか知らないけど発売してるの
0209デフォルトの名無しさん2014/04/25(金) 23:05:26.63ID:K/dO+JDF
そろそろ初心者から脱出したいんですけど、どういうアプリを作ればいいでしょうか?
連番画像ダウンローダー、目覚ましなどは作りましたが、次に作るものが思い浮かばないです・・・
0210デフォルトの名無しさん2014/04/25(金) 23:15:10.41ID:BeYqZeZk
IQueryable
0211デフォルトの名無しさん2014/04/26(土) 01:10:31.85ID:L7zgrAvH
C#って何が出来れば上級者なの?
0212デフォルトの名無しさん2014/04/26(土) 01:12:25.53ID:EJb9DXTR
作りたい物をきちんと作れるなら
0213デフォルトの名無しさん2014/04/26(土) 01:41:03.89ID:fIjhv7f7
>>209
擬似ウイルス
0214デフォルトの名無しさん2014/04/26(土) 07:48:18.18ID:tBhXDM1B
足し算する計算機を作った
俺はもうC#上級者
0215デフォルトの名無しさん2014/04/26(土) 09:57:25.18ID:6xIFFq9Q
>>209
画像レタッチソフト
0216デフォルトの名無しさん2014/04/26(土) 12:06:32.30ID:we+cBXG7
>>209
マクロにC#を使える軽量高機能テキストエディタ
0217デフォルトの名無しさん2014/04/26(土) 12:39:09.88ID:4Y2pKqPs
/// <summary>
/// 指定したmdbファイルに対してSQLを実行します。
/// </summary>
/// <param name="sql">実行するSQL文です</param>
/// <param name="dataSource">mdbファイルの絶対パス</param>
/// <returns>0:正常終了 1:dataSource未設定 2:SQL文がない -1:システムエラー</returns>

こういうコメントを、関数仕様書のようにまとめる事ができる
お勧めツールはありますでしょうか?
0218デフォルトの名無しさん2014/04/26(土) 12:51:59.56ID:Qdi0GyvQ
以下、たかがサンプルに対する本筋から逸れたどうでもいい突っ込みをどうぞ↓
0219デフォルトの名無しさん2014/04/26(土) 13:04:22.85ID:EJb9DXTR
>>218
1つの関数にopenからsql実行まで全部いれないでもうちょっと別けろよ
0220デフォルトの名無しさん2014/04/26(土) 13:14:14.44ID:yjIemKHI
Sandcastle
0221デフォルトの名無しさん2014/04/26(土) 13:26:01.94ID:Fm5sej5/
returnsの書き方に違和感
0222デフォルトの名無しさん2014/04/26(土) 13:49:19.87ID:4Y2pKqPs
>>219
openからsql実行まで一連の処理を一つの関数にまとめていると
何か不都合が出てくるのでしょうか?

なるほど、という不都合が。
0223デフォルトの名無しさん2014/04/26(土) 15:32:06.24ID:rj2lEW1Q
エラーなら例外使うべきだな
0224デフォルトの名無しさん2014/04/26(土) 15:36:25.19ID:Qdi0GyvQ
どうですか?
笑えないほど予告通りですね
0225デフォルトの名無しさん2014/04/26(土) 15:38:21.79ID:ZzzaXJVH
むしろチミが召喚したという
0226デフォルトの名無しさん2014/04/26(土) 16:28:10.91ID:we+cBXG7
>>220で答え出てた

>>222
File.ReadXXXなんかもあるし、これで全部賄おうって話じゃなけりゃ問題ないでしょう
それより処理結果をintで返すのは誰に教わったの?そいつぶん殴ったらいいよ
処理結果なんて誰も見ない
SQLがnullだった場合?呼び出す側はこれnullかも・・・って思いつつ呼び出さないよな、だったら事前チェックするから
想定してないのにnullって言われてもどうしようもない
だから対処できるメソッドまで例外を投げるんだよ、回復とか通知とか出来るところまで
ArgumentNullExceptionを投げるようにして、例外説明用のタグもあるからそれ使おうか
0227デフォルトの名無しさん2014/04/26(土) 16:32:22.76ID:lFCRVMF1
SQL実行しといて行数すら返さないってINSERT専用なの?
0228デフォルトの名無しさん2014/04/26(土) 16:42:25.86ID:Cr6T5VXg
おしっこも出るよ(´・_・`)
0229デフォルトの名無しさん2014/04/26(土) 17:17:16.99ID:Gwme6n+H
>>226
>処理結果なんて誰も見ない

それを言うなら、呼び出したメソッドが例外投げるなんて「誰も想定しない」
とも言えるわけでどっちもどっちだと思うよ。

むしろエラーコード方式の方が、そのメソッドではエラーが発生しうることをコード上で
明示できる分優れているとすら言える。

ただ>>217はエラーコードに今時マジックナンバーを使ってる点は問題。
そこはenumか例外オブジェクトを返すようにした方がいいと思う。
0230デフォルトの名無しさん2014/04/26(土) 17:36:23.19ID:19vcZYji
C#に限った話ではないのかもしれないけど

静的ではないクラスの中に定義したメソッドは
そのクラスのインスタンスを作成するたびに メモリ上に展開されるの?

だとしたら
主にデータを保持するために使うクラスには出来る限りメソッドを定義しないようにして
メソッドはそれを提供する専用のクラスに分割して書いたほうが良いの?

インスタンスの量が増えてくるとメモリの使用量が気にならないかなぁ・・・と
まぁC#でメモリの使用量なんて気にしても仕方ないのかもしれませんがよろしくお願いします.
0231デフォルトの名無しさん2014/04/26(土) 17:40:40.90ID:9En+Yllw
ポインタしかもたんだろ
0232デフォルトの名無しさん2014/04/26(土) 17:41:26.63ID:lFCRVMF1
んなわけないだろ
0233デフォルトの名無しさん2014/04/26(土) 18:00:36.35ID:oIIaUmxU
OOP言語(というか実行環境か)でインスタンスごとに独立した実行コードが
割り当てられるような間抜けな実装してるものなんてあるのか?

誰が考えてもありえない話としか思えないが
0234デフォルトの名無しさん2014/04/26(土) 18:04:16.55ID:Qdi0GyvQ
vtableでくぐれ
0235デフォルトの名無しさん2014/04/26(土) 18:14:29.64ID:lFCRVMF1
CLRではメソッドテーブルだ
0236デフォルトの名無しさん2014/04/26(土) 18:26:31.95ID:NVDEc6dD
>>217
ためしにDoxygen
0237デフォルトの名無しさん2014/04/26(土) 20:31:07.43ID:+q1cG7mf
>>229
例外オブジェクトを返す?本気?
0238デフォルトの名無しさん2014/04/26(土) 20:34:09.18ID:GZ073aKT
C#でTwitterクライアントを作りたくて検索したんですが情報が古かったりして出来ません

オススメや参考にしたサイト等あれば教えてください、お願いします
0239デフォルトの名無しさん2014/04/26(土) 20:37:36.64ID:lFCRVMF1
そのライブラリーはIDが64ビット化したのに対応してないんじゃない?
0240デフォルトの名無しさん2014/04/26(土) 20:42:52.62ID:7/lzVZ3W
>>237
例外オブジェクトの存在価値が投げられること、ただそれだけだ思ってるのならただの固定観念。
0241デフォルトの名無しさん2014/04/26(土) 21:15:39.82ID:lFCRVMF1
投げないならExceptionより軽量高速で誤解を招かない選択肢が一杯ある
0242デフォルトの名無しさん2014/04/26(土) 21:21:36.37ID:iOeXFZ4R
中学生か。
そういう批判のための批判なら要らない。
軽量かどうか、誤解を招くかどうか、どちらもそれが例外オブジェクトかどうかとは無関係。
0243デフォルトの名無しさん2014/04/26(土) 21:26:28.10ID:lFCRVMF1
あえて使う理由は何?と聞いてるんだけど
0244デフォルトの名無しさん2014/04/26(土) 21:31:09.99ID:L2eR/wTD
あえて例外オブジェクトを使えなんてどこに書いてある。
俺はマジックナンバーではなくenumか例外オブジェクトを返せと書いた。
要するにただ「使える」と言ってるだけだ。

2chで言ってもしょうがないが本当中学生じみた幼稚な奴だな。
0245デフォルトの名無しさん2014/04/26(土) 21:39:05.02ID:sw3OTzY3
例外オブジェクトを戻値にする場合って呼び出し側でどうやってハンドリングするの?
Go言語みたいにするの?
0246デフォルトの名無しさん2014/04/26(土) 21:43:07.54ID:lFCRVMF1
>>244
じゃあ聞くけどマジックナンバーと比較して例外を使うのの何が優れてると思ってるの?
型検査になるから列挙型のように選択肢も絞れないし、動作もマジックナンバーより遅いし
基本エラーを表す型しかないから成功のステータスを細分化できないんだけど

エラーメッセージが付加できる点ぐらいしかメリットがないと思うよ
0247デフォルトの名無しさん2014/04/26(土) 21:49:55.75ID:yjIemKHI
おとなしく例外を投げろよ
SQLの実行が100%成功するわけないことぐらい誰でもわかるだろ
0248デフォルトの名無しさん2014/04/26(土) 21:53:17.85ID:UjMxSJz5
エラーコードは戻り側で無視したらそこでおしまい
例外ならば(例外を食ったりしなければ)普通最上位までまき戻る
あと例外を階層的にクラスで扱えばいろいろ便利だね http://ideone.com/Q5h8n1#li_GQnaUK
C++、Java でも例外をとりいれているし、

エラーコードなんて過去の遺物じゃないかな
0249デフォルトの名無しさん2014/04/26(土) 21:58:49.85ID:Qdi0GyvQ
ここまで燃えるとは予想外ワロタ
0250デフォルトの名無しさん2014/04/26(土) 22:09:27.96ID:2szqXR0/
>>248
よくある議論だけど、最初から言ってるように、戻り値(エラーコード)ではなく
例外機構を使ったからって、呼び出し側がエラーを想定しなかった場合のリスクに違いはない。

上位まで戻るって、意図的にそうした場合は別として、そうでない場合に
想定されてない例外に対して適切な回復処理なんか出来るわけないでしょ。
0251デフォルトの名無しさん2014/04/26(土) 22:19:49.67ID:2szqXR0/
突っ込まれる前に言っとくけど、例外を投げることの利点はプログラムを
強制終了させるパワーを持っていることで、だから回復不可能なエラー発生時には
積極的に例外を投げる意味があるけど、それ以外の場合は本来別に例外を投げることに
固執する意味なんてたいしてないんだよね。

むしろエラーコード方式だと他の値が返せなくなるからという程度の理由しかない。
0252デフォルトの名無しさん2014/04/26(土) 22:31:03.25ID:yjIemKHI
詳しいエラーメッセージをのせられない
追加情報をのせられない
おきた場所のスタックトレースが取得できない
InnerExceptionみたいのができない
エラーの発生しうるメソッドを実行するたびに戻り値を確認する必要がある
回復可能なエラーで失敗を想定しないと停止されないので、そのまま適切でない処理が続行される危険がある

とか
■ このスレッドは過去ログ倉庫に格納されています