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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/04/12(木) 23:14:25
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

前スレ: ふらっとC♯, C#(初心者用) Part14
http://pc11.2ch.net/test/read.cgi/tech/1172662746/
0002デフォルトの名無しさん2007/04/12(木) 23:15:31
Visual C# Express Edition (無料)ダウンロード
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

.NET Framework SDK (2.0)
http://msdn2.microsoft.com/ja-jp/library/ms310244.aspx

MSDN Visual C# Express Edition フォーラム
http://forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
http://vsug.jp/

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html

宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
.NET のつぼ
http://park16.wakwak.com/~mimi/dotnet/top.html
0003デフォルトの名無しさん2007/04/12(木) 23:16:10
Borland C#Builder2006
http://www.borland.com/jp/products/csharpbuilder/index.html

Turbo C#
http://www.turboexplorer.com/csharp

.NET Framework 1.1 製品ドキュメント
http://www.microsoft.com/japan/msdn/library/ja/netstart/html/sdkstart.asp

---

MSDNライブラリ 2006年6月版
http://www.microsoft.com/downloads/details.aspx?FamilyID=373930cb-a3d7-4ea5-b421-dd6818dc7c41&DisplayLang=ja

MSDNをローカルで見れる。
0004デフォルトの名無しさん2007/04/13(金) 03:14:27
なんだかよくわからないけど、>>1乙
0005デフォルトの名無しさん2007/04/13(金) 03:17:20
ttp://www.atmarkit.co.jp/fdotnet/easyvs2nd/easyvs2nd01/easyvs2nd01_01.html
第1回 初めてのVisual Studio 2005
↑
ハローワールドなボクですがこれくらいはできました。
0006デフォルトの名無しさん2007/04/13(金) 17:37:16
TabControlのページにWebBrowserを表示させています。
よくあるタブブラウザです。

タブを選択したとき、WebBrowserがマウスウィールで動くようにしたいん
ですが、どうしたらいいでしょうか?

SelectedイベントでWebBrowserにFocus()してもうまくいきません。

お願いします。
0007デフォルトの名無しさん2007/04/13(金) 23:07:21
.NET Framework 1.0/1.1のListViewコントロールでは
MFCのCListCtrl::SetItemCountのように、リストにあらかじめ
アイテム数を設定しておくようなメソッドは無いのですか?
0008デフォルトの名無しさん2007/04/14(土) 02:45:53
>>7
それでどうなるのか知らんが、空文字列の ListViewItem でも突っ込んどけばいいんじゃね
0009デフォルトの名無しさん2007/04/14(土) 11:19:51
>>8
本格的にやるなら仮想リストを使うべきだが
そうしなくても
大量にアイテムを挿入するときに速くなる。
0010デフォルトの名無しさん2007/04/14(土) 11:48:32
意味がわからない。
普通に考えて早くなる理由がないと思うんだが。。

SetItemCountでググってみてもそのように書いてあるところが見つかるし。
0011デフォルトの名無しさん2007/04/14(土) 17:56:18
大量に挿入したい時は AddRange か BeginUpdate 使っとけ。
0012デフォルトの名無しさん2007/04/14(土) 19:34:00
10件まとめて設定するのは遅いけど
1000件まとめて設定するのは速いんだよ






いやまじで
0013デフォルトの名無しさん2007/04/14(土) 21:20:13
ThreadStateがSuspentedのスレッドをAbortメソッドで終了させようとすると例外が発生します
中断中のスレッドを終了させる場合、どんな手段が適切でしょうか
0014デフォルトの名無しさん2007/04/14(土) 21:23:21
なんでサスペンドなんかさせてるわけ?
0015デフォルトの名無しさん2007/04/14(土) 21:25:02
適切な方法はAbortなんか使わずに強調的におだやかに終了すること。
ただまあ、場合によっては強制終了させざるをえないこともあるので、
そういう場合は仕方なくAbort。

それ以外のサスペンドとか、そんなものはそもそも使わない。

0016デフォルトの名無しさん2007/04/14(土) 21:25:34
強調的>協調的
0017デフォルトの名無しさん2007/04/14(土) 22:03:17
while(true)
{
 this._CntA++;
 this.textBox1.AppendText(this._CntA + "回目のThreadA" + "の出力です。\n");
 Thread.Sleep(600);
}

こんな感じのメソッドを回していました
あと、トグルスイッチ風ボタンでスレッドを止めたり動かしたりしたかったのでサスペンドを使いました
0018デフォルトの名無しさん2007/04/14(土) 22:11:54
タイマの方が適してる用途のような気が。。
0019デフォルトの名無しさん2007/04/14(土) 22:21:48
あああ、もしかしてすごい勘違いをしていたかもしれない
メインスレッド(フォーム?)からスレッドAとスレッドBを起動したとして、
スレッドA,Bが動作中にユーザがフォームを閉じたとしても、
Closingイベントにスレッド終了コードのようなものは書かなくてもいいのかな?
0020デフォルトの名無しさん2007/04/14(土) 22:24:56
スレッドがバックグラウンドならね。
っていうか、そんなことも知らずにスレッド使ってるのか。
キチガイに刃(
0021デフォルトの名無しさん2007/04/14(土) 22:34:20
スレッド自体は最終的に自動終了されるが、
そもそも閉じたら動いちゃいけない処理とかもあるでしょ、大抵は。
※そりゃほんとに大丈夫ってこともないこたないが、普通は適切な条件で終了するようにする。

ていうかよ>>17なんて突っ込んだらいいのか…
0022デフォルトの名無しさん2007/04/14(土) 22:36:47
あと、スレッドの操作はなるべく
同期用「オブジェクトなどを使って自立的に行うべき。
どうしようもない場合は仕方ないが。
0023デフォルトの名無しさん2007/04/14(土) 22:37:00
>>21
日本語書けよ
002462007/04/15(日) 02:33:52
すいません。
どなたかお願いします。
いまだにできません。
0025デフォルトの名無しさん2007/04/15(日) 11:58:15
>>24
プロジェクトUP
0026デフォルトの名無しさん2007/04/15(日) 13:15:26
>>24
なんかできる時とできない時あるな…
ちなみに Selected イベントじゃなく SelectIndexChanged な。
0027デフォルトの名無しさん2007/04/15(日) 13:54:49
それ以前に、言っちゃ悪いけど>>6の日本語には問題あるだろ。
マウスウィールは良いとしても、「WebBrowserが〜動く」っていうのは
どういう状態のことを差してるんだよw

基本的に、人語すら正確に操れない奴が融通利かねえマシン相手の言語を
使えるわけがないと思う。
0028デフォルトの名無しさん2007/04/15(日) 13:58:31
輪路他
0029デフォルトの名無しさん2007/04/15(日) 16:48:42
ある関数を変数配列にいれて、関数を引数にする関数とかで使いたいんですがEventHandler()とか
関数の配列宣言って具体的にどうやるんでしょうか?教えてください。
0030デフォルトの名無しさん2007/04/15(日) 16:51:47
delegate void Func();
Func[] func;
0031292007/04/15(日) 16:55:26
ありがとうございます
0032速報+2007/04/15(日) 17:23:59
ニュース満載 "速報+" 板

ニュース速報+ 板
http://news22.2ch.net/newsplus/
芸能音楽スポーツ速報+ 板
http://news21.2ch.net/mnewsplus/
東アジアニュース速報+ 板
http://news21.2ch.net/news4plus/
ビジネスニュース+ 板
http://news21.2ch.net/bizplus/
科学ニュース+ 板
http://news21.2ch.net/scienceplus/
0033デフォルトの名無しさん2007/04/15(日) 18:51:00
壁紙の変更の方法教えて下さい
ググッたけど見つからなかったもので
0034デフォルトの名無しさん2007/04/15(日) 18:57:09
>>33
俺がググったらすぐ見つかった。ググり直せ。
0035デフォルトの名無しさん2007/04/15(日) 19:10:44
>>33
「C# 壁紙の変更」でググッたら見つかるが?
0036デフォルトの名無しさん2007/04/15(日) 19:18:24
>>34
>>35
ググったけどよくわからん
C++のSystemParametersInfo(SPI_SETDESKWALLPAPERのC#版教えて
0037デフォルトの名無しさん2007/04/15(日) 19:18:32
見つかったなら、ここに貼れよ。愚図。
0038デフォルトの名無しさん2007/04/15(日) 21:18:06
http://www.google.com/codesearch?q=SystemParametersInfo+lang%3Ac%23

ググれとしか…
0039デフォルトの名無しさん2007/04/16(月) 01:53:37
質問です。
DataGridViewの全セルのサイズ(縦、横)を揃えたいのですが、
コード上でどのように設定すればよいのでしょうか?
碁盤目状のものを作りたいのですが、ご存知の方がおりましたら
よろしくお願いします。
0040デフォルトの名無しさん2007/04/16(月) 12:34:52
C#2005 ExpressEditionのフォームデザイナで、メニューを追加し、
メニューの項目を日本語で設定すると、関連するイベントハンドラの
名前などもコード上に日本語で生成されますね。
英語圏なら問題ないでしょうが、これはある意味バグですね。
しかし、メンバ名が日本語でもコンパイルできるんですね。驚いた
0041デフォルトの名無しさん2007/04/16(月) 12:41:58
そこまでして人に構ってもらいたい自分が嫌にならないとしたらおめでたい奴だな。
0042デフォルトの名無しさん2007/04/16(月) 13:16:43
MaskedTextBoxで全選択状態(反転表示)を実現しようと
模索しております。色々なサイトを検索してGot Focusイベント
にてSelectAllを使用すれば実現出来る事は確認しました。

しかし、Got Focusイベントは低水準イベントで使用することを
推奨できない かつ FormがActiveになるとGot Focusイベント
が発生する。この2つの理由でお手上げ状態です。

コントロールをMaskedTextBox -> TextBoxに変更して正規
表現で入力チェックを行えば済ことなのですが…

MaskedTextBoxで全選択状態(反転表示)の実現方法は
あるのでしょうか?
0043デフォルトの名無しさん2007/04/16(月) 13:47:48
>>42
MaskedTextBoxだろうがTextBoxだろうがSelectAll()同じように効くはずだけど?
もしかしてボタンクリックでSelectAllしてない?

SelectAll() の前に Focus()すれば済む話しだったりして?
0044デフォルトの名無しさん2007/04/16(月) 14:03:10
>>43
Tabでフォーカスを移動したときです。
0045デフォルトの名無しさん2007/04/16(月) 14:27:13
勘違いしてるみたいだけど、
MaskedTextBoxとTextBoxとでSelectAllの挙動に違いは見られない。

>FormがActiveになるとGot Focusイベント
ってのは単にMaskedTextBoxがActiveControlなだけのはなしでしょ。
それがいやなら適切なタイミングで
Form.ActiveControlを他のコントロールに設定すればいい。


private void maskedTextBox1_Enter( object sender, EventArgs e )
{
    this.maskedTextBox1.Focus();
    this.maskedTextBox1.SelectAll();
}

ってすればいいだけじゃね
EnterじゃなくてGotFocusでもいい
0046デフォルトの名無しさん2007/04/16(月) 14:49:20
>>45 ご教授に感謝
0047デフォルトの名無しさん2007/04/16(月) 20:12:58
どなたか教えてください

ProcessStartInfo startInfo = new ProcessStartInfo(IEXPLORE.exe);
startInfo.Arguments = "http://localhost/WebApplication1/version.html";;

Process.Start(startInfo);

と言うように、Processを使ってIEを起動した場合、targetは指定できないのでしょうか?
何度も新規ウィンドウを表示したくないのですが・・・
0048デフォルトの名無しさん2007/04/16(月) 20:19:06
もう一つ質問です。

C#のコードで、現在開いている特定のブラウザ(IE)を閉じる事はできますか?
連続質問で申し訳ありません・・・
0049デフォルトの名無しさん2007/04/16(月) 20:20:01
Process.Start( "http://localhost/WebApplication1/version.html"; );
0050デフォルトの名無しさん2007/04/16(月) 20:27:58
>>47
出来ない

>>48
FindWindow で IE 捕まえて WM_CLOSE 投げる
0051472007/04/16(月) 20:31:14
>>49
その記述だと、target指定できるのでしょうか?

>>50
ありがとうございます、FindWindow 関連を調べてみます。
0052デフォルトの名無しさん2007/04/16(月) 20:49:20
targetって何だよ
0053デフォルトの名無しさん2007/04/16(月) 20:51:42
たぶん<a target="hogehoge" 〜>のことかと思われ
0054472007/04/16(月) 20:56:14
>>52
targetは>>53 のことです。

>>50
申し訳ありません。
FindWindow や WM_CLOSE はC#で使用できるものでしょうか?
0055デフォルトの名無しさん2007/04/16(月) 20:59:29
>>54
できる
0056デフォルトの名無しさん2007/04/16(月) 21:01:20
>>47
DDE使えばいいんじゃね?

なんかものすごい旧時代を感じさせられる名前だがw
0057デフォルトの名無しさん2007/04/16(月) 21:05:02
>>55

すいませんありがとうございます
0058デフォルトの名無しさん2007/04/16(月) 21:37:16
数十K〜数MByte分のbyte配列をsbyte配列に変換、またはその逆にするのに、
byte[] data;   //元のデータ
sbyte[] sdata = new sbyte[data.Length];   //変換後のデータ
for (int i = 0; i < data.Length; i++)
{
    sdata[i] = (sbyte)data[i];
}

といったように素直にキャストしていくのと、

[StructLayout(LayoutKind.Explicit)]
public struct ChangeArray
{
    [FieldOffset(0)]
    public byte[] Data;
    [FieldOffset(0)]
    public sbyte[] SData;
}
…
    byte[] data;   //元のデータ
    sbyte[] sdata = new sbyte[data.Length];   //変換後のデータ
    ChangeArray ca = new ChangeArray();
    ca.Data = data;
    sdata = ca.SData;

という風に変換するのとでは、どちらが速いでしょうか?
0059デフォルトの名無しさん2007/04/16(月) 21:41:51
前者は間違いなく遅い。
後者は動作が保証されない。

Buffer.BlockCopy しとけ。
0060デフォルトの名無しさん2007/04/16(月) 21:42:27
やればすぐ結論がでることをやらずにわざわざ人に質問する君の神経は理解不能だな
0061デフォルトの名無しさん2007/04/16(月) 21:53:29
>>59
>後者は動作が保証されない。 
そうなんですか…
Buffer.BlockCopyっていうものの存在を知らなかったので
どうしようかずっと悩んでました。
ありがとうございました。

>>60
今コンパイラがないもので、試そうにも試せません(インスコしようにも制限がかかってる) orz
0062デフォルトの名無しさん2007/04/16(月) 22:19:43
スレの流れと全く関係なくてすまんが、
プログラム板って他の板に比べて格段に優しい人が多いね。
正直ちょっと感動した。
0063デフォルトの名無しさん2007/04/16(月) 22:30:00
黙れカス
0064デフォルトの名無しさん2007/04/16(月) 22:45:54
いや、
>後者は動作が保証されない。

これって本当か?
この.NETの構造体を共用体的に使うテクニックって
割と一般的に用いられていると思うんだけど。

まあでも>>58の意図が不明なんでなんともいえないが、変換(?)後のデータを
破壊的に使っても変換前のデータまで壊れないようにしたいのなら
unsafe使ってコピーとか、そういう方法の方が良いのは確かだけど。
0065デフォルトの名無しさん2007/04/16(月) 22:55:16
>>64
よく見れ。
値型を重ねるなら意味分かるが、>>58で重ねているのは値型の配列だ。
0066デフォルトの名無しさん2007/04/16(月) 22:57:58
参照型には使っちゃいかんのよ。
しかしドキュメントにはろくすっぽ記述がないんだよな。
『Unions のサンプル』に「参照型の場合には明示的なレイアウトが許されないからです。」と書かれてるくらい。
0067デフォルトの名無しさん2007/04/16(月) 23:03:24
ここは>>59の言うとおり、Buffer.BlockCopy()一択だろう。
0068デフォルトの名無しさん2007/04/16(月) 23:16:37
>>67
いや「コピーしない」と言う選択肢もある
0069デフォルトの名無しさん2007/04/16(月) 23:16:56
下記のサイトでテキストボックスの入力制限に関して
サンプルコードが載っていますが、最初にイベントハンドラを解除して、
最後に再設定しなおしている理由が分かりません。何故でしょうか?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10370&forum=7
0070デフォルトの名無しさん2007/04/16(月) 23:19:37
>>58-
unsafe
fixed
最強
0071デフォルトの名無しさん2007/04/16(月) 23:24:59
>>69
TextChangedイベントハンドラ内でTextを変更しているから。
そうしなければその時点でTextChangedイベントが発生して無限ループ。

だがいいコードではないと思う
0072デフォルトの名無しさん2007/04/16(月) 23:27:39
>>69
TextChanged イベントハンドラの中で Text プロパティの値を変更すると、そこでさらに
TextChanged イベントが発生してしまう。
さらにそのイベントハンドラのの中で Text プロパティの値を変更……と、延々とTextChanged イベントが
発生し続け、しまいにはStackOverflowExceptionでアプリケーションが落ちる。

試しに適当なフォームにTextBoxを配置して、TextChanged イベントハンドラの中で
textBox1.Text += "A";
とでもやってみ。
0073デフォルトの名無しさん2007/04/16(月) 23:30:16
>>65-66
ああなるほど。
ではMarshalAs属性でUnmanagedType.ByValArrayを指定すればCと同じように
構造体の中に参照ではなく配列そのものが確保されるようになるのかな。

それともこの属性の意味は、あくまでアンマネージコードを呼び出す前後の
変換方法を指示しているだけになるのか?
0074デフォルトの名無しさん2007/04/16(月) 23:32:00
unsafe指定すればcなんかと同じように構造体の中に配列を確保できる。
尤も固定長に限られるけど。
0075デフォルトの名無しさん2007/04/16(月) 23:38:20
>>71
>>72
ありがとうございます。理解できました。
日本語とアルファベットを交互に入力して
文字数制限するいい方法が他に思いつきませんが、
このサイトの方法でとりあえず使ってみます。
0076デフォルトの名無しさん2007/04/16(月) 23:39:08
>>73
マーシャリングにのみ関わってくる属性のような気がする。
0077デフォルトの名無しさん2007/04/16(月) 23:49:47
>>73
>それともこの属性の意味は、あくまでアンマネージコードを呼び出す前後の
>変換方法を指示しているだけになるのか?

正解。

CLR管理下で特殊なメモリイメージを作りたいというのなら、
アンセーフだが一応こういう方法はある。あと固定長専用。

[StructLayout(LayoutKind.Explicit)]
public unsafe struct ChangeArray
{
[FieldOffset(0)]
public fixed byte Data[128];
[FieldOffset(0)]
public fixed sbyte SData[128];
}

ttp://msdn2.microsoft.com/ja-jp/library/zycewsya(VS.80).aspx
0078772007/04/16(月) 23:51:06
すまん、>>74で既出だったな。
0079デフォルトの名無しさん2007/04/17(火) 00:07:40
でも fixed は配列 (System.Array 派生型) じゃなくてポインタなのよね
0080デフォルトの名無しさん2007/04/17(火) 00:08:57
それは勿論だろ。Arrayは参照型だからそんなことろに組み込みようがない。
0081392007/04/17(火) 00:26:24
質問の仕方が悪かったかな?
C♯, C#相談室 で聞くべき?
0082デフォルトの名無しさん2007/04/17(火) 00:31:29
>>81
プロパティのMaxWidthを変更
0083デフォルトの名無しさん2007/04/17(火) 01:56:48
プログラミング初心者なんですけど、プログラミングを始めるにあたって、どの言語で始めればよいか迷っています。
候補はC#・VB・JAVAです。
ゆくゆくはC言語とC++も学びたいと考えています。
ということはやっぱりC#から始めるのがいいのかなと思って、こちらに投稿してみました。
だけど本屋にはC#の本は少ないですね。
JAVAとVBは多いです。
だからC#がよさそうだとは感じながらも、ちょっと心配もしているのです。
0084デフォルトの名無しさん2007/04/17(火) 02:02:24
C#おすすめですよ。
VisualC# Express EditionはMSから無料で落とせます。
C#を一通りやったら、ポインタの概念を勉強するためC++ or Cをかじりましょう。
書籍は、Amazonで探せば結構あります。
0085デフォルトの名無しさん2007/04/17(火) 02:09:23
>>83
VBはMSも無理やり繋げてる状態
java・C#は似てるからどっちか覚えれば違和感無く書ける
つかrubyも選択肢に入れてあげて
0086デフォルトの名無しさん2007/04/17(火) 07:32:25
Lispやろうぜ
0087デフォルトの名無しさん2007/04/17(火) 14:51:24
??演算子使ってる?
地味に便利そうなんだけど,
ついつい存在を忘れて a != null ? a : "nullですよ";ってやっちゃう
0088デフォルトの名無しさん2007/04/17(火) 15:22:20
>>87
むしろ君が普通ではないと思う 俺は異端児?
0089デフォルトの名無しさん2007/04/17(火) 16:15:43
フーン。便利なら使えばいいんじゃないの?
そんなの
a = a + 1;
a += 1;
a++;
程度の問題だべ。それよりちょっと聞いてくれよ。
俺は何かと何かが混ざったようなC#なんて特に触りたくもないんだが、
言語仕様を見たらtrueとfalseが演算子だって?

こんな構文になるのか?フーン
public class Hoge {
public static bool operator true(Hoge t){
}
,..(もちろんfalseも定義)
};

Hoge hoge = new Hoge();
...
if(true hoge) {
...
}
0090デフォルトの名無しさん2007/04/17(火) 16:26:48
ならんよ。true/false演算子はあたかもBoolean型への暗黙的変換のように振舞う。
0091デフォルトの名無しさん2007/04/17(火) 16:43:25
横レスだけど,implicit operator boolとどう違うの?
試してみても,動作は同じに見えるんだけど
0092デフォルトの名無しさん2007/04/17(火) 16:50:21
true/false演算子に同じ値を返すことで、4つまでの状態を表せる。
trueかつfalseってのは意味的に使い道がなさそうだが、
trueでなくfalseでもない値を導入すればtriboolのようなものになる。
0093デフォルトの名無しさん2007/04/17(火) 17:38:51
>>90
済まないが、ちょっと分からない。
bool型への暗黙的型変換?
暗黙的型変換の例としては
double d = 10.5;
int i;
i = d;
(iは10になる)

明示的なら
a = (bool)false;
だが、これは禁止されている。

仕様書には
A unary true or false operator must take a single parameter of type T and must return type bool.
だから、クラスHogeに演算するときは
true Hoge 又は false Hoge
となって、戻り値はbool型になる(後置演算かもしれないが分からない)。これではちょっと混乱してしまう。
例示してほしいのだが、いかがか?
0094デフォルトの名無しさん2007/04/17(火) 17:43:30
× a = (bool)false;
○ bool b = (bool)i;
0095デフォルトの名無しさん2007/04/17(火) 18:10:21
>>93
true/false演算子が使えるのは条件が必要な場所、つまり、if(), do-while(), while(), for(;ここ;) や ?:演算子の第一オペランド。
operator trueが呼び出されて、bool型に暗黙的に変換されたかのように振舞う。

たとえば、型Tにtrue/false演算子が定義されていれば、
| T t;
| if(t) { }
| int a = t ? 0 : 1;
のようなことが出来るようになる。

尤もC#ではop_Falseを使えないから、これだけでtribool的なものは作れないんだけどね。
0096932007/04/17(火) 18:23:42
>>95
ありがとうッス。これで疑問が晴れた。
例えば、C++だと!演算子をオーバーライドするんだが、
それじゃ気持ち悪かったのかな?>M$
0097デフォルトの名無しさん2007/04/17(火) 18:30:37
!に否定以上の意味を持たせると混乱の元だし、true演算子の代用にはならんだろ。
0098デフォルトの名無しさん2007/04/17(火) 18:40:40
C#ってそんな機能あるんだw

一見便利に見えて、実はタイピング量を減らすという僅かなメリットと引き換えに
混乱をもたらすだけの機能に思えるけどなあ。

VB6の「デフォルトのプロパティ」と同列の堕落じゃん。
0099デフォルトの名無しさん2007/04/17(火) 18:41:18
>>97
いや、STLにのInputFileStreamクラス(だったかな?)があって、
InputFileStream ifs(...
...
if(!ifs) { // ←ファイルがオープンされてるかどうか
// エラー処理
}

というのは半ば常識なんで、STLerで知らない人はあまり居ないと思う。
確かに初心者には変な構文なので、独学だと混乱するかもね。
0100デフォルトの名無しさん2007/04/17(火) 18:50:00
>>98
boolにように働く型を作るための機能だから問題ないと思うが。
というか、そもそもこれはCLIの機能であってC#は申し訳程度にサポートしてるだけのような気がする。
0101デフォルトの名無しさん2007/04/17(火) 19:11:45
>CLIの機能
ほんまかよっ
■ このスレッドは過去ログ倉庫に格納されています