C♯, C#相談室 Part3 ..
[2ch|▼Menu]
409:デフォルトの名無しさん
07/11/17 21:57:07
>>407
C++に挫折した人にぴったりですねhw

410:デフォルトの名無しさん
07/11/17 22:05:37
>>408
AxWebBrowser なのか TcpClient なのかわからん
取り敢えず SslStream とか調べたらどうだ

411:デフォルトの名無しさん
07/11/18 00:07:17
C++にこだわる奴は言語にこだわり過ぎ。
本当に大事なことは必要な機能を実装すること。
ややこしい機能はチーム開発や保守性をぶっ壊してくれるから
簡単にすることは大事。


412:デフォルトの名無しさん
07/11/18 00:08:08
>>411
楽しいのも判るけどさスルーする事も大事。

413:デフォルトの名無しさん
07/11/18 00:26:01
いろんな言語やってきて思うんだけど、結局のところ言語の文法って本質的に言語間の差にはならないんだよね。
foreachなんかでも、マクロ使えば簡単にCでも使えるわけだし。
本当に言語選択で大事なのは、VMだとかOS依存部分だとかのもっと大局的な部分なんじゃないかなあ。

414:デフォルトの名無しさん
07/11/18 00:36:54
言語選択は技術者の経験やシステムの構成に左右されるところが多いから、
何が良いとかは断言できない。
自分にとって、一番スマートにプログラミングできるのはC#だけど、
サーバサイドプログラミングでLinuxならJava、UnixならCを選択するのが良いと思う。
なにせ、並列処理はやはりUnix系使うのが一番堅実だから。

415:デフォルトの名無しさん
07/11/18 00:38:25
堅実ってなあに?


416:デフォルトの名無しさん
07/11/18 00:39:59
堅実というより堅牢性
・プログラムにおいて、エラーや例外などに強く簡単には暴走しないもの。
・少なくともすぐに「不正な処理」と表示し、データ諸共および自分自身までふっ飛ばすようなOSのような作りではない事。


417:デフォルトの名無しさん
07/11/18 00:40:08
ググレカス

418:デフォルトの名無しさん
07/11/18 00:42:08
いまどきそんなサーバ用OSはない。


419:デフォルトの名無しさん
07/11/18 04:36:13
なんか見てると最近WebBrowserコントロールの質問はやってんな
同一人物なのか 流行なのかwwww

420:デフォルトの名無しさん
07/11/23 01:24:28
ちょっと前に、スプラッシュウィンドウの実装についてあちこちで議論があったのを見たんだが、
こんなやり方では駄目なんだろうか?

public static class Program
{
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Idle += Application_Run;
Application.Run();
}

private static bool _applicationRunning = false;
private static void Application_Run(object sender, EventArgs e)
{
if (_applicationRunning) { return; } else { _applicationRunning = true; }
Application.Idle -= Application_Run;

//ここにスプラッシュウィンドウだの、メイン処理だのを書く
//プログラムを終了させるべき場所にApplication.Exit()を書く
}
}


421:デフォルトの名無しさん
07/11/23 10:47:43
初期起動時の処理にアプリケーション関連のイベントを記述するのは常識だから、
それでおk。

422:420
07/11/23 16:41:04
>>421 さんくす

423:デフォルトの名無しさん
07/11/23 16:42:35
そのあとのスプラッシュの表示と初期処理の
同時処理から完了までの流れがないと
大して意味ない気がするが…

どうでもいいが最近の書籍ではタイマー使って
一定時間同期的にスプラッシュ表示するやりかたばっか書かれてるな。
スプラッシュの意味ないっつうの。
まあ平気でビジーループ使ってる例よりはちょっとだけましだが。


424:420
07/11/23 17:23:29
>>423
ご意見どうも。
実のところを言うと、スプラッシュウィンドウというよりは、
Form_Loadに全体の初期化処理を書きたくないので、
それをどこに書こうか、ということです。
必ずしも最初からFormを使うというわけでもないし。

あとは>>420の例で、何か過失を犯していないかを知りたかったのです。




425:デフォルトの名無しさん
07/11/23 19:03:56
メッセージループに入ってからやる必要のある初期化ならそんなんじゃないの。
そうでないならなんもいらんと思うが。


426:デフォルトの名無しさん
07/11/25 18:00:35
Bitmapを綺麗に回転させたいのですが、
RotateTransformは中心で回転していないのか一定以上の角度になると上手くいきません。
画像中心で回転させるにはどう指定すればいいのでしょうか?
教えてください。m(_ _)m

public static Bitmap BitmapRotate(Bitmap bmp, float angle)
{
// 出力用
Bitmap dst = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format32bppArgb);

// Graphics オブジェクト
Graphics g = Graphics.FromImage(dst);

// 透明色でクリアする
g.Clear(Color.Transparent);

// 回転させる
g.RotateTransform(angle);

// 綺麗に回転させるフィルタ
g.InterpolationMode = InterpolationMode.HighQualityBilinear;

// 描画
g.DrawImageUnscaled(bmp, 0, 0);

// 解放
g.Dispose();
return dst;
}

427:デフォルトの名無しさん
07/11/25 20:45:04
>>426
画像の中心を回転中心にするならそいうふうに移動させないと。
URLリンク(msdn.microsoft.com)

移動→回転→元の位置に戻す

回転させたことないから間違ってたらスマンね

428:426
07/11/26 05:37:10
RotateTransformの前後に下記のコードを入れることで解決しました。
ありがとうございました。m(_ _)m

// 中心を指定する
g.TranslateTransform(bmp.Width / 2, bmp.Height / 2);

// 回転させる
g.RotateTransform(angle);

// 元に戻す
g.TranslateTransform(-bmp.Width / 2, -bmp.Height / 2);

429:デフォルトの名無しさん
07/11/28 19:57:23
C#がJavaより勝っている点を教えてください。

430:デフォルトの名無しさん
07/11/28 20:13:42
教えてあげないよ

431:デフォルトの名無しさん
07/11/28 20:16:46
じゃん

432:デフォルトの名無しさん
07/11/29 04:54:20
さくさくさんかくぽりんきー

433:デフォルトの名無しさん
07/11/29 05:48:08
コイケヤ







ココ行ケヤ
JAVAとC#どちらが優れているか教えてください Part2
スレリンク(prog板)

434:デフォルトの名無しさん
07/11/30 21:56:41
データバインド対応のコンポーネント作りたいんですけど
どのクラスから調べればいいですか?
ぜんぜん見つからない・・・

435:デフォルトの名無しさん
07/12/01 00:00:29
意見の割れそうなネタですが、皆様 using ステートメントをどの程度
使用していらっしゃるのでしょうか。

自分は今まで、ルート名前空間を汚したくない、或いは名前空間の
構造を崩したくないといった理由で using ステートメントを一切
使わず、愚直にも省略せず全部記述していたのですが、横に長く
なりすぎていよいよ疲れてきて、それに追い打ちをかけるように、
拡張メソッド (C# 3.0 言語仕様) を使うにはそのメソッドの属する
クラスの属する名前空間をインポートしてらねばならないという
ことを知って悩んでおります。

それなりに多様な名前空間を使用していますが、あまり多くインポートしても
逆に読みづらくなりそうに感じます。使用する名前空間それぞれどういった
基準でインポートするか否かを決めるか等、皆様どうか私に何らかの指針を
示して頂けませんでしょうか。

436:デフォルトの名無しさん
07/12/01 00:02:27
全部インポートしてる。
型名重複するのなんてTimerぐらいだろ。

437:435
07/12/01 00:02:39
>>435 の 9 行目:
 誤: してらねば
 正: せねば
失礼いたしました。

438:デフォルトの名無しさん
07/12/01 00:10:26
基本的に全部インポートする
クラス名が重複する場合は完全修飾名で書く

439:デフォルトの名無しさん
07/12/01 00:16:27
>>435
文脈からしてひどく実直そうな人物と見るが、
努めてソフトにいうと、usingは普通衝突が発生しない限り使う。衝突しても、名前空間の張り替えをして使う。
よって、あなたがしてるようなコーディングはひどく非効率で例外的だ。今すぐusingステートメントを使うことをおすすめする。
それと、なんとなくIDEなどのコーディング補助を一切使ってない雰囲気があるのだが、
この際にそれらの機能を使ってみたらどうだろうか?
VisualStudio2005を使ってるなら、クラス名を書けば左下になにかでるはず。そこをクリックするか、Ctrl+Alt+F10を押して、
メニューから任意の名前空間を選べば、自動的にusingを書いてくれる。

440:デフォルトの名無しさん
07/12/01 00:21:23
usingはクラス名を省略したいから書き込むんだよ。
つまり、一回しか宣言しないクラスは完全修飾名で記述してもいいが、
例えば、ファイルアクセスクラスでSystem.IOを何回も呼び出す可能性が
多い名前空間はあらかじめ宣言しておいた方が効率が良い。
この効率が一番重要なのがRAD。

441:デフォルトの名無しさん
07/12/01 00:22:07
>>439 ( ・∀・)つ〃∩ ヘェーヘェーヘェー

442:デフォルトの名無しさん
07/12/01 00:23:09
ユーザコンポーネント内のコードからページに直接貼り付けたテキストボックスを参照するもっとも効率的な方法はどうすればいいのですか

443:デフォルトの名無しさん
07/12/01 00:28:48
テキストボックスに限らず、クラスを参照する一番の方法は
プロパティを使うこと。

444:デフォルトの名無しさん
07/12/01 00:59:34
たしかにC++なんかだと、C#のそのusingに相当する
usingディレクティブは使うなって言われるけどね。

ただ、それはエイリアスとかusing宣言とか代替があるから言えるわけで、
C#はガンガンusingする言語だと思っている俺。

445:443
07/12/01 01:25:47
それと忘れてたけど、コントロールのアクセス修飾はprivateがデフォルトだから、
変えなければいけない。

446:デフォルトの名無しさん
07/12/01 01:30:23
>>435
「using ステートメント」じゃなくて「using ディレクティブ」だろというか
そんなこと気にする前に基本的な言葉をだな(ry

まぁそれはいいとして >>444 もいっているように C++ で using namespace
が気になるのは、その他の仕様含めた総合的な要因によるもので、
その前提を元に C# は考えられていてほぼ危険性がクリアされているので
普通に使え。そっちのほうがみやすい。


447:デフォルトの名無しさん
07/12/01 10:19:35
ありがとう。
でもユーザコントロールから親のページクラスをどうすればアクセスできるのか想像できません

448:デフォルトの名無しさん
07/12/01 11:54:24
ページクラスを継承したクラスにコントロール検索プロパティを実装したとしてもユーザコントロールからはスコープの範囲外だからみれないですよね

449:デフォルトの名無しさん
07/12/01 12:24:22
マスターページに実装。

450:デフォルトの名無しさん
07/12/01 13:47:00
マスターページに検索ののプロパティを作ってその配下のページコントロールに配置したテキストボックスを参照するのですか?
できそうな気がする。。

451:デフォルトの名無しさん
07/12/01 14:22:26
DataGridVewでデータバインディングしている時、主キー、ユニークの重複チェックは皆どうしてるの?

主キーは複合もあるので行でチェックするのがいいという前提で。チェック場所はいろんなイベントがあると思う
・DataGridVewのRowValidatingイベント
・DataTableのRowChagingイベント
※DBに問い合わせは論外。
他にもあるかもしれんが・・・。あったら教えて欲しいんですが。

で、入力された値をチェックと言うことでDataGridVewのRowValidatingでチェック。(ViewのことはViewでチェック)
他のクラスでチェックすると、調査時いろんなソースを追いかけないといけないので。

ほんでと、主キー重複、ユニークチェックメソッドはあるのか? → 調べたけどないと思う。
じゃ、別の方法でチェックするにはどうしたらいい?となると。

クラス内部で主キー、ユニークの値を配列で保持して、配列内をチェックしかないのかなと思ってるんだけど。
複合主キーの時は、それぞれの列の値を文字列連結して1つの文字列として保持する。

これ以外になんかいい方法ってないですか?




452:デフォルトの名無しさん
07/12/01 14:25:06
あ、DataGridVewのDataErrorイベントは論外で。あんなの使いようがねぇって感じなので。

453:デフォルトの名無しさん
07/12/01 14:49:10
バインド先がDataTableならPrimaryKey設定しとけば
DataGridVewの入力時エラーになるけど


454:デフォルトの名無しさん
07/12/01 16:24:19
>>450

逆、参照するのがテキストボックス

455:デフォルトの名無しさん
07/12/01 17:25:07
逆とはどうゆう事?マスターページからページのテキストボックスを参照でいいんだよね。


456:デフォルトの名無しさん
07/12/01 19:25:42
設定値はマスターページの値で、テキストボックスが更新されたら
マスターページの値を更新。

457:デフォルトの名無しさん
07/12/01 19:29:06
説明が面倒だから、これをやるってこと
URLリンク(www.atmarkit.co.jp)


458:デフォルトの名無しさん
07/12/01 19:36:58
UdpClient.BeginReceive(〜)
から
byte [] buffer = UdpClient.EndReceive(〜);
の間に複数の受信接続が在った場合

bufferに入るのは最後に受け取った1つのデータだけですか?

459:デフォルトの名無しさん
07/12/01 23:09:37
結局はテキストボックスがトリガーとなってマスターページに値をあたえないとだめなんだね。
ユーザコントロールがトリガーとなって見に行くことがしたいけど無理なんだよね

460:デフォルトの名無しさん
07/12/02 08:48:15
>>458
最初のだ

461:デフォルトの名無しさん
07/12/02 14:07:57
>>459
これは無理そう。
FindControlsみたいなメソッドをマスターページにプロパティで実装して、
ユーザコントロールのイベント内から呼び出したいんだろ?
これはできそうでできない領域。それに気付いただけでも天才だよ。お前
>>456
も言っていること意味不明。


462:デフォルトの名無しさん
07/12/02 20:44:44
やっぱり無理なんですね

463:デフォルトの名無しさん
07/12/02 21:07:10
>>461
parent経由で親PropertyにSetなら出来るだろ

464:デフォルトの名無しさん
07/12/02 21:53:27
ページといえどもクラスでしょ参照できる分けない

465:435
07/12/02 23:13:03
書き込みが遅れてしまいすみません。

他の方々が書かれたソースを読んでいても薄々感じていましたが、やはり皆様
using を積極的に使うものなのですね。確かに衝突など滅多に起きませんし、
名前空間の構造が崩れることよりも行が横に長い方が害悪かもしれません。
皆様のご助言のお陰で漸く using を使うべきとの考えへと至ることができました。
ありがとうございました。

>>435
自分はむしろ真逆な質の人間だと思っていたのですが。一応 IntelliSense 等、
少しは使っています (というより IntelliSense を使わないで日々コーディング
できる方が居たら尊敬してしまいます)。

>>446
仰る通り、using ディレクティブでした。>>437 といい、きちんと見直したはずだった
のですが。お恥ずかしい限りです。

466:435
07/12/02 23:17:31
>>465 中のレスアンカ 誤: >>435 → 正: >>439 でした。
またしてもやらかしてしまった。度々の訂正、申し訳ありません。

467:デフォルトの名無しさん
07/12/03 12:18:45
質問があります。環境はVS2003のC#です。

const Point pos = new Point(1, 1);

とやると
「'pos' に割り当てられた式は定数でなければなりません。」
というエラーが出ます。
定数にnewは使えるないんでしょうけど、どのようにしたら上記のような定義を実現できるでしょうか?

468:デフォルトの名無しさん
07/12/03 12:26:56
static readonly Point pos = new Point(1, 1);
ふらっとC#スレに行け

469:デフォルトの名無しさん
07/12/03 12:30:39
>>467
残念なことに、constはプリミティブ型(int, double)か、後は例外的にString型のみしか認められない。
非常に不思議なことに、C#には改変不可を示す修飾(C++のconstやJavaのfinal)がない。
一応readonlyという似たようなものがあるが、これはコンストラクタでしか使えないのでメソッド内などでは使えない。

470:デフォルトの名無しさん
07/12/03 13:43:13
いたいことは何となく分かるがかなり変なこと書いてるぞ。

471:467
07/12/03 13:58:16
>>468-469
ありがとうございます。
readonly修飾子を使用することにしました。

472:デフォルトの名無しさん
07/12/03 16:09:37
>>471
プロパティの使用も検討してみては。

473:デフォルトの名無しさん
07/12/08 20:10:03
StreamReader sr = new StreamReader("C:\\test\\時間集計.txt", Encoding.GetEncoding("Shift_JIS"));
string text = sr.ReadToEnd();
sr.Close();
this.rtbIndication.Text = text;

Regex R_Ex = new Regex("this.");

//TextBox1.Text内で正規表現と一致する対象を1つ検索
Match M_stPath = R_Ex.Match(this.rtbIndication.Text);

while (M_stPath.Success)
{
int iFind = this.rtbIndication.Find(M_stPath.Value, RichTextBoxFinds.MatchCase);

this.rtbIndication.SelectionStart = iFind;
this.rtbIndication.SelectionLength = M_stPath.Value.Length;
this.rtbIndication.SelectionColor = System.Drawing.Color.Red;

M_stPath = M_stPath.NextMatch();
}

リッチスプレッドの中から特定の文字だけを抜き出して、そのフォントカラーを赤くしたいのですが
この場合、thisが複数あるにも関わらず、最初に見つかったthisしか赤くなりません。
どこがまずいのでしょうか??

474:デフォルトの名無しさん
07/12/08 21:30:40
↑"this"です

475:デフォルトの名無しさん
07/12/08 21:45:22
とりあえずステップ実行でもしてみたらー?

476:デフォルトの名無しさん
07/12/08 22:12:01
>>475
原因は解っています。
int iFind = this.rtbIndication.Find(M_stPath.Value, RichTextBoxFinds.MatchCase);
の部分で、リッチテキストボックス(rtbIndication)のテキストの最初から読み込んでるから
必ず最初の"this"で止まってしまうのです
なにかいい方法はないでしょうか?

477:デフォルトの名無しさん
07/12/08 22:17:56
Findの任意の位置から検索開始できるオーバーロード使えばいいんじゃね

478:デフォルトの名無しさん
07/12/08 22:23:12
>>477
すいません、たとえばどのように書けばよろしいのでしょうか?

479:デフォルトの名無しさん
07/12/08 22:37:03
いやまずヘルプ見ろよ

480:デフォルトの名無しさん
07/12/08 22:37:58
>>all

解決しました!>>477ありがとう!

481:デフォルトの名無しさん
07/12/11 18:21:35
namespace IEnumeratorTest
{
public class Sample : IEnumerable<char>
{
public IEnumerator<char> GetEnumerator()
{
yield return 'C';
}
}
class Program
{
static void Main(string[] args)
{
foreach (char c in new Sample())
{
Console.Write("{0}", c);
}

}
}
}

C#2.0 yieldの勉強をしています。
このコードで何故コンパイルエラー(CS0536)が出るのかわかりません。
下記のどれにも違反していないのですが。。
・public キーワードが省略されている。
・戻り値の型が一致しない。
・static キーワードがある。
何か足りないものでもあるのでしょうか?
Visual C# 2005 Express Editionを使用しています。

482:デフォルトの名無しさん
07/12/11 18:46:25
MSDNを見るとIEnumerator<>は非ジェネリックのIEnumeratorを継承
していました。

また、以下の記述がありました。
実装時の注意 このインターフェイスを実装するには、非ジェネリックの IEnumeratorインターフェイスを実装する必要があります。

そこで
IEnumerator IEnumerable.GetEnumerator()
{
//ここでIEnumeratorオブジェクトを戻さないとエラーになる
}

を実装する必要がありそうなのですが、何を書けばよいのかわかりません。

483:デフォルトの名無しさん
07/12/11 18:49:49
>>481
エラーメッセージ読め。

IEnumerable<T> は non-generic な IEnumerable を継承してるんで、
そっちの GetEnumerator も実装しないとだめ。

System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()


484:デフォルトの名無しさん
07/12/11 18:50:59
>>482
IEnumerator IEnumerable.GetEnumerator() の中身は、
return this.GetEnumerator(); にでもしとけ。

485:デフォルトの名無しさん
07/12/11 19:02:48
Yieldの使い方を根本的に間違ってるわけだけどな。
Yieldを含む IEnumerableなファンクションが暗黙にいろいろやってくれる。
この例だとstaticにしてもいいな。

public class Sample { 
  public IEnumerable<char> Hoge() { yield return 'C'; } 
}

foreach (char c in new Sample().Hoge())
  Console.Write("{0}", c);


486:デフォルトの名無しさん
07/12/11 19:28:55
>>483
>>484
>>485
ありがとうございました。解決しました。

>>485
別法でしょうか。まだ詳しいことは分からないのと
サンプルの方法も間違っていなそうなので、とりあえず
これを使っていこうと思います。

487:デフォルトの名無しさん
07/12/11 20:12:58
int x = 100, y = 200;
private Storyboard story;
private DoubleAnimation myDoubleAnimation;
private DoubleAnimation myDoubleAnimation2;
private void WindowLoaded(object sender, RoutedEventArgs e) {
Rectangle rect = new Rectangle();
rect.Width = 10;
rect.Height = 10;
. (省略
myDoubleAnimation = new DoubleAnimation();
myDoubleAnimation.From = 10;
myDoubleAnimation.To = x;
myDoubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(2000));
myDoubleAnimation2 = new DoubleAnimation();
myDoubleAnimation2.From = 10;
myDoubleAnimation2.To = y;
myDoubleAnimation2.Duration = new Duration(TimeSpan.FromMilliseconds(2000));
Storyboard.SetTargetName...(省略
story = new Storyboard();
story.Children.Add(myDoubleAnimation);
story.Children.Add(myDoubleAnimation2);
story.Begin(this, true);
}
private void click(object sender, RoutedEventArgs e) {
story.Stop(this);
x = 200;
y = 300;
story.Begin(this, true);
}
.NET3.0ですが、ストーリーボードの子要素の中身を変更するのってどうやるんでしょうか?
xとyの値をクリックで変えたいのですが、上記の方法ではうまくいかず、
クリックしてもx,yは100,200のままで変わりません 。どうすればいいのでしょうか?

488:デフォルトの名無しさん
07/12/12 01:25:48
yieldって使うか?用途が見えないのは理解不足なだけなのか?

489:デフォルトの名無しさん
07/12/12 01:27:37
うん

490:デフォルトの名無しさん
07/12/12 02:07:33
用途ってか、Enumerable返すメソッドが簡単に作れるから便利ってだけだけど。
状態を持つ場合なんか手で書きたくないしね。


491:デフォルトの名無しさん
07/12/12 04:35:41
>>487
myDoubleAnimation.Toはint?だからclickの中でx変えただけじゃ元の値のままですよ。
意図通りの挙動をさせるにはこんな感じ?

private void click(object sender, RoutedEventArgs e) {
story.Stop(this);
x = 200;
myDoubleAnimation.To = x;
y = 300;
myDoubleAnimation2.To = y;
story.Begin(this, true);
}

492:491
07/12/12 04:38:58
×int?
○double?
寝ぼけてました。

493:デフォルトの名無しさん
07/12/12 07:41:59
yieldは列挙とマイクロスレッドが主な用途だろうな
こう言語機能をこんな風に使うとこんなことができるよてきなTips( ゚д゚)ホスィ…

494:デフォルトの名無しさん
07/12/12 12:22:21
foreachと組み合わせるとなかなかいい塩梅だよ。

495:デフォルトの名無しさん
07/12/12 12:22:41
オライリーのプログラミングC#見たけど
ユーザー定義型のソート基準を決めるのに
IComparerを実装するのって面倒ですね。
この点はC++のほうが分かりやすくて楽チン。

496:デフォルトの名無しさん
07/12/12 12:34:29
>>>493
その手のサイト運営してる身だけど、
そういう Tips は結構まとめるの面倒なのよね。
日記とかにちまちま書いてる人はいるけど、それを1箇所に集めるとなると。
「この辺りを Tips にまとめて欲しい」みたいなの列挙しといてくれたら
そのうちページに起こすけど。

>>495
いや、IComparison<T> デリゲートでもソートできる。
C# 3.0 だと、
list.Sort((x, y) => y.CompareTo(x));
とか書ける。

497:デフォルトの名無しさん
07/12/12 12:36:10
2.0でも、十分楽だと思うけど。

    Array.Sort(table, delegate(Hoge x, Hoge y)
      {
        return ・・・;
      });

498:デフォルトの名無しさん
07/12/12 12:44:30
delegateは未読です。
C#は記法がキモイのはC++と同じで、
慣れるまで時間がかかりそうです。


499:デフォルトの名無しさん
07/12/12 12:47:37
C++ がキモイって。
いったい、元々どこの畑にいたんだ。

500:デフォルトの名無しさん
07/12/12 12:57:45
>>496
よかったらサイトのアドレス教えてください@メアド

501:デフォルトの名無しさん
07/12/12 18:52:31
TextBoxに色付けたり
インデント開始と停止する系の命令はあるですか?

502:デフォルトの名無しさん
07/12/12 20:28:42
釣り?

503:デフォルトの名無しさん
07/12/12 20:35:34
はい

504:デフォルトの名無しさん
07/12/12 20:47:52
リッチなやつにしとけ

505:デフォルトの名無しさん
07/12/12 23:14:34
ブルジョワテキストボックスでも開発するか

めちゃくちゃリソース食うの。

506:デフォルトの名無しさん
07/12/12 23:15:23
word呼べよ

507:デフォルトの名無しさん
07/12/13 04:30:30
例外をcatchするとデバッグしにくいという問題は、
IDEのメニュー「デバッグ」「例外」で対応できる。
基本的にはSystem.IO系やNullReferenceExceptionの「スルー時中断」にチェックを入れる。
あとは発生したベースで必要な例外を追加していけばいい。


508:デフォルトの名無しさん
07/12/13 04:34:09
今は特に言う事無いけど何か思いついたら次からここに書き込むよ

509:デフォルトの名無しさん
07/12/13 09:26:21
スルー時中断ワロタ

510:デフォルトの名無しさん
07/12/13 18:23:06
にゃるるで言及されてたC#のお偉いさんの話は本当なのだろうか。
もしマジだとしたら、ガクブルもので正直この先も使うか考えてしまう。

511:デフォルトの名無しさん
07/12/13 18:27:37
何の話か言えよ

512:デフォルトの名無しさん
07/12/13 19:09:25
ヘジたんが AOP 嫌いだとかクエリ式嫌いだと書かれてたアレ?
そんなガクブルな話書かれてたか?

513:デフォルトの名無しさん
07/12/13 20:18:43
>>512
そんなことは常識だろ

514:デフォルトの名無しさん
07/12/13 20:52:09
>>513
いや、だから、常識なのに何をガクブルしてんの?と。

515:デフォルトの名無しさん
07/12/13 21:34:46
クエリ式もあれはひどいよな
使い物にならん

516:デフォルトの名無しさん
07/12/13 22:38:37
いやいや、クエリ式は使い出すと便利でしょうがないよ。

517:デフォルトの名無しさん
07/12/13 22:41:45
>>516
LINQのほとんどの演算子が使えないのに?

518:デフォルトの名無しさん
07/12/13 22:59:40
>>517
どういうこと?
「LINQ to SQL では LINQ の標準クエリ演算子を全部サポートしてないのに?」といいたいのかな?

519:デフォルトの名無しさん
07/12/13 23:02:05
>>518
拡張メソッドでは呼び出せて、SQLにも使えるのに
クエリ式では使えないものがいっぱいあるだろ

520:デフォルトの名無しさん
07/12/13 23:11:29
>>519
ああ、そういうことね。

まあ、それでも、let とか2重 from とか使うときはクエリ式便利。

from x in a
from y in b
select new { x, y };
とか、クエリ式使わないと SelectMany 使って書くの大変よ。

521:デフォルトの名無しさん
07/12/13 23:16:59
正直letとか使われるとコードがわけわかんなくなる
拡張メソッドでいいじゃん

522:デフォルトの名無しさん
07/12/13 23:25:31
や、let はむしろ便利だろ
il からコード起こしてみたらすごいことになってたけどw

523:デフォルトの名無しさん
07/12/13 23:26:16
クエリ式この世からなくなってくれればコード読みやすくなるのに

524:デフォルトの名無しさん
07/12/14 00:33:05
csvファイルを読み込んで数値計算をさせたいのですけれど
どうやったらいいのか分かりません。
条件式書くのとcsvファイルを読み込んでそのまま出力することはできます。
むしろそれくらいしかできない初心者です。
アドバイスお願いします。

525:デフォルトの名無しさん
07/12/14 00:34:09
>>524
そのまま出力できるならその値を出力せずに計算すればよかろ

526:デフォルトの名無しさん
07/12/14 00:37:08
>>525
普通に計算式を書いてから、その後出力する処理を書けばいいということでしょうか?

527:デフォルトの名無しさん
07/12/14 00:38:05
>>526
その通りだ

528:デフォルトの名無しさん
07/12/14 00:41:13
>>527
あああああ そうだったんですか。
難しく考えすぎてました。ありがとうございました。ものすごく助かりました。

529:デフォルトの名無しさん
07/12/14 08:35:40
てもその計算式をどうやって解析するかは想像できてるか?

530:デフォルトの名無しさん
07/12/14 08:36:06
天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。
天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。
天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。
天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。


531:デフォルトの名無しさん
07/12/14 10:33:22
WinAPI の DllImport やら、 const int WM_HOGE みたいなのをC++ヘッダファイルから
自動生成するようなツールってないの? VB6 にあったやつみたいな。
それか、WinAPI をひたすらラッピングした .NET Frx 向けライブラリ。

532:デフォルトの名無しさん
07/12/14 10:38:01
>>531
こういうのは?
URLリンク(www.pinvoke.net)

533:デフォルトの名無しさん
07/12/14 11:14:51
>>532
おおサンクス。ググっても DllImport の解説やら、WinAPI を使ったサンプルばっか出てきて
困ってたんだよね。これで幸せになれそうだ。

534:デフォルトの名無しさん
07/12/14 12:18:55
たしかアドインでPInvoke関連のヤツがあったはず。
具体的に何を補助してくれるのかしらんが、余裕があれば試してみたらいい。

535:デフォルトの名無しさん
07/12/14 12:23:20
そのアドインも>>532のリンク先にある

536:デフォルトの名無しさん
07/12/14 15:06:38
隔離スレなのにずいぶん機能してるな

537:デフォルトの名無しさん
07/12/14 15:14:57
オライリー プログラミングC#
プログラミング Microsoft Visual C# 2005 言語編

C#の勉強をはじめる場合、どちらがお勧めですか?

538:デフォルトの名無しさん
07/12/14 15:29:59
難しくなさそうなのをちょっと読んで
あとは使ってれば分かる

539:デフォルトの名無しさん
07/12/14 17:47:31
>>537
すでにほかの言語が使えるなら、オライリーが無駄な説明がなく理解しやすい。
下はシラネ。ただ、言語編とかつくのは他のも読む前提で書かれてることが多い。
後、@itのC#入門改訂版ならタダで読める。正直助長な部分もあるが、本を買う前に一度見てみて、
それだけでは不十分だと感じてから本を買っても遅くないんじゃないか?

540:デフォルトの名無しさん
07/12/14 18:58:04
ってかMSDNとかの Microsoft 様のドキュメント読めば十分すぐるだろ・・・

541:デフォルトの名無しさん
07/12/14 20:11:48
>>540
リファレンスには十分だが、携行できないしいろんな意味で不十分
「C#の勉強を始める場合」だからな。

542:デフォルトの名無しさん
07/12/14 20:13:03
>>539
C++は使えるのとJAVAの文法の基本は分かっているので
オライリーにしてみます。MSの本は高すぎるのもネックです。
>>540
基本を押さえたら適宜参照してみます。


543:デフォルトの名無しさん
07/12/14 20:48:26
携行できないのはたしかにその通りだけど、↓あたりとか折角無料なのに
スルーしてしまうのはもったいないと思う。

URLリンク(msdn2.microsoft.com)


544:デフォルトの名無しさん
07/12/14 20:51:56
>>542
正直、C++ と Java 使えるなら MS のドキュメントだけで十分だと思うけど。

545:デフォルトの名無しさん
07/12/14 21:07:26
MSDNの
・C# プログラミング ガイド
・Java 開発者のための C# プログラミング言語
あたりに一通り目を通しとけば、まあいけると思うけどな。

どうしても紙媒体が好きならオライリーのC#いいと思うよ。

546:デフォルトの名無しさん
07/12/14 21:19:20
以外とWebですますっていう人間多いのか?
俺は新しい言語を勉強するときには、とりあえず一冊本を買うんだが、
Webだけだと記憶しづらくないか?

547:デフォルトの名無しさん
07/12/14 21:20:23
msdnはローカルに入れますよ

548:デフォルトの名無しさん
07/12/14 21:25:51
>>547
ごめん、Webっていうのは言葉のあやで、デジタルデータでってこと。

549:デフォルトの名無しさん
07/12/14 21:30:31
あんまり紙資源を無駄にしたくないから本は買わない
ウラニウムとどっちが無駄かは知らんけど

550:デフォルトの名無しさん
07/12/14 21:42:48
「Web ですます」というより、C# は「Web ですむ」。
それくらい日本語情報充実してる。

551:デフォルトの名無しさん
07/12/14 22:00:43
どっちにしろ公式のドキュメントには目を通しておく必要があるし、
MSの物の場合それだけで十分なことも多いからなぁ・・・

552:デフォルトの名無しさん
07/12/14 22:02:49
俺の場合基本的に本ですべてすませて、必要なところだけ公式のドキュメントを見る。

553:デフォルトの名無しさん
07/12/14 23:18:24
俺も情報をつかむ程度ならweb、じっくり勉強するなら本だな。
論文とかもできるだけ印刷して読む・・・あ、単純に紙媒体が好きなだけかな?結局好みの問題かも。
でもディスプレイとずっと睨めっこするのは辛くない?

というかMSDNは重いのが・・・
動的生成なサイトってイライラが溜まって好きじゃないんだよなw

554:デフォルトの名無しさん
07/12/14 23:30:20
>>553
禿胴。昔はモニター越しの情報も紙媒体も一緒だと考えてたんだが、
長年やってるうちに結局紙媒体の方が覚えやすいっていう結論になった。

555:デフォルトの名無しさん
07/12/15 00:38:52
オライリーの本は二部が難しいな。
のマーシャリングやらアセンブリやら属性、シリアル化とか
わけわからん。
ここはC#というよりは.NETの世界なんだろうけど。

556:デフォルトの名無しさん
07/12/15 00:57:36
>>555
二部って何を指してるの?

557:デフォルトの名無しさん
07/12/15 00:59:39
何らかの言語触ってりゃC#なんか一日で書けると思うが
まークラスライブラリは必要になったときに引くが

558:デフォルトの名無しさん
07/12/15 01:07:27
1日もかかるかよ


559:デフォルトの名無しさん
07/12/15 09:48:19
>>556
本の目次

560:デフォルトの名無しさん
07/12/15 10:01:01
>>557は本当に一日で習得できた?
プログラムを動かすだけならコピペでも出来るし、
それに一通り使えるようになった後ではいままでやってきたことがひどく簡単なことだったと思うもんだよ。

561:デフォルトの名無しさん
07/12/15 10:09:47
何らかの言語触ってりゃ
コボラー
絶対無理w
まあ、かけるだけならアホプログラムでも書けるといえなくもないから、
1日でとか短時間を自慢げに言うのって馬鹿にしか見えんよね。


562:デフォルトの名無しさん
07/12/15 10:13:54
このスレらしいくだらない話だなw

563:デフォルトの名無しさん
07/12/15 10:18:49
>>560
C++やらJavaやらやってたんで、楽勝だったよ。

564:デフォルトの名無しさん
07/12/15 10:20:54
文法理解しただけで「習得」したと思っちゃう人いるよね。

565:デフォルトの名無しさん
07/12/15 10:34:09
何らかの言語と
C++やjavaじゃぜんぜん条件が違うわけだが。
まあそんなことはどうでもいい。
できるって言うレベルが人によって違いすぎて何の意味もないわな。


566:デフォルトの名無しさん
07/12/15 10:42:55
URLリンク(blog.livedoor.jp)
> 私自信、新しいプログラミング言語を3日でマスターできなかったら負けだと思っている。
> もちろん「マスター」にもピンからきりまであるが、ここでいう「マスター」は、もちろんライ
> ブラリーやクラスを端から端まで覚えるということではなく、その言語の特徴をつかんで、
> 一目見てその言語で書かれた事がわかるようなコードを読み書きできることを指す。

567:デフォルトの名無しさん
07/12/15 10:47:36
C#なんて、2.0あたりまでは、メジャーな言語の寄せ集めみたいな文法で、
入門書をパラパラと読んで「ああ、こういう言語ね」と思えないようなヤツは不勉強すぎ。


568:デフォルトの名無しさん
07/12/15 10:48:53
言語自体の割合は小さくなってフレームワークなんかの割合がでかいって
偉い人も言ってたのにね。

569:デフォルトの名無しさん
07/12/15 10:52:31
1.1まででの壁はデリゲートぐらいか
2.0は匿名メソッド(のスコープ)

言語としてはこじんまり

570:デフォルトの名無しさん
07/12/15 11:09:48
あ、こういう言語ね
書ける
ここでいうマスター

はいはいなんの意味もないね。
ほんとに言語固有の部分は少ないしね。
まあそれでも仕様のボリュームはそれなりにあるけど、
ごく基本的な部分だけでもプログラムは書けるしな。

571:デフォルトの名無しさん
07/12/15 11:13:31
そんなんだから、ライブラリでも設計実装させたら
とんでもないことになったりする。


572:デフォルトの名無しさん
07/12/15 11:22:58
深く考えずに、細かいところを検証せずに
やたらマニアックなことする奴も氏ね、
コードは複雑で冗長でそのくせ穴だらけでたいして役にも立たない、
ああもうトラウマだぜ。


573:デフォルトの名無しさん
07/12/15 11:30:57
みんなすごいんだね。
俺なんて、他人のサンプルコード見ては
「なんだよ、このアトリビュート。どうやって学んだんだよ」
「このプログラムの設計ってまず何からどうやって作ったんだ?」
ってな感じで右往左往して
C言語で作ったプログラムをC#で組んでみようと思っても
上手くいかないし。
よし、JAVA宿題スレにそのプログラムの問題投稿して
解いてもらって、そこからJAVA経由で理解しようと
思ったけど、返ってきた答えが答えになってない
不完全なプログラムだったりして、どーしたもんかと考えたり・・・

基本構文はすぐに解ったけどオブジェクト指向が出来てない
自分に辟易する。

574:デフォルトの名無しさん
07/12/15 11:32:45
それは単に自分の頭が悪いだけで、
みんながすごいわけじゃなかろう。

575:デフォルトの名無しさん
07/12/15 11:35:21
>>573
あんまりふらふらせずに一つの言語に専念してみたらどうだろうか?
ここで上がってる多言語使える人間も、基本的には一つの言語を十分に学んでから、
その言語を起点して他の言語を学んでる人が多いはず。
複数の言語を同時に習得しようとすると、文法やメトリックを混同してまったく勉強できないことも多い。
俺は、とりあえずjavaが使えれば、基本的なOOP的言語は文法の違いだけですぐに覚えられると思う。


576:デフォルトの名無しさん
07/12/15 11:42:36
多言語を習得するというのは、実はそれほどすごいことじゃない。
文法とライブラリを使用する程度なら、その言語の主要概念(OOPとか)をすでに習得していればそれこそ丸一日あれば十分。
だから、Javaさえ覚えられればCやC++、C#は使えるも同然だし(言語固有の習慣や文法を除いて)、
言語を習得したっていうのは、言語の設計概念を理解してるかということに直結すると思う。
だから、一日で十分とかいってる人間も、似たような概念で構成された言語を、
今まで覚えた言語の概念を流用して使えるといってるわけで、
関数型言語をまったく知らない状態から、haskellを一日で自由に使えるわけがない。

577:デフォルトの名無しさん
07/12/15 11:53:33
>だから、Javaさえ覚えられればCやC++、C#は使えるも同然だし(言語固有の習慣や文法を除いて)

無茶ゆうなw
ってか、言語固有の習慣や文法を除いて
ってどういうこったよ?それはどう使えるっていうんだ?
C++まともじゃなくてもやったことあるなら
そんな台詞はどうやっても出てこん。


578:デフォルトの名無しさん
07/12/15 11:56:40
java屋がC#始めると変なとこだけ潔癖症でかなわん。
C#の文法でjavaを書く癖が直ってくれない。

579:デフォルトの名無しさん
07/12/15 12:01:02
あるある、チェック済み例外がうじうじとか言い出すよな。

580:デフォルトの名無しさん
07/12/15 12:17:54
>>573
そうだね。
こんだけオブジェクト指向が広まってるのに、たとえば、
「C一筋で10年、それ以外にはまったく興味もなくてすごしてしました。
いまさらC#やJavaなんてできません」
みたいなPGって激しくオワットルね。

581:デフォルトの名無しさん
07/12/15 12:23:13
C++勉強してればオブジェクト指向の概念自体はだいたいわかるんじゃないのかな。
時歳に使いこなせるかどうかは別だけど。

582:デフォルトの名無しさん
07/12/15 12:28:23
C++よりゃよっぽどオブジェクト指向部分に集中し易いjavaでも
結局思い切り人次第だからな〜


583:デフォルトの名無しさん
07/12/15 13:14:59
>>577
同意。C++の複雑度はJAVAの比ではない。C++を知ってる人間なら
JAVAはえらく簡単に覚えられるが、その逆は真ではない。

584:デフォルトの名無しさん
07/12/15 13:34:40
C++は手動でメモリ管理しなきゃならんし
標準ライブラリも足りないものだらけだし
言語自体にも罠がいっぱいある

585:デフォルトの名無しさん
07/12/15 13:44:33
>>584
メモリ管理なら、今やスマートポインタを使わない
なんて考えられない。boostがよりいっそう充実して
ライブラリが進化することを期待する。現にそうなって
きている。

586:デフォルトの名無しさん
07/12/15 13:47:44
いい加減すれ違い。

587:デフォルトの名無しさん
07/12/15 13:50:49
ここを隔離スレと知っての発言か?

588:デフォルトの名無しさん
07/12/15 14:10:25
いや、おまいらまずC#が生まれた背景を理解しろよ。一言だとJavaのパクリだがw
「C#はC++をモデルとしてプログラマーを面倒で煩雑な作業から開放するために
 作られたより効率的開発のしやすい言語」でC++プログラマーが開発者なんだよ。
つまり、C#はC++からメモリ開放や宣言の煩雑さを省いたオートマバージョンなんだよ。
つまらないCopyとCloneの違いなんてC++プログラマーは一瞬で理解できる。
それを勘違いしているC#ヲタはC#はすばらしいと思っているが、
C#でC++より優れたものを作れるかといったら答えはYESでもありNOでもある。
「何に優れたものか」によって尺度が違うからな。
C++⊃C#、VB.NET これは間違いない。C++を極めればどんな言語でも理解できるよな。
ただ、C++を極めると簡単に言ってもSTL、ATLからUNIX系、MS系や
地方言語のマクロ、コンパイラ、デバイスのインターフェースからOS制御、途方もないボリュームだ。
OSを記述する言語としてのC++ではなく、業務アプリを作るC++を学ぶなら
表面だけなら言語経験より開発手法や設計思想なんかの方がよっぽど重要なのかもな。

はい長文ゴメンなさ〜い。

589:デフォルトの名無しさん
07/12/15 14:27:21
痛い

590:デフォルトの名無しさん
07/12/15 14:45:54
C#にはあってC++にはない致命的なもの

一つのクラスを一つのソースファイルに書く機能
リフレクション
object型
クロージャ
式ツリー
自動シリアライズ
そしてもちろんGC

C++にあってC#にない致命的なもの

なし

591:デフォルトの名無しさん
07/12/15 14:49:50
テンプレートがないのは重症だろ

592:デフォルトの名無しさん
07/12/15 14:53:58
素晴らしい!これぞ隔離スレ

593:デフォルトの名無しさん
07/12/15 14:57:30
ファイルのインクルードは?

あれがないおかげで、プロジェクト全体から見えるシンボル(#defineで定義するやつ)
を定義しようと思ったらプロジェクトのプロパティーでチマチマやらんといかん。

面倒だし明示的じゃない。

594:デフォルトの名無しさん
07/12/15 15:18:13
C++にあってC#に無い物はわざわざ削った物ばかり

595:デフォルトの名無しさん
07/12/15 15:30:26
>>593
何を言ってるのか分からん
#defineをプロジェクトのプロパティでどう代用するんだ

596:デフォルトの名無しさん
07/12/15 15:36:50
>>595
ただ君が知らないだけなわりになぜか偉そうな口ぶりなのはどうなのw

まあ落ち着いて
URLリンク(msdn2.microsoft.com)(VS.80).aspx
の「Visual Studio 開発環境でこのコンパイラ オプションを設定するには」でも読め。

597:デフォルトの名無しさん
07/12/15 15:46:21
C#で#defineはそんな使わんと思うんだが
マクロないんだし

598:デフォルトの名無しさん
07/12/15 15:54:10
>>596
この機能のことであればひとかけらも致命的ではないだろ
お前のコードはいろんなシンボルを使った#ifだらけなのかもしらんが
プロパティで設定すればいいだけの話だ

599:デフォルトの名無しさん
07/12/15 15:59:18
C# でも #if SYMBOL はやるけどもな。

#define は、
マクロ型関数は使うな、
プロジェクト全体に渡るシンボル定義はコンパイラオプション+プロジェクト設定でやれ
ってこと。
プロパティはあんまり関係ないと思うが。

600:デフォルトの名無しさん
07/12/15 16:20:24
>>598
たしかに致命的ではないね。
その点は申し訳ない。

601:デフォルトの名無しさん
07/12/15 17:39:33
つ C++/CLI

602:デフォルトの名無しさん
07/12/15 18:19:16
>>590
おまえは本当に痛い。
リソースの乏しい久組み込みではGCが激しく邪魔になる。
一生Winアプリでも作ってろカスが。

603:デフォルトの名無しさん
07/12/15 18:39:26
まるで組込用途でC#使ったことがあるような言いぐさだなw

604:デフォルトの名無しさん
07/12/15 18:43:33
まあ組み込み用途ならCだし

605:デフォルトの名無しさん
07/12/15 19:03:47
>>603
適当に言いました。
すいませんでした。

606:デフォルトの名無しさん
07/12/16 00:34:29
>>591
っジェネリック

607:デフォルトの名無しさん
07/12/16 00:36:45
C#のジェネリックは実体化しなくても型チェックされるから、
肝心なところで使い物にならない。

608:デフォルトの名無しさん
07/12/16 00:38:05
型のチェックがガチガチなのはむしろ好きだがね
ちょっと間違うとコンパイルも通らない

609:デフォルトの名無しさん
07/12/16 00:44:21
CとかC++は何でもかんでも値型にキャストできるのが気持ち悪い。
なんでchar[]とかがintにキャストできるのかと。
ポインタはパフォーマンスアップに繋がるのはわかるがこれだけは
気持ち悪くてしょうがない。

610:デフォルトの名無しさん
07/12/16 00:48:55
C#の将来は明るいですか?
Windowsのソフトを作る予定がなくてもC#
を覚える必要があるか。JAVAとどっちを
勉強すべきか。


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

5085日前に更新/202 KB
担当:undef