5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

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

前スレ
ふらっとC#,C♯,C#(初心者用) Part42
http://pc12.2ch.net/test/read.cgi/tech/1245836827/


952 :デフォルトの名無しさん:2009/08/27(木) 20:17:24
>>949
ということは、別に警告は出さないけどお勧めしないってことですね。
MSDNの規則を見ても「書き込みからの保護の保証がない」ってだけみたいですが、一応規則にそってコレクションで返すことにします。
ありがとうございましたー。

953 :デフォルトの名無しさん:2009/08/27(木) 22:51:02
チェックボックスの□をラジオボタンの○にするにはどうすればいいですか?

954 :デフォルトの名無しさん:2009/08/27(木) 22:55:08
>>953
だからラジオボタンのAutoCheck = false。
何度も同じこと聞くなよ。
っていうか、これも前も言ったが普通はできてもやらないよそんな糞動作は。

955 :デフォルトの名無しさん:2009/08/27(木) 23:16:44
jpgファイルのあるフォルダとないフォルダを分けたいと考えています。
string[] directories = (@"c:\photo", "*", SearchOption.AllDirectories);
string photodirectories;
string emptydirectories;
foreach (string directory in directories){
if (File.Exists(directory + @"\*.jpg")) photodirectories = photodirectories + directory;
else emptydirectories = emptydirectories + directory;
}
ところが、directory + @"\*.jpg"では、jpgファイルのあるフォルダをリストできないみたいです。
ぜんぶelseになっています。
条件の設定方法をご教示ください。


956 :デフォルトの名無しさん:2009/08/27(木) 23:27:15
File.Existsのどこにワイルドカードが使えるという記述が
標準ライブラリ内ならDirectory.GetFiles使う

957 :デフォルトの名無しさん:2009/08/27(木) 23:28:04
なんで普通にDirectoryInfoとかFileInfoとか使わないの

958 :デフォルトの名無しさん:2009/08/28(金) 00:13:14
string[] objects = {"cat","dog","mouse"}
int Number = objects.Length - 1;
ですが、
IEnumerable<string> objects
の場合、長さはどうやって取得しますか?


959 :デフォルトの名無しさん:2009/08/28(金) 00:14:17
全部列挙してみないと分からない。

960 :デフォルトの名無しさん:2009/08/28(金) 00:17:54
どうやって列挙すれば?


961 :デフォルトの名無しさん:2009/08/28(金) 00:28:37
LINQでCountするのが一番楽。
LINQ使えないならforeachしながら数える。

962 :デフォルトの名無しさん:2009/08/28(金) 00:44:23
LINQは使ったことがありませんので、
foreach (var object in objects){
Number++;
}
してみました。
これでOK?


963 :デフォルトの名無しさん:2009/08/28(金) 00:45:40
LINQだと運がいいとO(n)ではなくO(1)でCountを求めてくれることもある
forループだと必ずO(n)

964 :デフォルトの名無しさん:2009/08/28(金) 01:27:25
>>962
使ったことあるなしは関係ないよ、ただのメソッドだし。
VS2005ならそれでやればいいし、
VS2008ならCount()を使えばいい。

965 :デフォルトの名無しさん:2009/08/28(金) 03:00:22
FileStreamを使用したファイルアクセスについて教えてください。

現在、1プロセス内でマルチスレッドを使用して処理を行うプログラムを作成しています。
各スレッドの処理結果を1つのログファイルに出力しようとしているのですが、
複数スレッドがログファイルにアクセスするため、排他手段としてFileStreamインスタンスの
作成時、FileShare.None指定で作成することにしました。
しかし、MSDNライブラリを見たところFileShare.None指定は「他プロセスからのアクセスを禁止する」
となっており、1プロセス内でのアクセスは制限されないと読み取れてしまいます。

1プロセス内でのマルチスレッドの場合、排他機能としてはFileShare.None指定は意味が無い
のでしょうか?

もし意味が無いのであれば、上記の場合のファイル排他としてはどのような方法が望ましいのでしょうか?
よろしくお願いします。


966 :デフォルトの名無しさん:2009/08/28(金) 03:10:26
それぐらい実際に試せばすぐ分かると思うけど
プロセスもスレッドも関係なく後続は開けなくなる

排他のためにShare.Noneは取り回しが悪いと思うけど

967 :デフォルトの名無しさん:2009/08/28(金) 03:47:26
>>966
後学のために教えてほしいのですが、>>965のような場合にファイル排他をする場合、C#としてはどうするのが一般的なのでしょう?
fileShare.Noneくらいしか思いつかなかったもので…。

968 :デフォルトの名無しさん:2009/08/28(金) 04:16:00
>>965
というか、ファイルに排他処理入れるんじゃなくて、
出力処理をシリアル化してひとつのFileStreamオブジェクトに任せればいいんじゃね?

969 :デフォルトの名無しさん:2009/08/28(金) 05:55:59
>>968
ほかのアプリとの排他考えたらファイルに排他制御かけないとダメなことない?


970 :デフォルトの名無しさん:2009/08/28(金) 06:11:09
FileShare.Noneにした上で、プロセス内で独自に排他制御しなきゃいけないだろうけど、
素直にTrace周りを使った方が

971 :デフォルトの名無しさん:2009/08/28(金) 06:32:25
1つのログファイルに色んなアプリケーションが書き込みすんのか・・・?

972 :デフォルトの名無しさん:2009/08/28(金) 06:58:09
マルチスレッドってバッグランドワーカーを上手に(処理の手順考えて
デットロック喰らわないように、ブロックしたりして)使えば同じじゃないのかな)
どうせCPU100%使えんだろうし(てゆうか100%使ったらPCフリーズしそうだけど)

973 :デフォルトの名無しさん:2009/08/28(金) 07:02:44
日本語でOK

974 :デフォルトの名無しさん:2009/08/28(金) 07:39:10
オレもTraceを使うことに賛成だな。manifestで出力先や出力範囲を変えられるので便利。
ただ標準のインターフェイスはやや使いにくいので、アプリ全体で使いまわすstaticなラッパーを通してる。

975 :973:2009/08/28(金) 08:15:07
>>973
マルチスレッドとバッグランドワーカーは別モノって事ですねあるね

976 :デフォルトの名無しさん:2009/08/28(金) 10:27:57
cobol経験しかないですが、
c#で勤怠管理システムを作成するにはどれくらいの期間が必要でしょうか。
私の能力次第だとは思いますが、
一般的にc#がモノになってプロジェクトに参画できるようになるにはどれくらいかかるのかなと…。

977 :デフォルトの名無しさん:2009/08/28(金) 10:56:04
LINQの質問なんですが
EnumerableRowCollection<DataRow>っていうのは、Union出来ないんでしょうか?
下のコードで何がしたいかと言うと、既にフィルタされてるテーブル dtLog と
現在のテーブル dtでOR検索させたいと思ってます。

※dt と dtLog = DataTable、clm = ColumnName、queryは検索文字列です。
-----------------------------------------------------------------
EnumerableRowCollection<DataRow> linq =
  from row in dt.AsEnumerable()
  where (row.Field<string>(clm) != null) && (row.Field<string>(clm).Contains(query))
  select row;

EnumerableRowCollection<DataRow> linq2 =
  from rowLog in dtLog.AsEnumerable()
  select rowLog;

EnumerableRowCollection<DataRow> linq3 = linq.Union(linq2);
-----------------------------------------------------------------
↓上記コードで出たエラー
---------------------------------------------------------------
型 'System.Collections.Generic.IEnumerable<System.Data.DataRow>' を
'System.Data.EnumerableRowCollection<System.Data.DataRow>' に暗黙的に変換できません。
明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
----------------------------------------------------------------

LINQの型をIEnumerable<DataRow>で定義しておいて
Unionさせて最後に(EnumerableRowCollection<DataRow>)
にキャストにしてみたのですがキャスト出来ませんでした。
解決方法分かる方いましたら教えてください。

978 :デフォルトの名無しさん:2009/08/28(金) 11:21:55
var

979 :デフォルトの名無しさん:2009/08/28(金) 11:31:33
>>976
まずはCOBOLを綺麗さっぱり忘れることから始めようか

980 :デフォルトの名無しさん:2009/08/28(金) 11:46:39
>>978
最終的にEnumerableRowCollection<DataRow>から
DataTableかDataViewが欲しかったのですが
varだとDataRowと推定されるみたいなのですが
変換出来るんでしょうか?


981 :デフォルトの名無しさん:2009/08/28(金) 11:54:11
CopyToDataTable

982 :デフォルトの名無しさん:2009/08/28(金) 12:04:52
>>981
どうもありがとうございます!
CopyToDataTableでDataTableに変換出来ました。
初心者なんでCopyToDataTableというのを知りませんでした。
ありがとうございました!

983 :デフォルトの名無しさん:2009/08/28(金) 13:58:46
>>976
クラスや継承、それらの必要性さえ解ればC#を憶えるのは割と簡単です。
クラス2つ作って継承させたりして、なんとなく憶えた気になるのは一週間もあれば可能かと思います。
ファイルやデータベースのアクセスも割と簡単です。欲しいと感じる処理はだいたい最初からあります。
コントロールで細かい動作を求められたりするとかなりストレスが溜まります。
小難しいUIの無い部分から参画すればいいと思います。

984 :デフォルトの名無しさん:2009/08/28(金) 14:05:15
俺は980ではありませんが次を立てて参ります

985 :デフォルトの名無しさん:2009/08/28(金) 14:55:14
ビルドとリビルドの用途のちがいはなんすか?
本を見たら、違いが書いてはいますが、どう使い分けるかが書いていませんでした。

986 :デフォルトの名無しさん:2009/08/28(金) 14:57:07
コードの変更がアプリに反映されてなくね? って思ったときは取り敢えずリビルド。

987 :デフォルトの名無しさん:2009/08/28(金) 14:58:37
ふらっとC#,C♯,C#(初心者用) Part44
http://pc12.2ch.net/test/read.cgi/tech/1251439041/

988 :デフォルトの名無しさん:2009/08/28(金) 15:40:35
スレ立て乙

989 :デフォルトの名無しさん:2009/08/28(金) 15:52:11
>>986
ビルドはどういうときにやるの?

990 :デフォルトの名無しさん:2009/08/28(金) 16:21:03
ビルドは変更点だけだから早い

991 :デフォルトの名無しさん:2009/08/28(金) 17:11:02
プロはリビルドばかりやるもんなの?

992 :デフォルトの名無しさん:2009/08/28(金) 17:16:02
どちらも使う。
必要に応じて使い分ける、としか言いようがないな。

993 :デフォルトの名無しさん:2009/08/28(金) 17:20:26
ビルドだと、何かの漏れが起きたりしませんか?
知り合いの独立SEはリビルドしかやらないと言っていました。
ただ彼も、独学でC♯を学んで独立しているので偏りがあるかもしれないです。

994 :デフォルトの名無しさん:2009/08/28(金) 18:30:49
差分コンパイルと完全コンパイルの差なんだけど、
C#だとソースからいきなりアセンブリ(exe, dll)を作るから
コンパイルのスピードにあまり差は出ない。
C++の場合は中間でオブジェクトファイルやコンパイル済みヘッダを
作ったりするからコンパイル時間に差が出るのだが。

995 :デフォルトの名無しさん:2009/08/28(金) 18:37:17
C# で obj ディレクトリの中身を消さずに
別マシンにソリューションごと持って行って
そこでビルドすると変な exe ができたことはあった。
それ以外で中間ファイルが悪さしたことはないわ。

996 :デフォルトの名無しさん:2009/08/28(金) 18:38:02
普段はビルド、コンパイラの警告を見たい時はリビルドしてるな

ビルドだと変更してない部分はコンパイルされないので、
コンパイラの警告が表示されないから

997 :デフォルトの名無しさん:2009/08/28(金) 18:53:29
>>996
リビルドするときもデバッグされるの?

998 :デフォルトの名無しさん:2009/08/28(金) 21:14:13
>>997
ちがう。「コンパイラ」の警告と996は言ってる。

999 :デフォルトの名無しさん:2009/08/28(金) 22:09:57


1000 :デフォルトの名無しさん:2009/08/28(金) 22:10:38


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

238 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)