トップページ⇒tech
963コメント280KB

C♯相談室 Part5

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん♯NGNG

   ∧_∧____
  /(#゚ー゚) ./\
/| ̄∪∪ ̄|\/    C#,.NET関連の話題はこちらでどうぞ。
  |____|/
   ,,,,∪∪,,, ,,


過去スレ・関連リンクは>>2-10あたり
0002名無しさん♯NGNG

C♯相談室 Part4
http://pc.2ch.net/test/read.cgi/tech/1016597767/
C♯相談室 Part3
http://pc.2ch.net/test/read.cgi/tech/1009473982/ (現在dat落ち)
C♯相談室 Part2
http://pc.2ch.net/test/read.cgi/tech/1002468050/ (現在dat落ち)
C#相談室
http://pc.2ch.net/tech/kako/977/977112364.html

ソース置き場.NET
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049
0003デフォルトの名無しさんNGNG
関連スレ

VisualStudio.Net SP4/*.NETなんて、好きだー!!*/
http://pc.2ch.net/test/read.cgi/tech/1017674939/

お前ら頃し合いしてください
http://pc.2ch.net/test/read.cgi/tech/1013093589/
0004デフォルトの名無しさんNGNG
MSDN Online Japan
http://www.microsoft.com/japan/msdn/default.asp

Insider.NET
http://www.atmarkit.co.jp/fdotnet/
0005デフォルトの名無しさんNGNG
>>1 スレ立てお疲れ様です。しぃ#タン ハァハァ。
0006デフォルトの名無しさんNGNG
C#StandardとSDKの違いって何?
C#品切れだったので入荷するまで
とりあえずSDKを使ってみようと思ったけど、
これからプログラミングを始める者なのでよくわからない。
0007デフォルトの名無しさんNGNG
プロジェクトフォルダに作成される
<VSMacros>ってなんだい?
消してもまたはえてくるけど。
0008デフォルトの名無しさんNGNG
>>6

○C#Standard 統合開発環境
エディタ・テンプレートなどなど。当然便利な機能あり
この環境からは言語自体はC#しか使えない(下に説明するSDKも入っている)
びぢゅあーるな環境でウィンドウズあっぷりけーしょんなどを開発できる。
クラスライブラリ・自前コンポーネント作成用の環境はない(単体C#の機能制限)。
入門者向けテキスト等も同梱。金かかる。

○SDK 統合じゃない開発環境
C#に限らずなんでもできるがコマンドラインから操作せねばならん
ものが多いなどめんどい。
実はびぢゅあーるな感じでの
ウィンドウズあっぷりけーしょん開発ツールも入ってる。
クラスライブラリ・自前コンポーネントはきっと作れる(謎
金かからん。

金あるひとは上、ない人(品切れで買えない人)は下かと。
0009デフォルトの名無しさんNGNG
>>7
文字通りマクロの保存場所。
VS.NETはOfficeみたいにマクロを使えるよ。しかもコードはVB.NET。
0010デフォルトの名無しさんNGNG
>>9
マクロか、そっかそのまんまだね。研究してみる。サンキュー。
0011名無しの高校教師でごわすNGNG
>8
実はC#とC++のスタンダード版を買ってしまった高校教師です。
アカデミック版を買えるのですが、例のアクティべーションとかいうものの
正体がわからないので躊躇して買わなかったのです。買うべきでしょうか
クラスライブラリが作れないとは痛かったです。でも、すでに膨大なクラス
が用意されているので必要はないかなとも思うのですが。。。

アクティべーション自身を詳しく(裏事情も含めて)教えてください。
私はしょっちゅう環境を全部消してはまた再インストールするのです。MSから
つけねらわれるのでしょうか?
0012デフォルトの名無しさんNGNG
>>11
こっちで聞いた方がいいんじゃない?
http://pc.2ch.net/test/read.cgi/tech/1017674939/l50
0013名無しの高校教師でごわすNGNG
>12
いや、ここで聞きたいのです。
0014デフォルトの名無しさんNGNG
つか、別にスタンダード版買ったのならそれでいいじゃん。
0015デフォルトの名無しさんNGNG
再インストールにしてもパーツ変えたにしても、電話するだけでオッケー
せっかく学生なんだから特権使ってVS.NET買えばいいのに、
おれだったらそうするね。

おれは、貧乏なC#Stdユーザーだけどな。
0016名無しの高校教師でごわすNGNG
C++を使ってみた結果、やりたいことはほとんどC#で実現可能だと
いうことが分かりました。お金がない人はVC++を買う必要はまったく
ありません。
0017名無しの高校教師でごわすNGNG
>15
アドバイスありがとうございます。
私は貧乏な「40歳」の高校教師です。学生ではありません。
統合開発環境はなんだかごちゃごちゃしていてまだ勝手がわかりません。
とりあえず、csc.exeで一通りC#の言語体系を眺めてみている最中です。
00188を一生懸命書いたやつNGNG
買ったんならそれ使えばええじゃんかー。
これからプログラミング始めるって書いてあるっしょ、
ならライブラリなんぞ作るのは当分さきじゃんかよ〜ぐわー
次のバージョンのときVS買ってもいいだろ〜あ〜?
0019デフォルトの名無しさんNGNG
>>18
同意。
初期のソースなんて汚くてあとで使いまわしするのに耐えないことが多いんだし。
0020デフォルトの名無しさんNGNG
高校教師うざ、、、VS.NETスレ逝け。
0021デフォルトの名無しさんNGNG
明日VB.NETカンファレンス行く人。。。いる?
0022学習がはかどらない男NGNG
ねぇねぇ、あんたら今なにつくってんの?
もしくは
どんな感じで勉強してる?
ねぇ。

>>21
C#のカンファレンスはないのん?
0023デフォルトの名無しさんNGNG
>>22
アリを眺めてる
0024デフォルトの名無しさんNGNG
マジで教師ならそんなやつの授業うけたかねー!!
失せろ!バカ教師!
0025学習がはかどらない男NGNG
あ、なんか生態系つくって闘わせるやつかえ?
レベル高いのぅ。。。
0026開発もはかどらない男NGNG
んーなんか違うような気がしてきた・・・
アリは肉食動物なの?
0027デフォルトの名無しさんNGNG
雑談は他でやってくれる?独り言も他でね。
新手の荒しだな。放置しよ。俺もな。スマソ。
0028独り言すらはかどらない男NGNG
へいへいスンマセンでした。
0029デフォルトの名無しさんNGNG
オハヨーゴザイマス

しっつもーん。

//////////////////////////////
switch(なんとかかんとか)
{
case 1:
int hogehoge;
....
break;
case 2:
hogehoge = 765;
....
////////////////////////////////

この場合のhogehogeはcase 1:で定義されてるけど、
case 2:などなど、switchスコープ内なら使いまわせるんだよね?
(C++とかでもできたっけ?)
0030デフォルトの名無しさんNGNG
>>29
気持ち悪い感じだけど、できるね。
C++だと出来ないよね。
0031デフォルトの名無しさんNGNG
>>30

即お返事サンキュー
WinTalkって、SDKだかのサンプルにでてきたのん。
今読んでるとこ。
気持ち悪いか、そういわれればそうですねぇ。

C#って愉快。
0032デフォルトの名無しさんNGNG
>>11
もーおそいだろうけど。学生・教員ならアカデミックパック買うよりもアカデミックオープンライセンスで買うほうがよい。
アクティベーションなくなるし、若干安いし。

その代わり初回に5ライセンス分(別のソフトとあわせてでもいいが)買わなきゃいけないのが難点だが、
一緒に買う仲間を募ればどうにかなるし。
0033デフォルトの名無しさんNGNG
属性として指定するFlagsAttributeって実際どんな効能があるんでしょう?
たとえば、enumの値がOR出来るように割り当ててくれるわけでもないようだし・・。
0034デフォルトの名無しさんNGNG
ファイルから一行ずつ読み込むにはどうしたらいいのでしょうか。
Readとかで読んで、改行をサーチしないとダメですか?
0035デフォルトの名無しさんNGNG
>>34
ReadLine
003634NGNG
>>35
できました。ありがとうございます。
0037デフォルトの名無しさんNGNG
C#の本に、「単一文字からなる文字列は文字リテラルと異なる。例えば、'k'と"K"は違う」とあるんですが、
これはどういう意味なんでしょうか。
例で示してもらえると助かります。
0038デフォルトの名無しさんNGNG
>>37
型の取り扱いが違うということでは。

Console.WriteLine( 'k'.GetType() );
Console.WriteLine( "k".GetType() );
0039名無しの高校教師でごわすNGNG
>32
ありがとうございました。店頭には見あたらなかったので
店員と相談します。
0040デフォルトの名無しさんNGNG
初心者、他力本願の方にやさしいスレですね。
以後、利用させていただきます。
0041中日ファン@横浜さんが好きモード ◆DRAG8zBg NGNG
>>40
自分で調べた方が早く、結局は楽に、身に付きますよ
0042デフォルトの名無しさんNGNG
>40 ワラタ
0043デフォルトの名無しさんNGNG
>>37
>>38さんも答えてるけど、
'k'は文字で、"k"はたまたま一文字な文字列。

ちなみに独習C#ですな?私も昨日読み始めた。
004440NGNG
プログラミングはコミュニケーションも必要とせず
閉鎖的な環境の中で一人黙々とやっていくものなのですね。
以後、引きこもります。
0045pとNGNG
私16歳の女子高生。田舎の高校に通っています。(恋人募集中!)
質問ですが、C#の「#」って、本当は「C」の右肩に上付きでつけるもの
だと聞きました。本当ですか?

0046デフォルトの名無しさんNGNG
>>45
あなたに興味があります。
#についてあなたと一緒に語り明かしたいです。
0047デフォルトの名無しさんNGNG
こんにちは、45を監禁しているものです。
あれほど大人しくしてろと言ったのですが、勝手に漏れのパソコン使いやがって、
しかも、こんな糞レスさせてしまって申し訳ございません。
これから外出するときは、縄で縛って天井に吊るしておきます。
0048デフォルトの名無しさんNGNG
またほのぼのとしたやりとりを……。
0049pとNGNG
ちょっと、まじめなレスを期待しているのです。

今、先生の目を盗んで授業中に書き込んでいます。今、英文Eメールの
作文練習時間です。田舎(福島)だけど、オーストラリアに姉妹校?があるのです。
パソコン教室に20台のパソコンがありますが、全然台数が足りません。
部活はもち!物理電算部です。白々しいけど将来の夢はIBMかマイクロソフトの
バリバリのOLを希望しています。ちなみに応援団もかけ持ちで入団しています。
すみません。自己紹介してしまいました。
C#好きです。がんばってください。さようなら。 近藤実華
0050デフォルトの名無しさんNGNG
バカなの?
0051デフォルトの名無しさんNGNG
>50
ワロタ
0052デフォルトの名無しさんNGNG
こんばんは、>>49の主治医です。
病院から抜け出したのを今取り押さえたところです。
彼女は幼いころに両親にひどい仕打ちを受けたのです。
父からは毎日のようにレイプされ、母からも暴行を繰り返されてきました。
入院してからは、日に日に良くなっていき、だいぶ精神状態も落ち着いてきたようなので
外出を許した途端逃げ出してしまいました。
私の担当不行き届きです。皆様にはご迷惑をお掛けしまして誠に申し訳ございません。
以後、浣腸してベッドに縛りつけておきます。
0053デフォルトの名無しさんNGNG
所詮C#はこうなる運命か。
0054同じ女子高生として我慢できませんNGNG
で、結局「#」は右上に字上げするのが正式な書き方なのかどうか

答え: 違います。文字の大きさは「C」といっしょです。

たぶん音楽記号的な発想からきたとのだと思いますが、これは元々はC++のジョークみたいな
発想で「さらに1つ追加」という考えから++++が変形してできました。
005554NGNG
>49
私は部活は文芸部ですが、創作はパソコンで執筆するように決められています。
うちはパソコン部とか物理電算部はありません。でも何故かパソコンの
台数は100台近くあります。それなのにインターネット出来ないので、
ネット上での活動は個人のパソコンを使っています。
がんばってください。
0056デフォルトの名無しさんNGNG
製品のロゴでは右上にあるぞ。

http://www.microsoft.com/japan/msdn/vcsharp/
0057デフォルトの名無しさんNGNG
下のfor文はsという文字を打ったらエスケープする仕組みなんですが、
例えば1とか打った場合、3回ループされます。
CRとLFのぶんも回してるっぽいんですが、forの判定条件にRead()と書いただけで
内部ポインタ(?)みたいなものを進めてくれるんでしょうか。

for(int i = 0; (char)Console.Read() != 's'; i++)
Console.WriteLine("Pass #" + i);
0058中日ファン@今日はお休みモード ◆DRAG8zBg NGNG
>>57
1 s Enter(CR LF) と入力すると1回
1 s 2 Enter でも1回
1 Enter だと3回で入力待ちのまま

Consolw.Read()は
「入力ストリームの次の文字。または次の文字がない場合は -1。」
を(1文字ずつ)戻すから動作として正常なんだと思います
0059中日ファン@今日はお休みモード ◆DRAG8zBg NGNG
×Consolw
○Console
0060デフォルトの名無しさんNGNG
Mono for Windows

http://www.superin.formativ.net/mono/getstart.htm
0061デフォルトの名無しさんNGNG
SharpDevelopのバージョンが上がってた。

http://www.icsharpcode.net/OpenSource/SD/Download/default.asp
0062デフォルトの名無しさんNGNG
Monoって何?
0063デフォルトの名無しさんNGNG
>>62
http://go-mono.com/
0064デフォルトの名無しさんNGNG
>>54
C#の#は、音階のド(C)の一つ上(1オクターブは12段階)のド#と
言う意味でC#なんだと思うよ。
そういう意味では、C++と似た感じでパロディだね。
0065デフォルトの名無しさんNGNG
>>64
おいらは、C++の「++」を近づけて「#」になったと聞いたけどな。
この説はここではでないね。
0066中日ファン@通常モード ◆DRAG8zBg NGNG
>>65
吉爺が「気づくのに0.2秒も掛かってしまった」とか書いてたやつだね
俺もそう思ってた
0067デフォルトの名無しさんNGNG
>>65
C#が出たての頃、M$のデモでそういうの見せてたよ。
会場に(うゎ、くだらねー!・・・)って空気流れたけど。
0068デフォルトの名無しさんNGNG
WebアプリケーションからWebサービスに対し、とあるファイルをバイナリ(byteの配列)のまま渡したいのですが、どのようにしたらよいでしょうか?
そのとあるファイルは、Webアプリのあるマシンではなく、クライアントのファイルシステムにあるファイルです。
0069デフォルトの名無しさんNGNG
>>68
そのまんまやん。aspxで受け取ったbyte[]をasmxに渡せばええのんとちゃう?
0070デフォルトの名無しさんNGNG
>>68
base64に変換して渡してみたら?
Convert.ToBase64String、Convert.FromBase64String参照。
007170NGNG
byte[]そのままでやり取りできた。すまん。
0072デフォルトの名無しさんNGNG
>>69
質問の仕方が悪かったですね。Webフォームで、<INPUT type="file">みたいなものを置いて、それをWebサービスに渡したいのですが、textboxでは「参照」ボタンを表示できないし・・・。
0073デフォルトの名無しさんNGNG
>>72
だから、Webフォームに<input type="file" runat="server">をおいて、
あがってきたFileStreamをbyte[]にして、SOAPでasmx呼び出せばいいんじゃないの?

WebサービスにはUIなんかないぜ、サービスなんだからさ。UIは各自が勝手に作るもの。
0074デフォルトの名無しさんNGNG
C#のGUIプログラミングってVC++と同じような感じなのですか?
それともJavaのSwingに似ているとかあります?
0075デフォルトの名無しさんNGNG
>>74
VBに似ています。
0076デフォルトの名無しさんNGNG
>>74
VJ++にソクーリです
0077中日ファン@もうすぐ連休モード ◆DRAG8zBg NGNG
サブクラスでベースクラスのメソッドをnewで隠蔽した場合
ベースクラスの変数に格納して多態のつもりで呼び出しても
ベースクラスの方のメソッドが呼び出される
(同じケースでoverrideの場合は当然サブクラスの方が呼び出される)

これは仕様なんでしょうか
0078デフォルトの名無しさんNGNG
>>77
仕様。
0079デフォルトの名無しさんNGNG
>>77
仕様っていうかまさにそれをやるのがnewの目的なんだけど?
0080中日ファン@もうすぐ連休モード ◆DRAG8zBg NGNG
>>79
多態には使うなということですか・・・
「ベースクラスのメソッドを隠蔽するため」
だと思ってたのに、隠蔽されるどころかしゃしゃり出てくるので
なんとも違和感があるのですが・・・

パラメータが同じなら素直にoverrideなんでしょうね
0081中日ファン@もうすぐ連休モード ◆DRAG8zBg NGNG
要するにnewで宣言したメソッドを使う場合は
ベースクラスの変数に格納するなということですか
008278NGNG
仮想メソッドの呼び出しでは、実際に呼び出されるメソッドの実装は、呼び出しが行われるインスタンスの<b>実行時の型</b>によって決まります。非仮想メソッドの呼び出しでは、インスタンスの<b>コンパイル時の型</b>によって決まります。

これが仕様です。
0083デフォルトの名無しさんNGNG
>>82
でもさ、別にnewつけたからってvirtualはvirtualなんだけど。だからあなたがいう
その「仕様」はnewには当てはまってないよね。newのメソッドをそのさらに派生型で
overrideできるんだし。

newはさ、同じ名前の新しいvirtualメソッドをもう1つ作れるようにする機能なんだよね。
継承関係をいったん断ち切って、自分が新しい基底型(そのメソッドに限ってだけど)に
なるのがnewの機能。だから、どの型の変数を使っているかによってvtblが変わるって
ことだよね。
0084中日ファン@もうすぐ連休モード ◆DRAG8zBg NGNG
>>78(=82)-79
レスありがとうございます

あるメソッドが 親(abstruct)-子(override)-孫(new) の場合
親の変数で孫を作成すると
コンパイルの段階で親に近い、子のメソッドが呼び出されるのでしょうね
0085中日ファン@もうすぐ連休モード ◆DRAG8zBg NGNG
>>83
>どの型の変数を使っているかによってvtblが変わるってことだよね。
はっきりと分かりました、ありがとうございます
008678NGNG
>>83
C#標準リファレンスのP313からP319あたりまでしっかり読んでごらん。詳しく書いてあるから。
0087デフォルトの名無しさんNGNG
すみません、おっしゃる意味がわかりません。
その本は持ってないのでなんて書いてあるのかわかりませんが、
newをつけると非仮想メソッドになるので、コンパイル時に型が決定するって書いてあるんですか???
それならその説明が*間違い*です。鵜呑みにするのはやめましょう。今出ている大抵の.NET本には
1つや2つ間違いがあるものです。

私は、newをつけてもvirtualはvirtualなのだから、82に書いてある
>非仮想メソッドの呼び出しでは、インスタンスの<b>コンパイル時の型</b>によって決まります。
っていうのは今回の中日ファンさんの例には当てはまっていないと主張しているのですよ。

実際overrideとnewの2つのメソッドを基底型の変数から呼び出すコードを書いて、
生成されたILをしっかり眺めてごらん、正しく書いてあるから。

(あー、またクソ本が一冊世の中に出回ったってことなのかしら。。。)
008878NGNG
>>87
using System;

class A {
public virtual void F()
{
Console.WriteLine("A.F");
}
}
class B : A {
public new void F()
{
Console.WriteLine("B.F");
}

static void Main()
{
A a = new B();
a.F();
}
}

の実行結果は
A.F
と理解して私は書いているのだけど。つまり、Bのインスタンスで、A.Fが呼び出されているのですが、なんか私は勘違いしているのでしょうか?
aのコンパイル時の型はAで間違いないと思いますが。
ちなみにB.Fがoverrideだったら、あなたのおっしゃるとおりB.Fですよ。
0089中日ファン@もうすぐ連休モード ◆DRAG8zBg NGNG
私からもソースを書き込みます・・・興味のある方はお試しください
using System;
public abstract class Shape{
private string petName;
public Shape(string name){petName = name;}
public abstract void Draw();
public string PetName{get { return petName; } set { petName = value; }}
}
public class Ring : Shape{
public Ring(string name) : base(name){}
public override void Draw()
{Console.WriteLine("Drawing Ring named {0}", PetName);}
}
public class Ellipse : Ring{
public Ellipse(string name) : base(name){}
public override void Draw()
{Console.WriteLine("Drawing Ellipse named {0}", PetName);}
}
public class Circle : Ellipse{
public Circle(string name) : base(name){}
public new virtual void Draw()
{Console.WriteLine("New Drawing Circle named {0}", PetName);}
}
public class ShapesApp{
public static int Main(string[] args){
Shape[] shapes = {new Ring("Rinda"), new Ellipse("Elly"), new Circle("Cindy")};
foreach(Shape s in shapes){s.Draw();}
Circle c = new Circle("Cuty");
c.Draw();
return 0;
}
}
0090デフォルトの名無しさんNGNG
>>88
実行結果はそのとおりです。
でもその実行結果が得られる理由は、あなたが82に書いたこととは何の関係もないと言っています。

で、もしもその本とやらに、この理由が82にあなたが書いたようなこととして説明されているのなら、
それはクソ本だとも言っています。でも、たぶん本にそう書いてあるわけじゃなくてあなたが勘違い
しているだけなんだろうな、とも思います。
009178NGNG
>>90
はいはい、もうなんとでも言ってください。ぜーんぶ、あなたのおっしゃるとおりですよ。
0092デフォルトの名無しさんNGNG
>>91
なんかキレたようだけどさ、本当に俺が言うとおりなんだからしょうがないよな、この場合。
もっとがんばって勉強しような、お互い。あと、本に書いてあることは鵜呑みにしない方がいいぞ。
0093デフォルトの名無しさんNGNG
粘着ハケーン {{゚д゜}}ブルブル
0094デフォルトの名無しさんNGNG
この動作原理を教えてください(何故3回回るのか)。

do
{
ch = (char)Console.Read();

Console.Write(">>" + ch + "<<");
Console.Write("debug");
} while(ch != 'q');
0095デフォルトの名無しさんNGNG
>>94
sscliのソースを読めばわかる
0096中日ファン@もうすぐ連休モード ◆DRAG8zBg NGNG
>>94(=57さん?)
using System;
class TestApp
{
public static void Main()
{
char ch;
do
{
ch = (char)Console.Read();
Console.WriteLine("Read {0:X2} ", (byte)ch);
} while(ch != 'q');
}
}
↑自分はこれで納得しましたけど・・・
0097デフォルトの名無しさんNGNG
>>83

> newはさ、同じ名前の新しいvirtualメソッドをもう1つ作れるようにする機能なんだよね。

サンクス!
漏れの持ってる糞本「C#入門」はC#入門というよりプログラミング入門というべき低レベル本(簡単なクラスを作って満足して終わる)で(interfaceなんてキーワード自体1回も出てきません(;´Д`))、C#固有の文法にはほとんど触れてないんだよねぇ。
(今まで買ったプログラム言語の本の中では最低ランクに位置づけさせてもらったよ。)
newとか(特にnewという名前の理由)よくわかってなかったんだけどこの一言で氷解した。
0098中日ファン@延長になると弱いぞモード ◆DRAG8zBg NGNG
ms-help://MS.VSCC/MS.MSDNVS.1041/cpref/html/frlrfSystemConsoleClassreadTopic.htm
↑戻り値と解説を読むと理解できるかと・・・
0099デフォルトの名無しさんNGNG
>>94
Console.Readは1文字だけ入力を受け付けるっていうイメージじゃなくて、
ReadLineでバッファにためて、そのバッファを1文字走査するという感じ。
010094NGNG
みなさんリプライありがとうございます。
色々と試してみたんですが、
Read()は、1文字Enter押したとしても内部的には
キー、CR、LFとストリーム上に残るということなんでしょうか。
(その間、>>96さんの例だとwhile条件を抜けない…?どうもここらへんがよくわかりません)
0101中日ファン@延長になると弱いぞモード ◆DRAG8zBg NGNG
>Read()は、1文字Enter押したとしても内部的には
>キー、CR、LFとストリーム上に残るということなんでしょうか。
その通りだと思います

>while条件を抜けない…?
q Enter で抜けるはずですけど・・・
■ このスレッドは過去ログ倉庫に格納されています