ふらっとC#,C♯,C#( ..
[2ch|▼Menu]
321:デフォルトの名無しさん
09/03/22 15:46:43
なんかlinqを使うより、IEnumerable<>のSelect<>メソッドやWhere<>メソッドを使ったほうが
わかりやすい気がするのはなぜですか?
linqtがfromから始まるのが気持ち悪いからですか?

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

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

324:デフォルトの名無しさん
09/03/22 16:02:59
>>321
それもLINQ

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

326:デフォルトの名無しさん
09/03/22 16:30:24
LINQってなんて読むの?ラインクエリ?

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

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

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

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

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



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

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

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

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

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

332:デフォルトの名無しさん
09/03/22 17:32:38
ReadOnleyプロパティだからそれ。

333:デフォルトの名無しさん
09/03/22 17:34:19
やどりぎ+どくどく

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

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

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

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


338:デフォルトの名無しさん
09/03/22 20:53:46
ありがとうございますた

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

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

340:デフォルトの名無しさん
09/03/22 22:23:24
モデルの中にかけばいいんじゃねーの?

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

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

346:デフォルトの名無しさん
09/03/23 11:33:11
嫌です

347:デフォルトの名無しさん
09/03/23 12:42:50
同意

348:デフォルトの名無しさん
09/03/23 17:56:52
御意

349:デフォルトの名無しさん
09/03/23 18:22:15
ザムディン

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

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


352:デフォルトの名無しさん
09/03/23 20:56:08
System.Windows.Forms.Screen
から作業領域取得して設定

353:350
09/03/23 21:37:29
this.MaximizedBounds = Screen.GetWorkingArea(this);
で修正できました。
ありがとうございます。

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

355:デフォルトの名無しさん
09/03/24 16:31:41
それくらい試せよ

356:デフォルトの名無しさん
09/03/24 16:32:23
>>354
試してみればいい。

357:デフォルトの名無しさん
09/03/24 17:46:10
なるほど
ありがとうございました

358:デフォルトの名無しさん
09/03/24 17:57:07
a += b * c;

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

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


359:デフォルトの名無しさん
09/03/24 18:02:19
結合法則考えればすぐ分かるだろ

360:デフォルトの名無しさん
09/03/24 18:05:05
a * = b + c
は?

361:デフォルトの名無しさん
09/03/24 18:07:48
a = a * (b + c)

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

363:デフォルトの名無しさん
09/03/24 18:16:51
うそばっかりだなこの擦れ

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


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

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

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

367:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/03/24 19:24:56
見やすくなるけどスピード負担はやや増えるのかな?

369:デフォルトの名無しさん
09/03/24 19:37:31
なんのすぴーどだよ

370:デフォルトの名無しさん
09/03/24 19:43:53
島袋の負担は増える
上原の負担は減るんじゃなかろうか

371:デフォルトの名無しさん
09/03/24 19:59:18
解散しちまえ

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

373:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/03/24 20:54:44
ビット演算だな
AltとControlとShiftのビットを立てている

375:デフォルトの名無しさん
09/03/24 21:13:02
>>373
ビット演算でググれ。

376:デフォルトの名無しさん
09/03/24 21:30:33
>>373
フラグの使い方の悪い見本だな


377:デフォルトの名無しさん
09/03/24 21:57:06
そうか?

378:デフォルトの名無しさん
09/03/24 22:01:38
!= 0 ←これが気に食わないんでしょたぶん

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

380:デフォルトの名無しさん
09/03/24 22:19:50
理由書かない奴は気にするな

381:デフォルトの名無しさん
09/03/24 22:20:58
理由分からない奴は気にするな

382:デフォルトの名無しさん
09/03/24 22:27:52
>>379
どうせくだらない理由だから気にスンナ

383:デフォルトの名無しさん
09/03/24 22:43:03
なるほど
ありがとうございました

384:デフォルトの名無しさん
09/03/24 22:45:05
入れ替える必要はなさそうだけどな。

385:デフォルトの名無しさん
09/03/24 23:02:26
!= 0 以外の良い書き方ってあるんですか?

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

387:デフォルトの名無しさん
09/03/24 23:09:23
>>385
!(1 = 0)

388:デフォルトの名無しさん
09/03/24 23:10:51
なるほど
ありがとうございました

389:デフォルトの名無しさん
09/03/24 23:10:52
アホは無理にレスしなくていいよ

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



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

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

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

394:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/03/24 23:53:36
なんでそんな変な名前つけてるの?

396:デフォルトの名無しさん
09/03/24 23:56:18
アホは無理にレスしなくていいよ

397:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/03/25 00:23:07
     ⌒ ⌒               ____
   (     )          ゝ/     __ヽ
      | | |              /        | h
   , ─ 、 __          i >>376  |-||
 /         ヽ     /   ヽ      (|| | /^ヽ
/       /)ノ)ノ   //   \∧/   ノ /ヽノ
| >>393 ///⌒ヽ   /   , ─/ ̄ ̄`─ ´ / ______/
ヽ     /)─|  ミ|      /  /     ,-─ ′ ───/
∠   (| |.  ヽ__ノ>     ( ̄ノ/     /    −、        /
∠_ / ` /^\__ >      ̄ |── |─┬┘ |──/
  ノ    (__          ヽ___ノ─┴ 、__ノ ̄ ̄/
 / ̄ ̄\┌─ ′ /^−、    -、_/  /_____ /
/ ̄ ̄ ̄⌒ヽ   (   丿  /   |  /───/
        \  / ̄/   (__ノ ̄ ̄  //  /
          \/  /         //  /

399:デフォルトの名無しさん
09/03/25 00:25:19
Queue<int>にint詰めて順に足せばいいじゃん

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

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

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

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

402:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/03/25 00:51:08
>>401
C#でクラスを引数に設定した場合は参照渡しだったと記憶していますが、
あえて明示的にrefをつけるというのはどのような意図を以て行うのでしょうか?

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

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

404:デフォルトの名無しさん
09/03/25 00:54:45
(?_?)

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

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

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

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

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

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

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

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

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

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

413:デフォルトの名無しさん
09/03/25 10:57:32
RestoreBoundsで通常時のサイズを取得できるが。

414:デフォルトの名無しさん
09/03/25 10:59:37
>>413
瞬殺されました
どうもありがとです

415:デフォルトの名無しさん
09/03/25 23:05:24
異なるスレッドで作成されたControlをAddすることは可能でしょうか。
別スレッドのContextに設定されたフォームが閉じられた時、そこに使用されていたControlを再利用したいのですが。

416:デフォルトの名無しさん
09/03/26 10:23:18
意味の分からない質問かもしれませんが、
System.Console.ReadLine()
を使うと、実行が止まりますよね。
これは何の効果で止まってるんですか?
ReadLineの中で何らかのループが回ってるんでしょうか
それともsleepみたいなコトになってるんでしょうか

独学でずっとやってきて体系的に学んでいないので思い出したように気になりました
良く意味が分からないかもしれませんがよろしければエスパーしてください。

417:デフォルトの名無しさん
09/03/26 10:43:58
ループ

418:デフォルトの名無しさん
09/03/26 11:42:53


419:デフォルトの名無しさん
09/03/26 11:43:58
switch文について

VBの場合
case 1,2,5-8
のように一文で複数の判断をさせることができますが
C,C#では一つの判断しかできませんよね?

これはif文の羅列で処理するしかないのでしょうか?
C#で代わりに同じことをやらせる効率のよい方法ないでしょうか?


420:デフォルトの名無しさん
09/03/26 12:03:22
VBのSelect Caseはelse ifのようなもんだからねぇ
工夫次第かな
int a[8] = {1,1,0,0,1,1,1,1};
if (a[i]) hoge();
とすれば1,2,5-8にヒットする

421:デフォルトの名無しさん
09/03/26 12:05:30
やっぱりそうですか
ありがとうございます

422:デフォルトの名無しさん
09/03/26 12:09:07
>>416
OSは標準入力からデータの読み出しが完了するまで
ReadLineを呼んだプロセスの実行を停止してる。
完了したら実行を再開させる。

納得いかなければ マルチタスク ブロッキングI/O プロセス+状態遷移
なんかでぐぐっておくれ。

423:デフォルトの名無しさん
09/03/26 15:39:07
>>419
case 1: case 2: case 5: case -8:

424:デフォルトの名無しさん
09/03/26 15:48:27
>>423
その書き方でいいんですか
5-8のところが不思議な感じですね

これはjavaとかでは無理でC#特有の書き方なんですかね?

とりあえずやってみます ありがとうございました

425:デフォルトの名無しさん
09/03/26 15:49:04
>>422
ありがとうございます。
ググってみます。

426:424
09/03/26 15:53:31
javaでもコンパイルできました
C系統ではOKみたいですね
どうもです

427:デフォルトの名無しさん
09/03/26 15:55:23
おいおい

428:423
09/03/26 15:56:22
ごめん。アホなこと書いてた

429:デフォルトの名無しさん
09/03/26 15:58:22
ん?-8がやっぱおかしいの?
全部だめなの?

430:デフォルトの名無しさん
09/03/26 16:00:08
コンパイルが通ればすべてよし、みたいに考えるのがまずいんだよw
試してみること、ドキュメント探してみること、いろいろやろうぜ。

431:デフォルトの名無しさん
09/03/26 16:02:32
ちょっとワラタw

432:デフォルトの名無しさん
09/03/26 16:15:10
case 1: case 2:
と複数並べるのは確認できました
5-8の範囲はさすがに無理みたいですね

433:デフォルトの名無しさん
09/03/26 20:06:31
throw new NotImplementedException();
これの仕組みがわからないんですが
メソッドの中にドーンと書いてあるんですが
何に対してのエラーを識別するんですか?
指定範囲内のコードで例外があったらとかならわかるんですが
これより前後に書いたコードに対して適用されるとかなんですか?

434:デフォルトの名無しさん
09/03/26 20:21:32
throw new NotImplementedException
これはなんて書いてあるかわかる?
わかればOK!

435:デフォルトの名無しさん
09/03/26 20:24:17
投げる 新しい ちがう 実装される 例外

436:デフォルトの名無しさん
09/03/26 20:25:49
0で除算するメソッドで引数にゼロが代入されていたときなんかに自分で書くんだよ

if (引数 == 0)
 throw new ゼロだぞ( ゚Д゚)ゴルァ!!

437:デフォルトの名無しさん
09/03/26 20:33:17
わざわざ用意するほどのものなんですか?
好きなところに飛ばした方が話が速いと思うんですが、これって公開ライブラリとかじゃない限り
使う意味ないですよね?

438:デフォルトの名無しさん
09/03/26 20:37:37
いや、使う意味が無いと思ってる人は使わないよ。問題ない。
同じプロジェクトにいないならな

439:デフォルトの名無しさん
09/03/26 20:39:34
つーかそんなん、リファクタリング機能でメソッド作ったときに
自動的にできるくらいだろ?

440:デフォルトの名無しさん
09/03/26 20:44:26
>>433はな
throw自体が無意味って話に変わったんじゃないの

441:デフォルトの名無しさん
09/03/26 20:52:17
意味がわかりませんこれプロジェクトのひな形なんですが、何がしたいんですか?
例外時にNotImplementedException()に飛ばしたいのはわかるんですが、
何に対しての例外かが読み取れなく無いですか?
コードを追加するときはこの行を消すとかはあり得ないですよね

public class ContentProcessor1 : ContentProcessor<TInput, TOutput>
{
 public override TOutput Process( TInput input, ContentProcessorContext context )
 {
  // TODO: process the input object, and return the modified data.
  throw new NotImplementedException();
 }
}

442:デフォルトの名無しさん
09/03/26 20:52:58
throwってなにかね?

443:デフォルトの名無しさん
09/03/26 20:54:34
NotImplementedException(); つまり、
要求されたメソッドまたは操作が実装されていないエラーであることがわかるじゃん

URLリンク(msdn.microsoft.com)(VS.80).aspx


444:デフォルトの名無しさん
09/03/26 20:55:40
でも再利用できる機能をまとめて一つのメソッドに並べる場合は便利じゃね?
public boolLogin(string id, string password)
{
try
 return _login.(id, password);
catch (BadPasswordException e)
 //ログインできません例外
catch (BadIDException e)
 //そんなID存在しません例外
catch (ExpireException e)
 //パスワードの期限切れです例外
}
とか

445:デフォルトの名無しさん
09/03/26 20:56:36
>>441
消すんだよ。

446:デフォルトの名無しさん
09/03/26 20:58:42
この場合はthrowの前に独自コードを記述してthrowの前に分岐でreturnに飛ばして
returnに辿りつかなかったら最後のthrowを実行するように書けばいいんですかね

447:デフォルトの名無しさん
09/03/26 21:00:26
>>445
やっぱり消すのが自然ですよね
MSのひな形なんですが、このパターン初めてなので消してはいけない理由があるのかと思ったんですが
普通消しますよねTHX!

448:デフォルトの名無しさん
09/03/26 21:01:54
>>447
実装されてないことを示す例外だから、実装が終わったら消せばいい。
ということ。

449:デフォルトの名無しさん
09/03/26 21:02:45
setjmp,longjmpと同様に、大域脱出に使われるので、乱用はよくない。
プロジェクトによっては、自前で例外throwするのは禁止してることもあるよ。
だから、必須の機能とは言えない。

450:デフォルトの名無しさん
09/03/26 21:03:45
あ、禁止ってわかりにくいな。
そのプロジェクトのコーディング規約(≒ローカルルール)で禁止ね。

451:デフォルトの名無しさん
09/03/26 21:04:23
>>449
誰も必須だとか言ってないだろハゲ

452:デフォルトの名無しさん
09/03/26 21:04:50
>>433
要求されたメソッドまたは操作が実装されない場合にスローされる例外。

453:デフォルトの名無しさん
09/03/26 22:06:51
NotImplementedException を初めて見た時は感心した。
スタブを示す、標準的な例外が用意されているのは便利。
// TODO: とかより、ずっといい。

454:デフォルトの名無しさん
09/03/26 22:19:35
中身が空なだけで実際にメソッド自体はあるのに、NotImplementedってのも変な話だな。
ぜひ「空関数例外」みたいな名前に変えて欲しい。
俺の中ではNotImplementedはSystem.Reflectionでひっかかったときに投げるイメージ。

455:デフォルトの名無しさん
09/03/26 22:23:02
勝手に作れよハゲ

456:デフォルトの名無しさん
09/03/26 22:48:15
NotImplementedException 使うかどうかとかは開発スタイルによるかも
しれないなぁと思った。俺は結構使うほう。

457:デフォルトの名無しさん
09/03/26 23:07:21
抽象クラスのvirtualメソッドに使ったりするかな
これを継承したクラスで要るメソッドだけオーバライドして実装
NotImplementedExceptionじゃなくてNotSupportedExceptionでやる場合もあるけど

458:デフォルトの名無しさん
09/03/27 00:41:56
>>455
失礼な
まだほんのりと残っていますぞ

459:デフォルトの名無しさん
09/03/27 00:51:28
>>454
中身が空っぽのメソッド作るのは、
「宣言だけして実装してないよ」って感じだと思うんだけど。
C++ みたいに宣言と実装が分かれてないから空っぽの動体付けてるだけで。

>>457
NotSupported は、
「interface 的には実装しないといけないんだけど、
このクラスでは実装しません」みたいな時に使いたい。


460:デフォルトの名無しさん
09/03/28 01:50:52
NotImplementedExceptionはよく使うなー
午前7時に盲状態でコード書かなきゃいけないときとか頼りになる

461:デフォルトの名無しさん
09/03/28 09:02:10
レビューで指摘されたんですが
usingディレクティブの記述順序がパフォーマンスに影響する事ってあるんですか?

単に視覚的な問題くらいの認識しかなかったので
ググってみましたが、そういったソースはみあたりませんでした。

教えて!エロい人!

462:デフォルトの名無しさん
09/03/28 09:17:08
using の順序が問題になるのって、
拡張メソッドのインポート時くらいしか知らない。

463:デフォルトの名無しさん
09/03/28 16:21:29
コントロールにイベントを実装しようとおもって、delegateを記述してるんだけど、
メソッドの戻り値がvoidのとき、Func<void, string> _EventHandlerみたいに記述できないの?
delegateを記述するの面倒だよ(´・ω・`)ショボーン



464:デフォルトの名無しさん
09/03/28 16:22:53
>>463
Action<>

465:デフォルトの名無しさん
09/03/28 16:41:31
おおありがとう(`・ω・´)シャキーン

466:デフォルトの名無しさん
09/03/28 18:46:07
EventHandler<T>にしようよ。

467:デフォルトの名無しさん
09/03/28 19:58:59
クラスのメンバで
public string Name;
とすることと
private string _name;
public string Name
{
 get { return _name; }
 set { _name = valiue; }
}
はどう違いますか?


468:デフォルトの名無しさん
09/03/28 20:18:48
なんの釣りだよ。

469:デフォルトの名無しさん
09/03/28 20:19:50
いや本当に違いがよくわからないので教えて下さい

470:デフォルトの名無しさん
09/03/28 20:21:43
ぐぐったんですか?

471:デフォルトの名無しさん
09/03/28 20:23:51
プロパティ public privateで試してみましたが書かれているサイトはよくわかりませんでした
何か専門用語があるのかもしれませんがそれがわからないのでぐぐれません


472:デフォルトの名無しさん
09/03/28 20:34:58
>>467のコードの通りなら、特に使う上での違いはないのでは?
フィールドをPublicにするのは習慣としておすすめできない、というくらいで。

473:デフォルトの名無しさん
09/03/28 20:39:03
フィールドをpublicにするくらいなら、自動プロパティにしろ
public string Name
{
 get;
 set;
}


474:デフォルトの名無しさん
09/03/28 20:42:11
>>473
なんでpublicじゃだめなのかを聞いてるのに自動プロパティにしろなんてのは筋違いだろ

475:デフォルトの名無しさん
09/03/28 20:43:15
private string _name;

public string Name{

476:デフォルトの名無しさん
09/03/28 20:48:12
>>474
誰がそんなこと聞いてる?

477:デフォルトの名無しさん
09/03/28 20:48:26
誰も訊いてない。

478:デフォルトの名無しさん
09/03/28 20:54:34
class cls
{
float[,] test;
}

これって動的配列なんでしょうか?
float a = 0;
for(i=0;i<100;i++){
for(j=0;j<100;j++){
test[i, j] = a;
a++;
}
}
こうやって他のクラスから自由に配列の大きさを決めて格納するのに使えるんですか?

479:デフォルトの名無しさん
09/03/28 21:00:12
配列は確保するまで使えません
未割り当てエラー出すだけ

つーかそのくらい実行してみりゃ分かるだろうが

480:デフォルトの名無しさん
09/03/28 21:27:17
フィールドをプロパティに変えたときに互換性が取れなくなるから
最初からプロパティにしとけって話だろうけど
再コンパイルすればいいだけだからほとんど意味は無いよね

481:デフォルトの名無しさん
09/03/28 21:30:52
>>476
>>467の趣旨はそういうことだろ?

482:デフォルトの名無しさん
09/03/28 23:24:58
>>481
そんなの本人じゃないと分からない。単に違いを聞いてるだけに読める。
>>467の字面通りなら、ほとんど違いはないけど、作法としてパブリックフィールドは
推奨されていない、としか答えようがない。

483:デフォルトの名無しさん
09/03/28 23:36:10
>>482
少なくとも自動プロパティを使えはおかしいだろ
何をいってんだ?

484:デフォルトの名無しさん
09/03/28 23:46:58
>>467
プロパティってのは実はメソッド。
private string _name;
public string Name
{
 get { return _name; }
 set { _name = value; }
}
てのは
private string _name;
public string get_Name()
{
return _name;
}
public void set_Name(string value)
{
_name = value;
}
と書いてるのと同じ。


485:デフォルトの名無しさん
09/03/28 23:48:07
で、どう違うんだ?


486:デフォルトの名無しさん
09/03/29 00:02:01
プロパティならそのまま格納取り出しするだけじゃなくて
条件チェックやらなんやら色々できるだろ

487:デフォルトの名無しさん
09/03/29 00:03:37
そういう理屈なら格納取り出しするだけの自動プロパティって何のためにあるんだよ

488:デフォルトの名無しさん
09/03/29 00:11:28
今は格納取り出しするだけかもしれないけど後でなんか書きたくなるかもしれんだろ

489:デフォルトの名無しさん
09/03/29 00:17:26
まずpublicなフィールドとして記述し、アクセサが必要とされた時点でプロパティに書き換えればいいじゃない

490:デフォルトの名無しさん
09/03/29 00:25:44
フィールドとプロパティではメタデータ上でも区別される

491:デフォルトの名無しさん
09/03/29 00:30:58
ソースレベルで互換性があればいいだろ
そこだけアップデートされるようなライブラリを作ってるなら別だけど

492:デフォルトの名無しさん
09/03/29 00:36:24
使いたくなきゃ使わなきゃいいじゃない

493:デフォルトの名無しさん
09/03/29 00:42:17
じゃメンバ関数をpublicにするということと等価ってこと?

494:デフォルトの名無しさん
09/03/29 00:44:13
もうそれでいいよ

495:デフォルトの名無しさん
09/03/29 00:55:53
屁理屈すぎてもう面倒臭い

496:デフォルトの名無しさん
09/03/29 01:01:32
自分の理屈に合わない理屈は屁理屈ということにしたいんですね わかります

497:デフォルトの名無しさん
09/03/29 01:07:10
>>496
それを屁理屈って言うんだよ。

498:デフォルトの名無しさん
09/03/29 01:09:11
>>497
まるですじの通らない理屈とは思えないが?

>へ‐りくつ【×屁理屈】
>まるですじの通らない理屈。道理に合わない理屈。「―を並べる」「―をこねる」

499:デフォルトの名無しさん
09/03/29 01:09:11
フィールド直接触るとかやめてくれ・・。
未来の自分でさえ信用できないのに、他人の利用者を信じれるわけがないだろJK

500:デフォルトの名無しさん
09/03/29 02:10:30
いやいや好きにやりゃいいじゃん
そいつにとってフィールドもプロパティも一緒つーなら
それ以外の使い方しないんだろうから
どうせ個人でやるだけだろうしw

501:デフォルトの名無しさん
09/03/29 02:18:35
じゃ違うの?

502:デフォルトの名無しさん
09/03/29 02:22:27
Control.DataBindingsと組み合わせるならpublicフィールドの選択肢は無いけどね。

503:デフォルトの名無しさん
09/03/29 02:29:35
なんで?

504:デフォルトの名無しさん
09/03/29 02:39:07
>>503
FormにTextBox2つ貼り付けて
class MyData
{
public string PublicField;
public string PublicProperty { get; set; }
}
作って
textBox1.DataBindings.Add("Text", data, "PublicField");
textBox2.DataBindings.Add("Text", data, "PublicProperty");
として動かしてみたらわかる。
PublicFieldはDataBindの対象にならない。

505:デフォルトの名無しさん
09/03/29 03:01:01
>>501,503
その頭の悪そうなレスはやめてくれ

506:デフォルトの名無しさん
09/03/29 03:42:08
>>505
同意

とりあえずここ読め
URLリンク(ufcpp.net)

オブジェクト指向には実装の隠蔽というものがあってだね(ぶつぶつ

507:デフォルトの名無しさん
09/03/29 13:13:36
パブリックプロパティを自動実装すると
パブリックフィールドを直接公開するよりも一般に良いということを示さない限り
一般にプロパティにするべきだという理屈は屁理屈でしかないだろ

508:デフォルトの名無しさん
09/03/29 13:20:52
なんでそこまで拘るんだw
自分しか使わない&拡張する予定がなければフィールド使えばいいじゃない。

509:デフォルトの名無しさん
09/03/29 13:27:47
>>508
拡張する予定があっても他人が使っていても
フィールドで問題ないだろ
どういう時に問題が起きるわけ?

510:デフォルトの名無しさん
09/03/29 13:31:33
フィールドで問題ない問題ない

511:デフォルトの名無しさん
09/03/29 13:38:43
はいはい、その通りですね。
君はパブリックフィールド使えばいい。私は今まで通りプロパティ使うけどな。

512:デフォルトの名無しさん
09/03/29 13:44:41
はいはい、その通りですね。
君はプロパティ使えばいい。おいらは今までどおり使い分けるけどな。

513:デフォルトの名無しさん
09/03/29 13:46:51
春だな
さすがに今日は言っても文句ねえだろ

514:デフォルトの名無しさん
09/03/29 13:51:35
桜も咲いてるしな・・・

515:デフォルトの名無しさん
09/03/29 14:19:23
・get setを制限する必要がない
・setされた値を事前に評価する必要がない
・バッキングストアを仮想化する必要がない
・プロパティ自体をvirtualにしたりsealedにしたりする必要がない
など、すなわち単なる「変数」であれば、プロパティのほうがコストが
高いのは明らかだから、あえてプロパティを使わずフィールドを公開して
構わないと思うよ。

また、将来上記のうち上3点(最後の1点はまるっきりの変更なんで別だが)の
方針が変更される可能性があったとしても、その時点でフィールドを
プロパティに変更すればソースレベルでの互換性は保てるので、問題ない。
(ただし、公開クラスライブラリで、バイナリ互換性が必要な場合を除く)

516:デフォルトの名無しさん
09/03/29 14:21:23
setを制限したければreadonlyにすりゃいいじゃん

517:デフォルトの名無しさん
09/03/29 14:39:21
明示的に初期値が設定できない自動実装なんて

518:デフォルトの名無しさん
09/03/29 15:06:45
プロパティもインライン化されればコストは変わらないんじゃないの

519:デフォルトの名無しさん
09/03/29 17:12:56
自作クラスを2つのプロジェクトで使いたい場合、使いたいクラスはどっちのプロジェクトに含ませればいいんですか?
今どっちのプロジェクトにも同じクラスを書いていて修正するときなんか無駄があるような気がしてきました
この場合どっちのプロジェクトにも含ませない方法とかがあってそうした方がいいんでしょうか?変更は頻繁にするんですが

520:デフォルトの名無しさん
09/03/29 17:15:44
>>519
片方のプロジェクトからもう1つを参照してもいいし、
別にライブラリプロジェクト作って、それを2つのプロジェクトから参照してもいいし、
ソースを「リンクとして追加」もできるし。

521:デフォルトの名無しさん
09/03/29 17:52:48
できました。ありがとうございました
読み込まれるプロジェクトの順番が大事なのかとか変な方向に考えてましたどうもです

522:デフォルトの名無しさん
09/03/29 20:07:04
イベントハンドラのサンプルなんかだと、フィールドでそのまま公開されてるようにみえるけど、
これもプロパティで表示したほうがいいの?

URLリンク(msdn.microsoft.com)

523:デフォルトの名無しさん
09/03/29 20:16:17
>>522
event キーワードがついてると、普通のフィールドじゃなくなる。
プロパティのデリゲート版みたいな状態のなので、
そのまま公開されてるわけじゃない。

524:デフォルトの名無しさん
09/03/29 20:22:34
そうなんだ意味が違うんだね サンクス

525:デフォルトの名無しさん
09/03/29 22:08:28
ReadBytesで2次元配列に格納する方法がわかりません
これは1次元としてしか扱えないんですか?

526:デフォルトの名無しさん
09/03/29 23:56:19
>>525
嫁が欲しいなら2次元で我慢しとけ

527:デフォルトの名無しさん
09/03/29 23:59:32
質問です。
C#の本買って勉強してるんですがNorthwindが何なのかわかりません。
Northwindってなんですか?
ぐぐっても
URLリンク(www.dreamsoft.jp)
こんなのとか
URLリンク(msdn.microsoft.com)
こんなのしか見つかりませんでした。

528:デフォルトの名無しさん
09/03/30 00:00:56
MSのデータベース関連のサンプルにちょくちょく出てくる
サンプルデータの名前。
航空会社かなんかのデータっていう想定のサンプル。

529:デフォルトの名無しさん
09/03/30 00:01:05
>>527
後者のリンクにある、サンプルデータベースじゃないの?

530:デフォルトの名無しさん
09/03/30 00:01:12
VS2008EEでプログラムを勉強してる素人です。
拡張コントロールをいくつか作ることで、継承のありがたみは
少しずつ理解できてきたところなんですけど、
インターフェースや抽象クラスの存在意義がなかなか理解できません。
インターフェースの実装を明示することで
その機能が実装されてることが一目でわかるというようなこと以外にメリットが思いつかないんですが
大規模なものを書かないとそこら辺の概念は理解できないものなのでしょうか。

531:デフォルトの名無しさん
09/03/30 00:14:27
>>530
↓の14章を読んでみればどうかな?
それでも理解できなければ、今は使う必要性がないんだよ。

URLリンク(www.atmarkit.co.jp)

532:デフォルトの名無しさん
09/03/30 00:15:15
うぐ、あげちまった

533:デフォルトの名無しさん
09/03/30 00:16:12
ありがとうございます。読んでみます。

534:530
09/03/30 00:17:11
↑530=533です。ID出ないの忘れてました。

535:デフォルトの名無しさん
09/03/30 00:22:40
>>530
インターフェースと抽象クラスの説明は確かに難しいのかも
例えば家電でいうと・・・

・抽象化
家電は電気製品なのでどんな製品にも必ず電源のオンオフスイッチがある→抽象クラスで記述

・インターフェース
家電は電気製品なのでどんな製品にも必ず通電する必要がある→
だけど電源を供給する方法は、コンセント、電池、バッテリー、ソーラーパネルと多種多様なので、
電源を供給するための端子は付けておくけど、実際の供給方法は製品に任せる

こんな感じ?


536:デフォルトの名無しさん
09/03/30 00:36:10
>>525
どんなデーター形式でも扱えるよ。

537:530
09/03/30 00:42:32
>>535
なるほど。既に定義されてるインターフェースを使ってみたら
だいぶそういう概念が理解できてきました。
もっとも自分で定義して実装する必要性を感じるには
もっと大規模なコードを書く必要があるみたいです。
少しずつ使えるようになりたいと思います。ありがとうございました。

538:デフォルトの名無しさん
09/03/30 01:07:27
>>537
stringをフィールドに持つクラスと、intをフィールドに持つクラスで、
それぞれ共通に名前を持つフィールドを持ち、
さらに、それぞれstringに保存された文字列の文字数とintに保存された数字の桁数を取得するメソッドを
interfaceを用いて取得する方法を記述してみれ

abstract public class BaseClass
 public string Name { get; set; }

public class StringClass : BaseClass
 public string StringData{ get; set; }

public class IntClass : BaseClass
 public int IntData { get; set; }

ここまではわかるっしょ 


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

5263日前に更新/200 KB
担当:undef