ふらっとC#,C♯,C#( ..
[2ch|▼Menu]
49:デフォルトの名無しさん
09/01/22 13:27:50
い・・・、引数

50:デフォルトの名無しさん
09/01/22 13:28:36
if (MessageBox.Show("キャンセルしますか?", "今やってることをやめる", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
Response.Redirect("遷移先のページ名");
}

51:プログラム歴2週間
09/01/22 13:29:54
>>48 企業用アプリケーションなので、うまく説明できないのだけど
とあるコードを渡してそのコードを選択する画面に戻る

編集画面ABCDE→Bを選択した(Bを編集したい)→Bの詳細画面 そこで編集ボタン押すと→B編集画面→B編集画面でキャンセルボタンを押すとBというコードを引数としてB詳細画面に戻りたい

初プログラミングで何がなんだかって感じなのですが。

52:デフォルトの名無しさん
09/01/22 13:38:41
引数でなければならない理由がわからない
どこぞの変数にでも放り込んでおけ

53:デフォルトの名無しさん
09/01/22 13:41:32
ManagedDirectXでもクラスはクラスで参照型ですよね?

{
Texture tex=null;
SetTexture(tex);
(ブレークポイント)


}

SetTexture(tex)
{
tex = new Texture(Static.device, w, h, 0, Usage.Dynamic, Format.A8R8G8B8, Pool.Default);

}

(ブレークポイント)のところで止めてもtexがnullになります。
SetTexture内ではその値を保持していますが…

54:プログラム歴2週間
09/01/22 13:47:08
>>50 ありがとう。埋め込んでデバックしてみます。

55:デフォルトの名無しさん
09/01/22 13:47:19
SetTexture(out Texture tex)
じゃないか?

56:デフォルトの名無しさん
09/01/22 13:52:46
>>55
これで出来たテクスチャを色々なところで使い回したいのです。
なので
Texture getTexture(){
retrun tex
}

として引っ張ってきたテクスチャをtex.Dispose()とした方が良いのか
全部描画後にtex.Dispose()とした方が良いのか…
tex1=getTexture();
(tex1描画)
tex1.Dispose();
tex2=getTexture();
(tex2描画)
tex2.Dispose();
とした方が良いのか
tex1=getTexture();
(tex1描画)
tex2=getTexture();
(tex2描画)
tex2.Dispose();
とした方が良いのか

57:デフォルトの名無しさん
09/01/22 13:56:06
おまえは何を言ってるんだ?

内容がさっきと全然違うじゃないか。

58:デフォルトの名無しさん
09/01/22 14:00:35
>>53で作ったテクスチャ(tex)を保持しておいて
そのテクスチャを>>56でgetTexture()で引っ張ってきて(tex1)描画した直後にDispose();すると
最初に作ったテクスチャ(tex)の方が消えてしまうのでしょうか?


59:デフォルトの名無しさん
09/01/22 14:02:40
tex = が入った時点でインスタンスは別のものになってるよ。

60:デフォルトの名無しさん
09/01/22 14:04:59
ということはtex1.Dispose()としても元のtexの方は生きていろということで良いのですか?

61:デフォルトの名無しさん
09/01/22 14:07:17
ソース見てないから順番がよくわからん、、、
疑問ならメッセージ出力するようにしておいて観察してみるといい。

62:デフォルトの名無しさん
09/01/22 14:10:03
分かりましたTraceで頑張ってみます。


63:デフォルトの名無しさん
09/01/22 18:55:40
VC#2008EEでメソッドにかかった時間が表示できるいい感じのプロファイラはないですか?

64:デフォルトの名無しさん
09/01/22 19:40:20
チームエディシオン買えよ。

65:デフォルトの名無しさん
09/01/22 20:31:41
>>49
それも合ってるんだけどね

66:デフォルトの名無しさん
09/01/22 21:00:21
C#最強だな・・今までの中で最強だ・・

67:デフォルトの名無しさん
09/01/22 21:02:02
立ち上がりの速さとかS級だよな

68:デフォルトの名無しさん
09/01/22 21:04:20
これで.netがUNIXで動けば・・・

69:デフォルトの名無しさん
09/01/22 21:06:25
つ mono

70:デフォルトの名無しさん
09/01/22 22:05:04

URLリンク(www.atmarkit.co.jp)
ここに、Bitmapの内容を読み書きするときは
Bitmap.LockBits
Marshal.Copy
処理
Marshal.Copy
Bitmap.UnlockBits
とするのが基本と書かれていますが、コピーしないで処理するのは無理でしょうか?

71:デフォルトの名無しさん
09/01/22 22:08:57
>>70
自分で張ったリンク先くらい全部読んでから来い。

72:デフォルトの名無しさん
09/01/22 22:09:44
Marshal.ReadInt32とか使えばコピーしなくて済むけどコピーするよりも大幅に遅くなる
コピーせずに速いのはunsafeでポインタ使う方法

73:デフォルトの名無しさん
09/01/22 22:32:32
unsafe スコープで

T* p = (T*)bitmapData.Scan0.ToPointer();

T は好きな blittable な型で。


74:70
09/01/22 22:55:51
>>71
すいません、読んでいませんでした・・
>>72-73
回答ありがとうございました。
NiVEのサンプルのプラグイン、
Marshal.Copy使っているのをunsafe使ったコードに変えたら速くなるかな

75:デフォルトの名無しさん
09/01/22 23:04:37
処理自体はポインタ使った方が遅くなるよ
コピーのコストが無視できるような重い画像処理なら一回マネージ配列にコピーした方が速い

76:デフォルトの名無しさん
09/01/22 23:09:57
buttonを押すとちゃんとと舞踊になりました。ご教授ありがとうございました。

77:デフォルトの名無しさん
09/01/23 04:17:17
見よう見まねでやっと一つ自分なりの小さなアプリを作ったんだけど、
できあがったファイルに、わけわからんのがあるんだけど。
メインのexeファイルの他に、--.vshost.exeとかいうexeファイルもできてるし
--exe.configとかいうファイルが二つも出来ちゃった。

こんなの全部まとめて一つのexeファイルにするのが本当なんじゃないの?
一応アプリは正常に動作してるみたいだけど、何か気に入らない。
将来もっとスキルがあがってちょい立派なソフトを作って人に使ってもらうときに
なんかこういうのは格好悪い気がするんだけど。
ベクターのソフトとかは、exe以外だとbinとか、なんかいろいろ意味がありそうなファイル
ばかりじゃん。
どうして俺の場合はへんなファイルばかりなの?
何かやり方が間違ってる可能性はない?

78:デフォルトの名無しさん
09/01/23 04:22:47
ない

79:デフォルトの名無しさん
09/01/23 04:54:54
以下のコードにおいて、Triangleオブジェクトを参照するt1を作った上で、その参照変数をTriangleクラスの同クラス
のオブジェクトを受け取るコンストラクタに渡して、Triangleオブジェクトt2を作成しているのですが、その際
t2を作る過程で、コンストラクタ内で、t1の“private”なはずのstyleにアクセスできてしまうの理由が分からず
悩んでいます。

同じクラスから生成されたインスタンス同士なら、privateな部分も見れるってことなのでしょうか・・・。
ご教授お願いします。

(独習C#第2版という本の抽象クラスの部分を読んでいるときに出くわした疑問ですが、抽象クラスには関係ないので、
370-373ページのコードを参考に短いコードを書きました。)

class Triangle {
   string style;

    public Triangle(string s) {
       style = s;
    }
   public Triangle(Triangle ob) {
        style = ob.style; //t2のインスタンスを作っているとき、t1のprivateなメンバにアクセスできてしまう!
   }
}

class Demo {
   public static void Main() {
        Triangle t1 = new Triangle("right");
       Triangle t2 = new Triangle(t1);
   }
}

80:デフォルトの名無しさん
09/01/23 05:15:24
>同じクラスから生成されたインスタンス同士なら、privateな部分も見れる
うん

81:77
09/01/23 05:20:26
読み返してみてあまりにバカっぽいので、
少しバカ度を下げて質問しなおします。

ビルドによって--.vshost.exeというようなファイルができるのは正常なんですか?

あと、初心者から脱した人には、生成される各ファイルがどんな働きをするものなのか
たいてい想像できるもんなのですか?

--.vshost.exeとか--exe.configはどういうファイルなんでしょうか?

申し訳ありませんが、できるだけ長い回答をお願いします。

82:デフォルトの名無しさん
09/01/23 05:26:36
>>79
privateはクラスプライベートであってインスタンスプライベートではないから

83:デフォルトの名無しさん
09/01/23 05:33:43
>>81
質問する手間でなぜぐぐらない・・

84:79
09/01/23 05:34:10
>>80
>>82

なるほど、クラスプライベートですか。お二方、どうもありがとうございました。

85:デフォルトの名無しさん
09/01/23 05:39:45
>>81
VSホスト・プロセス(*.vshost.exe)とは何か?
URLリンク(www.atmarkit.co.jp)

難しいことは他の人にまかせる。
誰かレスよろ。

86:デフォルトの名無しさん
09/01/23 10:58:23
exe.configはアプリケーション設定のデフォルト設定だったかな

87:デフォルトの名無しさん
09/01/23 10:59:06
public partial class ページ名: System.Web.UI.Page
って何をやっているんですか?

88:デフォルトの名無しさん
09/01/23 11:05:01
class ページ名 … ページ名 という名前のクラスを宣言します
public … クラスがアセンブリ外から参照できます
partial … クラスの定義が複数のファイルにまたがっています
: System.Web.UI.Page … クラスはSystem.Web.UI.Pageクラスを継承します

89:デフォルトの名無しさん
09/01/23 11:12:19
ありがとうございます。おおぉ・・・クラスとかアセンブリとか定義、継承 全部わからない・・・;;
適当にぐぐったのを翻訳すると、
「ページ名という名前のデータと処理を宣言して、コンパイル済みのコード群外から参照でき、複数のファイルのデータと処理を扱い、System.Web.UI.Pageのデータと処理を使えるようにする」
???????頭が壊れる。これがないと何ができなくなるのでしょう?

90:デフォルトの名無しさん
09/01/23 11:15:27
C#ではすべてのコードはクラス(というか型)の中に書かないといけないので
クラス定義がないと何もできない

91:デフォルトの名無しさん
09/01/23 11:21:03
そのページ処理すべて=クラス ということなんですかね?
すみません、「クラス定義」すら理解できていません・・・

92:デフォルトの名無しさん
09/01/23 11:26:18
それくらいは理解できてないとC#は使えないので
入門サイトや入門書読んで勉強しましょう

93:デフォルトの名無しさん
09/01/23 12:02:03
Firefoxのオプションダイアログのようなもの(上部のボタンでウィンドウの中身を
切り替える形のもの)を作成したいのですが、
その実装方法がわからず悩んでいます。

MDIにして子フォームのFormBorderStyleをnoneに設定し
切り替える方法でやってみたところ、ちらつきが出てしまいダメでした。
Firefoxのオプションダイアログにかぎらず、ウィンドウがひとつで中の描画だけ
切り替えるようなアプリの実装方法には、MDIの他にどういったものがありますでしょうか?

長文ですみませんが、よろしくお願いいたします。


94:デフォルトの名無しさん
09/01/23 12:10:41
そんな長文でもないと思うよ

・TabControlを使う
・Panelを重ねて置いて、ボタンを押したら該当Panel.BringToFrontで最前面にもってくる

とか


95:デフォルトの名無しさん
09/01/23 12:11:30
public partial class ページ名: System.Web.UI.Page
{
なんらかの処理
}
これがクラスで合ってますか?C#ではこれが必要だと。
publicは他のページでこのページの処理を使えるようにしている。
partialの意味がよくわからないのですが、1つのクラスを2つのファイルに分けると何かいいことあるのですか?
あと、System.Web.UI.Pageってなんでしょう?ぐぐってもよくわからなかったのですが、そういう処理名ですか?

96:デフォルトの名無しさん
09/01/23 12:20:52
>publicは他のページでこのページの処理を使えるようにしている。
これは違う。クラスの前に付くpublicについては今は気にしなくてもいい。
クラスライブラリを作ったりするときに重要になる。
>1つのクラスを2つのファイルに分けると何かいいことあるのですか?
VisualStudioのデザイナが自動生成したコードを分離できる。
>System.Web.UI.Pageってなんでしょう?
あらかじめ用意されてるクラスの名前。継承元として指定してる。

こんなところでいちいち聞いててもキリないでしょ?
まとめて勉強した方が早いよ

97:デフォルトの名無しさん
09/01/23 12:42:20
ありがとうございます。キリがなくてもいまいち入門サイトとか本見ても理解できないもので・・・
partialを使う事によって「ページ名.aspx.designer.cs」が生成されるって事ですかね?
System.Web.UI.PageはASP.NETが用意していて、それを基盤に動かしたいと。

98:デフォルトの名無しさん
09/01/23 13:17:34
>>97
partialを付けなくても「ページ名.aspx.designer.cs」は生成されるが、
その場合、「同じクラスが2つもあるぞゴルァ!!」と怒られてしまう。

partialを付けることで、二つのファイルに分かれたクラス定義を1つにまとめることが可能になる。

> 1つのクラスを2つのファイルに分けると何かいいことあるのですか
コードジェネレータが生成するコードと、ユーザーが編集するコードを分けることで、
ユーザーが編集したコードがコードジェネレータに上書きされてしまう危険性が無くなるし、
ユーザーが編集するコードに余計なものが混じらないので、コードも見やすくなる。

ところで、本見ても理解できないって、どんな本を読んでるんだ?

99:デフォルトの名無しさん
09/01/23 13:28:56
知り合いの人が、「これからはC#の時代だから一番つぶしがきくのはC#だよ」
と言ってたのですが、同じ人が、「いつまでもWindowsの時代ではない。他の
OSがたくさんでてくるから誰もWindowsなんて使わなくなる」とも言ってました。

これ矛盾してないですか?
C#はWindows上でしかコンパイル(というの?作ること)できないできないですよね?

100:デフォルトの名無しさん
09/01/23 13:33:21
LinuxでもOK

101:デフォルトの名無しさん
09/01/23 13:33:52
全く矛盾してません

102:デフォルトの名無しさん
09/01/23 13:34:02
(´・ω・`)しらんがな。次。

103:デフォルトの名無しさん
09/01/23 13:34:33
Monoってのがあることはあるからぐぐるといいよ
基本的には聞き流しておけばおk

104:デフォルトの名無しさん
09/01/23 13:42:17
>>101
もっと詳しく解説して

>>102
知らないなら黙ってろばか

105:デフォルトの名無しさん
09/01/23 13:53:27
>103で十分だろ

しかし
> 「いつまでもWindowsの時代ではない。他のOSがたくさんでてくるから誰もWindowsなんて使わなくなる」
これはもう10年以上前から聞いてるような台詞だな

106:デフォルトの名無しさん
09/01/23 13:58:48
>>104
失せろゴミ

107:デフォルトの名無しさん
09/01/23 13:59:11
ごめんなさい。
103さんのでよく分かりました。

108:デフォルトの名無しさん
09/01/23 14:00:19
>>105
安心しろ
新しいハードウェアが出なくなってみんなが同じ構成のマシンを使うようになったら
俺がパーフェクトなOSを作る

109:デフォルトの名無しさん
09/01/23 14:24:47
>>98 ありがとう
作って覚えるVisual C#2005exples edition入門だと
クラス…共通の目的を持ったデータと処理を集めたもの
public…外部に公開する。他のクラスから呼び出すことができる
System.Web.UI.Page…本にないのでぐぐってもよくわからず
partial…1つのクラスを2つのファイルで分けて管理できるようにする宣言

ハァ!?!?って感じですた。


110:デフォルトの名無しさん
09/01/23 14:30:56
ちなみに猫でもわかるC#プログラミングだと
「クラスとは、オブジェクトの性質や動作を規定するDNAです。」
「DNAの遺伝情報をもとに生命が形成され、生命は活発に活動することができます。この、実際の生物がオブジェクトに担当します。」
「つまり暮らすを具体化して、物理的な実態となったものがオブジェクトです」

はあ?死ねよって感じでしたね・・・なにいってんだこれ

111:デフォルトの名無しさん
09/01/23 14:38:21
自分が馬鹿だって全世界に向けて叫ばないでいいから

112:デフォルトの名無しさん
09/01/23 14:49:02
>>110
そんな感じの説明って多いよな。
人とか動物とか例えている・・・。実際、人とか動物とかプログラムに関係ないのにな。

113:デフォルトの名無しさん
09/01/23 14:57:03
>>109
ハァ!?!?と思ったら本屋に行くといい。

ハァ!?と思った部分の解説を見比べることで
良い本と悪い本の見分けがつくよ。

全ての本でハァ!?と思うなら・・・ご愁傷様と言うしかないな。

114:デフォルトの名無しさん
09/01/23 15:15:50
変数宣言で
Aaa aaa = new Aaa(Global.WebConfig);
のGlobal.WebConfigってなんですか?
()の中が何もないのは、aaaの箱を作って使えるようにしてるってことだと思うのですが

115:デフォルトの名無しさん
09/01/23 15:20:26
こっちが聞きたいけどおそらくこういうこと
WebApplication webApp = new WebApplication(設定ファイル)

116:デフォルトの名無しさん
09/01/23 15:27:02
Aaa = クラス
aaa = インスタンス変数
Global.WebConfig = 何らかの値

aaaというオブジェクト(インスタンス変数)を作る際にGlobal.WebConfigの値で初期化しているもの。
インスタンスの生成時にコンストラクタが呼び出されるため、そのコンストラクタの引数として渡す。

日本語でわかりやすく説明すると、 赤色で軽自動車を生成するには、こんな感じ。
自動車 自家用車 = new 自動車(赤色,軽自動車);
 

そんなことよりaaaとかいう名称は、つけてはいけない。
今だけではなく、あとからデバッグする時に何これ?になる。



117:みんなどっちの書き方が好き?
09/01/23 15:35:42
private static bool TryGetAttributeValue(HtmlNode node, string xpath, string attrString, out string value){
value = default(string);
if(node == null)
return false;

HtmlNode aNode = node.SelectSingleNode(xpath);
if(aNode == null)
return false;

HtmlAttribute attribute = aNode.Attributes[attrString];
if(attribute == null)
return false;

value = attribute.Value;
return true;
}

private static bool TryGetAttributeValue(HtmlNode node, string xpath, string attrString, out string value){
value = default(string);
if(node == null)
return false;

HtmlNode aNode = node.SelectSingleNode(xpath);
if(aNode != null){
HtmlAttribute attribute = aNode.Attributes[attrString];
if(attribute != null){
value = attribute.Value;
return true;
}
}
return false;
}

118:デフォルトの名無しさん
09/01/23 15:41:25
>>117
インデントがされていないのでどっちも嫌。
上のほうが改行がされてて見やすい。

if(aNode == null)
   return false;

という書き方は、どうも嫌なので…

if(aNode == null){
   return false;
}

と書いてる・・・。

119:デフォルトの名無しさん
09/01/23 15:43:13
>>118
自分は
if(〜){
}
でなれた頃にその構文知ったから
ほとんど↑

120:デフォルトの名無しさん
09/01/23 15:44:12
>>115-116 なるほどうありがとう

121:デフォルトの名無しさん
09/01/23 15:46:44
1行でかけるときは { }なしにするが、
たとえ1命令でも2行にまたがるときは{ }をつけることにしてる。

122:デフォルトの名無しさん
09/01/23 15:50:42
取り敢えずネストはできる限り深くしない

123:デフォルトの名無しさん
09/01/23 15:52:58
ループも条件もネストは一回までと決めてる
あとはswitch使う

124:デフォルトの名無しさん
09/01/23 16:00:14
一回まではやりすぎ

125:117
09/01/23 16:39:21
ネストが浅くなるので上のほうが好まれるのかしら?
まあ{つけるかとか{の位置とかは別の話として

126:デフォルトの名無しさん
09/01/23 16:41:47
ネストの深さとはずれるけど
「出口は一つであるべき」とか言って
returnを複数書くのを嫌ったりする人もいるね

127:デフォルトの名無しさん
09/01/23 16:49:22
foreachで使う列挙体の項目をfoeach内でDisposeしたら即刻エラーになるので
該当項目をすべてDisposeするといった便利な使い方が出来ないのは言語的なバグですか?

128:デフォルトの名無しさん
09/01/23 16:49:35
どうも ブロックは、{ } で囲むという癖がついてる。


129:デフォルトの名無しさん
09/01/23 17:00:05
ネスト一回まではさすがに厳しいかもしれないけど
どんどんだらしなくなる性格だし後から読むとき楽なので、あえて決め事してる
コード量増えることもあるのはご愛敬

130:デフォルトの名無しさん
09/01/23 17:08:28
>>127
列挙体って何のこと。俺様用語は止めてくれる?

Disposeすることは例外発生の原因じゃないよ
どうせコントロールコレクションから要素をDisposeしようとしたんでしょ。
DisposeするとコレクションからRemoveされる実装もあるから。

while( collection.Items.Count > 0 ){
 collection.Items[0].Dispose();
}

みたいにしたらどう

131:デフォルトの名無しさん
09/01/23 17:08:38
>>127
>列挙体 
なのか?用語間違ってないか?

132:デフォルトの名無しさん
09/01/23 17:12:25
>言語的なバグですか?
自分の無能は棚上げですか?

133:デフォルトの名無しさん
09/01/23 17:13:28
ずいぶん厳しいインターネッツですねw

察してやれよw

134:デフォルトの名無しさん
09/01/23 17:15:42
>>132->>133
性格に難あり
どういう環境で育ったんですか?

135:デフォルトの名無しさん
09/01/23 17:21:35
>>134
アンカー間違えてんじゃねえよksg

136:デフォルトの名無しさん
09/01/23 17:29:00
>>135
性格に難あり
どういう環境で育ったんですか?


137:デフォルトの名無しさん
09/01/23 17:44:43
>>127
バグがあるのは、おまえだ。

138:デフォルトの名無しさん
09/01/23 19:56:22
脳にバグ持ってる人は大変だねぇ

139:デフォルトの名無しさん
09/01/23 21:20:09
いやバグだな

0
1
2Dispose
3
4Dispose
5

C#ではこういったことが出来ない

140:デフォルトの名無しさん
09/01/23 21:42:09
>>139
分かるように実行可能なソースをアップしてくれんか

141:デフォルトの名無しさん
09/01/23 22:02:00
C#でOS作ったんだけど、フレームワークインストールして無いと動かないんですよね?

どうしたらいいっすか?

142:デフォルトの名無しさん
09/01/23 22:03:46
C#という言語自体は.NET Frameworkとは無関係です
自分でネイティブコンパイラ作るなりCLI実装しちゃうなりすればおk

143:デフォルトの名無しさん
09/01/23 22:05:59
ネイティブで C# が動く、って OS があったな・・・

144:デフォルトの名無しさん
09/01/23 22:07:39
ネイティブでC#が動くというよりCLIを組み込んだOSだったような

145:デフォルトの名無しさん
09/01/23 22:12:18
それWindowsじゃん

146:デフォルトの名無しさん
09/01/23 22:39:52
singularity

147:デフォルトの名無しさん
09/01/23 22:41:03
Type.GetType(string)ではなくてType.GetType(class)って書けないのかな?
""で括ると候補でないし

148:デフォルトの名無しさん
09/01/23 22:41:40
typeof(型名)

149:デフォルトの名無しさん
09/01/23 23:06:04
>>148
ありがとうございます

150:デフォルトの名無しさん
09/01/23 23:07:46
>>141-145

ワラタ

151:デフォルトの名無しさん
09/01/24 03:43:08
NumericUpDownコントロールのMinimumを1に設定してもフォーム起動時には0になってしまいますが何故だろう

152:デフォルトの名無しさん
09/01/24 05:28:05
C#でのExcel操作(自動化)について質問があります。
C#からExcelのセルの幅や高さを変更したり、新しいシートを追加して
そのシートの名前を変更、新しく追加したシートを操作するにはどうすれば良いのでしょうか?

153:デフォルトの名無しさん
09/01/24 09:35:53
"C#でExcel"でぐぐった上の発言であろうな?

154:デフォルトの名無しさん
09/01/24 10:52:01
>>153
色々やってシートの追加と名前の変更はできたのですが、Sheet1しか名前の変更ができない上に
セルの幅、高さの変更、追加したシートの操作ができません。
Sheet1のみの操作と名前の変更だけしかできないです。

155:デフォルトの名無しさん
09/01/24 11:12:33
VBA ではできてんの?

156:デフォルトの名無しさん
09/01/24 11:17:19
VBAは使った事がありません。

157:デフォルトの名無しさん
09/01/24 11:19:04
まず VBA でできることを確認してから、C# に書き直した方が早いよ。

158:デフォルトの名無しさん
09/01/24 11:26:49
>>157
URLリンク(www.officepro.jp)
上記ページを読んでいるのですが、このVBAをどのように書き換えたら
C#で使えるようになるのでしょうか?

159:デフォルトの名無しさん
09/01/24 11:29:18
名前付き引数を使わずにやってみたら?

160:デフォルトの名無しさん
09/01/24 11:37:04
>>159
すいません。まったく意味が分かりません…
コードでこのように書き換えたら良いという例を挙げてはいただけないでしょうか?

161:デフォルトの名無しさん
09/01/24 12:15:19
159氏じゃないが、エクセルの起動法は分かるよね?
とりあえず、シート2の名前を変更して、それらのセルを操作する例

シート1は既に起動している物として話を進める
自分で設定したシートコレクション名を以下のコードに置き換えて試してみて

//シート2を追加
Excel.Worksheet sheet2 = (Excel.Worksheet)シートコレクション名.Add(before, after, 1, Excel.XlSheetType.xlWorksheet);

//シート1とシート2の名前を設定
シートコレクション名.Name = "シート1の名前です";
sheet2.Name = "シート2の名前です";

//セルに文字を入力自動化
シートコレクション名.Cells[1, 1] = "シート1のセルA1";
sheet2.Cells[1, 1] = "シート2のセルA1";

162:デフォルトの名無しさん
09/01/24 12:15:38
質問です。C#でバイト配列から部分バイト配列を探すには
どうしたらいいでしょうか。
Cのstrstr()や、Pythonのbuf.index(sub_buf)のような処理です。

163:デフォルトの名無しさん
09/01/24 14:46:09
>>162
バカ正直に検索する作業に戻るんだ。たとえばこんな風に。

private static int FindSubArray<T>(T[] array, T[] subArray) where T : IComparable
{
  int match = 0;
  for (int i = 0; i < array.Length; ++i)
  {
    if (array[ i ].CompareTo(subArray[ match ]) == 0)
    {
      match++;
      if (match == subArray.Length)
      {
        return i - match + 1;
      }
    }
    else
    {
      match = 0;
    }
  }

  return -1;
}


164:デフォルトの名無しさん
09/01/24 14:48:43
IComparable使ったらボックス化が発生しちゃうからジェネリックにした意味がないぞ
IComparable<T>にするんだ

165:デフォルトの名無しさん
09/01/24 14:51:27
というか大小比較する必要はないんだからIEquatable<T>のほうがいいな
それもwhereで指定すると単純に参照比較で探したいときなんかに困るから
EqualityComparer<T>.Default使えば

166:デフォルトの名無しさん
09/01/24 14:53:17
対象がbyte[]と決まっているなら、文字列に変換しておいてIndexOf()という手もある。

string s1 = Encoding.ASCII.GetString(buf);
string s2 = Encoding.ASCII.GetString(sub_buf);
int p = s1.IndexOf(s2, StringComparison.Ordinal);

167:デフォルトの名無しさん
09/01/24 15:05:43
工エエェェ(´д`)ェェエエ工

168:162
09/01/24 15:38:37
>>163
関数丸ごと書いてもらえるとは・・・感謝です。
バカ正直に検索する作業に戻ります。

>>164-165
すいません、マニュアルを読んでみましたが
不勉強でまともなレスが付けられません。
メモしたので後日振り返りたいと思います。

>>166
そういう方法もあるんですね。
byte[]からStringの変換にEncodingを使うとは
思っていなかったので参考になりました。

169:デフォルトの名無しさん
09/01/24 15:41:29
>>166
byte[]の途中に0が入ってたら?

170:デフォルトの名無しさん
09/01/24 15:47:33
>>163>>165を適用するとこう
>>163よりは桁違いに速いはず
private static int FindSubArray<T>(T[] array, T[] subArray)
{
  EqualityComparer<T> comparer = EqualityComparer<T>.Default;
  int match = 0;
  for (int i = 0; i < array.Length; ++i)
  {
    if (comparer.Equals(array[ i ], subArray[ match ]))
    { //あとは同じ

171:デフォルトの名無しさん
09/01/24 15:52:15
>>169
無問題

172:デフォルトの名無しさん
09/01/24 16:30:20
だな。今回の場合、むしろASCIIEncoingが0x80-0xffのデータを受け付けないほうが問題だ。
無理矢理でもnew string(a.Cast<char>().ToArray())とか、
a.Aggregate(new StringBuilder(a.Length), (sb, c) => sb.Append((char)c)).ToString()とかで持っていくほうがいい。

173:デフォルトの名無しさん
09/01/24 16:35:14
BitConverter.ToString

174:デフォルトの名無しさん
09/01/24 21:45:07
>>172
受け付けるよ。

175:デフォルトの名無しさん
09/01/24 22:28:03
\u003fに置き換えられるのをもって受け付けるといわれても…

176:デフォルトの名無しさん
09/01/24 22:28:04
Dictionary<AAA, BBB>のコレクション中から、BBBの条件によって要素を削除したいのですが
foreachで列挙しながらRemoveすると、列挙子が無効になって例外が発生します。
あらかじめ削除する要素を全部列挙してから、その後にRemoveするしかないんでしょうか?

177:デフォルトの名無しさん
09/01/24 22:39:52
一旦Keysを配列にコピーするとか

178:デフォルトの名無しさん
09/01/24 22:40:34
>>176
それ以上にスマートな方法は思いつかないなあ。
List<AAA,BBB>に投射しておいてRemoveAll()とか、考えられなくもないけど。

179:178
09/01/24 22:41:06
間違えた、List<KeyValuePair<AAA,BBB>>だ。

180:デフォルトの名無しさん
09/01/24 22:44:29
> あらかじめ削除する要素を全部列挙してから、その後にRemove

を静的クラスに書いておけば拡張メソッドで呼び放題だよ!

181:デフォルトの名無しさん
09/01/24 22:56:48
foreachのin ○○の後に.ToArray()と書けばおk

182:デフォルトの名無しさん
09/01/24 23:02:46
>>180
こんな感じか? メモ帳で書いただけで検証してないけど。

public static void RemoveAllByValue<TKey, TValue>(
  this Dictionary<TKey, TValue> dictionary, Predicate<TValue> match)
{
  List<TKey> keys = new List<TKey>();
  foreach (TKey key in dictionary.Keys)
  {
    if (match(dictionary[key]))
    {
      keys.Add(key);
    }
  }
  
  foreach (TKey key in dictionary.Keys)
  {
    dictionary.Remove(key);
  }
}

183:176
09/01/24 23:27:22
列挙しながら削除はできませんか。
削除するのに別途メモリ確保するのは違和感あったのですが、仕方ないんですね。

184:デフォルトの名無しさん
09/01/24 23:33:23
>>183
削除するんじゃなくて最初から条件を満たす要素を Dictionary に入れなければいいんじゃね?

185:デフォルトの名無しさん
09/01/24 23:35:11
(゚ε゚)キニシナイ!!

186:デフォルトの名無しさん
09/01/24 23:35:48
━━━━━━━━━━━━━━━━━━━━
 
 そんなことよりyahooきっず「どんな''ジャンボ''が食べたい?」に投票しようぜwwwwwwwww
 ジャンボピーマンを一位にして餓鬼共を泣かせようwwwwwwwwww
 現在1位 yahooの工作開始までに2位のたこ焼きを突き放す

 URLリンク(kids.yahoo.co.jp)         _人人人人人_
                        >鶴職人募集中<
                         ̄ Y^Y^^Y^Y^ ̄

 ↓本スレ
 スレリンク(news4vip板)
━━━━━━━━━━━━━━━━━━━━

187:デフォルトの名無しさん
09/01/25 00:20:01
コピペ君って馬鹿だな、まで読んだ。

188:デフォルトの名無しさん
09/01/25 00:30:05
ThreadPool.QueueUserWorkItemで実行されるスレッドで
Thread.CurrentThread.PriorityをデフォルトのNormal以外に変更してみたところ
問題なく変更でき、優先順位もちゃんと反映されているようです。
終わった後はNormalに戻されてました。

この挙動を期待して書いてもいいのでしょうか?
MSDNをざっと見たところ、この事について書いてないようなのですが…

189:デフォルトの名無しさん
09/01/25 02:50:47
>>188
文書化されてない以上その性質に頼るべきではない。
ちなみに.NET1.1では再利用したスレッドに変更したプライオリティやスレッド名は引き継がれている。
あとMonoの場合はLowestから変更できなかった。いろいろ複雑だ。

190:188
09/01/25 17:50:04
>>189
ガビョ〜ん、そうなんですか。
ありがとうございました

191:デフォルトの名無しさん
09/01/25 21:02:05
VisualStudioが自動で書いたコードなんだけど、

using System;
using System.Windows.Forms;

というのがあったんだけど、一行目だけでよくないですか?
Systemの中にWindowsもあるんでしょ?

192:デフォルトの名無しさん
09/01/25 21:06:29
ないよ
名前空間はそれぞれ独立してる
見易さのためにピリオドで区切ってるだけ

193:デフォルトの名無しさん
09/01/25 21:07:20
名前空間ってその名の通り名前の一部にすぎないんだよ

194:デフォルトの名無しさん
09/01/25 21:09:41
>>191
ダメ。

195:デフォルトの名無しさん
09/01/25 21:15:29
using System; だけで System.* がすべてインポートされるなら、
名前空間を分けた意味がないじゃないか。

196:デフォルトの名無しさん
09/01/25 21:18:25
そもそもグローバル名前空間はすべての名前空間を含んでるんだから
何も書かなくても全てインポートされるはずだな

197:デフォルトの名無しさん
09/01/25 21:20:03
>>195
ごもっとも

198:デフォルトの名無しさん
09/01/25 21:33:05
SystemだけってのはExplorerでいうマイコンピューターみたいなもの?

199:デフォルトの名無しさん
09/01/25 21:35:05
PCのCPUみたいなものでは

200:デフォルトの名無しさん
09/01/25 21:36:57
Systemで指定されるものにSystem.Windows.Formsは入ってないとするなら
Systemだけで指定されてるのって何だとなるわな。

201:デフォルトの名無しさん
09/01/25 21:39:09
ためしにusing System;を抜いてみればわかるお

202:デフォルトの名無しさん
09/01/25 21:55:23
>>198
コレッ。 手元にVSない状態で、妄想で会話するな。

203:デフォルトの名無しさん
09/01/25 21:58:21
これ、自称非初心者の俺様も実はよくわかってない

204:デフォルトの名無しさん
09/01/25 22:10:43
リフレクションは遅いと聞くと
MethodInfoとかを静的フィールドにいちいち持っておきたくなるけど、
システムでキャッシュしてるそうだから効果なかったりする?
使うたびに作り直すのとどっちがいいかな?

205:デフォルトの名無しさん
09/01/25 22:12:25
そこら辺は言語によっていろんな考え方があるよね。
C++だと、using System;相当のものを書けば、Windows.Forms.Hogeと使えるという風に
入れ子の名前空間にもusingの効果が及ぶ。
C++から来た人間としてはそこにはまりそうになった。

206:デフォルトの名無しさん
09/01/25 22:12:47
>>204
CreateDelegateで取得したデリゲートをキャッシュするのが最速

207:デフォルトの名無しさん
09/01/25 22:13:18
だから、System も System.Windows.Forms も System.Collections も、
全部同じレベルなんだよ。

208:デフォルトの名無しさん
09/01/25 22:18:12
なんかフォルダみたいだね。
Systemフォルダの中にWindowsがあってその中にFormsがある。
SystemフォルダにアクセスしたからってFormsにアクセスするわけではない。

209:デフォルトの名無しさん
09/01/25 22:20:50
一応フォルダ状の構成なんだよね?
でも宣言はさらに下位のフォルダの中には及ばないってことなんだろう。

210:デフォルトの名無しさん
09/01/25 22:21:19
違う。C#ではあたかもネストしてるように見せかけてるだけ。

211:デフォルトの名無しさん
09/01/25 22:21:32
>>208
だからマイコンピューターなんだよ

212:デフォルトの名無しさん
09/01/25 22:25:00
namespace System { namespace Windows { この中ではSystemの型にアクセスできる } }
C#でこういう風に書けるのは単なるシンタックスシュガーみたいなもの。
本当に階層になってるわけではない。名前空間はあくまで型の前に付く名前。

213:デフォルトの名無しさん
09/01/25 22:26:28
だから、今、開いてるフォルダの中のファイルしか使えない。

例えば、C:\Windows\System\ を開いてるなら
その中のファイルにしかアクセスできない。
その下のC:\Windows\System\Form\ にあるファイルを開きたいならC:\Windows\System\Form\を開かないといけない。

ただ、わかりやすいようにカテゴリーに分けられているだけ。
極端に言えば
System.Windows.Forms ではなくWindowsForm という名前でも良かった。
・・・しかし、それではわかりにくく管理しにくいことからSystemのWindowsのFormsというように分類したまでの話。

214:デフォルトの名無しさん
09/01/25 22:28:13
どっちなんだよw
ネストしてるのか(フォルダ的)
別もんなのか


215:デフォルトの名無しさん
09/01/25 22:29:04
System_Windows_Forms
なら理解してくれるんじゃまいか?

216:デフォルトの名無しさん
09/01/25 22:29:54
難しく考えずに、フォルダとその中でいいんじゃない?
コンソールでパスを通したことがあるなら、イメージ的にはusingはそれと同等って感じ。

217:デフォルトの名無しさん
09/01/25 22:32:28
フォルダの中にフォルダはあるけど名前空間の中に名前空間は無いの
もっといえば,名前空間なんてものは単なる飾りなの

218:デフォルトの名無しさん
09/01/25 22:35:18
それよりギガ株を自社株買いで半値を割らせないようにしているけど
その評価でBPSを出してくるのは認められているの?。
グレーゾンも粉飾紛いに見えてしまう。

219:218
09/01/25 22:35:50
スマソ、ごばく

220:デフォルトの名無しさん
09/01/25 22:38:07
SystemとSystem.Windowsは同じ列なんだな。
Systemの下にSystem.Windowsがあるのかと思ってた。

221:191
09/01/25 22:38:53
たくさんの方に答えていただきありがとうございました。

というか、ここの人でも議論になるような疑問を持ててちょっとうれしかったです。

222:デフォルトの名無しさん
09/01/25 23:12:57
>>214
C#の概念ではネストしてる(フォルダ的)

MSILの概念(=リフレクションで扱える情報)ではネストしていない
(SystemとSystem.Windowsの間に親子関係はない)

223:デフォルトの名無しさん
09/01/25 23:14:11
usingの効果は、たとえば
using System.Text;と書いておけば毎回System.Text.StringBuilderと
書かなくて済むというだけの話でしょ。

で、using System;とだけ書いても、Text.StringBuilderと書けるようには
ならない、と。

224:デフォルトの名無しさん
09/01/25 23:23:22
>>206
おお
確かにDelegate実行は大分速いみたいですね

だけどこれMethodInfoにしか使えませんね
プロパティだって結局メソッドなのにPropertyInfoに使えないというのは

225:デフォルトの名無しさん
09/01/25 23:26:37
>>224
プロパティにも使えるよ
PropertyInfoのGetGetMethodやGetSetMethodでアクセサのMethodInfoが取れる
フィールドの場合は面倒だけどEmit使ってメソッドを動的に生成してやるしかない

226:デフォルトの名無しさん
09/01/25 23:34:12
EventInfo も同じ感じだな。少しは ILDASM あたりでメンバが
各々どうなっているか眺めてみれ
ちなみに >>225 のフィールドの場合のヒントは DynamicMethod な

227:デフォルトの名無しさん
09/01/25 23:40:36
フィールドの値の取得だけならExpression.Field使えば簡単だけどな

228:デフォルトの名無しさん
09/01/26 04:22:23
.NET製のソフトってそれ自体ではなく、JITコンパイラの起動が遅いの?

229:デフォルトの名無しさん
09/01/26 04:51:02
BinaryFormatterでシリアライズしたデータをデシリアライズしようとすると、
TypeLoadExceptionHolderがなんとかというエラーが出てきてデシリアライズできないのですが、
シリアライズができてデシリアライズができないというのはどんな原因が考えられるのでしょうか?

230:デフォルトの名無しさん
09/01/26 08:22:32
他で開きっぱなしで、開く権限がないとかかなぁ。

それか、テスト用として、保存直後に読み込んでて、
using とか Close とかしてなくてちゃんとフラッシュされてないか。

あとは、保存する時に、
ファイルを Create とか Truncate じゃなくて、
Append とか Open で保存しちゃってて不正なバイナリになってるとか。


231:デフォルトの名無しさん
09/01/26 09:59:07
>>230
多分そこら辺は問題ないと思います。というのも、それが起こるのがこのアセンブリで定義した
型をシリアライズした時のみで、それ以外の本体やプラグインで保存したデータについては全く問題ない
ためです。試しに、

[Serialize]
class TestData { }

というクラスをシリアライズして保存してみましたがそれでも上のエラーが飛んできます orz

BinaryFormatterを使っていてSerializeAttributeをつけ忘れてSerializationExceptionが飛ぶ
ということはありますが、ArgumentExceptionなんて飛んできたことないよ orz

232:デフォルトの名無しさん
09/01/26 10:22:23
>>231

[Serialize]→[Serializable]
でした orz

233:デフォルトの名無しさん
09/01/26 10:27:37
例外を正確に書いてみそ

234:デフォルトの名無しさん
09/01/26 11:09:20
>>233
エラーメッセージは

型 'System.Runtime.Serialization.TypeLoadExceptionHolder' のオブジェクトを
型 'PluginTest.IPluginData' に変換できません

と…
変換先の型名はちょっと変えてますが、それ以外は全く一緒で、SerializationExceptionではなく
ArgumentExceptionで飛んできます。InnerExceptionはnullでした。

235:デフォルトの名無しさん
09/01/26 12:24:02
>>234
そのコードを新しいプロジェクトとかで書いても同じ例外が投げられるの?
だったらそのコードをさらしてくれ。

236:デフォルトの名無しさん
09/01/26 16:26:58
>>235
新しくプロジェクトを作成し、すべて同一にすると同じ例外が飛んできますが、
名前空間を変えると飛ばなくなりました。
プロジェクト全体を確認してみましたが、名前空間とクラス名がダブっている訳でもなかったのですが…
なんだこれ orz

237:デフォルトの名無しさん
09/01/26 16:39:38
よく分からんけど関係するアセンブリをGACに登録してるとかない?
ローカルのアセンブリよりGACのが優先してロードされるので、
期待したのと違う動きをすることがある。

238:デフォルトの名無しさん
09/01/26 17:07:14
>>237
してないです。ngenとかも動かしてないのでキャッシュされたのがロード
されてるわけではないと思います。
.NETのインストールでもミスったんでしょうか…

239:デフォルトの名無しさん
09/01/26 17:12:49
VS2008でソースとかシンボルとか落としてきてSerializeの中追っかけてみたら何か分かるかもね

240:デフォルトの名無しさん
09/01/26 19:22:56
ある別の型(T)に変換できることを表すインターフェイスは無いの?
IConvertible<T>みたいな

241:デフォルトの名無しさん
09/01/26 19:53:38
標準ライブラリには無いな

242:デフォルトの名無しさん
09/01/26 21:12:35
is T じゃだめなのか?ダメだな。

243:デフォルトの名無しさん
09/01/26 23:19:27
クラス名にOfとか使うのってどうなんだろう。
たとえばContainerOfImage、ContainerOf3D、といった感じの名前の付け方。似た機能のクラスの頭文字が統一されて見やすいとは思うんだけど。

244:デフォルトの名無しさん
09/01/26 23:25:42
不自然
英語としてどうかは置いといて,普通は見かけないから激しく違和感を感じる
Ofのかわりにアンダーバー使ったりする方がまだ綺麗な気がする

245:デフォルトの名無しさん
09/01/26 23:25:56
それなんてVB.NET
List(Of T) URLリンク(msdn.microsoft.com)
Of キーワード URLリンク(msdn.microsoft.com)

246:デフォルトの名無しさん
09/01/26 23:31:14
○○Of(引数)の形を除けば,メンバ名にもOfってあんまり見かけないよね

247:デフォルトの名無しさん
09/01/26 23:32:15
別に Of なくてもいいと思う。
先にカテゴリを記述する命名スタイルは普通にある。
Of を名前に入れるのは、Of 込みで1つの熟語になってるようなものくらい。

248:デフォルトの名無しさん
09/01/26 23:35:22
DialogColorやStreamStringじゃ全然違う意味になっちゃうよ

249:デフォルトの名無しさん
09/01/26 23:51:31
全部そう言う命名で統一されていれば気にならないもんさ。

250:デフォルトの名無しさん
09/01/27 00:09:30
>>240
変換出来るかどうかを知るだけなら、TypeConverter拾ってきて
CanConvertTo(), CanConvertFrom()で良いと思う

251:デフォルトの名無しさん
09/01/27 00:37:45
C#で複数ファイルを一つに暗号化した上で纏めるツールを作ろうと思っているのですが、
例えば、次の3ファイルを1ファイルに纏めるにはどうすれば良いでしょうか?

※また、一纏めにするだけではなく、パスワードを入力する事により暗号化した上で1ファイルに纏めたい
と思っています。当然複合化もしたいです。

【暗号化_前】
AAA.xls
BBB.xls
CCC.xls

【暗号化_後】
ABC.xls

【パスワード】
abc_dayo




252:デフォルトの名無しさん
09/01/27 00:43:07
7zip32.dllでも呼べば?

253:デフォルトの名無しさん
09/01/27 01:01:41
>>252
あざーす。ぐぐってみます。

254:デフォルトの名無しさん
09/01/27 01:02:41
ふぇ…

255:デフォルトの名無しさん
09/01/27 10:13:08
ふぇっくしょん!

256:デフォルトの名無しさん
09/01/27 12:26:20
if なんらかの条件
{
なんらかの処理
}

ボタン処理



のプログラムでなんらかの条件に当てはまったときにボタン実行が行えないようにするにはどうすればいいでしょう?
プログラム自体わけわかめで日本語でおkは重々承知ですが、エスパーさん助けて;;

257:デフォルトの名無しさん
09/01/27 12:40:25
if なんらかの条件
{
なんらかの処理
}
else
{
ボタン処理
}

258:デフォルトの名無しさん
09/01/27 12:59:42
まさにそのとおりのプログラムなのですが

if なんらかの条件 @

   if なんらかの条件A
   {
     なんらかの処理A
   } 
    else
    {
     なんらかの処理B
    }

ボタン処理

となっていて、なんらかの条件Aのときにボタン処理させないようにしたいので、頭ぐちゃぐちゃーとなっています。

259:デフォルトの名無しさん
09/01/27 13:02:41
なんらかの処理Aの最後でreturn;すればヨイヨイ

260:デフォルトの名無しさん
09/01/27 13:05:03
リターンよくわかってないです。調べてみます。ありがとう

261:デフォルトの名無しさん
09/01/27 13:05:44
if なんらかの条件 @

   if なんらかの条件A
   {
     なんらかの処理A
   } 
    else
    {
     なんらかの処理B
    }

else
{
   if なんらかの条件A
   {
     なんらかの処理A
   }
else
{
     ボタン処理
   }




262:デフォルトの名無しさん
09/01/27 13:20:29
なんらかのがゲシュタルト崩壊した


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5121日前に更新/209 KB
担当:undef