ふらっとC#,C♯,C#(初心者用) Part67
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/12/16(木) 18:23:33「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっとC#,C♯,C#(初心者用) Part66
http://hibari.2ch.net/test/read.cgi/tech/1290854247/
■関連スレ
C#, C♯, C#相談室 Part63
http://hibari.2ch.net/test/read.cgi/tech/1289733048/
VB.NET質問スレ(Part35)
http://hibari.2ch.net/test/read.cgi/tech/1284423653/
くだすれC++/CLI(初心者用)part2
http://pc12.2ch.net/test/read.cgi/tech/1268613679/
■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。
直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php
0455デフォルトの名無しさん
2010/12/30(木) 09:35:49スタティックメソッドじゃダメなの?
0456デフォルトの名無しさん
2010/12/30(木) 09:56:000457デフォルトの名無しさん
2010/12/30(木) 10:46:25ミナガワケンジサーン
0459デフォルトの名無しさん
2010/12/30(木) 11:51:02StringのContainsは"xxを含む名前の物"ですが、
"xxという名前の物"を調べるには何を使えばいいのでしょうか。
0460デフォルトの名無しさん
2010/12/30(木) 11:55:33str.Equals(xx)
上の方が普通
0461デフォルトの名無しさん
2010/12/30(木) 12:00:220462デフォルトの名無しさん
2010/12/30(木) 12:09:18ありがとうございます!
0463デフォルトの名無しさん
2010/12/30(木) 12:13:43俺、459の質問の意味が全くわからなかったぞw
0464デフォルトの名無しさん
2010/12/30(木) 12:28:48{
public string name;
public uint age;
public string address;
}
class Person
{
public string name;
public uint age;
public string address;
}
これって根本的に同じですよね?
コンストラクタで値の改変とかのメソッドを実行しない場合って、
複数の変数の保持にクラス使う意味無いですよね。
保守性の為に部品として使うならスタティックメソッドで良いし、
何の為に実体化するのかわからなくなってきた・・・
クラスを実体化するメリットを教えてください
0465デフォルトの名無しさん
2010/12/30(木) 12:33:06> これって根本的に同じですよね?
どんな根本を想定してるのか知らんが
おいらの感覚では根本的に別物だな
> コンストラクタで値の改変とかのメソッドを実行しない場合って、
> 複数の変数の保持にクラス使う意味無いですよね。
意味が分からん
構造体があれば十分って意味?
> 保守性の為に部品として使うならスタティックメソッドで良いし、
なんでメソッドが出てくるのか…?
> 何の為に実体化するのかわからなくなってきた・・・
> クラスを実体化するメリットを教えてください
人が二人いたら二つインスタンスが必要だろ?
0466デフォルトの名無しさん
2010/12/30(木) 12:39:05保持してる変数だけでみたら扱い同じですよね?
クラスと構造体の違いがわからなくて
メソッドの事は忘れてください
0467デフォルトの名無しさん
2010/12/30(木) 12:42:470468デフォルトの名無しさん
2010/12/30(木) 12:43:31構造体を使うのは特殊な場合に限られる。違いが分からないなら使う意味無し。
たとえばインスタンスAがインスタンスBを参照してて、Bが編集フォームで変更された場合
BがクラスならAが参照してるBも更新されるけど、構造体だと変わらない。
0469デフォルトの名無しさん
2010/12/30(木) 12:52:13似てるように見えるが扱いが違う
http://ufcpp.net/study/csharp/oo_reference.html#classification
0470デフォルトの名無しさん
2010/12/30(木) 12:55:48classが参照型で、structが値型だというのは覚えてるんですが、それだと
クラスの
Person a = new Person();
Person b = new Person();
と
構造体の
Person a = new Person();
Person b = a;
は同じことになるんですかね
0471デフォルトの名無しさん
2010/12/30(木) 12:58:43クラスはCloneしないと複製できない
構造体はコピーになる
0472デフォルトの名無しさん
2010/12/30(木) 13:05:21根本的には別物だと思う、使用するメモリがスタックかヒープかって結構大きい違い。
構造体
・スタックなのでアクセスが早い。(生成も?)
・(メンバは別として)シャローコピーされない分イミュータブルオブジェクトに向く?
・GCの対象外なので破棄も早い
クラス
・変数の実態は参照(4or8バイト)なので、受け渡しが早い。
・参照により複数の変数から同一インスタンスにアクセスできる。
以上が俺の認識。
スタックって何MB使えるの?
Color構造体の例とか見ると、Enumをベースに拡張したい場合に使えばいいかな?
0473デフォルトの名無しさん
2010/12/30(木) 13:13:19これを実行するとわかるよ
http://ideone.com/bbtBH
>>472
基本的にクラスでいいと思うよ
0474デフォルトの名無しさん
2010/12/30(木) 13:15:38ありがとうございます
それだと、値型のように別のオブジェクトで変数を持ちたいけど、
いずれ継承で拡張したい場合なんかは、いったいどうしたら
0475デフォルトの名無しさん
2010/12/30(木) 13:16:02{
public int hoge { get; set; }
}
public struct B
{
public int hoge { get; set; }
}
public void Test(A a, B b)
{
a.hoge++;
b.hoge++;
}
ここら辺の違いさえわかってれば
大概は「どっち使おうが気にすることは無い」んじゃないかな。
0476デフォルトの名無しさん
2010/12/30(木) 13:18:290477デフォルトの名無しさん
2010/12/30(木) 13:21:110478デフォルトの名無しさん
2010/12/30(木) 13:24:300479デフォルトの名無しさん
2010/12/30(木) 13:25:43返らないと思って使ってたら返ってた、なんてことになるって話だろう
0480デフォルトの名無しさん
2010/12/30(木) 13:27:14Fillなんちゃらとか、適切な名前ならいいでしょ
0481デフォルトの名無しさん
2010/12/30(木) 14:45:16Quaternion xz = new Quaternion(new Vector3D(1, 0, 1), degreexz);
A.Rotate(xz);
回転角degreexz[°]でXZ軸でAを回転させたいのですが、どこがおかしいでしょうか。ご指南お願いします。
0482デフォルトの名無しさん
2010/12/30(木) 14:46:460483デフォルトの名無しさん
2010/12/30(木) 14:50:48マルチだからスルー、とかよくわkんないんだけど、なんか答えちゃいけない規則でもあるの?
0484デフォルトの名無しさん
2010/12/30(木) 14:51:450485デフォルトの名無しさん
2010/12/30(木) 14:59:280486デフォルトの名無しさん
2010/12/30(木) 15:03:350487デフォルトの名無しさん
2010/12/30(木) 15:18:34何のライブラリのQuartanionやVector3Dなのかわからない。
C#から使えるMS製ライブラリのうちQuartanionやVector3Dを含むものは複数存在する。WPFならそう書け。
何を回転させたいのか具体的に書け。
0488デフォルトの名無しさん
2010/12/30(木) 16:55:52どうやればいいかわかりません。
LINQを使えばできたと思うのですが、どう書けばいいものやら…
どなたか教えていただけませんでしょうか?よろしくお願いいたします
0489デフォルトの名無しさん
2010/12/30(木) 17:13:440490デフォルトの名無しさん
2010/12/30(木) 17:22:07とか
0491デフォルトの名無しさん
2010/12/30(木) 17:49:51http://msdn.microsoft.com/ja-jp/library/ms229017.aspx
0492デフォルトの名無しさん
2010/12/30(木) 17:50:44MSDNにしてはわかりやすい。
0493デフォルトの名無しさん
2010/12/30(木) 18:04:50>インスタンスのサイズが 16 バイト未満である。
っていうとintだと3つまでか?
0494デフォルトの名無しさん
2010/12/30(木) 18:12:180495デフォルトの名無しさん
2010/12/30(木) 18:52:48また随分と簡潔な基準だな。
これだと、構造体にするべきケースって殆ど無さそう。
0496デフォルトの名無しさん
2010/12/30(木) 19:07:540497デフォルトの名無しさん
2010/12/30(木) 19:08:58自分が製作しているプログラムは複数音の再生なので、それを録音したいのです。
録音の方法はPCから鳴っている音を録音する方法が良いのかなと考えています。
サウンドレコーダー程度のものでいいので、つけることは出来ますか?
サウンドレコーダーがC#のプログラム上で自動で録音を始めることさえ出来れば良いのですが…
長文大変申し訳ありません。
よろしくお願いします。
0498デフォルトの名無しさん
2010/12/30(木) 19:11:11試してみます!
0499デフォルトの名無しさん
2010/12/30(木) 21:34:030500デフォルトの名無しさん
2010/12/31(金) 14:36:03ウィンドウメッセージで押すとかすればいいんじゃないの
0501デフォルトの名無しさん
2010/12/31(金) 15:43:18WebForm1.aspx内のclass Aで計算した値をWebForm2.aspx内のclass Bへ受け渡したいです
始めにclass A内の計算を実行して、Labelに結果を表示してからWebForm2.aspxへ移り
WebForm2.aspxのclass Bでclass Aの計算結果を使用したいので
class Bでclass Aをインスタンス化しclass A内の計算を実行させると
2度同じ計算をさせることになるので一度で済ませる方法がないか探しています
0502デフォルトの名無しさん
2010/12/31(金) 16:24:150503デフォルトの名無しさん
2010/12/31(金) 19:32:03来年はどうもQtスレに行くことになりそうです。
0504デフォルトの名無しさん
2010/12/31(金) 21:35:200505デフォルトの名無しさん
2010/12/31(金) 22:35:05ありがとうございます
0506デフォルトの名無しさん
2010/12/31(金) 22:54:49インデクサの使い方教えろ
0507デフォルトの名無しさん
2010/12/31(金) 23:22:110508デフォルトの名無しさん
2010/12/31(金) 23:37:03{
public int this[int a, int b, int c]
{
get
{
return a*b*c;
}
}
}
A test = new A();
Console.Writeline("{0}", test[1,2,3]);
6
0509デフォルトの名無しさん
2010/12/31(金) 23:40:383 次元ベクトル を表す Vector3D クラスのコレクションクラス Vector3DCollection を作ったとしたら、
それを配列のように扱いたいことがあるはず。
んじゃあ、配列使えよって言うかもしれないが、配列にはメソッド作ったり出来ないし、
その他ゴニョゴニョできないからね。(拡張メソッドレベルなら作れるけど。)
まあ、string とかも添字に使えるから色々な使い方があるだろうが。
0510デフォルトの名無しさん
2011/01/01(土) 00:18:400511デフォルトの名無しさん
2011/01/01(土) 08:38:48>>500さんありがとうございました。
ウィンドウメッセージとは具体的にどのような命令(コード)なのでしょうか?
初心者の質問で申し訳ないです。
0512デフォルトの名無しさん
2011/01/01(土) 10:56:07型に付いてるDefaultMemberAttributeを調べる
PropertyInfoだけじゃ分からん
0513デフォルトの名無しさん
2011/01/01(土) 11:43:310514デフォルトの名無しさん
2011/01/01(土) 12:07:000515デフォルトの名無しさん
2011/01/01(土) 13:08:48Reflectorで見てもDefaultMemberAttributeが使われてないから不思議だったんだけど、C#だと出ないのね
ありがと
0516デフォルトの名無しさん
2011/01/01(土) 15:24:03何もかもが終わった
byte[]のwavデータを一時停止するなんて高度(笑)なことができるわけがなかったんだ
・DirectAudio
Direct〜は嫌いだから使わない
・XAudio
wav再生できない
・WPFのMediaElement(一番簡単)
ファイルからしか再生できない
silverlight使えばsetsourceでいけるけど勉強する気がない
・ActiveXのWMP
ファイルからしか再生できない
0517デフォルトの名無しさん
2011/01/01(土) 15:28:29> Direct〜は嫌いだから使わない
> Direct〜は嫌いだから使わない
> Direct〜は嫌いだから使わない
0518デフォルトの名無しさん
2011/01/01(土) 15:55:49文句は言わせないぜ
へへへ
0519デフォルトの名無しさん
2011/01/01(土) 16:28:05>wav再生できない
え?
0520デフォルトの名無しさん
2011/01/01(土) 16:35:03やる気がないってことだよ
言わせんな恥ずかしい
0521デフォルトの名無しさん
2011/01/01(土) 18:47:54wavはヘッダだけ飛ばせばあとはデータをそのままバッファに直接書き込むだけ
0522デフォルトの名無しさん
2011/01/01(土) 23:20:36言い訳が酷すぎるだろw
0523デフォルトの名無しさん
2011/01/01(土) 23:59:28一時停止なくてもボタン1つ消えて使用者が少し不便になるだけだし
まぁなくてもいいかなって気分になってきたのだ(・´ω`・)
0524デフォルトの名無しさん
2011/01/02(日) 04:51:35pass:news
0525デフォルトの名無しさん
2011/01/02(日) 04:55:090526デフォルトの名無しさん
2011/01/02(日) 07:29:52Form.Click +=まで入力すると 「new EventHandler(Form_Click); 挿入するにはTabを押してください」と表示され
Tabを押すと、Form.Click +=new EventHandler(Form_Click); 「このクラスにハンドラー'Form_Click'を生成するにはTabを押してください」となり
またTabを押すと自動で
void Form_Click(object sender, EventArgs e) {
throw new NotImplementedException();
}
まで挿入されますが、これをTab押したときにラムダで挿入するやり方はありますか?
こんな感じで挿入してくれるとうれしいのですが。
Form.Click += (sender, e) => {
};
0527デフォルトの名無しさん
2011/01/02(日) 10:16:50(以下のコードスニペット作れば
0528デフォルトの名無しさん
2011/01/02(日) 12:25:52ListViewで列、項目を入力して試しにデバッグさせてみたらアイテム名が表示されません。
デザイナでは視覚的に確認できるのですが、書き出すと真っ白になってしまいます。
どういった原因が考えられるでしょうか?
0529デフォルトの名無しさん
2011/01/02(日) 14:39:06???
ビルドして実行すると、ってこと?
0530デフォルトの名無しさん
2011/01/02(日) 15:18:40はい。ビルドして実行すると、です。
0531デフォルトの名無しさん
2011/01/02(日) 16:07:06ListBoxって選択されてる項目のTextしか取得できないの?
Items.Countでループさせて、全項目のText取得したいんだけど
もしかして、ループ時に順次select状態にしてText取得していかなきゃだめなの?
そんでループ処理後にselect状態の項目をループ前の状態に戻すしかないの?
うーん・・・
0532デフォルトの名無しさん
2011/01/02(日) 16:10:350533デフォルトの名無しさん
2011/01/02(日) 16:12:240534デフォルトの名無しさん
2011/01/02(日) 16:15:02本当にくだらない質問だな....
こんなところにうだうだ書いてる時間に試してみればいいのに
0535528
2011/01/02(日) 16:34:47お騒がせしました。
0536デフォルトの名無しさん
2011/01/02(日) 16:44:23試したからいってるんだけど
「それしかないの?」って
フフン
0537デフォルトの名無しさん
2011/01/02(日) 17:00:50ListBoxに与えるテキストって利用者が勝手に変えたりするの?
固定なら最初からstring配列で持っておいて・・・とかすればいいんじゃないの?
0538デフォルトの名無しさん
2011/01/02(日) 17:23:11もしかして全部覚えてるの?
0539デフォルトの名無しさん
2011/01/02(日) 17:25:37ライブラリを数個しかしらなくてもその時々でたまたま知ってる人が覗いてれば問題ない
0540デフォルトの名無しさん
2011/01/02(日) 18:23:44ありがとう
それしかないか
0541バルサン(´・ω・`) ◆E.J7ujd3Xbu.
2011/01/02(日) 18:34:310542バルサン(´・ω・`) ◆E.J7ujd3Xbu.
2011/01/02(日) 18:47:170543バルサン(´・ω・`) ◆E.J7ujd3Xbu.
2011/01/02(日) 18:55:120544デフォルトの名無しさん
2011/01/02(日) 18:57:09ListBox..ValueMember = "Code";
ListBox.DataSource = (DataTable)xxx;
でforeachやforでxxxのDataRowを参照すればいいんじゃないの?
0545デフォルトの名無しさん
2011/01/02(日) 19:22:55ありがとう
wavデータサイズを固定指定してるところを可変にして、ループ再生用のwhileを消して、再生中ステータス取れるようにして
もろもろ修正したらうまく動いたよ
ありがとう
0546デフォルトの名無しさん
2011/01/03(月) 03:08:49ありがとう
でもこれでいけたYo
(string)listbox1.Items[0]
0547デフォルトの名無しさん
2011/01/03(月) 17:40:04int a;
}
public interface interfaceB : interfaceA {
int b;
}
public class classC : interfaceB {
}
の時、classC.aは使えないんですか?
0548デフォルトの名無しさん
2011/01/03(月) 17:40:24そのとき録音時間を変数などに入れて時間を指定して起動させたいのですが方法はありますか?
コードはこれです。
Process roku = new Process();
roku.StartInfo.FileName = Environment.GetEnvironmentVariable("ComSpec"); // cmd.exe
roku.StartInfo.CreateNoWindow = true; // 起動に ウィンドウ を使用しない
roku.StartInfo.UseShellExecute = false; // 起動に OS のシェルを使用しない
roku.StartInfo.RedirectStandardInput = false; // 標準リダイレクト入力を不許可
roku.StartInfo.RedirectStandardOutput = true; // 標準リダイレクト出力を許可
roku.StartInfo.Arguments = @"/C SoundRecorder /FILE rec1.wma /DURATION 0000:00:00 /ON"; // コマンド設定(/C = 実行後 終了)
roku.Start(); // 起動
下から2行目の@"/C SoundRecorder /FILE rec1.wma /DURATION 0000:00:00 /ON"の
DURATION 0000:00:00に数値を入れるといいのですが、それを変数を使って代入したいのですが
どう書けば時間を指定できますか?
0549デフォルトの名無しさん
2011/01/03(月) 17:45:58マルチメディア系のAPIとか機能使って録音した方がよくねえ?
0550デフォルトの名無しさん
2011/01/03(月) 17:46:39string time = "0000:00:00";
roku.StartInfo.Arguments = @"/C SoundRecorder /FILE rec1.wma /DURATION " + time + @" /ON"
0551デフォルトの名無しさん
2011/01/03(月) 17:55:21そもそもinterfaceにフィールドは定義できない
0552デフォルトの名無しさん
2011/01/03(月) 18:08:45使い方がよくわからなかったので諦めました。
>>550
ありがとうございます。
指定する時間が複数の場合、あらかじめ代入してた変数を使って行いたい場合はどうすればよいですか?
秒の部分しか使わないのですが…。
0554デフォルトの名無しさん
2011/01/03(月) 18:42:04string sec = "00";
string time = "0000:00:" + sec;
こんな感じでいいんじゃね?
■ このスレッドは過去ログ倉庫に格納されています