[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 09/13 20:16 / Filesize : 200 KB / Number-of Response : 825
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 02:19:33 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

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

前スレ

ふらっとC#,C♯,C#(初心者用) Part38
pc11.2ch.net/test/read.cgi/tech/1235864730/

313 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 14:32:21 ]
>>309
レスありがとうございます
「pertial識別子が型hにありません。この型に別のpartial宣言が(ry」
までたどり着けました

314 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 14:33:15 ]
.>>310
あんまり賢い方法ではないってことですね・・・。
プロパティで実装してみます。ありがとうございました。

315 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 14:35:48 ]
>>313
駄目だこりゃ。
どうしてもこの教材である必要がなければ、他のあたって。

316 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 14:38:41 ]
>>315
私が根本的に勘違いしているみたいですね・・・
すみませんとりあえず他のをあたります

317 名前:315 mailto:sage [2009/03/22(日) 14:42:35 ]
うん
Form1.Designer.csの内容をこのサンプルから省いて、
Form1.csに追加が必要なメンバ変数とイベントハンドラの記述をすれば
動くので、原理的に難しい話では全くないんだけど、
それができる人は、そもそもこのチュートリアルをやる必要がありません。

318 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 14:45:51 ]
>>305
普通に演算子オーバーロードすれば良いと思う。
newでインスタンス作りたくなければ、構造体にすればいい。
けど、フィールドの初期化しなきゃいけないので、宣言だけはnewで我慢かなぁ

319 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 14:50:26 ]
>>314
floatと完全互換ならこの程度で済みそうだけど、複雑になるとoverloadの山になるな。
struct RegularizedAngle {
 float inAngle;
 public RegularizedAngle(float f) { inAngle = f; }
 public float Angle { 
   get { return inAngle; } 
   set { inAngle = value; } // いろいろ省略
 }
 public static implicit operator RegularizedAngle(float f) {
     return new RegularizedAngle(f); 
 }
 public static implicit operator RegularizedAngle(double f) {
     return (RegularizedAngle) (float) f;
 }
 public static implicit operator float(RegularizedAngle ra) {
     return ra.Angle;
 }
 public override string ToString() { return Angle.ToString(); }
}
--
static void Main() {
    RegularizedAngle x1 = 12.3;
    RegularizedAngle x2 = 10;
    float f = x1 * 3;
    RegularizedAngle x3 = x1 * x2;


320 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:01:40 ]
>>319
ちびっと訂正
>public RegularizedAngle(float f) { inAngle = f; } 
public RegularizedAngle(float f) { inAngle = 0; Angle = f; }


321 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:46:43 ]
なんかlinqを使うより、IEnumerable<>のSelect<>メソッドやWhere<>メソッドを使ったほうが
わかりやすい気がするのはなぜですか?
linqtがfromから始まるのが気持ち悪いからですか?



322 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:46:54 ]
>>319-320
ありがとうございます。参考になります。
しかし完全に理解するのは難しそうですね・・・。
それの上にさらに正規化処理を入れなければならないのですよね・・・。

323 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 16:01:10 ]
>>321
クエリ式が分かりにくいと感じるなら拡張メソッドでLINQやればいい
fromからなのはインテリセンス効かせるため

324 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 16:02:59 ]
>>321
それもLINQ

325 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 16:08:46 ]
クエリ式なんかただのSQLっぽく見せるためのプリプロセッサなんだから
SQL大好き人間以外は使う必要の無いものだよ
SQL大好き人間でも最終的には拡張メソッドに適応すべきだろう

326 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 16:30:24 ]
LINQってなんて読むの?ラインクエリ?

327 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 16:37:16 ]
なるほど、そんなもんなんだ
機能としては、ADO.NETのDataTable.Select();が、より簡単に使えるようになりました的な感じなのね
メモリ上にデータをもって検索するとか、xmlから検索するとかに便利そうね

つか配列を検索しやすくしましたって感じ?
データベースから引っ張ってくるのは結果セットだけ取得して、
それを単に表示させるだけのほうが再計算入るよりパフォーマンスがよさそうなんだがそのあたりはどうなんだろう

328 名前:デフォルトの名無しさん [2009/03/22(日) 16:44:47 ]
LINQをSQLに使えばSQL文が生成され
データベースに問い合わせされ結果セットだけが取得されるんだよ

329 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 16:59:20 ]
>>325
letとか多重from使おうとするとメソッド形式ではちと厳しい。

>>326
リンク。
linkと同じ音で読めってさ。



330 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:05:29 ]
へー、その場で動的にクエリを生成してくれるのね
難しい処理はストアドに記述してしまうし、
ある程度の決まった処理ならxsdファイルのDataSetに記述したほうが楽そうだけど、
DataSetでは、where文を動的に生成することができなかったから、
それが簡単に記述できるようになるのなら確かに便利かもしれん

331 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:28:33 ]
ボタンを押したらtextBoxのフォントサイズを
変えようとしてるのですが

iの中にはint で18 が入ってる

textBox1.Font.Size = i.ToString();

でどうもうまくいきません、どう記述したらよいでしょうか?



332 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:32:38 ]
ReadOnleyプロパティだからそれ。

333 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:34:19 ]
やどりぎ+どくどく

334 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:35:31 ]
>>333
すいません、ありがとうございます、リッチテクストでも同じでしょうか?

335 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 19:39:34 ]
EnterpriseLibrary4.1の使い方が全く分かりません・・・
ダウンロードしてインストールして・・・
そこからどうすればいいのか・・・

336 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:42:35 ]
文字列から数字取り出すのってどうやったら良いですか?1 2でなく12 3 434とかで 

337 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:51:11 ]
>>336
new Regex(@"\d+").Match(str);


338 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:53:46 ]
ありがとうございますた

339 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:01:47 ]
linq試してみました
簡単にsqlが取得できるのはすごいね
ただアドホッククエリは今までと同じようにEntitySQLとか使って取得するのね
結局は型無しになってしまうし・・・

簡単にクエリ書けるのはいいけど、ソースコードの中でばんばん書けてしまうと、
mvcモデルの原則に反するんじゃないのかな?
普通に使用するなら型付きDataSetのほうが楽でわかりやすい気がするんだけど、
そうなるとLinqToEntitiesを導入する最大の利点ってなんなんだろう・・・
DBデータの取得、更新を行う再利用可能なクラス(Model)が作りやすいってことなのかな?

340 名前:デフォルトの名無しさん [2009/03/22(日) 22:23:24 ]
モデルの中にかけばいいんじゃねーの?

341 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 23:26:37 ]
>>339
ビジネスロジック層とデータ層の間を繋ぐもの的な位置づけ。



342 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 01:08:46 ]
C++/CLI から来ました。方向性が間違ってたらすみません。
>>305
class RegularizedAngle {
  private float InAngle;

  public float Angle {
    get {
      return this.InAngle;
    }
    set {
      if (value <= 0.0) // valueが負値だったら正値にする正規化
        this.InAngle = value + (int)(value / (Math.PI*2.0f) + 1.0) * Math.PI*2.0f;
      else // valueが正値だったら2πで剰余算する正規化
        this.InAngle = value - (int)(value / (Math.PI*2.0f)) * Math.PI*2.0f;
    }
  }
}

343 名前:305 mailto:sage [2009/03/23(月) 02:13:02 ]
>>342 ありがとうございます。処理を見直した結果-3.14〜+3.14までを格納するように改めました。
  //角度を格納するが強制的に正規化される型
  //doubleとしてアクセスできる
  public class RegularizedAngle
  {
    private double InAngle;
    public RegularizedAngle()
    {
      InAngle = 0;
    }
    public RegularizedAngle(double i)
    {
      InAngle = 0;
      Angle = i;
    }
    public double Degree
    {
      get { return StgUtil.RadToDeg(InAngle); }
      set { Angle = StgUtil.DegToRad(value); }
    }
    private double Angle
    {
      get { return InAngle; }
      set
      {
        //6.28以上だったら6.28で剰余算
        if (value > StgUtil.PIx2) value %= StgUtil.PIx2;
        InAngle = value;
      }
    }

344 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 02:16:15 ]
    //lはrより左方向
    public static bool operator >(double l, RegularizedAngle r)
    { return AngCheck(l, r.Angle); }
    public static bool operator >(RegularizedAngle l, double r)
    { return AngCheck(l.Angle, r); }
    public static bool operator >(RegularizedAngle l, RegularizedAngle r)
    { return AngCheck(l.Angle, r.Angle); }
    //lはrより右方向
    public static bool operator <(double l, RegularizedAngle r)
    { return !AngCheck(l, r.Angle); }
    public static bool operator <(RegularizedAngle l, double r)
    { return !AngCheck(l.Angle, r); }
    public static bool operator <(RegularizedAngle l, RegularizedAngle r)
    { return !AngCheck(l.Angle, r.Angle); }
    //lから右回りと左回り、どっちがrへの移動量がすくない?
    private static bool AngCheck(double l, double r)
    { return (l + r >= 0); }    //ここの処理をなんて書いていいのかわかりません。。。

    //doubleを代入された場合
    public static implicit operator RegularizedAngle(double f)
    { return new RegularizedAngle(f); }
    //doubleを代入された場合
    //doubleとして参照された場合
    //演算子の動作もdoubleに準拠
    public static implicit operator double(RegularizedAngle l)
    { return l.InAngle; }

    public override string ToString()
    { return Angle.ToString(); }
  }
ぐぐってみるとY座標から右回り左回りを算出するという手段がありました。おそらく0度が真右になるからできるんだと思いますが、
このクラスは角度だけを扱いたいので角度(ラジアン)だけから算出したいのです。何か良い方法があったらどうかお教えください。

345 名前:デフォルトの名無しさん [2009/03/23(月) 11:08:45 ]
C#はじめて2Weekの新参者ですが教えてください
サーバーエクスプローラからTBを選択してForm上にDRAG&DROPすると
oleDbDataAdapter1が作成されるのですが、同じmdbの別TBを
DRAG&DROPすると別のoleDbDataAdapter2が作られるのですが、
二つのoleDbDataAdapterを作成しなければいけないのでしょうか?
oleDbDataAdapter1だけにはできないんでしょうか?
C#2003です、よろしくお願いします

346 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 11:33:11 ]
嫌です

347 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 12:42:50 ]
同意

348 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 17:56:52 ]
御意

349 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 18:22:15 ]
ザムディン

350 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 19:36:18 ]
質問です。
System.Windows.Forms.Formクラスの
FormBorderStyleプロパティをNoneにし、
WindowStateをMaximizedにすると
タスクバーがフォームに隠れてしまうのは仕様ですか?
またFormBorderStyleをNoneにしたまま
これを回避する方法はどなたかご存知ですか?

351 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 20:39:37 ]
仕様じゃないですかね
とりあえずスクリーンのWorkingAreaを
MaximizedBoundsに設定したらいいんじゃない?




352 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 20:56:08 ]
System.Windows.Forms.Screen
から作業領域取得して設定

353 名前:350 mailto:sage [2009/03/23(月) 21:37:29 ]
this.MaximizedBounds = Screen.GetWorkingArea(this);
で修正できました。
ありがとうございます。

354 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 16:25:49 ]
a += b * c;
はb*cの結果とaを足してくれるんですか?

355 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 16:31:41 ]
それくらい試せよ

356 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 16:32:23 ]
>>354
試してみればいい。

357 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 17:46:10 ]
なるほど
ありがとうございました

358 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 17:57:07 ]
a += b * c;

a = a + (b * c);
だけど
a += b + c;

a = (a + b) + c;
足し算だから結果は変わらない
これは試してわかるようなレベルじゃない


359 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:02:19 ]
結合法則考えればすぐ分かるだろ

360 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:05:05 ]
a * = b + c
は?

361 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:07:48 ]
a = a * (b + c)



362 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:10:05 ]
演算子の優先順位なんて基礎だろ基礎
MSDNで「C# の演算子」調べろよ

363 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:16:51 ]
うそばっかりだなこの擦れ

364 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:25:10 ]
if(!>>1-362)
{
Console.WriteLine(>>363);
}


365 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:30:23 ]
>>358
こいつ馬鹿
a = a + ( b + c )
だろ

366 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 19:20:46 ]
演算子の優先順位が"人から見て"不明瞭な式っていうのは、
括弧で明示するのが基本だと思う。

&&が||より優先されるために条件式を
条件1 || 条件2 || 条件3
みたいに書く(条件1,2,3は各々&&で条件を連結している)とか、
優先順位が関係する定型的な書き方は知っておくべきだけど。

367 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 19:24:14 ]
int a = 10;
a += 10 >> 1; // a == 15
a = a + 10 >> 1; // a == 10

つまり a += x op y; は a = a + (x op y);

勝手に問題をすりかえて話をこじらせた挙句、
数行のコードを試せばわかることを「試してもわからない」という
文面とともに間違いを教える>>358が謎過ぎる。

368 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 19:24:56 ]
見やすくなるけどスピード負担はやや増えるのかな?

369 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 19:37:31 ]
なんのすぴーどだよ

370 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 19:43:53 ]
島袋の負担は増える
上原の負担は減るんじゃなかろうか

371 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 19:59:18 ]
解散しちまえ



372 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 20:00:25 ]
プログラマなら上原多香子好きだろ?
はしのえみのほうがいい?

373 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 20:48:53 ]
http://azumaya.s101.xrea.com/wiki/index.php?%B3%D0%BD%F1%2FC%A2%F4%2FC%A2%F4%A4%C7%A5%DB%A5%C3%A5%C8%A5%AD%A1%BC%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EB%A4%F2%BA%EE%A4%EB

↑にある↓の意味はどういうことですか?

if((k & WinApi.HOTKEYF_ALT) != 0)
    ret |= Keys.Alt;
if((k & WinApi.HOTKEYF_CONTROL) != 0)
    ret |= Keys.Control;
if((k & WinApi.HOTKEYF_SHIFT) != 0)
    ret |= Keys.Shift;
return ret;


374 名前:デフォルトの名無しさん [2009/03/24(火) 20:54:44 ]
ビット演算だな
AltとControlとShiftのビットを立てている

375 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 21:13:02 ]
>>373
ビット演算でググれ。

376 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 21:30:33 ]
>>373
フラグの使い方の悪い見本だな


377 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 21:57:06 ]
そうか?

378 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:01:38 ]
!= 0 ←これが気に食わないんでしょたぶん

379 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:07:45 ]
>>376
そういう風におっしゃるのなら、
>>376さんは>>373のような処理が必要なときはどんなコードにしているのでしょうか?
興味があるのでご教授ください

380 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:19:50 ]
理由書かない奴は気にするな

381 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:20:58 ]
理由分からない奴は気にするな



382 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:27:52 ]
>>379
どうせくだらない理由だから気にスンナ

383 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:43:03 ]
なるほど
ありがとうございました

384 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:45:05 ]
入れ替える必要はなさそうだけどな。

385 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:02:26 ]
!= 0 以外の良い書き方ってあるんですか?

386 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:03:38 ]
[flags]enumの比較は
if((f & Flag.Hoge) == Flag.Hoge)
と行うという例がMSの[flags]関連のどっかに書いてあった。

387 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:09:23 ]
>>385
!(1 = 0)

388 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:10:51 ]
なるほど
ありがとうございました

389 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:10:52 ]
アホは無理にレスしなくていいよ

390 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:34:19 ]
質問です
フォームを最大化してノーマルに戻して、
フォームのLocationをドラッグで移動したときに
フォームのあった矩形領域がデスクトップの左上からの画像になって
再描画されないんだけど
(ゴミ箱のアイコンが左上にあったとしたら、
フォームのあった位置の左上がゴミ箱の画像。背景もしかり)
考えられる原因って誰か知ってます?
また強制的にFormの裏側をリフレッシュする方法ってありますか?



391 名前:デフォルトの名無しさん [2009/03/24(火) 23:36:56 ]
OnPaintみたいなのをoverrideしてるくせに描画してないんじゃないの



392 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:38:45 ]
他のメーカーのグラボが乗ってるPCでチェクしてからだな

393 名前:デフォルトの名無しさん [2009/03/24(火) 23:49:28 ]
>>373は×、>>386は○になる具体例を提示しろ
できないなら>>376=糞

394 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:49:56 ]
とても基本的なことで恐縮ですが質問させてください。
このように呼び出し元のクラスを参照し、値を書き換えるクラスを作りました。
class Target
{
  private int member;
  Process pro = new Process(10,2)
  public void Do()
  {
    pro.OverwriteTargetMember(this)
  }
}
//目標値tgtまでvolずつ加算する
class Process
{
  int tgt,vol;
  public Process(int tgt,int vol)
  {
    this.tgt = tgt;
    this.vol = vol;
  }
  public void OverwriteTargetMember(Target tgt)
  {
    if(tgt.member != tgt) tgt.member+= vol;
  }
}
target.do()するたびにtargetのmember2 4 6 8 10 10 10・・・となる処理です。
本当はProcessをキューに入れて数値の変動を予約できるようにしています。
ですが、このような実装はあまりオブジェクト志向の設計思想に則していない様に感じられます。
このスレッドのみなさんでしたらどのような実装を行いますか?
どうかお聞かせください。

395 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:53:36 ]
なんでそんな変な名前つけてるの?

396 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:56:18 ]
アホは無理にレスしなくていいよ

397 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:56:54 ]
名前に意味はありません。
Target=メンバーを書き換えたいクラス
Process=引数に渡されたTargetのメンバーを書き換えるクラスです。

要約するとTargetがDo()するたびに数値を変動させたいのですが、
その動作をキューに入れて管理したいのです。

たとえば
0から1ずつ加算して10になるというパラメータをもったProcessクラスと
10から2ずつ加算して20になるというパラメータをもったProcessクラスを順にキューに入れると、
Target.Do()の結果が実行するごとに
1 2 3 4 5 6 7 8 9 10 12 14 16 18 20 20 20 20・・・
となるようにしたいのです。

398 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 00:23:07 ]
     ⌒ ⌒               ____
   (     )          ゝ/     __ヽ
      | | |              /        | h
   , ── 、 __          i >>376  |-||
 /         ヽ     /   ヽ      (|| | /^ヽ
/       /)ノ)ノ   //   \∧/   ノ /ヽノ
| >>393 ///⌒ヽ   /   , ─/ ̄ ̄`─ ´ / ______/
ヽ     /)─|  ミ|      /  /     ,-─ ′ ─────/
∠   (| |.  ヽ__ノ>     ( ̄ノ/     /    −、        /
∠_ / ` /^\__ >      ̄ |─── |─┬┘ |───/
  ノ    (__          ヽ___ノ─┴ 、__ノ ̄ ̄/
 / ̄ ̄\┌─ ′ /^−、    -、_/  /_____ /
/ ̄ ̄ ̄⌒ヽ   (   丿  /   |  /─────/
        \  / ̄/   (__ノ ̄ ̄  //  /
          \/  /         //  /

399 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 00:25:19 ]
Queue<int>にint詰めて順に足せばいいじゃん

Processにtgt(目標値)を渡す意味も、そもそもProcessをクラス化する意味も
読み取れない
パラメタをvolだけでなく複数にするなら構造体で十分

400 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 00:31:40 ]
>>399
申し訳ありません。情報が足りませんでした。
私の作った処理でjはキューした時点では値は確定していません。
キューが実行された瞬間にさらに処理をして値を設定するようにしたいのです・・・。

401 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 00:37:42 ]
このように呼び出し元のクラスを参照し、値を書き換えるクラス
なら引数にrefを付ける

でも、俺なら3つクラス作って別のクラスでpublic void Do()を実装する



402 名前:デフォルトの名無しさん [2009/03/25(水) 00:38:17 ]
IEnumerable<int> Process()
{
for(int i = 0; i < 10; i++)
{
 yield return i;
}
for(int i = 10; i < 20; i += 2)
{
 yield return i;
}
while(true)
{
 yield return 20;
}
}

これが一番シンプルだと思うけど
可変の部分があるならその部分を引数にすればいい

403 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 00:51:08 ]
>>401
C#でクラスを引数に設定した場合は参照渡しだったと記憶していますが、
あえて明示的にrefをつけるというのはどのような意図を以て行うのでしょうか?

また、3つクラスを作ると仰られましたが、どのように分割するのでしょうか?
Processにあたるクラスは、いろいろな種類を作ろうと考えています。
今回挙げた単純な加算だけではなく、四則、べき乗、などなど・・・。角度を扱う可能性もあります。
もしよろしければご教示お願いいたします。

>>402
かなり私の求めている正解に近いものかもしれません。
頭の中にあった蟠りが一つ解けて、理解が深まりました。
IEnumberableを使うということは考えてもいませんでした。
お答えくださり本当にありがとうございます。

404 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 00:54:45 ]
(?_?)

405 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 01:09:07 ]
>>403
オブジェクトを渡すときは参照の値渡し
違いはググれ

> 今回挙げた単純な加算だけではなく、四則、べき乗、などなど・・・。角度を扱う可能性もあります。
どこまで裾野を広げたいのか分らないが,四則"計算",べき乗"計算"と計算という概念で分類すればいいんでないか?
あと,角度を"扱う"っていうのが,どういう意味をさしているのか具体的に言わないと扱えないぞい

406 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 01:18:45 ]
>>405
角度でラジアンを持ちますが、ラジアンでπ2以上または-π2以下になった場合に丸められます。オーバーフロー防止です。
ですが、よくよく考えてみれば>>402さんの処理でreturnするときにreturn i % (Math.PI * 2);などと記述すればよいのかもしれませんね。

このような稚拙な質問に丁寧にお答えくださり本当にありがとうございました。

407 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 03:44:54 ]
「オブジェクト志向の設計思想」云々言ってて解が>>402・・・いみふ

408 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 04:57:21 ]
もう終わった話題のようだが、
stateパターンのようなことをやりたかったんだろうか?

409 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 07:08:14 ]
>>393(>>373>>386>>376)
勘違いするやつが現れないように代わりに答えておこうか。

まず先に一言、[Flags] enum に限れば「(e & MyEnum.Foo) != 0」は基本 NG だが
元の例はそもそも [Flags] enum じゃないから関係ない。
で、enum の話しに戻すと、

[Flags]
enum MyEnum { A = 0x1, B = 0x2, AB = A | B }

var e = MyEnum.A;
if((e & MyEnum.AB) != 0) {
  Console.WriteLine("I'm AB.");
  if((e & MyEnum.AB) != MyEnum.AB) Console.WriteLine("Really?")
}

例え Flags が付いていたとしても、全ての定数が排他とは限らない。
結合定数を定義することは十分有り得るし、Keys のような特殊な例もある。
「... != 0」と書けるのは、事前に列挙定数の具体値に関する知識を持っていて、
大丈夫であることが分かっている場合のみ。


410 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 07:36:31 ]
>>407
私の書いたソースではあれがネストしていたんです。
呼び出し元の呼び出し元の呼び出し元の・・・という形で参照しているので、
可読性が大変悪く、動作の高速性よりソースの可読性や整備性を重視したオブジェクト指向の設計思想に反していると感じたのです。

411 名前:デフォルトの名無しさん [2009/03/25(水) 09:27:24 ]
オブジェクト指向なんてのは
それに従ってさえいればいいコードが書けるというような
万能の方法論では全く無いからな



412 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 10:53:22 ]
Formの状態についてお願いします。
状態     通常     最大化
サイズ    (800,600)  (1280,1024)

Formが通常→最大化され、閉じられた場合に
最大化される前のサイズをapp.configにひとつの設定要素として保存させたいのですが、
最大化された後のサイズが保存され、うまくいかないです・・・
Form1_Resizeのイベントでは無理でしょうか?

413 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 10:57:32 ]
RestoreBoundsで通常時のサイズを取得できるが。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<200KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef