1 名前:デフォルトの名無しさん [2008/04/22(火) 00:31:59 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 c++厨の嵐はスルー汁。 前スレ C#, C♯, C#相談室 Part45 pc11.2ch.net/test/read.cgi/tech/1200911737/ その他テンプレ>>2-5 くらい
855 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 00:37:53 ] カルチャによって変わるよ。 "/" はカルチャ依存の日付区切り文字だし、 この世には和暦とかヒジュラ暦とかあるだろ。
856 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 00:47:15 ] >>854-855 ありがとうございます。 "/"はカルチャ依存なのですね。 カスタム書式なら"/"も表示してくれると思っていたのですが、それすらも期待してはいけないのですね。 自分の環境では再現できない&相手の環境がよくわからないので質問しました。 では"yyyyMMdd"ならどの環境でも期待通り"20080612"になることを前提にしていいのでしょうか?
857 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 01:11:03 ] >>856 >>855 の最後の行を読んで下さい>< DateTimeFormatInfo.InvariantInfoわたしとけばいいよ。
858 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 01:17:15 ] >>856 CultureInfo ci = new CultureInfo("ja-JP", true); ci.DateTimeFormat.Calendar = new JapaneseCalendar(); Thread.CurrentThread.CurrentCulture = ci; Console.WriteLine(DateTime.Now.ToString("yyyyMMdd")); // 200612 Console.WriteLine(DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo)); // 20080612
859 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 01:17:26 ] >>857 なるほどありがとうございました! yyyyでも和暦だと20とかになるんですね。 DateTimeFormatInfo.InvariantInfoで解決しました。
860 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 01:18:12 ] >>858 ありがとうございました。勉強してみます。
861 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 04:18:07 ] Compact FrameworkのWebBrowserでDocumentTextにHTML設定するとプログレスバーが出てくるのが嫌なんだけど 非表示にする方法はあるだろうか? それともHtmlView.dllをラップしたほうが賢明だろうか
862 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:14:25 ] できるだけメモリ使用量を減らすため、 IDisposableを実装したほうが良いクラスの判断でまよっています。 クラスA DataSetをプロパティとして保持 クラスB stringをプロパティとして保持 クラスC byte配列をプロパティとして保持 クラスAはDisposeメソッドを用意してデストラクタから呼び出していますが、 クラスBとCもDisposeを用意したほうが良いでしょうか? また、stringやbyte配列はDisposeメソッドがないので、どうやってメモリを解放するのかもわからないです。
863 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:38:41 ] 全部IDisposable無用
864 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:48:12 ] Disposeを実装するのは、自前でネイティブリソースを扱う時か Disposeを持つクラスをメンバとして持つ時だけで良い。 それ以外ではメモリの開放はGCにまかせた方が一般的にパフォーマンスは高い。 なんとなくメモリは少ないほうがいいよね的な考えしかないなら逆効果にしかならんよ。 性能を犠牲にしてでもどうしても局所的にワーキングセットの縮小をせまられるのなら 参照をnullにしてGC.Collectを呼び出す。
865 名前:862 mailto:sage [2008/06/12(木) 12:58:06 ] >>863-864 ありがとうございます。 なるほど、ではどうしても実装するならクラスAだけで 良いのですね。 Webアプリなのですが、特定のページにアクセスが集中し 使用メモリが大きくなってしまうので、できるだけ解放できるところは 解放したかったのです。 処理終了時にGC.Collectを呼び出すことにします。
866 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:22:05 ] GCでオブジェクトが回収されるときの動作は 1 デストラクタ(ファイナライザ)があればそれを実行する 2 メモリの回収 Disposeは1を代行するもので、メモリの回収はあくまでもGCが行う。
867 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:22:22 ] 質問 RichTextBoxに画像を挿入したいんですが、無理?
868 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:27:55 ] とりあえずクリップボード越しなら可能
869 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:35:42 ] >>868 サンプルコード貼ってある所知りませんか?
870 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:41:09 ] 検索エンジン様が知ってることを知ってる
871 名前:862 mailto:sage [2008/06/12(木) 17:31:00 ] >>866 ありがとうございます! だいぶ勘違いしていました。 デストラクタでDispose呼んでも意味ないのですね。
872 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:05:15 ] え、デストラクタとGCは関係ないんだと思ってた…。 じゃあデストラクタが実行されるタイミングってスコープを抜けた瞬間とは限らないの?
873 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:10:28 ] C#でデストラクタ?
874 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:13:38 ] >>872 全然関係ない。スコープと一致させたいときにはusingを使わないといけない。 逆に言えばそれがIDisposeとusingの存在意義。 >>873 まあC# 1.0のころはデストラクタって言っていたはずだし、いいじゃないか。
875 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:16:20 ] DisposeとGCも全く関係ないよ 種も仕掛けもない本当にただの普通のメソッド
876 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:18:11 ] あ、そっか。C#はデストラクタなんてほとんど書かないや。
877 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:20:35 ] 本当にどうしてもどうしても必要な場合でなければむしろ書いてはいけない
878 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:56:46 ] IDisposeを実装するときの基本パターン class DispBase : IDisposable { ~DispBase() { Dispose(false); } public void Dispose() { Dispose(true); System.GC.SuppressFinalize(this); } public virtual void Dispose(bool disposing) { if (disposing) { } } } GCとの関係といえばこの命令だけ。 System.GC.SuppressFinalize(this); 後片付けが終わったからファイナライザは呼び出さなくていいとGCに指示している。 これでファイナライザは呼び出されなくなる。
879 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:03:21 ] パフォーマンスとかメモリとかやたら気にする奴が こういうでたらめやって事態を悪化させやがるんだよな… GC呼ぶなんてやめとけよ、特にWebではな…
880 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:05:54 ] 余計な一言はいいから、ね
881 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:07:23 ] いつでも回収できるメモリは空いていると同じということを理解できるまでには修行が必要じゃて セッションにでっかいオブジェクトの参照抱え込んだままで、GC.Collect呼びまくるとかやってそう
882 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:08:02 ] これくらい言っとけばたまたま見かけて疑問を持つ奴が増えて好都合
883 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:12:21 ] そういやあれ不思議なんだよな。 メモリとか異様に気にするのにセッションとかは湯水のように平気で使うのな。
884 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:21:12 ] 結局、明確にスコープ抜けたときにリソースを即座に解放して欲しいという場合で複数から参照されてる場合には参照カウント的なものが必要になるんだ世根(´・ω・`)
885 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:27:41 ] COM InteropのRCWがそういう具合になってますね。 もう少しスマートにできなかったものか。
886 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:37:51 ] ファイル書き込みじのフォーマットのことですが。 下記プログラムを実行すると。 ===================== static void Main(string[] args) { StreamWriter sw = new StreamWriter("test.txt",false,Encoding.GetEncoding(932)); sw.WriteLine("{0,10} => {1}","ABCD",1234); sw.WriteLine("{0,10} => {1}","あいうえ",1234); sw.Close(); } ===================== 結果として ===================== ABCD => 1234 あいうえ => 1234 ===================== こういった出力になります。 説明を添えると、 ABCDの前に半角スペース文字6文字 あいうえの前に半角スペース文字6文字。 という出力結果になります。 理想としては、 ABCDとあいうえの右端をそろえたいので あいうえの前に半角スペース文字2文字が入って欲しいのです。(あいうえは8文字とみなす。) そのようなことは可能でしょうか? どのようにすれば可能でしょうか?
887 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:34:01 ] ttp://unicode.org/Public/UNIDATA/EastAsianWidth.txt ここに、UnicodeにおけるCJKの表示幅の規定があるから、 適当に文字列の表示幅を計算して残りを埋めれば良い
888 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 06:42:57 ] >>886 つまり、いわゆる全角文字を半角文字2文字分として処理したいってことか? Encoding.GetByteCount()で、各文字コードにおけるバイト数が得られるから、 Shift-JISにおけるバイト数を使ってスペースの文字数を計算すればいいだろう。 こんな感じで。 Encoding sjisEnc = Encoding.GetEncoding(932); string text = "あいうえ"; string space = new String(' ', 10 - sjisEnc.GetByteCount(text)); Console.WriteLine("{0}{1} => {2}", space, text, 1234);
889 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:35:46 ] インストーラーの起動条件でJ#2.0再配布パッケージを 必須にする方法教えて下さい。
890 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:12:29 ] スレ違い
891 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:16:12 ] いや 殆どC#で一部だけJ#使ってるんすよ…
892 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:17:38 ] いや、その理屈はおかしいだろ…
893 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:01:44 ] その発想はなかったわ ってかVSスレで聞いたら?
894 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:03:22 ] ほい 逝ってきます。 すまぬかった
895 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 12:56:58 ] delegateを使用して(使用しなくても同様のことができればいいのですが・・・) using System; using System.Collections.Generic; delegate int getItem(); class DelegateTest { public static void Main() { List<int> liList = new List<int>(); getItem a = new getItem(A); a += new getItem(B); a += new getItem(C); liList.Add(a()); } static void A(){return 1;} static void B(){return 2;} static void C(){return 3;} } この様なプログラムを走らせてliListに[1,2,3]が入って欲しいのです。 (当然ながらというか、)実際には[3]しかはいりません。 マルチキャストデリゲートにしたのは実行したいメソッドの数が実行時にしか分からず できればif文分岐を少なくしたいと思ったからなのですが、 やはりメソッドを一つ一つ実行しなければ無理でしょうか? もしくはメソッドの戻り値をリストにして、そのリストを次のメソッドの引数をリストにして、最後にaddrangeでしょうか? 何か上手いテクニックがあれば、どなたかご教授下さい。
896 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:04:03 ] 普通にgetItemコレクション作ってforeachでList<int>にAddしてけばよくね?
897 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:09:34 ] デリゲートの引数にコレクション渡してAddしてもらえば?
898 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 14:14:43 ] >>895 複数の、戻り値を持つデリゲートを一括で管理したい場合は、 マルチキャスト- ではなく、デリゲートのコレクション/リスト などを使う 例えば、こんなふうに var funcs = new List<Func<int>> { A, B, C }; var values = funcs.Select(f => f()).ToList(); あと、A,B,Cはvoidじゃなくてintな >>897 それだと、仕様外の操作(複数追加、Insert、Clear、etc.)まで出来てしまうのであまり良くない 自分しか触らないから何でもいいっていうなら構わないけど
899 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:34:56 ] add/remove付きのイベントにしてしまえばマルティキャストっぽく見せられるかも List<getItem> evlist = new List<getItem>(); public event getItem ItemsEvent { add { evlist.Add(value); } remove { evlist.Remove(value); } } this.ItemsEvent += () => 1; this.ItemsEvent += () => 2; this.ItemsEvent += () => 3; evlist.Select(f => f()).ToList();
900 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:01:37 ] >>897 の考え方が一番正当でしょ コレクションをそのまま渡すんじゃなくて,値を登録するためだけのクラスを作って引数に渡す
901 名前:900 mailto:sage [2008/06/16(月) 19:05:54 ] 考え方は,ってだけだよ マルチキャストは使うのはあんまり良くないかも
902 名前:895 mailto:sage [2008/06/16(月) 20:14:14 ] 皆さんレスありがとうございます。 とりあえずはコレクションを引数に渡すやり方で実装できました。 ラムダ式を使った方法を教えてくださった898,899さんのやり方は ちょっと理解ができませんでした・・・申し訳ありません。 デリゲートのコレクションは使ったことがないので勉強してみたいと思います。
903 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:28:26 ] ITfMessagePump(TSFのInterface)をC# Formアプリで使ってる人いる? メッセージループが競合してどうすりゃいいか、分からんのだが・・・。
904 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:32:33 ] いません
905 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:39:48 ] そうか。だよなー。
906 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:53:11 ] >>903 ご想像通りメッセージループを自前のものに置き換えるしかない。
907 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:09:54 ] その方法を知りたいな
908 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:26:33 ] >>907 メッセージディスパッチャに関してはP/Invokeで動くというか、 普通にITfMessagePump::GetMessage[A,W]でメッセージ取ってきて P/InvokeでDispatchMessageすればおk。 必要ならWinFormのApplicationクラスのソースでも眺めて見れ。 折角公開されたんだし。WPFももう公開されたんだっけ? WPFアプリケーションでWinFormsを併用するときのドキュメントも参考になるかも。 というかメッセージディスパッチャにWPFのApplicationクラスを使いつつ WinFormsを表示するのが楽かもしれんな。XP以降専用になっちまうが。 あとはExecutionContextの実装もちゃんとやっておくとベター。
909 名前:907 mailto:sage [2008/06/17(火) 03:29:53 ] >あとはExecutionContextの実装もちゃんとやっておくとベター。 SynchronizationContextの間違い。すまそ。 msdn.microsoft.com/ja-jp/library/system.threading.synchronizationcontext.aspx
910 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:31:08 ] ぐあ 909==908ね。
911 名前:908 mailto:sage [2008/06/17(火) 04:00:28 ] 実際試してみた。WPFのApplicationクラスでWinForms。 一応動くことは動くみたい。 この方法ならWPFのSynchronizationContextが使われるので SynchronizationContextはそのままでOK、なはず。 --------------- // PresentationFramework.dll // System.Windows.Forms.dll // WindowsBase.dll using System; static class Program { [STAThread]static void Main(){ new CustomApplication().Run(); } } public class CustomApplication : System.Windows.Application { protected override void OnStartup(System.Windows.StartupEventArgs e) { base.OnStartup(e); var form = new System.Windows.Forms.Form() { Width = 640, Height = 480, Text = "Test Window", }; form.Disposed += (_o, _e) => this.Shutdown(); form.Show(); } }
912 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:03:10 ] >>908 ありがと。 Application.csは見ていて、FPushMessageLoopでGetMessageWしてるのは確認したんだが、 ThreadContextの処理と整合性を取りつつも、 ITfMessagePump::GetMessageする確実な手段が分からなくてね。 ThreadContext周りの処理はinternal/privateがひしめいていて、 うかつに手を出せないし、お手上げ状態。 WPFは要件的に採用は厳しいかな。 いずれにせよ、overrideなり、Filter的なものでGetMessegeを自前の処理を行う仕組みはなさそうだね。 >普通にITfMessagePump::GetMessage[A,W]でメッセージ取ってきて >P/InvokeでDispatchMessageすればおk。 おkな理由を教えてもらえると嬉しいな。
913 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:24:01 ] >>912 >おkな理由を教えてもらえると嬉しいな。 PresentationFramework.dllが中でやっていることがまさにそれだから、で説明になる? System.Windows.Threading.Dispatcher.PushFrameImplおよび System.Windows.Threading.Dispatcher.GetMessageと全く同じことをすれば動く。 で、納得してもらえるんだろうか……
914 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:36:47 ] たとえばNetworkStreamのBeginReadでAsyncCallbackを指定したとする。 このコールバック中にEndReadで例外が発生したらアプリが強制終了してしまう。 この例外をメインスレッド、少なくとも呼び出したスレッドで処理するにはどうすればよろしいでしょうか?
915 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:42:52 ] 例外を補足できない?
916 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:27:34 ] >>914 Windowsアプリなら、Control.BeginInvokeでEndRead呼べば 発生する例外もメインスレッドの管轄になるはず ただ、例外チェインの最後のエラーしか取れないかも コンソールアプリならしらね
917 名前:デフォルトの名無しさん [2008/06/18(水) 10:06:15 ] xmlファイルからデータを取得する方法について教えてください。 下記のxmlファイルtest1.xmlを作成しました。 test1.xml <?xml version="1.0" encoding="utf-8" ?> <Items> <Item ID="001"> <Name>aaaa</Name><Age>10</Age> </Item> <Item ID="002"> <Name>bbb</Name><Age>20</Age> </Item> </Items> test1.xmlのデータを下記のプログラムで読み込みました。 001 XmlDocument xmlDoc = new XmlDocument(); 002 xmlDoc.Load("c:\\test1.xml"); 003 004 string wID = "002"; 005 XmlNode xmlNode = xmlDoc.SelectSingleNode("//Items/Item[@ID='" + wID + "']"); 006 string wName = xmlNode.SelectSingleNode("//Name").InnerXml; 007 string wAge = xmlNode.SelectSingleNode("//Item/Age").InnerXml; 私の予想ではwNameには"bbb"、wAgeには"20"が入ると思っていたのですが 実際にはwNameには"aaa"、wAgeには"10"が入ります。 プログラムの005行目の処理でxmlNodeには確かに<Name>bbb</Name><Age>20</Age>が抽出されています。 006-007行目で、そこから更に//Nameを抽出したのにwNameに"bbb"が入らず"aaa"が入ってしまうのは何故ですか? また,このような絞込みっぽい処理を行うには、どのようにすれば良いでしょうか。
918 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:10:56 ] そこで // 使っちゃ駄目だろ
919 名前:917 mailto:sage [2008/06/18(水) 10:17:43 ] >>918 Σ(゚д゚lll) //はずしたら上手くいきました。 なぜこういう事になるのか勉強して出直してきます。 ありがとうございました。
920 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:16:35 ] javaばっかりでいつも不思議に思っているんですが、 キーワードでas base isとかがかぶったらどういう回避方法があるんでしょうか。
921 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:21:07 ] 何を言いたいのか良く分からん
922 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:28:48 ] @as @base @is
923 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:36:16 ] ソース上で既に使っていて、キーワードとかぶっているときはどうなるんでしょうか。 またソースに手を入れて変更しないとダメなんでしょうか。
924 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:51:53 ] 1.0から3.0までで変数名に使えないキーワードは増えてなかったと思うが
925 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:38:42 ] c, javaのソースからc#に移植というか少し手を入れるときキーワードの問題が発生しませんか? 特にc#は独自のキーワード名が多いみたいですけど。
926 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:41:35 ] 勝手な拡張もいいんですけど、もとのソースの関数名がas, in, baseとかだとどうするんでしょうか? 関数名のAPIの方を変更できないし泣きませんか? そうするとC#で作る気力も無くなるんですけど。
927 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:43:58 ] C#はjavaじゃないから嫌いだとか 子供に生まれてこなくて良かったとか言い出す奴らは 来てもらわなくてもいいよ
928 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:48:49 ] いや、そういうことじゃないんですけど。 まともにプログラミングの話を出来ないなら、別にいいですよ。 噂どおり、C#の人はC++厨房と変わらないようですねw
929 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:53:56 ] asとかを使いたければ@asとしてくれ 他言語からの移植なんてそう簡単にはいかんよ
930 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:54:39 ] typedefとか#defineが欲しいといいたいのかな?泥沼だと思うがね。 同じ言語の世代間の違いならコンパイルオプションや pragmaのようなコンパイル指令で逃げるのだろうけど、 他言語からの場合は良識に任せるしかないな。 移植を前提にしたコードでbaseとかinとかselfとか変数に 使ってたらそういう名前を使った奴がアホだろ。
931 名前:デフォルトの名無しさん [2008/06/18(水) 20:56:23 ] 簡単なことだし、ここでちゃんと教えればすむことなのに、「C#の奴はやっぱり変人しかいないよ」とか噂を流される方がいいのかな? まあ、>>927 みたいなしきり屋がいるようなところじゃ、こっちの方がよくわかんないけど。 ここでは>>927 みたいなしきり屋に従わなければいけないのですか?
932 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:58:36 ] 伊武雅刀の「子供達を責めないで」のオマージュだろね。 フルすぎるネタで若い子にはわからないぞ;;
933 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:05:04 ] >>931 はいはい、とっとと噂を流す仕事に戻ってね。
934 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:05:46 ] これ聞いて落ち着け ttp://jp.youtube.com/watch?v=YaCkfvm3Oyw
935 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:16:13 ] >>930 Cならともかく、C#みたいなしんまい言語を前提にコードかけるかよw in selfとかをキーワードに設計する方が多言語からの移植を考えないようなアホじゃないのか。 おまえはいつも、次の言語のキーワードとぶつからないように考えながら書いてるのか?アホはおまえだなw
936 名前:デフォルトの名無しさん [2008/06/18(水) 21:18:57 ] >>933 Javaの世界ではC#の奴はめちゃ嫌われてるよ。 演算子オーバーロード―がどうとかうるさいしww VBほどじゃないけど(笑)
937 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:21:33 ] それをC#のスレで言って何がしたいのか分からん 嫌われてるからJavaやれってか? そんな気を使わなくてもC#一筋なやつの方が少ないだろ
938 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:26:14 ] C#一筋で食っていけるほど仕事がないな。
939 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:26:54 ] Javaの新機能はほぼ全てC#のパクリなのにな
940 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:28:49 ] だから移植前提で独自キーワード入れないでほしいんだけど。またMSの悪い癖(独自拡張?)がでちゃったんですか?
941 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:31:26 ] 昔COBOLという言語があってな。 ていうか独自キーワードってなんだよ。 Javaのキーワードが他の言語からの移植を考えて決められてるなんて初耳だ。
942 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:33:07 ] >>940 Javaを使い続ければすむことじゃないのか?
943 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:51:19 ] Javaって $_ みたいな名前定義できなかったっけ? CLIだとどうなってるんだろ?
944 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:59:50 ] Java屋? C#出たときあちこち馬鹿にしまくったくせに掌反してパクり始めた奴らだろ? そりゃあんだけ醜態晒せば嫌って、なかったことにでもせんとなwwww まあそれはいいとして @ つければキーワードとして扱われなくなるよ。VBなら[]で囲むんだっけかな 相互運用のためにその手の機能を持つことが推奨されてる。ちなみにCILは「どんな識別子でも」持てるから 限界はあるんだけどな
945 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:06:13 ] 移植するのに変数名まで同じにしたい痛い人がいるスレはここですか
946 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:07:26 ] 実際そんなに独特な予約語多くないだろ 2.0以降に追加されたキーワードは全て文脈次第だし
947 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:09:25 ] あそうそう、コンテキストキーワードも多いっての書き忘れてた
948 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:14:03 ] 半年も使わないと忘れちゃうしキーワード多すぎだろ。 いちいち覚えるのとか別に苦痛じゃないんだけど、なんかMSに束縛されてるみたいで嫌じゃないか? まあ、変なところがあったらコンパイラが叱ってくれるからいいんだけど…
949 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:17:23 ] …半年はさすがに記憶力悪すぎかろくに触ってなかったレベルだろう。
950 名前:デフォルトの名無しさん [2008/06/18(水) 22:19:51 ] scriptfpとかpackageはそのままでjavaに移植できるの? java使ったことないんでしらんけど。 そもそも多言語移植の時に変数名そのままで移植できなきゃやだやだやだ なんてバカかよ。ほとんど意味ないと思うんだが。 そこまでしたいならまずjavaの段階で適宜リファクタリングして移植すりゃ いいことなんじゃねーの?
951 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:21:05 ] ざっくり読むと アホがjavaからC#へ移植を試みて文句言ってる のに食いついたって感じ? 暇だなぁ、お前等
952 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:23:01 ] J#でもつかってろよ
953 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:26:15 ] おお、まさにJ#でこの話終わりだなww
954 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:26:25 ] コンテキストキーワードよりもはるかに気持ち悪いのは, インターフェイスとか抜きで特定の名前(引数)のメソッドの呼び出しに変換される機能 foreach→GetEnumerator()とかコレクション初期化子→Add(引数任意)とかクエリ式とか
955 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:28:08 ] C#コンテキストキーワードって get set partial where yield value と後はC#3.0で導入されたクエリキーワードぐらいだよな。 >忘れちゃうキーワード explicit implicit stackalloc unchecked volatile あたりは時々忘れそうになる。
956 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:30:41 ] add/removeとかも<コンテキストキーワード
957 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:30:57 ] そろそろ次スレ立てたほうがいい?970くらいでいい?
958 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:32:24 ] >>954 java5にも同じのあるじゃないか Iterable/Iteratorでfor ( : ) をお忘れではないか
959 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:35:22 ] >>958 C#のはダックタイピング的なのでちょっと違う。 多分>>954 はその事を知ってて書いてる。
960 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:52:38 ] Whereという名前のメソッドがあればクエリ式のwhere使えるんだよね
961 名前:デフォルトの名無しさん [2008/06/18(水) 22:53:33 ] >>955 ええ!それは忘れないだろ。 それ、使わないならC#言語じゃなくてもいいでない? ん・・・このスレのレベルは、理解に苦しむ・・
962 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:57:03 ] >>959 了解、インターフェイスがなくてもメソッドの名前が一致してればOKという話か。 usingはなぜかIDisposable.Dispose()でないと受け付けない。 これもメソッドの名前だけで使わせて欲しいよ。
963 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:57:17 ] >>956 リファレンスのキーワードの項に、 >>955 のとクエリキーワードは載ってるけど、add/removeが載ってない 中の人にも忘れられてる?
964 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:03:23 ] add/removeはデリゲートだけでデリゲートでも普通使わないからやっぱり忘れられていると思う。
965 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:03:48 ] C#というのは、Javaと比べるとポインタ演算unsafeとstackallocが売りだと思うんだけど…
966 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:07:13 ] いやなウリだな
967 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:08:34 ] >>964 WinFormでもWPFでもコントロールのイベントはカスタムしてるのがほとんどだぜ
968 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:11:15 ] 便利なものはどんどん積極的に組み込んでアピールしていこうっていうのがコンセプトでしょ
969 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:13:49 ] ヘジたんはむしろ抑え役っぽい
970 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:17:46 ] 抑え役だし押さえ気味だよなぁ。 というかあいつら基本的に自分たちでだいぶ使ってから出すから まぁそんなもんかという気はする。
971 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:32:38 ] VBと違ってクエリ演算子のサポートが消極的すぎ 中途半端に付けるくらいならクエリ式なんて無くてよかった メソッド形式だけだとどうしてもインパクトに欠けるからなあ
972 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:32:42 ] javaがいったいいくつ独自キーワードを取り入れたか
973 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:35:19 ] 今のC#のウリは関数型とラムダ式だろ JavaやC++とくらべて進んでるところは
974 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:38:10 ] 次はついに動的型くるかも
975 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:42:53 ] 動的型というか、動的っぽい記述が一時的につかるようになる dynamic ブロックになりそうかな。
976 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:45:46 ] GetEnumeratorは仕方ない。 ジェネリックがなかったころだから。
977 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:48:39 ] Mix-in 入れてくれんかな
978 名前:デフォルトの名無しさん [2008/06/18(水) 23:49:20 ] 相変わらずC#はキモイな どこがどうキモイかを気がついてないようだけどw
979 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:54:12 ] >相変わらずC#はキモイな 何言ってる? 現在進行形でキモクなってんだよっ