C♯相談室 Part26

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2005/11/09(水) 20:20:17
SocketOptionNameにConnectTimeoutはないんだよな。
まあ、外部スレッドというかSystem.Timers.Timerで監視というのがいいんじゃないか。
Socketの派生クラスを作って実装を隠蔽すれば使い回しもできる。

>>950
ないな。
メソッドにしてしまえば書くのは一カ所で済むだろ。
953デフォルトの名無しさん:2005/11/09(水) 20:34:33
>>951
どうやって ping を打ってるのか分からなきゃ、答えようが無いな。
954デフォルトの名無しさん:2005/11/09(水) 21:05:04
>>940-941
トンクス
ならDLは止めといた方が無難だね
955デフォルトの名無しさん:2005/11/09(水) 21:14:15
>>952
やはり任意の時間で接続をタイムアウトさせるとなると、他で時間を計るしかないんですね。
ありがとうございました。

>>953
私は、“どうやって” かは限定してないんです。
「これなら接続のタイムアウトが任意に設定できる」というなら、
それでやるつもりですから。
956デフォルトの名無しさん:2005/11/09(水) 21:15:34
プロパティってカプセル化の観点からは使わない方が良い?
publicで変数にアクセスしているような感じだし
957デフォルトの名無しさん:2005/11/09(水) 21:25:03
>>956
訳わからん。
プロパティってまさに状態のカプセル化だと思うのだが。
958デフォルトの名無しさん:2005/11/09(水) 21:32:03
public int XXX
{
 get
 {
 }
 set
 {
 }
}

なんとなく違和感があるんだ・・・
959デフォルトの名無しさん:2005/11/09(水) 21:37:34
昨日始めたばっかなんだけど、参考になりそうなサイトみて文字を
表示するプログラムみたいなのをメモ帳で書いてみたんだが、いざ保存すると
sample.cs と書いているのに
sample.cs.txt と直されてしまいます..

ご存知の方、解決法を教えていただきたい。
960デフォルトの名無しさん:2005/11/09(水) 21:38:49
>>959
メモ帳を使わない。
961デフォルトの名無しさん:2005/11/09(水) 21:39:42
構文に違和感があるって程度だったらそれは気のせいだ。
962デフォルトの名無しさん:2005/11/09(水) 21:40:13
おっと、>>961>>958宛て。
963デフォルトの名無しさん:2005/11/09(水) 21:40:33
名前を付けて保存するときにファイル名を""でくくる。
が、他のフリーのエディタ使うのを薦める。
964デフォルトの名無しさん:2005/11/09(水) 21:42:39
えー、プロパティはカプセル化の観点からしたら使うべきである。
965デフォルトの名無しさん:2005/11/09(水) 21:43:12
新規テキストファイルの名前を sample.cs に変えてから、TeraPad で開いてるなぁ俺は。
966デフォルトの名無しさん:2005/11/09(水) 21:43:55
>>959
保存するときにファイルの種類で
「すべてのファイル」を選択する
967デフォルトの名無しさん:2005/11/09(水) 21:44:52
プロパティは、カプセル化というか情報隠蔽だな。どっちでも良いんだけど。

プロパティはメソッドの別名でしかないから、
ぶっちゃけメソッドへのアクセスと記述上以外の違いは無いし。
968デフォルトの名無しさん:2005/11/09(水) 21:49:53
>>960>>963
おぉ。スバライな。無事変換できたぜ
どうもッス
969デフォルトの名無しさん:2005/11/09(水) 22:00:27
string s = null;もしくはHashtable h = null;をそれぞれメンバに持つ
クラスのインスタンスを作成したとき、メモリの消費は異なりますか?
メンバのインスタンスを作成するまでは差はないと考えていいのですか?
970デフォルトの名無しさん:2005/11/09(水) 22:01:51
差は無いと考えて良いと思うけど、そんなに気になる?
971デフォルトの名無しさん:2005/11/09(水) 22:04:28
一体そのインスタンスを何万個作るんだろう。
972デフォルトの名無しさん:2005/11/09(水) 22:11:35
nullのうちは変わらない
973デフォルトの名無しさん:2005/11/09(水) 22:36:14
インスタンスのサイズはメンバ変数の個数のみによって変わるってこと?
っていうかインスタンスを大量に作成すること自体が愚かな行為
なんでしょうか?(作成自体のオーバーヘッドが大きいとか?)
出直してきます。レスありがとうございました。
974名無しさん♯:2005/11/09(水) 22:57:50
次スレです。( ゚д゚)ノ
http://pc8.2ch.net/test/read.cgi/tech/1131544541/l50
975デフォルトの名無しさん:2005/11/09(水) 23:03:39
相談:38歳主婦

string[] myArray = new string[0];

添え字0って、何か役に立つんでしょうか?
976デフォルトの名無しさん:2005/11/09(水) 23:06:02
>>975
添え字0は、
string[] myArray = null;

string[] myArray = new string[1] { "hoge" }
のどっちと近いと思う?
977デフォルトの名無しさん:2005/11/09(水) 23:12:45
回答者は態度を明確に示せ
978デフォルトの名無しさん:2005/11/09(水) 23:14:02
>>977
じゃあ氏ね
979デフォルトの名無しさん:2005/11/09(水) 23:14:07
>>975
何か役立つって言われてもどう答えていいのやら…

サイズ0の配列の意味って感じかな?
配列がnull参照に比べるといろいろ楽だよ
980デフォルトの名無しさん:2005/11/09(水) 23:31:42
string変数にnull入れずに空文字入れるようなもんか?
981デフォルトの名無しさん:2005/11/09(水) 23:38:01
そんなもんだな。
982デフォルトの名無しさん:2005/11/09(水) 23:43:07
foreach (string name in GetNames())
とかできるのが楽。
nullが返る可能性があるとなると一旦ローカル変数に代入してnullチェックってことになるし。
983デフォルトの名無しさん:2005/11/10(木) 00:01:26
「配列を返すプロパティ/メソッド」って混乱の元だよな。
984デフォルトの名無しさん:2005/11/10(木) 01:20:20
> 相談:38歳主婦
> 相談:38歳主婦
> 相談:38歳主婦
> 相談:38歳主婦
985デフォルトの名無しさん:2005/11/10(木) 02:00:31
traceroute機能ってどうやって実現したら良いの?
pingは宇宙仮面のサイトにサンプルコードがあったけど、
tracerouteは無かったのでどうしたら良いのか悩んでいるですが・・・
986デフォルトの名無しさん:2005/11/10(木) 02:17:34
TTLを順番に大きくしていくだけさ
987デフォルトの名無しさん:2005/11/10(木) 08:52:32
public interface IHoge {}
public class Hoge : IHoge {}

public class Foo<T> {
    public Foo(T value) {
        this.value = value;
    }
    private T value;
    public static implicit operator Foo<T>(T t) {
        return new Foo<T>(t);
    }
}

public static void Main() {
    Hoge hoge = new Hoge();
    Foo<Hoge> a = hoge;
    Foo<IHoge> b = hoge;
    Foo<IHoge> c = (IHoge)ihoge;  // コンパイルエラー
}

最後のがかなり納得できない。
インターフェイスとのキャスト演算オーバーロードが定義できないのが原因なんだけど。
988デフォルトの名無しさん:2005/11/10(木) 09:01:59
>>987
ihoge なんて変数は存在しないぞ
989デフォルトの名無しさん:2005/11/10(木) 09:27:20
あ、ごめんそこはhogeで。
Foo<IHoge> c = (IHoge)hoge; // やっぱりエラー

COMオブジェクトのReleaseComObjectをIDisposableでやって貰おうと思ったんだけど、
インターフェイスを暗黙にキャストできないとなると面倒で……。
990デフォルトの名無しさん:2005/11/10(木) 11:16:15
public static void Using<T>(T comObj, Action<T> action) {
    try {
        action(comObj);
    }
    finally {
        Marshal.ReleaseComObject(comObj);
    }
}

private void MenuItem1_Click(object sender, EventArgs e) {
    Using((IHTMLDocument2)webBrowser1.Document.DomDocument, delegate(IHTMLDocument2 doc2) {
        Using(doc2.all, delegate(IHTMLElementCollection elements) {
            foreach (IHTMLElement element in elements) {
                Using(element, delegate(IHTMLElement elem) {
                    Console.WriteLine(elem.tagName);
                });
            }
        });
    });
}
こういう方向でいくことにしようか。
991デフォルトの名無しさん:2005/11/10(木) 22:26:20
学校の宿題で以下の問題が出たのですがわかりません。
どなたか教えてください。明日までに提出しなければいけないのです。。。
WindowsFormでつくります。
問)textBoxを一つとbutton一つをフォームに配置する。
textBoxの文字が「学校」のときはtrueを返し、それ以外はfalseを返すような
bool型のメソッドを作る。
buttonをクリックした時に以上のメソッドを適用するようなコードを実装せよ。
なお、buttonをクリックした際に、trueの場合は以下のメッセージを表示させる。
MessageBox.Show("あなたは学校と入力しました。")

なにがなんだかさっぱりです。教えてください。
992デフォルトの名無しさん:2005/11/10(木) 22:37:44
宿題は自分でやれ。
993デフォルトの名無しさん:2005/11/10(木) 22:44:34
いまどきって授業でC#やってんの?
994デフォルトの名無しさん:2005/11/10(木) 22:51:18
>>991
ここは宿題スレじゃないよ
using System.Windows.Forms;
public class MainClass {
    public class MainForm : Form {
        TextBox textBox; Button button;
        public MainForm() {
            const int width = 150;
            this.SuspendLayout();
            textBox = new TextBox();
            textBox.Location = new System.Drawing.Point(0, 0);
            textBox.Size = new System.Drawing.Size(width, textBox.PreferredHeight);
            button = new Button();
            button.Location = new System.Drawing.Point(0, textBox.Bottom);
            button.Size = textBox.Size;
            button.Click += new System.EventHandler(button_Click);
            this.Controls.AddRange(new Control[]{textBox, button});
            this.ClientSize = new System.Drawing.Size(width, button.Bottom);
            this.ResumeLayout();
        }
        private bool is_gakko() {
            return textBox.Text == "学校";
        }
        private void button_Click(object sender, System.EventArgs e) {
            if (is_gakko())
                System.Windows.Forms.MessageBox.Show("あなたは学校と入力しました。");
        }
    }
    public static void Main() {
        Application.Run(new MainForm());
    }
}
995991:2005/11/10(木) 23:12:25
>>992
ごめんなさい。。。分かってはいるのですが単位とらないとやばいんです…。

>>93
選択でCかVBかC#を選べます。

>>94
ありがとうございます!できました。
996デフォルトの名無しさん:2005/11/11(金) 03:42:24
>>995
お前それで「できた」っていうなよ。コピペしただけだろ?
997デフォルトの名無しさん:2005/11/11(金) 09:49:14
何言ってるんだ、ボタン貼り付けたりFormのサイズ換えたり大変なんだよ!!
998デフォルトの名無しさん:2005/11/11(金) 11:04:51
もっと激しいジェネリックを!
999デフォルトの名無しさん:2005/11/11(金) 13:20:06
1000デフォルトの名無しさん:2005/11/11(金) 13:20:54
( ´ー`) 1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。