C#, C♯, C#相談室 Part64
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/01/11(火) 17:23:41C#, C♯, C#相談室 Part63
http://hibari.2ch.net/test/read.cgi/tech/1289733048/
Visual Studio 2010 Express
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx
0002デフォルトの名無しさん
2011/01/11(火) 17:26:30ふらっとC#,C♯,C#(初心者用) Part67
http://hibari.2ch.net/test/read.cgi/tech/1292491413/
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part8
http://hibari.2ch.net/test/read.cgi/tech/1291554513/
【VB.NET】LINQ友の会【C#, C♯, C#】
http://hibari.2ch.net/test/read.cgi/tech/1202568694/
C#,C#の宿題片付けます。
http://hibari.2ch.net/test/read.cgi/tech/1197620454/
ASP.NET + Atlas or Ajax について
http://hibari.2ch.net/test/read.cgi/tech/1150036430/
Microsoft Silverlight その7
http://hibari.2ch.net/test/read.cgi/tech/1288613056/
Visual Studio 2010 Part12
http://hibari.2ch.net/test/read.cgi/tech/1292341596/
C# C# C♯ でゲームを作ろう Part2
http://hibari.2ch.net/test/read.cgi/gamedev/1290300779/
0003デフォルトの名無しさん
2011/01/11(火) 17:27:14MSDNライブラリ
http://msdn.microsoft.com/ja-jp/library/
@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/
MSDN フォーラム
http://social.msdn.microsoft.com/Forums/ja-JP/categories/
pinvoke.net: the interop wiki!
http://pinvoke.net/
宇宙仮面の C# プログラミング / C# Programming
http://uchukamen.com/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/
WisdomSoft Microsoft .NET入門
http://wisdom.sakura.ne.jp/system/msnet/
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
0004デフォルトの名無しさん
2011/01/11(火) 17:28:19初歩的な質問はPC初心者板で・・・
http://pc11.2ch.net/pcqa/
参考リンク(よく出てくる情報リンク)
Windows Vista Wiki
http://windowsvista.ms/index.php
Windows VistaFAQ
http://vistafaq.stdo.net/index.html
〜インストールから設定・活用まで〜 すべてが分かるWindows Vista大百科
http://journal.mycom.co.jp/special/2007/windowsvista/menu.html
※コードの量が多い場合は下記サイトを使うなどしたほうがいいかも※
http://ideone.com/
http://codepad.org/ (C#非対応)
0005デフォルトの名無しさん
2011/01/11(火) 17:58:30乙
0006デフォルトの名無しさん
2011/01/11(火) 18:05:55○ >>2-4 乙 もうお前に用はない
く|)へ
〉 ヽ○ノ
 ̄ ̄7 ヘ/
/ ノ
|
/
|
/
0007デフォルトの名無しさん
2011/01/11(火) 19:18:45| | | | | \ | | | | | || |
| | |____ .| |. | | | | |  ̄  ̄ _____
 ̄ ̄ ̄| | r― 、 / / \__| | | |  ̄ ̄ ̄| | |
___| | | \/ / / | | | | |
| | \ ./ | ̄ ̄ ̄ ./ | | ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄
| | \ \ | / | |
 ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄  ̄ ̄ ̄  ̄ ̄
0008デフォルトの名無しさん
2011/01/12(水) 20:32:38お前等はどう思いますか?
俺はそんなクラスを作られると激しく使いづらいんだけど
0009デフォルトの名無しさん
2011/01/12(水) 21:46:03まあそんなキッチリしたラッパー見たことないけど
00108
2011/01/12(水) 21:51:33普通に考えれば、SqlConnection/SqlCommand/SqlTransactionを
1つのクラスにするのは無理があると思よな
本当にこのラッパークラスが便利なら、もうM$が提供しているよな〜
0011デフォルトの名無しさん
2011/01/12(水) 22:54:020012デフォルトの名無しさん
2011/01/12(水) 23:58:260013デフォルトの名無しさん
2011/01/13(木) 00:13:26うちはそんなラッパーつかってる
VB6のoo4oからその流れだ
使いたくはないが、それを使用する決まりになってるしな・・・
0014デフォルトの名無しさん
2011/01/13(木) 17:39:2400158
2011/01/13(木) 20:05:22うちの会社仕事が無いから、先輩にSqlConnectionのラッパー作ってみてよ〜って言われてしまった
あぁ〜、意味ないって
その気持ち痛いほどわかるわ
0016デフォルトの名無しさん
2011/01/13(木) 20:53:27例外などの処理を省いたのが下記になります
byte[] data;
WebClient wc = new WebClient();
wc.Encoding = wc.Encoding = System.Text.Encoding.GetEncoding("utf-8");
data = wc.DownloadData(_Url);
wc.Dispose();
DownloadDataだとbyte配列になるようですがこれをどうやればいいかがわかりません。
0017デフォルトの名無しさん
2011/01/13(木) 21:03:460018デフォルトの名無しさん
2011/01/13(木) 21:07:190019デフォルトの名無しさん
2011/01/13(木) 21:13:09OpenReadでStream取得してImage.FromStream
0020デフォルトの名無しさん
2011/01/13(木) 21:31:350021デフォルトの名無しさん
2011/01/13(木) 21:35:44なるほど
byte配列をそういう風に使えるんですね
ありがとうございます
0022デフォルトの名無しさん
2011/01/14(金) 01:16:430023デフォルトの名無しさん
2011/01/14(金) 01:42:31またはエンコーディングにnew UTF8Encoding(false)とかを使用。
0024デフォルトの名無しさん
2011/01/14(金) 03:28:060025デフォルトの名無しさん
2011/01/14(金) 16:29:37動的に数が増減するTextBoxのリストをやりたいのですが
1.DataGridView
2.ListView
3.FlowLayoutPanel
4.TableLayoutPanel
どれが一番簡単でしょうか?
表示したテキストはそれぞれ行選択した後固有処理したり簡易編集したりします
また、TextBoxも個別に属性を割り振って処理を変えたりします
リスト表示するだけなら1がもっとも簡単そうなのですが、この個別処理まわりが
大変そうで悩んでいます
0026デフォルトの名無しさん
2011/01/14(金) 17:06:330027デフォルトの名無しさん
2011/01/14(金) 18:32:07DataGridViewでもEditingControl取得すれば多少はいじれるし
0028デフォルトの名無しさん
2011/01/14(金) 20:21:22別のフリーウェアであるキーを押すと特定のマクロを実行してくれるソフトがあります。
このマクロを実行させるために、「キーを押す」という動作を実行させたいのです。
非常にしょうもない質問かもしれませんが、分かる方教えて頂けると助かります。
よろしくお願いします。
0029デフォルトの名無しさん
2011/01/14(金) 20:23:39http://cs2ch.blog123.fc2.com/blog-entry-85.html
003028
2011/01/14(金) 21:07:24おお、ありがとうございます。
それで行けそうな感じです。
よくわからないのですが、そのページのそれっぽい部分をそのままボタンクリック(? private void button1_Click)の
ところに突っ込んでもうまくいかない。
ちょっと勉強して導入してみます。
ありがとうございました。<(_ _)>
0031デフォルトの名無しさん
2011/01/14(金) 21:11:12肝はSendKeyCodeクラスの方だからね
003230
2011/01/14(金) 22:42:19C#のシステムをほとんど理解せず、見知ったプログラムをつなぎあわせて動かしてばかりなので
全く分からないのです。なのでここで具体的に質問できるレベルではないのです orz
下のようにやってるんですけど、エラーが出るなあ・・・・
using System;
using System.Collections.Generic;
略
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
SendKeyCode send = new SendKeyCode();
send.Sendkey(51);
}
}
}
0033デフォルトの名無しさん
2011/01/14(金) 22:47:54SendKeyCodeっていうクラスも書かなければいけないのでは?
関係ないけどSendKeysってクラスもありますよ
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.sendkeys(v=VS.100).aspx
0034デフォルトの名無しさん
2011/01/14(金) 23:11:39そのサイトのSendKeyCodeクラスをコピーして使うか
そのクラスの中でやってることを自分のソースに入れないと無理だよw
>>33
それって微妙なんだよな・・・
ある程度使えるようにするには>>29の方がいいよ
0035デフォルトの名無しさん
2011/01/14(金) 23:14:12using System;
using System.Runtime.InteropServices;
namespace test
{
    class SendKeyCode
    {
        [DllImport("user32.dll")]
        public static extern uint keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
        public void Sendkey(byte Code)
        {
            keybd_event(Code, 0, 0, (UIntPtr)0);
            keybd_event(Code, 0, 2/*KEYEVENTF_KEYUP*/, (UIntPtr)0);
        }
    }
}
namespaceは自分のプロジェクトにあわせてね・・・(もしかしてその辺も説明がいるレベルの人?
003632
2011/01/14(金) 23:23:41全くよくわかっていないですが、適当に色々いじってるとなんかうまくいきました。
どうもありがとうございました。
0037デフォルトの名無しさん
2011/01/14(金) 23:47:400038デフォルトの名無しさん
2011/01/14(金) 23:59:180039デフォルトの名無しさん
2011/01/15(土) 00:00:53004038
2011/01/15(土) 00:25:210041デフォルトの名無しさん
2011/01/15(土) 00:29:390042デフォルトの名無しさん
2011/01/15(土) 00:32:37いずれにせよ「C#では」作れないけど
0043デフォルトの名無しさん
2011/01/17(月) 11:08:58というのはどういうことなんでしょうか?
0044デフォルトの名無しさん
2011/01/17(月) 11:13:180045デフォルトの名無しさん
2011/01/17(月) 13:06:00ググってみた
うぃきとか見ても専門店きすぎてイミフ
0046デフォルトの名無しさん
2011/01/17(月) 13:22:480047デフォルトの名無しさん
2011/01/17(月) 14:24:10たとえばList<T>ならIndexOfはO(n)なのに対してBinarySearchはO(log n)なので
後者のメソッドの方が効率よく要素を検索できることがわかります
nはこの場合コレクションの要素数
0048デフォルトの名無しさん
2011/01/17(月) 15:11:50処理時間の指標だよ、アルゴリズムの性能を端的に表すときに使う
だいたいそれくらいかかるって意味
O(n^2)よりO(n)のが早い、O(n)よりO(log n)のほうが早い
0049デフォルトの名無しさん
2011/01/17(月) 15:31:33サンクスです
大体理解しました。
そもそも対数自体からよくわかってなかったのがいけなかったんですが…
助かりました。
0050デフォルトの名無しさん
2011/01/18(火) 09:37:49オプティマイズが原因だと思われますが、このInternalUseは可能なら public にしたくない。
常に出現させる事は果たして可能なのでしょうか?オプティマイズ禁止アトリビュートとか知っている人いませんか?
public static void Test()
{
Func<object, bool> f = Class2.GetMethod(typeof(int));
f(10);
}
public static class Class2
{
// ジェネリック関数 InternalUse の型引数をType型オブジェクトで引き渡そうという試み
public static Func<object, bool> GetMethod(Type type)
{
foreach (System.Reflection.MethodInfo item in typeof(Class2).GetMethods())
{
if (item.Name == "InternalUse")
{
System.Reflection.MethodInfo method = item.MakeGenericMethod(type);
return (arg) => (bool)method.Invoke(null, new object[] { arg });
}
}
System.Diagnostics.Debug.Assert(false, "InternalUse<T> が消失");
return null;
}
// 型引数をType型で渡したいジェネリック関数
//private static bool InternalUse<T>(T arg) { System.Console.WriteLine(arg); return true; }
public static bool InternalUse<T>(T arg) { System.Console.WriteLine(arg); return true; }
}
0051デフォルトの名無しさん
2011/01/18(火) 10:12:41public以外にすると消えたように見えるのは、GetMethodsがpublicメンバしか返さないからです
かわりにGetMembers(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)を使えば
publicでなくても取得できます
どうせ名前だけで判別するならforeachも必要なくて
GetMethod("InternalUse", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
の結果だけを見れば十分です
0052デフォルトの名無しさん
2011/01/18(火) 11:56:580053デフォルトの名無しさん
2011/01/18(火) 12:24:29それが用意されてなくてどうしてもTypeで指定したいときは稀にあるな
基本的には動的に使われそうなメソッドはTypeを取るオーバーロードを用意しておいて
ジェネリック版の方を T GetObject<T>() { return GetObject(typeof(T)); }と実装するのが普通
0054デフォルトの名無しさん
2011/01/18(火) 13:12:24WriteStream(stream)みたいな
0055デフォルトの名無しさん
2011/01/18(火) 13:16:03どっちかというと
WriteStream(filePath)
じゃね?
0056デフォルトの名無しさん
2011/01/18(火) 13:26:12FileStream作ってRead->Writeを繰り返す
0057デフォルトの名無しさん
2011/01/18(火) 13:38:41int read;
using (var output = File.OpenWrite(path))
while ((read = input.Read(buf, 0, buf.Length)) > 0)
output.Write(buf, 0, read);
これだけのことだろ
0058デフォルトの名無しさん
2011/01/18(火) 13:46:550059デフォルトの名無しさん
2011/01/18(火) 13:53:06ありがとう、3.5なんで普通に書くことにします
0060デフォルトの名無しさん
2011/01/19(水) 00:09:580061デフォルトの名無しさん
2011/01/19(水) 00:23:56.NETのライブラリははもともとJavaほど使いにくくないからユーティリティ集みたいなのはあんまり流行らないよね
0062デフォルトの名無しさん
2011/01/19(水) 01:10:020063デフォルトの名無しさん
2011/01/19(水) 01:51:16あるあるw
2.0の頃にGenericsでTuple作ってたけど無用になった。
しかし、.NET肥大化しまくってる気がしないでもない。
次のバージョンではどうなるか…
0064デフォルトの名無しさん
2011/01/19(水) 01:58:25歴史が証明しています
0065デフォルトの名無しさん
2011/01/19(水) 02:04:32要求広がったぶんだけ正比例ででかくなってる感じ。
0066デフォルトの名無しさん
2011/01/19(水) 02:08:180067デフォルトの名無しさん
2011/01/19(水) 02:24:05新機能を覚えるのが苦手な人には辛いかもね
0068デフォルトの名無しさん
2011/01/19(水) 02:57:380069デフォルトの名無しさん
2011/01/19(水) 04:30:39マルチスレッドと関数型へのパラダイムシフトを確実に実行する為に10年計画とかで一直線に進んでるように見える
2.0、3.0、4と新しくなる度に二度と前に戻れないほどの利便性生産性の向上は凄まじいし、全くブレてない
0070デフォルトの名無しさん
2011/01/19(水) 05:18:18ちょっと前まではSTLやRubyが羨ましかったのに、
もうそれらを使う必要性を全く感じない
0071デフォルトの名無しさん
2011/01/19(水) 08:48:27- [フォルダ名1-3]
というふうに「フォルダ名1-2とフォルダ名1-3」のフォルダ名を取得することはできるのでしょうか?
取得することができるなら、どういったものを使えば取得できるのでしょうか?
0072デフォルトの名無しさん
2011/01/19(水) 08:51:230073デフォルトの名無しさん
2011/01/19(水) 08:54:00再帰の話しかね?
http://support.microsoft.com/kb/303974/ja
0074デフォルトの名無しさん
2011/01/19(水) 10:34:452点訂正:
「非同期処理だからといってマルチスレッドは要らない」という流れも。
GUI アプリだとディスパッチャー使って UI スレッドに戻して実行ってのができるんで。
あと、「関数型へのシフト」じゃなくて「関数型の取り込み、融合」だと思う。
0075デフォルトの名無しさん
2011/01/19(水) 11:33:21.NETの世界だけじゃなくて例えばJavaScriptにもStratifiedJSみたいなのがある。
C#5では非同期構文(async/awaitキーワード)が導入される。
RxとAsync CTPがあれば非同期プログラミングは怖くない。
0076デフォルトの名無しさん
2011/01/19(水) 11:42:01lock要らない。
0077デフォルトの名無しさん
2011/01/19(水) 12:15:25STLだけはまだ魅力的だけどな。
0078デフォルトの名無しさん
2011/01/19(水) 21:41:54まじか。オラわくわくしてきたぞ。
0079デフォルトの名無しさん
2011/01/19(水) 22:20:270080デフォルトの名無しさん
2011/01/20(木) 00:40:45ありがとうございます
それでできました
配列にディレクトリ名が挿入されたんですが、
while文でディレクトリ1つ1つ表示させているんですが、
配列に値が入ってるかどうかが判別する方法がわかりません
おかげで無限ループになってしまいます
どのようにしたら配列(string型)の中かどうか確認できるんでしょうか?
008180
2011/01/20(木) 00:42:31最終行: どのようにしたら配列(string型)の中が空かどうか確認できるのでしょうか?
ちなみにnull、""では意味がありませんでした……
0082デフォルトの名無しさん
2011/01/20(木) 00:45:320083デフォルトの名無しさん
2011/01/20(木) 00:51:240084デフォルトの名無しさん
2011/01/20(木) 01:00:20邪推するにエロ画像フォルダでも整理したいんか?
0085デフォルトの名無しさん
2011/01/20(木) 01:09:22用途はなんでもいいだろw
エロに関する動機が多い気もするがw俺の場合w
exploader.netの支援ツールとか作ってるぞw
アフィブログがあまりにもうざすぎるので・・・
ざっくり仕様は固まってるがアフィブログ側の作りがまちまちなので
その辺の細かい部分をどうするかが悩ましい
0086デフォルトの名無しさん
2011/01/20(木) 01:22:460087デフォルトの名無しさん
2011/01/20(木) 01:31:34ありがとうございます。やりたいことができました
>>84
まぁそんな感じです
>>85
超ほしいなそれw
0088デフォルトの名無しさん
2011/01/20(木) 02:34:13Adblockで全部消してやるとすっとするw
0089デフォルトの名無しさん
2011/01/20(木) 04:15:57そこへアップしてるアフィサイトはいらないからな・・・
というかexploader.netは数字の認識関連以外は実は簡単なんだよな
ロックかかってるとなってるがアフィサイトのhtmlだけ入手して下記のようなアドレスを
正規表現で探せばいいだけなんだよな・・・
後はアフィサイトのアドレスとパスなどを管理して・・・と
http://www.exploader.net/download/%EF%BD%880120a1?session=IQgXNhfRaaY
>>88
adblockは便利なんだが数が増えると重くなるしたまに必要な画像を消しちゃうこともあるしな・・・
0090デフォルトの名無しさん
2011/01/20(木) 07:41:010091デフォルトの名無しさん
2011/01/20(木) 07:42:26例えば、オブジェクトのアドレスなどを取得するのは無理でしょうか?
0092デフォルトの名無しさん
2011/01/20(木) 07:45:440093デフォルトの名無しさん
2011/01/20(木) 08:24:360094デフォルトの名無しさん
2011/01/20(木) 08:26:300095デフォルトの名無しさん
2011/01/20(木) 10:09:38.netの勉強用には手軽でいい題材かもしれんな
0096デフォルトの名無しさん
2011/01/20(木) 15:38:290097デフォルトの名無しさん
2011/01/20(木) 15:52:260098デフォルトの名無しさん
2011/01/20(木) 16:07:010099デフォルトの名無しさん
2011/01/20(木) 18:34:32�d
0100デフォルトの名無しさん
2011/01/21(金) 16:20:56下線を引きたいのですが消えてしまいます。
StringFormatでStringFormatFlags.MeasureTrailingSpacesを
指定ししても変わりませんでした。
とりあえず自力で線を引くことにしますが、これは
どうすれば解決するでしょうか?
0101デフォルトの名無しさん
2011/01/21(金) 18:53:33http://ideone.com/2pyC3
上のテキストボックスに1行1URLでアドレスを貼ってボタンを押すと解析開始
該当するアドレスがあれば下のテキストボックに貼る
0102デフォルトの名無しさん
2011/01/22(土) 04:31:410103デフォルトの名無しさん
2011/01/22(土) 06:18:48末尾にピリオド付与すれば?
0104デフォルトの名無しさん
2011/01/22(土) 13:55:42そこにAPIをコーディングし、呼び出し側からDllImportをしてあげればよろしいのでしょうか?
0105デフォルトの名無しさん
2011/01/22(土) 14:01:06用語の使い方がデタラメで何が言いたいのかさっぱり分からない。
理解してもいない用語を無理に使おうとせず、自分がやりたいことをベタに
書いた方がいい。
0106デフォルトの名無しさん
2011/01/22(土) 14:06:140107デフォルトの名無しさん
2011/01/22(土) 14:49:480108デフォルトの名無しさん
2011/01/22(土) 14:56:310109デフォルトの名無しさん
2011/01/22(土) 17:51:34↓(マネージド) ↓(アンマネージド)
プロジェクトの参照で DllImport属性で適当なクラスに
DLLを追加する 使いたいメソッドを宣言
↓ ↓
あとはググれ
0110デフォルトの名無しさん
2011/01/22(土) 19:32:520111デフォルトの名無しさん
2011/01/22(土) 19:54:130112デフォルトの名無しさん
2011/01/22(土) 21:41:590113デフォルトの名無しさん
2011/01/22(土) 21:53:25ABCと入力されていれば文字列の中を"DEF"という風に
入力されている文字列だけ変数の中から削除という場合どんなものを方法があるでしょうか?
sliceメソッドってC#にはないんでしょうか?それがあればできるんですけど・・・
0114デフォルトの名無しさん
2011/01/22(土) 21:55:32一般的にいって、sliceと名の付くメソッドはそんなことには使いません
0115デフォルトの名無しさん
2011/01/22(土) 22:32:41javascriptと等価なsliceなんかある言語の方がすくねーぞ
0116デフォルトの名無しさん
2011/01/23(日) 00:19:50初めて見たよそんな使い方
0117デフォルトの名無しさん
2011/01/23(日) 03:39:24他人の作ったネイティブDLLの関数を呼び出したいんじゃねーの?
方法1
C#からDllImportで直接呼び出す。
余計なDLLは不要だが、データ構造が複雑だとDllImportを書くのが面倒。
方法2
C++/CLIでクラスライブラリを作成し、C++と.NETの変換を行いC#で参照する。
余計なDLLが要るが、使用するパラメータは少ないのにいろんな構造体を
用意しないといけないときにはこっちが楽
0118113
2011/01/23(日) 16:18:44ありがとうございました
今度は
string n = "[Playback Part2] 馬鹿にしないでよ〜"
とある場合[ ]の中のPlayback Part2だけを抜き出すには何を使えばいいですか?
0119デフォルトの名無しさん
2011/01/23(日) 16:20:45バーカ
0120デフォルトの名無しさん
2011/01/23(日) 16:22:250121デフォルトの名無しさん
2011/01/23(日) 16:22:57人間の考える力はこうして失われていく
0122デフォルトの名無しさん
2011/01/23(日) 16:26:080124デフォルトの名無しさん
2011/01/23(日) 16:27:35string n = "[Playback Part2] 馬鹿にしないでよ〜"
StringBuilder m = new StringBuilder();
for(int i=0;i<15;i++){
m.Append(n[i+1]);
}
n = m.ToString();
0125デフォルトの名無しさん
2011/01/23(日) 16:28:080126デフォルトの名無しさん
2011/01/23(日) 16:29:10べ、別にあんたのために書いたわけじゃないんだからね!!!!勘違いしないでsyぽね!!!
0127デフォルトの名無しさん
2011/01/23(日) 16:31:090128デフォルトの名無しさん
2011/01/23(日) 17:13:23残念でした
http://hibari.2ch.net/test/read.cgi/tech/1294921393/549
0129デフォルトの名無しさん
2011/01/23(日) 17:18:350130デフォルトの名無しさん
2011/01/23(日) 17:29:13ドラッグどころかフォーカスしかできない始末です。
0131デフォルトの名無しさん
2011/01/23(日) 20:02:13CodeDOMを用いた動的なコンパイル・実行では
AppDomainを分けないとメモリリークが発生してしまう
という話を聞いたことがあります。
動的な実行コード生成という点では、Expression.Compileも同様だと思うのですが
こちらはそういった問題は発生しうるのでしょうか?
0132デフォルトの名無しさん
2011/01/23(日) 20:12:34DynamicMethodは生成されたコードがGC対象になることと
アセンブリや型を生成する必要がないのでオーバーヘッドが小さいのが売り
0133デフォルトの名無しさん
2011/01/25(火) 03:29:57遅くなりましたが、回答ありがとうございます。
GCの対象になるのでしたら問題無く使用できそうですね。
DynamicMethodについては知りませんでした。
C++のXbyacみたいな機能があったんですね。
面白そうなので調べてみます。
0134デフォルトの名無しさん
2011/01/25(火) 14:01:17考えなきゃいけない所だけ考えればいい
0135デフォルトの名無しさん
2011/01/25(火) 14:29:11読み込むコードが限られててeval的なことはしないならいいけどさ
ふらっとスレの誤爆か
0136デフォルトの名無しさん
2011/01/25(火) 15:04:05どれですか?
0137デフォルトの名無しさん
2011/01/25(火) 15:15:39XDocument.Root.GetDefaultNamespace()じゃね
0138デフォルトの名無しさん
2011/01/25(火) 15:20:310139デフォルトの名無しさん
2011/01/25(火) 16:53:36ClassName a = new ClassName();
↓
ClassName a;
でいいじゃん
次のバージョンとかで改善される予定はないの?
0140デフォルトの名無しさん
2011/01/25(火) 16:55:29下は単なる宣言じゃん
上は
ClassName a;
a = new ClassName();
これを一行で書いただけだろ?
0141デフォルトの名無しさん
2011/01/25(火) 16:58:46ClassName a = new
とnewまで入力してスペースあければ支援機能が候補だしてくれるし
それよりプロパティの省略書き方 {get;set;} って入力支援機能ってないのかな?
イベントとかだと += まで入力すればTABx2でメソッドまで自動で生成してくれるけどw
0142デフォルトの名無しさん
2011/01/25(火) 17:16:340143デフォルトの名無しさん
2011/01/25(火) 17:36:27だろ。
あとインテリセンス様のお陰で、ClassNameはCN<TAB>で補完出来るじゃん
0144デフォルトの名無しさん
2011/01/25(火) 17:47:17いつも使ってるメソッドの名前ぜんぜん覚えなくて
IDE以外でコード書いたときあまりの書けなさっぷりに愕然とするし
0145デフォルトの名無しさん
2011/01/25(火) 19:08:190146デフォルトの名無しさん
2011/01/25(火) 19:21:32IDE以外でなにか困ることあるっけ?
0147デフォルトの名無しさん
2011/01/25(火) 19:28:03prop Tab Tabを知らないで生きてるのは不幸
0148デフォルトの名無しさん
2011/01/25(火) 19:30:24それがMSのIDE囲い込み戦略!!!
0149デフォルトの名無しさん
2011/01/25(火) 19:48:12C#は、IDEで最適化されてる言語だと思うの。
0150デフォルトの名無しさん
2011/01/25(火) 20:01:340151デフォルトの名無しさん
2011/01/25(火) 20:03:06ライブラリがインテリセンス前提で綴りが長すぎる
0152デフォルトの名無しさん
2011/01/25(火) 20:03:390153デフォルトの名無しさん
2011/01/25(火) 20:04:03全くだ。
0154デフォルトの名無しさん
2011/01/25(火) 20:06:30どうせならクロスプラットフォームにすりゃいいのに
0155デフォルトの名無しさん
2011/01/25(火) 20:12:520156デフォルトの名無しさん
2011/01/25(火) 20:17:580157デフォルトの名無しさん
2011/01/25(火) 21:14:140158デフォルトの名無しさん
2011/01/25(火) 21:19:03ちょっと何言ってるのかわからないですね
0159デフォルトの名無しさん
2011/01/25(火) 21:25:10例えばコンテキストメニューで単体テスト(NUnit)を走らせたりできる。
0160デフォルトの名無しさん
2011/01/25(火) 21:33:140161デフォルトの名無しさん
2011/01/25(火) 21:34:44いや、monoさえしっかりしていたらMacでも.net使えたはずだったのにな
0162デフォルトの名無しさん
2011/01/25(火) 21:37:43すでにクラスは決まってるんだからインスタンス化する時はコンストラクタ名を省略できてもいいと思うんだ
同じ名前を何度も書くのはなんか美しくない
0163デフォルトの名無しさん
2011/01/25(火) 21:39:04派生クラス入れたいとか幾らでもあるだろ
var使えvar
0164デフォルトの名無しさん
2011/01/25(火) 21:39:53しっかり者ではなかったということですね
0165デフォルトの名無しさん
2011/01/25(火) 21:40:46コンストラクタを省略して「ClassName a;」とかキモすぎる。
var使っとけ
var a = new ClassName();
0166デフォルトの名無しさん
2011/01/25(火) 21:41:06VBでも使っとけ
0167デフォルトの名無しさん
2011/01/25(火) 21:42:000168デフォルトの名無しさん
2011/01/25(火) 21:44:32多様性がいかに大事か分からんのか。
>どうせならクロスプラットフォームにすりゃいいのに
MonoDevelopがある。
MonoDevelopは元を辿ればSharpDevelopをGtk#に移植するとこから始まってる。
Flash用のIDEとして人気の高いFlashDevelopも、SharpDevelopからの派生。
SharpDevelopはインストールせずに使えて、Visual Studioのソリューション開いて編集できる。
派生を作る・USBメモリで持ち運ぶ・機能が少ない分軽い・・・Visual Studioにできない事ができる点で住み分けてるだろ。
0169デフォルトの名無しさん
2011/01/25(火) 21:56:22VB使ってるガキを見たら二度とそんなこと言わなくなる
0170デフォルトの名無しさん
2011/01/25(火) 21:58:55C#の機能をVBの分かりづらい構文で書くだけの劣化C#と化しているわけだけど
0171デフォルトの名無しさん
2011/01/25(火) 22:01:40VB.NET…VB6、VBAユーザーの囲い込み用
C#…C++、Javaユーザーの取り込み用
なので、完全に目論見どおり
0172デフォルトの名無しさん
2011/01/25(火) 22:02:060173デフォルトの名無しさん
2011/01/25(火) 22:02:26VB6の機能を互換用に残しているのは微妙だけどな
0174デフォルトの名無しさん
2011/01/25(火) 22:05:41お前らには一生VBしか使えないと思い込ませるのが目的に思える
実際VB.NETがちゃんと使えてるならC#もJavaも全く変わらないわけだが
0175デフォルトの名無しさん
2011/01/25(火) 22:11:43コードだとAddHandler Me.Load, AddressOf Form_Loadとか糞長くなるけど
あとXMLリテラルとかどうでもいいものもあった気がする
0176デフォルトの名無しさん
2011/01/25(火) 22:14:38論理的な行や処理の区切りが改行かセミコロンかなんて、それこそどうでもいい話に思えてくる
0177デフォルトの名無しさん
2011/01/25(火) 22:17:10結局は使う人次第さ
0178デフォルトの名無しさん
2011/01/25(火) 22:19:15そういうことだ
0179デフォルトの名無しさん
2011/01/25(火) 22:19:51昔はVB6馬鹿にしてりゃ様になるとか思ってるアホもいたようだけど
ベーマガ育ちのオッサンとかBASICが好きな奴も中にはいるだろうし
好き好きだろ
0180デフォルトの名無しさん
2011/01/25(火) 22:20:09機能限定.NETで覚えること少なくて初心者に優しい路線目指せばよかったのに
0181デフォルトの名無しさん
2011/01/25(火) 22:22:17選べる環境にある人がどれだけ居るのだろうか。
上や顧客の言いなりよ。俺だって使えって言われたら使うさ
そういうもんだろ?
0182デフォルトの名無しさん
2011/01/25(火) 22:24:01とても機能限定版なんか作ってる余裕はなさそうだけどね
初心者相手だとサポートは何倍も大変になるし
0183デフォルトの名無しさん
2011/01/25(火) 22:26:15Access + VBA感覚でSilverlight使ったWebアプリが作れるらしい
0184デフォルトの名無しさん
2011/01/25(火) 22:28:35算術シフトと論理シフトとローテートぐらい標準装備しといてほしいわ
0185デフォルトの名無しさん
2011/01/25(火) 22:30:170186デフォルトの名無しさん
2011/01/25(火) 22:32:170187デフォルトの名無しさん
2011/01/25(火) 22:33:01アセンブラじゃあるまいしローテートなんて使い道あるかね。
0188デフォルトの名無しさん
2011/01/25(火) 22:33:45VBは言語機能の為にMicrosoft.VisualBasic.dll利用してるので同じILにはならない
ためしにTry…Catchブロックを書いてReflectorに掛ければ分かると思うよ
0189デフォルトの名無しさん
2011/01/25(火) 22:34:32なんとなくサポートしてるだけじゃないの?w
もうローテートは必要なだろうしなあw
0190デフォルトの名無しさん
2011/01/25(火) 22:35:39符号なし整数にキャストしてからシフトすると論理シフトになるのはCと同じ
Javaでは別の演算子なのは、Javaには符号なし整数が無いからで
C#が劣っているわけではない
0191デフォルトの名無しさん
2011/01/25(火) 22:41:010192デフォルトの名無しさん
2011/01/25(火) 22:47:16必要な型だけdynamicにすればいいので Option Strict Off にしないといけないVBよりも優れてる
オプション引数もサポートされた
0193デフォルトの名無しさん
2011/01/25(火) 23:00:25ローテートシフトはゲームとかだと良く使いたくなるんだけどな。
0194デフォルトの名無しさん
2011/01/25(火) 23:04:29演算子が欲しくなるほどそんなもんが多用されてたらさすがに糞コードと呼ばざるを得ない
0195デフォルトの名無しさん
2011/01/25(火) 23:14:28PC用ならまだしも、携帯、家電、ゲーム機、その他組み込み系はCPUパワーもメモリも全然足らんのですよ
HDDレコーダーとか地デジテレビとか、最近の家電はどれもこれも動作がトロくさくてイライラせんか?
0196デフォルトの名無しさん
2011/01/25(火) 23:14:30リフレクション使いまくり?
遅い?
0197デフォルトの名無しさん
2011/01/25(火) 23:20:00リフレクションは初回だけで、あとはExpressionTreeでコンパイルしたデリゲートが呼び出されるだけなので意外と早い
動的言語で使われる最適化手法
0198デフォルトの名無しさん
2011/01/25(火) 23:21:36組み込み系向けの処理系が……
Monoに頑張ってもらうしかないかねぇ?
0199デフォルトの名無しさん
2011/01/25(火) 23:32:53地デジ関連でチャンネルの切替とかが緩慢なのは地デジの仕様上の問題であって
組み込みCPUの問題では必ずしもないでしょ
0200デフォルトの名無しさん
2011/01/25(火) 23:49:07Windows Phoneはどうでもいいや
0201デフォルトの名無しさん
2011/01/26(水) 00:01:07主にGUIの部分、たとえば番組表の表示とかスクロールとか、めっちゃ遅いじゃん
画像処理はビット演算多用するでしょ
とくに、限られた画面にたくさんの情報を出そうとするとフォントサイズも整数倍じゃなくなってくるし
さすがにmpegの圧縮、展開は専用チップでやってるだろうけど、最近はGUI用にも画像プロセッサ積んでるのかな?
0202デフォルトの名無しさん
2011/01/26(水) 00:04:370203デフォルトの名無しさん
2011/01/26(水) 00:29:30残念
Cellのプログラミングはちょっとやってみたかったかな
0204デフォルトの名無しさん
2011/01/26(水) 00:31:32つNVIDIA Tegra GPU入りのARMチップ
そのうち地デジでもこの手が主力になってくるんじゃないかな?
0205デフォルトの名無しさん
2011/01/26(水) 01:17:51全く反論の余地がないからって、突然組み込み系出すとか流石に頭おかしいわ
0206デフォルトの名無しさん
2011/01/26(水) 02:03:100207デフォルトの名無しさん
2011/01/26(水) 10:18:32NVIDIA Tegraは使ってみたい
0208デフォルトの名無しさん
2011/01/26(水) 17:34:29イマイチメリットがわからない
0209デフォルトの名無しさん
2011/01/26(水) 19:41:10MSDNにはっきりメリットとデメリット書いてあるじゃん。
0210デフォルトの名無しさん
2011/01/26(水) 21:28:10ありがとう、見てくる
0211デフォルトの名無しさん
2011/01/26(水) 21:31:40> これにより実行速度は速くなりますが、起動にかかる時間は長くなります。
> この値は、CompileToAssembly メソッドを呼び出すときには
> Options プロパティに割り当てないでください。
これだけ?もっと説明ないの?
0212デフォルトの名無しさん
2011/01/26(水) 21:40:340213デフォルトの名無しさん
2011/01/26(水) 21:53:44大量のRegex.Match()静的メソッドをCompiledオプションをつけて呼び出した場合どうなるかとか、
どのくらいの複雑さのパターンからコンパイルしたほうが圧倒的に速くなるとかそういう詳しい情報が欲しかった
0214デフォルトの名無しさん
2011/01/26(水) 21:55:520215デフォルトの名無しさん
2011/01/26(水) 22:01:57静的メソッドは関係ないでしょ。
「コンパイルと再利用」の項も読んだ?
0216デフォルトの名無しさん
2011/01/26(水) 22:12:16ありがとう、欲しかった情報が全部書いてあった
0217デフォルトの名無しさん
2011/01/27(木) 15:27:05cacheDictionary = HogeClass.FromFile(cacheFileName)
}else{
cacheDictionary = new HogeClass();
}
にするか
try{
cacheDictionary = HogeClass.FromFile(cacheFileName);
}catch(FileNotFoundException ex){
cacheDictionary = new HogeClass();
}
にするかちょっと悩んでるんだが、こういう場合、やっぱり前者の方が良いの?
いつぞか読んだDelphiの本で「例外処理を使いすぎるとイベントドリブンじゃなくてエラードリブンになっちゃいますよw」みたいな事を読んだ気がするが
自分はなんか後者でも良いような気がする
0218デフォルトの名無しさん
2011/01/27(木) 15:29:55俺なら100%前者
0219デフォルトの名無しさん
2011/01/27(木) 15:42:02例外を投げるのは、存在してるはずのファイルが存在しないような異常なケース
後者で統一すると、想定してる例外としてない例外がごちゃ混ぜになって後で保守する時に困るよ。
0220デフォルトの名無しさん
2011/01/27(木) 15:42:15ファイルが存在しているからといって開ける保証はないし
チェックしてから開くまでの間に開けない状態に変更される可能性もある
0221デフォルトの名無しさん
2011/01/27(木) 18:16:37安全性とファイル存在した場合の存在チェック分の負荷を考えると後者だな
0222デフォルトの名無しさん
2011/01/27(木) 18:19:09THX
ってことは、例外の使い方、概念自体なんか間違ってるかも知れないなぁ…
ところでVCLの時から気になってたけど、Windows.Formsの配置で
AnchorとDockがあるけど、このDockってAnchorのプリセットみたいな物で
適切にAnchorを設定すれば、Dockは要らない子になる?
0223デフォルトの名無しさん
2011/01/27(木) 18:22:12似たような動きはさせること出来るけど根本的につがう
0224デフォルトの名無しさん
2011/01/27(木) 20:09:40try
{
if (System.IO.File.Exist(cacheFileName))
{
cacheDictionary = HogeClass.FromFile(cacheFileName);
}
else
{
cacheDictionary = new HogeClass();
}
}
catch( System.Exception error )
{
MessageBox.Show(error.ToString());
}
0225デフォルトの名無しさん
2011/01/27(木) 20:14:26if (System.IO.File.Exist(cacheFileName))
{
try
{
cacheDictionary = HogeClass.FromFile(cacheFileName);
}
catch (Exception ex)
{
Trace.WriteLine(ex);
MessageBox.Show(ex, "error");
}
}
if (null == cacheDictionary)
{
cacheDictionary = new HogeClass();
}
俺ならこうする
0226デフォルトの名無しさん
2011/01/27(木) 20:14:59・致命的な物はもっと上のレベルまでスルーしてそこで終了させる
なんて本式で組みだしたら軽く死ねるな・・・・
0227デフォルトの名無しさん
2011/01/27(木) 20:19:150228デフォルトの名無しさん
2011/01/27(木) 20:57:530229デフォルトの名無しさん
2011/01/27(木) 23:57:310230デフォルトの名無しさん
2011/01/28(金) 00:02:38もちろん冗談だけど while(true) { … continue; … break; } なら実際gotoと変わらないと思う
0231デフォルトの名無しさん
2011/01/28(金) 00:23:590232デフォルトの名無しさん
2011/01/28(金) 00:30:36保守性を考えるなら
bool retry = false; do { ... } while(retry);
か
0233デフォルトの名無しさん
2011/01/28(金) 00:39:09最後にcontinueしてどうするwそのまま放置しても普通に最初に戻るのに
つうかリトライならリトライカウント考慮してforループ使うのが普通
0234デフォルトの名無しさん
2011/01/28(金) 01:17:23ダメだ寝るか・・・
0235デフォルトの名無しさん
2011/01/28(金) 03:03:27行間を指定する事って出来ますか?
0236デフォルトの名無しさん
2011/01/28(金) 08:52:190237デフォルトの名無しさん
2011/01/28(金) 11:00:22乱数を取得してその取得した数を削除していくListについて質問です。
一回のゲームごとにListの中身をリセットしたいのですが、どうしたらいいでしょうか?
0238デフォルトの名無しさん
2011/01/28(金) 11:00:41データベース内に数値などをリスト化(?)などし、
それをFormにあるテキストボックス内に条件が一致した時に抽出したいのですが
抽出もとのデータベースは何を使ったらいいのかがよくわかりません。
様々な方法があると思いますが、単純にリスト内にある数値の1行のみを抽出したい場合は何を使えばよろしいでしょうか?
0239デフォルトの名無しさん
2011/01/28(金) 11:21:270240デフォルトの名無しさん
2011/01/28(金) 11:21:38だったとしたらSortedListとかDictionaryとか?
0241240
2011/01/28(金) 11:24:09死にたい・・・・
簡単にやろうとしたら普通のテキストとかCSVとかデータテーブルをXMLにするとか
かな?
0242デフォルトの名無しさん
2011/01/28(金) 11:25:20破壊的な操作をしているならオブジェクトを作り直せばいい
>>238
質問がSQLServerみたいなシステムの事なのか、intみたいな型の事なのか
はたまたデータの持ち方の事なのかが判らない
0243238
2011/01/28(金) 11:31:03説明が足りなかった事をお詫び申し上げます。
リスト内の行を抽出する場合、手っ取り早い(簡単な)手段では何がいいのか教えていただきたかったのです。
テーブル系からデータを引っ張ってくるという事をやった事がないので何をすればいいのかわかりませんでした。
>>241
CSVなら簡単かなと思っていましたが、特殊な事をするわけではないのでこのあたりが妥当でしょうか?
0244デフォルトの名無しさん
2011/01/28(金) 11:39:42データが何件ぐらいで一行にどれくらいデータ有るかで答え方変わるよ
0245238
2011/01/28(金) 11:46:00データ量は莫大にあります。
列はすべて4〜5ほどです。
1つ目のテーブルでの行は100です
2つ目のテーブルでの行は300少々
3つ目のテーブルも同じ
4つ目のテーブルでの行は250
すべてまとめてもいいのかもしれませんが、別個にした方が管理しやすい気がしました。
0246238
2011/01/28(金) 11:47:230247デフォルトの名無しさん
2011/01/28(金) 11:57:42アクセスのマクロで組んでも良いし、C#で組んでも出来る
俺ならExcelのマクロで組んじゃうけどね
0248デフォルトの名無しさん
2011/01/28(金) 11:57:50SqlServerCompactとか使ってみては?
0249デフォルトの名無しさん
2011/01/28(金) 12:02:51破壊的な操作って?
0250238
2011/01/28(金) 12:02:52アクセス経験がほとんど皆無なものでして…おすすめでしたらこの際一から勉強してみます。
Excelのが扱いなれてるので一度そちらで試してみようかと思います。
しかし>>243で「>テーブル系からデータを引っ張ってくるという事をやった事がないので」という通りCSVから引っ張ってくる方法が現段階では理解できていませんが・・・
>>248
結構あると思いましたが少ない方なのですね
SQLも今後会得する予定ではいますがC自体未熟なので先に基本的な事を扱えるようになってからSqlServerを使ってみたいと思います。
0251デフォルトの名無しさん
2011/01/28(金) 12:09:07プログラムの部分はこうなっております。
List<int> mountCards;
void randam()
{
Random cRandom = new System.Random();
int index = cRandom.Next(mountCards.Count);
int n = mountCards[index] + 1;
mountCards.RemoveAt(index);
card = n;
}
0252デフォルトの名無しさん
2011/01/28(金) 12:49:46ちょっと何やってるかわかりにくいけど
ひょっとしてユニークな乱数を発生させる物がほしい?
>>242の言うように、 mountCardsを作り直せば、良いんじゃないかな?
あと、関数の中で毎回Randomを生成するんじゃなくて、UniqueRandomクラスみたいなのを作って
その中にList<int>とRandomを保持して、乱数を発生させるときだけリストにアクセスできるようにして
Gameクラスの中にUniqueRandomクラスを入れておけば、コンストラクタ呼び出すだけですべては元通りになる。
0253デフォルトの名無しさん
2011/01/28(金) 12:56:09元々有ったデータあるいはデータ構造が無くなってしまう操作
>>243
DBから読み込むのはSELECT文(…と言う答えでいいのか?)
DBそのものについては、C#だとMDBファイルを使うのがいいかも。
他に何かをインストールしなくても使おうと思えば使えるし
0254デフォルトの名無しさん
2011/01/28(金) 13:12:260255デフォルトの名無しさん
2011/01/28(金) 13:18:43具体的に言うとこんな感じ
http://privatepaste.com/66e5699fa7
0256デフォルトの名無しさん
2011/01/28(金) 13:26:40まーSQLもやる予定なら、練習がてらいじっておいたほうが良いと思うけど
0257デフォルトの名無しさん
2011/01/28(金) 13:28:240258デフォルトの名無しさん
2011/01/28(金) 13:37:58ありがとうございます。
さっきのリストを消してそれを入れればいいんですよね?
0259デフォルトの名無しさん
2011/01/28(金) 14:44:32Listの中身をシャッフルしたいってだけなら
private List<int> _sourceList;
List<int> GetNewList()
{
Random r = new Random();
return _sourceList.OrderBy(a => r.Next());
}
でよくね?
0260デフォルトの名無しさん
2011/01/28(金) 14:46:12private List<int> _sourceList; // コンストラクタかどこかで初期化
private Random _random = new Random();
List<int> GetNewList()
{
return _sourceList.OrderBy(a => _random.Next());
}
0262デフォルトの名無しさん
2011/01/28(金) 15:56:090263デフォルトの名無しさん
2011/01/28(金) 15:59:42乱数の重複を避ける意味であれば、元のListから出た数を削っていくってのが良い方法だと思う
乱数を出して重複してたら再度乱数を出し直しってのは処理時間が均一じゃないから微妙
0264デフォルトの名無しさん
2011/01/28(金) 17:12:38http://hibari.2ch.net/test/read.cgi/tech/1294921393/394-
の人
初心者だから優しくしてやれよ
0265デフォルトの名無しさん
2011/01/28(金) 17:23:25細かいことだけど、Cのシフト演算が算術シフトか論理シフトかは処理系定義
なので、Cにおいてsignedな整数の右シフトには移植性がない
0266デフォルトの名無しさん
2011/01/28(金) 17:25:33>>237は人の出してくれたソースは読まないのかな?
それなりに動くソースあったしその中に毎度リセットするものもあったろうに・・・
0267238
2011/01/28(金) 17:47:49>DBから読み込むのはSELECT文
どの様なコードで読み込ませればいいのかまだわからないのでわかりません・・・
>DBそのものについては、C#だとMDBファイルを使うのがいいかも。
アクセスは使った事がありませんが、>>256さんはCSVやSQLもいいのではないかとおっしゃって下さっているので各々の使い勝手を調べてみようt思います。
とりあえずは扱えるCSVでチャレンジして、成功したらMDBやSQLにもチャレンジしたいと思います。
ありがとうございました。
また行き詰ることがあると思いますがどうかその時はお力沿いお願いいたします。
0268デフォルトの名無しさん
2011/01/28(金) 17:50:25日本式だとへりくだって質問する
海外式だと「ヘイ!ブラザー!!俺のレベルだとどこから手をつけていいかわからないぜ!!
すまねーが触りだけでも解説してくれ!!」とか書くものだぜ
2chなんでかしこまる必要はないけど目を通すなどして通した結果わからない箇所を聞くとかしろよ
その辺ガン無視ならだれも答えてくれなくなるぞ
円の描画の質問者のようにw
ふらっとC#,C♯,C#(初心者用) Part68
http://hibari.2ch.net/test/read.cgi/tech/1294921393/190
のソースのDeckクラスにあるじゃん
これを流用すればいいだけだろ
http://ideone.com/lnYNB
0269デフォルトの名無しさん
2011/01/28(金) 17:59:140270デフォルトの名無しさん
2011/01/28(金) 18:27:35サウンド関連も音を出力する直前ではwavになってるけど・・・ってそういう話じゃなくて
波形データが欲しいとかそういうこと?
>>237のレベルに合わせてみた
http://ideone.com/bcRte
0271デフォルトの名無しさん
2011/01/28(金) 18:39:47wav形式のファイルが欲しいです。音を再生する必要はありません
0272デフォルトの名無しさん
2011/01/28(金) 18:55:36動画変換ソフトなどと銘打って実は作ってるのはフロントエンドだけで
ffmpegに丸投げフリーウェアは結構多いよ
0273デフォルトの名無しさん
2011/01/28(金) 19:10:45メモリー上で出来るかは知らないが
0274デフォルトの名無しさん
2011/01/28(金) 19:27:580275デフォルトの名無しさん
2011/01/28(金) 19:38:08ありがとうございました
ffmpegとlame.dllを試してみます
0276デフォルトの名無しさん
2011/01/28(金) 19:44:56C#にそう云うの用意されてるかったらNOだけど
0277デフォルトの名無しさん
2011/01/28(金) 21:15:27あくまでそのメソッドが投げる例外だけ書きます?
それとも、中で呼び出すメソッドが投げる例外も書きますか?
0278デフォルトの名無しさん
2011/01/28(金) 21:19:130279デフォルトの名無しさん
2011/01/28(金) 22:03:45俺なら<exception>に書かれていない例外が発生した時点でそのライブラリを信用できなくなる
0280デフォルトの名無しさん
2011/01/28(金) 22:21:00俺なら<exception>に書かれていない例外が発生した時点でそのライブラリを信用できなくなる
0281デフォルトの名無しさん
2011/01/28(金) 22:26:42例外処理をしたいものだけ個別に書く
残りは全部一緒くた
0282デフォルトの名無しさん
2011/01/28(金) 22:28:050283デフォルトの名無しさん
2011/01/28(金) 23:37:11時計周りにLineを設定していき閉じた空間を塗りつぶそうと思ったのですが
塗りつぶしてくれません。
WinFormのGraphicsだと時計回りに設定していくと
閉じることもできたのですが仕様が違うんでしょうか?
0284デフォルトの名無しさん
2011/01/28(金) 23:42:080285277
2011/01/28(金) 23:47:14流石に全部書いてるとえらいことになりそうなんで
基本はそのメソッドが投げるもの
publicメソッドはわかる限り書くってスタンスで行こうと思います
0286デフォルトの名無しさん
2011/01/29(土) 00:06:14自分で使うだけならかかんでもいい
0287デフォルトの名無しさん
2011/01/29(土) 00:07:34レスありがとうございます。
自己解決しました・・・(書き込むと・・という法則ですねw
最初の線だけ引かれてしまうダメパターン
    public Path GetPath()
    {
        GeometryGroup wp = new GeometryGroup();
        wp.Children.Add(this.GetLineGeometry(0, 10, 10, 0));
        wp.Children.Add(this.GetLineGeometry(10, 0, 90, 0));
        wp.Children.Add(this.GetLineGeometry(90, 0, 100, 10));
        wp.Children.Add(this.GetLineGeometry(100, 10, 100, 290));
        wp.Children.Add(this.GetLineGeometry(100, 290, 90, 300));
        wp.Children.Add(this.GetLineGeometry(90, 300, 10, 300));
        wp.Children.Add(this.GetLineGeometry(10, 300, 0, 290));
        wp.Children.Add(this.GetLineGeometry(0, 290, 0, 10));
        p.Stroke = new SolidColorBrush(this.StrokeColor);
        p.Fill = new SolidColorBrush(this.FillColor);
        p.StrokeThickness = this.StrokeThickness;
        return p;
    }
    private LineGeometry GetLineGeometry(double SX, double SY, double EX, double EY)
    {
        LineGeometry lm = new LineGeometry();
        lm.StartPoint = new Point(SX, SY);
        lm.EndPoint = new Point(EX, EY);
        return lm;
    }
0288デフォルトの名無しさん
2011/01/29(土) 00:10:39C#に置き換えてみました
http://msdn.microsoft.com/ja-jp/library/cc189068%28v=vs.95%29.aspx#wcpsdk_graphics_geometry_geometryandshapes
理想コードは次でw
0289デフォルトの名無しさん
2011/01/29(土) 00:11:23    {
        new Point( 0, 10), new Point( 10, 0), new Point( 90, 0), new Point(100, 10),
        new Point(100,290), new Point( 90,300), new Point( 10,300), new Point( 0,290),
    };
    public Path GetPath()
    {
        PathGeometry pg = new PathGeometry();
        PathFigure pf = new PathFigure();
        pf.StartPoint = this.Point[0];
        for (int i = 1; i < this.Point.Length; i++)
        {
            pf.Segments.Add(this.GetLineSegment(this.Point[i]));
        }
        pf.Segments.Add(this.GetLineSegment(this.Point[0]));
        pg.Figures.Add(pf);
        Path p = new Path();
        p.Data = pg;
        p.Stroke = new SolidColorBrush(this.StrokeColor);
        p.Fill = new SolidColorBrush(this.FillColor);
        p.StrokeThickness = this.StrokeThickness;
        return p;
    }
    private LineSegment GetLineSegment(Point Point)
    {
        LineSegment ls = new LineSegment();
        ls.Point = Point;
        return ls;
    }
いろいろ変わってるのでなれるまでがきつい・・・
0290デフォルトの名無しさん
2011/01/29(土) 00:33:31SL4のアプリ作るので
VWD2010Expressを久々に起動したけどなんかいろいろもっさり
windowsXP SP3
Athlon64 のBE2350だったかな
AMD690GのIGP
メモリ3GB
0291デフォルトの名無しさん
2011/01/29(土) 00:33:510292デフォルトの名無しさん
2011/01/29(土) 00:36:36では理想のパターンは?
SLの開発はこれからなので模索しながらやってるから
これでいいとは思ってないだけに理想系を教えてもらえると・・・
ほんとはBlend?に手を出すべきなんだろうけどさ・・・
0293デフォルトの名無しさん
2011/01/29(土) 03:24:27XPは相性が悪いらしい
0294デフォルトの名無しさん
2011/01/29(土) 06:56:35D3D非対応なせいか、WPFのウィンドウをドラッグするとヤバかったけど
0295デフォルトの名無しさん
2011/01/29(土) 10:15:17OS : WinVista+SP2(x86)
CPU : Intel Core2 Extreme X9650 @3.00GHz
RAM : 2GB*2 (DDR3)
今となっちゃ型落ち品だけど、特に速度的な不満は感じて無い
0296デフォルトの名無しさん
2011/01/29(土) 10:45:00とりあえず上であげた物はstaticなリソース化しましたが
実のところ簡単なグラフィックツールを作るので
動的にLineなどを追加したPathを作る必要があるので
c#で実現できないとダメな気がするんですがどうなんですかね?
動的に作ったPathもXAMLで記述できますかね?
>>293>>294>>295
なるほど
VS2010がWPFで作られてるとか聞いたのでもしや・・と思ってましたが
ところで簡単なメニューの実装とか何でされてますか?
SilverLightは図形にもマウス関連のイベントが用意されてるのでPathなどで
複雑な形のパーツを作って・・・とか出来そうな感じですが・・・
0297デフォルトの名無しさん
2011/01/29(土) 11:09:200298デフォルトの名無しさん
2011/01/29(土) 11:49:220299デフォルトの名無しさん
2011/01/29(土) 11:56:47ああいうのはいいよね
>>298
まーそれほど複雑な階層を持たせるわけじゃないので自作でもいいんだけどさ〜
ところでSilverLightやWPFなりのまとめ方ってどうすればいいんだろ
Lineとかを継承して自作クラス作って一部処理を持たせるだけのクラス作ったけど
それをCanvasとかに入れてもオリジナルクラスと同じように表示してくれないだよな・・・
0300デフォルトの名無しさん
2011/01/29(土) 12:03:22結局、ドローツールの描画を実装する上で必要な機能というのは
図形を好きな場所に描画することだけなんであって、図形をどう管理するかとかは勝手
フレームワークに依存するような部分じゃない
0301デフォルトの名無しさん
2011/01/29(土) 12:06:32いや、図形をマウスでクリックしたところに置くだけならいいけどオブジェクトを管理して
オブジェクトのサイズ変更もやるし、複数のLineをマージしてPathという塊にもしたりと
いろいろイベントとか増えるんだがどうもうまくクラスに封入できないなあ・・と思って
今のままだとWinFormでいうところのForm1にべったりコード書いた状態になりそうでw
0302デフォルトの名無しさん
2011/01/29(土) 12:13:11好きなように管理したほうがいいと思う
継承するのは作法的にあんまりよろしくない
0303デフォルトの名無しさん
2011/01/29(土) 12:21:29>ある程度複雑になるならLineクラスとかPathクラスとかキャンバスクラスとか独自に作って
>好きなように管理したほうがいいと思う
やっぱりそうなるかねえ・・・
まあ1000オブジェクトも同時に扱わないだろうからなんとかなるとは思うんだが
0304デフォルトの名無しさん
2011/01/29(土) 12:35:360305デフォルトの名無しさん
2011/01/29(土) 12:38:570306デフォルトの名無しさん
2011/01/29(土) 20:18:10皆さんに教えてもらって一度成功したのですが、そのコードをなんかバグって保存できませんでした。
で、再度同じやり方でコードを記述したのに今度は何故か全く成功しません。
あれからひたすらアレコレやってるのですが、本当もう全くわかりません。
すいません・・・なにが間違ってるのか教えていただけるほんと助かります。
↓
http://amer.web.fc2.com/33.txt
ボタンを押すと「3」が押されるプログラム・・・のはずなのですが、うんともすんとも言いません。
(ネームスペースに二つのクラスがあるとダメ?と思ってネームスペースを分けて記述したら今度はエラーが出るし・・。)
0308デフォルトの名無しさん
2011/01/29(土) 22:34:430309デフォルトの名無しさん
2011/01/29(土) 23:07:14>>29のリンク先にある//フォームがアクティブにならないようにするためのおまじない
ってとこ追加すればいいと思うよ。
0310デフォルトの名無しさん
2011/01/30(日) 00:24:38SendInputs、keybd_eventは単純にキーのエミュレーションをしてるので
アクティブウィンドウに直接キーが流れるよ。だから自分がアクティブウィンドウだと、まず意味がない。
送信先のHandleが取得できるならPostMessageでWM_KEYDOWNを送った方が何かと楽かと
自分もちょうど似たようなオートパイロットを作ってるが、何かとヘタレなので
Spy++で調べたHandleをテキストボックスに入力して、そこに対してBitBltなりPostMessageしてる
あと(UIntPtr)0って言うのがあるけど
IntPtr.ZeroとかIntPtr.Nullとか無かった?つうか、nullを渡せなかったっけ?
今時のコンパイラは賢いから、たぶんうまく最適化してくれてると思うけど
キャストしてる分、CPUリソース食うよ?
0311デフォルトの名無しさん
2011/01/30(日) 00:33:46public static extern bool PostMessage(IntPtr hWnd, Int32 Msg, IntPtr wParam, IntPtr lParam);
public static Boolean SendKey(IntPtr TgtControlHandle, Byte KeyValue)
{
return WinAPI.PostMessage(TgtControlHandle, WM_KEYDOWN, new IntPtr(KeyValue), IntPtr.Zero);
}
こんな感じ
0312デフォルトの名無しさん
2011/01/30(日) 11:45:11ToEnum(obj).Select(o => /**/).First()というようなことがしたいのですが
0313デフォルトの名無しさん
2011/01/30(日) 11:50:18言葉の意味を正しく理解して使いましょう
列挙体のメンバの値を全て取得するにはEnum.GetValuesを使う
0314デフォルトの名無しさん
2011/01/30(日) 11:57:200315デフォルトの名無しさん
2011/01/30(日) 12:27:150316デフォルトの名無しさん
2011/01/30(日) 12:32:38それぐらいyield使って拡張メソッド書けって話だけど
0317デフォルトの名無しさん
2011/01/30(日) 12:48:330318デフォルトの名無しさん
2011/01/30(日) 12:55:330319デフォルトの名無しさん
2011/01/30(日) 12:57:26必要でないならする理由がない
0320デフォルトの名無しさん
2011/01/30(日) 13:02:02「違う拡張メソッド読んじゃった」ということになりかねない。
でも拡張メソッドで済む処理 = そのオブジェクトを外から触って処理するだけでおkな処理。
拡張メソッド関数はpublic関数よりも疎なので頑強になる。
0322デフォルトの名無しさん
2011/01/30(日) 13:43:520323デフォルトの名無しさん
2011/01/30(日) 13:51:43なんでも感でも格納できるものがほしいってことなのかも
0324デフォルトの名無しさん
2011/01/30(日) 13:54:54その構文知らんかったwwwwすげえなwww
0325デフォルトの名無しさん
2011/01/30(日) 14:00:280326デフォルトの名無しさん
2011/01/30(日) 14:06:400327デフォルトの名無しさん
2011/01/30(日) 14:09:44型名の省略なんて本質的な問題じゃないじゃん
0328デフォルトの名無しさん
2011/01/30(日) 14:12:460329306
2011/01/30(日) 14:14:42>>310
>>311
あああ
ありがとうございます!
すいません、昨日質問だけ書いて、しばらくレスチェックしたあと寝てしまいました。
レスありがとうございます。
ちょっと、頂いたレスを元につくるのに時間かかるので、まずはどうもありがとうございました<(_ _)>
今からいじってみます。
0330デフォルトの名無しさん
2011/01/30(日) 14:16:420331デフォルトの名無しさん
2011/01/30(日) 14:20:040332デフォルトの名無しさん
2011/01/30(日) 14:24:350333デフォルトの名無しさん
2011/01/30(日) 14:28:480334デフォルトの名無しさん
2011/01/30(日) 14:43:59int[] x = { 1,2,3}; // 1.0 時代からできた
int[] y;
y = { 1,2,3 }; // これは昔から/今でもダメ
var z = new[] { 1,2,3 }; // 3.0 でできるようになったのはこれ
y = new[] { 1,2,3 }; // 3.0 以降、これならOK
0335デフォルトの名無しさん
2011/01/30(日) 15:04:33テスト対象のメソッドを呼びっぱなしなら、と言う注釈付きでしょ
0336デフォルトの名無しさん
2011/01/30(日) 15:50:430337デフォルトの名無しさん
2011/01/30(日) 15:52:01会社ではVBもC#をも使ったことがないよ
0338デフォルトの名無しさん
2011/01/30(日) 16:00:23ホントはカバレッジとか測りたいんだけど
0339デフォルトの名無しさん
2011/01/30(日) 16:45:08今作り直したら int[] x = { 1, 2, 3 }; は無くなるだろうな
0340デフォルトの名無しさん
2011/01/30(日) 16:58:12そんなことないでしょ。
例えばdoubleの配列をintの変数で初期化するとき、わざわざキャストしろって?
0341デフォルトの名無しさん
2011/01/30(日) 17:01:550342デフォルトの名無しさん
2011/01/30(日) 17:11:00そのときはnew double[]と書けばいいだけ
左辺の型を明示して変数宣言と同時に初期化する場合にしか使えない構文なんてダサすぎ
0343デフォルトの名無しさん
2011/01/30(日) 17:15:30ダサいかどうかはともかく、まあ確かにそういう考え方もあるかも。
0344デフォルトの名無しさん
2011/01/30(日) 17:27:15new[]では右辺だけで型が決まってるんだから左辺にvar使うかどうかはこの場合関係ないよ
デリゲートやラムダ式は例外的に代入先の型で推論できるけど
それと同じくらいint[] x = {1,2,3};と書けることが重要か?
0345デフォルトの名無しさん
2011/01/30(日) 17:33:400346デフォルトの名無しさん
2011/01/30(日) 17:35:14使い慣れた自分の見やすいやり方でやる
0347デフォルトの名無しさん
2011/01/30(日) 17:40:33*を型の一部にしてしまった方が文法は簡単だろうから、
滅多に使わないものの互換性のために文法を汚したくなかったんだろうな
0348329
2011/01/30(日) 17:41:47ウィンドウをアクティブにすればよかったのですね。
>>310-311
に書いてあることは私には少しむつかしいようです。今必死で調べて解読しています。
あるマクロツールで特定のキーを押したら、登録したマクロ発動するってのがあります。
そのマクロを時間がきたら発動させるために、こんな「キーを押す」というプログラムを作っています。
ところがなぜか、そのマクロツールだけはC#上からキーを押す動作を実行しても
反応しないようです。
なぞですが、310-311にヒントが解決策があるかもしれません。
ちょっと頑張ってみます。
どうもみなさん、ご親切にありがとうございました。
0349デフォルトの名無しさん
2011/01/30(日) 17:45:40ニーズはあるとは思うけれどね。
0350デフォルトの名無しさん
2011/01/30(日) 17:50:50全く持ってC#の話題じゃないな
0351デフォルトの名無しさん
2011/01/30(日) 17:55:47そいつはGetKeyboardStateでも使ってるのかな?
その場合どうやれば他アプリからキー押した扱いにさせられるのか知らないけど
0352デフォルトの名無しさん
2011/01/30(日) 18:09:01あやまれ!ラムダ式にあやまれ!
0353デフォルトの名無しさん
2011/01/30(日) 18:18:24C風の配列初期化ほど限定的じゃない。
varとは逆に、List<int> list = { 1, 2, 3 }; とか object obj = new(); みたいに統一するのもアリだと思うよ。
実際Javaではこっちの方向で検討されてたらしいし。
0354デフォルトの名無しさん
2011/01/30(日) 18:27:280355デフォルトの名無しさん
2011/01/30(日) 18:31:110356デフォルトの名無しさん
2011/01/30(日) 19:02:14はいじゃ(ry
C#は後発で、シュガーたっぷりなんだから、同じことするのに複数の構文があるのは当然だろ。
var array = new String[]{"a","b","c"}; でも
String[] array = {"a","b","c"};でも
string[] array = new string[]{"a","b","c"} でも
何でもいいじゃない。
個人的にはVB.netの方が遙かに難しいぞw
Dim array as integer() ' ok
Dim array() as integer ' ok
Dim array(10) as integer 'ok
Dim array as integer(10) ' ng
Dim array as integer() = New integer(10) ' ng
Dim array as integer()
array = New integer(10) ' ng
過去とのしがらみのおかげで、細かいところで融通が利かなくなってる。
Pascalの時には気になってなかったintegerがかったるすぎる。Int32ってかいてよかですか?
0357デフォルトの名無しさん
2011/01/30(日) 19:18:42New Integer(10){}と書く
0358デフォルトの名無しさん
2011/01/30(日) 19:25:07amazonでそういう本あったけど、出版日が古い。
0359デフォルトの名無しさん
2011/01/30(日) 19:27:21さすがに突っ込み待ち?
0360デフォルトの名無しさん
2011/01/30(日) 19:32:06{}←がないとコンストラクタに引数を渡しているのか配列の要素数なのか区別できないからマジで必要。
0361デフォルトの名無しさん
2011/01/30(日) 19:35:37Dim array() as integer = New integer(10){} ' ok
はぁーん
こんなの使ってたら病気になるな
VB6プログラマなんて病気野郎しかいないけど
0362デフォルトの名無しさん
2011/01/30(日) 19:35:47オプションによるけどVBも型推論の例くらい挙げてやれよ
0363デフォルトの名無しさん
2011/01/30(日) 19:36:29それ.netでしょ?
0364デフォルトの名無しさん
2011/01/30(日) 19:36:59これは書けるはず
Strict Onでもちゃんと通るはず
0365デフォルトの名無しさん
2011/01/30(日) 19:37:27今VB6使ってるなら速やかに死ね
0366デフォルトの名無しさん
2011/01/30(日) 19:38:00まあ2行目と3行目は関係なんだろうが
0367デフォルトの名無しさん
2011/01/30(日) 19:38:07VB.NETの話だろ
病気か?
0368デフォルトの名無しさん
2011/01/30(日) 19:38:342010以降のみだけどね
>>357
それ空の配列じゃないでしょ。
0369デフォルトの名無しさん
2011/01/30(日) 19:39:140370デフォルトの名無しさん
2011/01/30(日) 19:40:13多少は進歩してるよ
0371デフォルトの名無しさん
2011/01/30(日) 19:41:04VBも2008から型推論なかったっけ?
2008だとOption InferはデフォルトだとOffだけど
2010からはOnがデフォルトだったと思う
0372デフォルトの名無しさん
2011/01/30(日) 19:42:45Inferなんてオプション弄ったかどうかは覚えてない
0373デフォルトの名無しさん
2011/01/30(日) 19:44:21VB6の話をしてる人がいますが。
0374デフォルトの名無しさん
2011/01/30(日) 19:45:12そいつはスレ違いだわな。
0375デフォルトの名無しさん
2011/01/30(日) 19:45:56次はあの野暮ったいイベント関連の構文に手付けて欲しい
0376デフォルトの名無しさん
2011/01/30(日) 19:46:11そいつこそがマジで病気っぽいんだけど
0377デフォルトの名無しさん
2011/01/30(日) 19:47:180378デフォルトの名無しさん
2011/01/30(日) 19:50:250379デフォルトの名無しさん
2011/01/30(日) 19:52:030380デフォルトの名無しさん
2011/01/30(日) 19:52:47まあまだVBAはVB6のエンジンなんだよね確か。
そういう意味では確かに
0381デフォルトの名無しさん
2011/01/30(日) 19:58:00…いや、なんでもない
0382デフォルトの名無しさん
2011/01/30(日) 19:59:27つか、VB6かVB.NETかに関わらず
VBの話題自体、スレ違いなんじゃね?
0383デフォルトの名無しさん
2011/01/30(日) 20:04:430384デフォルトの名無しさん
2011/01/30(日) 20:06:450385デフォルトの名無しさん
2011/01/30(日) 20:07:25うちのメインの商品がVB6だけど、Win8でVB6の対応がなくなるってことで
.NETに移行中。
つい2,3年まえに、VB2からVB6への移植の仕事もあったからほんとうに
どうしようもなくなるまで移行しないところもあるだろうけど。
0386デフォルトの名無しさん
2011/01/30(日) 20:16:470387デフォルトの名無しさん
2011/01/30(日) 20:22:11まあそうだなw
C#のちょっとしたことで嘆いている人がいるみたいだから
隣の芝は青い・・・んじゃなくて、茶色いところをだな…
友達のVB.netな課題をみてあげてるけど、正直泣きたいです。
(+ せんせいのおてほん の酷さも泣ける)
VBAの話も同意。VS Expressを無料配布してるなら
それなりで、あまりよろしくないIDEを付属させて、.netなほかの言語でくめるようにした方が絶対幸せだ。
あと、すっかり重要なことを言い忘れていたが、「10個分の配列を作ったつもりが、.Lengthプロパティが11」
な… 何を言っているか(ry 頭がどうにかなりそうだった…
0388デフォルトの名無しさん
2011/01/30(日) 20:25:27VBで配列のインスタンスを作る時には New Integer(size - 1){}みたいに
常に明示的に-1を付ける習慣にした方がいいね。
0389デフォルトの名無しさん
2011/01/30(日) 20:27:12まあでも計画的に移行したほうが結局安くはなると思う。
VB2からVB6への移行だって、すでにVB6終わってるし。
0390デフォルトの名無しさん
2011/01/30(日) 20:29:15最大インデックスを指定する、というのは理解できる仕様なのだが
要素数0の配列作るのに-1指定するのは気持ち悪いなー
0391デフォルトの名無しさん
2011/01/30(日) 20:32:12その場合はNew Integer(){}でOK.
0392デフォルトの名無しさん
2011/01/31(月) 03:12:49返信遅くなりました
何とか完成しました
(出来が酷いですけど・・・)
自分でもいやになってきました・・・
長いし・・・
初心者だし・・・
判定とかぜんぜんできてねぇ
0393デフォルトの名無しさん
2011/01/31(月) 03:38:21完成させるってことが大事だ
0394デフォルトの名無しさん
2011/01/31(月) 03:42:420395デフォルトの名無しさん
2011/01/31(月) 09:08:28別人のソースだからw
0396デフォルトの名無しさん
2011/01/31(月) 10:05:400397デフォルトの名無しさん
2011/01/31(月) 19:24:44ありがとうございます
DataRowはやっぱ要素取り出さないと比較できませんね…
0398デフォルトの名無しさん
2011/01/31(月) 19:31:32うまくいかなくて悩んでます
継承元Interfaceに実装されてるpublicメソッドのテストしたいのです
継承元Interfaceをnewして、newしたテスト対象クラスをinterface型にキャストすればいいのはわかるのですが
テスト対象クラスのprivate変数に値を代入してテストパターンを変えないといけないんです
プライベートアクセサを生成してもpublicメソッド使えないし、PrivateObjectをテスト対象クラスでnewして
GetInvokeメソッド使ってみたけど、対象メソッドが見つかりませんでしたotr
なにかうまい逃げ道はありませんでしょうか?
0399デフォルトの名無しさん
2011/01/31(月) 19:36:49サンプルコードを下記サイトでもどこでも貼ってから説明してくれ
ttp://ideone.com/
0400デフォルトの名無しさん
2011/01/31(月) 19:44:05よくわからないけどprivateメンバーをリフレクションで無理矢理変更してやればいいんでない?
0401デフォルトの名無しさん
2011/01/31(月) 20:00:41interface IMiserable
{
string Hiroyuki();
}
//継承先のクラス(テスト対象のクラス)
class AClass : IMiserable
{
private int _date = 20100131; ←テストコード中でアクセスして値を変えたいメンバ
public IMiserable.Hiroyuki() ←テストしたいメソッド
{
(処理)
return XXX;
}
//テストクラス中のテストメソッド
[TestMethod()]
[DeploymentItem("Doukaku.exe")]
public void SumWithStateTest02()
{
AClass_Accessor target1 = new AClass_Accessor();
IMiserable target2 = new AClass();
}
プライベートアクセサでやろうとすると
target1._dateは使えるけど、target1.Hiroyuki()やtarget1.IMiserable.Hiroyuki()は使えません
テスト対象クラスを宣言しようとすると、privateな_dateにアクセスできないのでうまくいきません
privateな_dateにアクセスしつつ、.IMiserable.Hiroyuki()をテストコード中で使う方法はないでしょうか?
ってかんじでわかるでしょうか??
0402デフォルトの名無しさん
2011/01/31(月) 20:07:030403デフォルトの名無しさん
2011/01/31(月) 20:09:45[Conditional("TEST")]
SetDate_TESTONLY()
{}
こんな感じ
0404デフォルトの名無しさん
2011/01/31(月) 20:10:31実装はもちろんリフレクションで
0405デフォルトの名無しさん
2011/01/31(月) 20:22:19VSTSをよく知らないんだけど、
AClass_Accessorは自動生成されるの?
0406デフォルトの名無しさん
2011/01/31(月) 20:24:17されます
テスト対象のメンバがプライベートなら勝手に作られます 使わなくともいいですが
0407デフォルトの名無しさん
2011/01/31(月) 20:34:30それならAClass_Accessorから元のクラスの参照へアクセスする手段が用意されてないとおかしいから調べてみたら?
0408デフォルトの名無しさん
2011/01/31(月) 20:36:44おとなしくNUnit使っとけよ
会社の命令だったら乙
0409デフォルトの名無しさん
2011/01/31(月) 20:41:390410デフォルトの名無しさん
2011/01/31(月) 20:45:37kwsk
0411デフォルトの名無しさん
2011/01/31(月) 20:51:55dynamic accessor = new DynamicAccessor(new AClass());
accessor._date = 100;
みたいな感じでdynamicでプロキシ使ってリフレクションを隠せる
DynamicObjectの実装は簡単だからMSDN読め
0412デフォルトの名無しさん
2011/01/31(月) 21:11:23�d
dynamicキーワードで調べてみるわ
0413デフォルトの名無しさん
2011/01/31(月) 21:26:36DynamicObjectをMSDNで調べろって書いてあるのになんでだよw
0414デフォルトの名無しさん
2011/01/31(月) 21:52:230415デフォルトの名無しさん
2011/01/31(月) 21:54:57で、これはXPサポートしてるの?
0416デフォルトの名無しさん
2011/01/31(月) 21:58:06必要システム
* サポートされているオペレーティング システム : Windows 7; Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Server 2008 R2; Windows Vista Service Pack 1; Windows XP Service Pack 3
o Windows XP SP3
o Windows Server 2003 SP2
o Windows Vista SP1 以降
o Windows Server 2008 (Server Core の役割のみ ではサポートされません)
o Windows 7
o Windows Server 2008 R2 (Server Core の役割のみ ではサポートされません)
* サポートされているアーキテクチャ:
o x86
o x64
o ia64 (WPF など、一部の機能は ia64 ではサポートされていません)
* ハードウェア要件:
o 最小限の推奨要件: Pentium 1 GHz 以上、512 MB 以上の RAM
o ディスクの最小空き容量:
+ x86 ? 900 MB
+ x64 ? 2.1 GB
0417デフォルトの名無しさん
2011/01/31(月) 22:01:34C#4.0も.NET4もVS2010でないと使えないぞ
0418デフォルトの名無しさん
2011/01/31(月) 22:11:170419デフォルトの名無しさん
2011/01/31(月) 22:13:05NUnitでどう解決すんだよ
0420デフォルトの名無しさん
2011/01/31(月) 22:21:37>>411じゃね?
それかリフレクション
VSTSはよく知らんけど、〜_Accessorなんて
テスト中に違うクラスのプライベートメンバ使いたくなったら速攻破綻するのによくやるよな
そのクラスの〜_Accessorも生成してファイルが増えて複雑になる一方だ
0421デフォルトの名無しさん
2011/01/31(月) 22:21:54GetTypeで元の型が取得できるようですが・・・
0422デフォルトの名無しさん
2011/01/31(月) 22:27:07元の型 b = (元の型)a;
失敗する可能性があるなら
元の型 b = a as 元の型; としてnullかどうか調べる
元の型が分からない場合は元の型に戻す必要はないはず
0423デフォルトの名無しさん
2011/01/31(月) 22:32:27言語設計上失敗じゃないのか?
0424デフォルトの名無しさん
2011/01/31(月) 22:38:14失敗する可能性があるダウンキャストをするとき、javaだと
if (a instanceof Type) { (Type)a … }
が頻出パターンなんだけど、これだとinstanceofとキャストで二回型チェックが行われて非効率なので
わざわざ導入された。
0425デフォルトの名無しさん
2011/01/31(月) 22:38:34objectのままだと必要な情報が見えなくて、元の型もその調べたい場所だと
範囲は決まってますが数種類あるんです
やっぱりif文などでTypeを調べて処理するしかないですかね?
0426デフォルトの名無しさん
2011/01/31(月) 22:39:21VSがテスト用に自走生成するだけだぜ。
多くの場合は自分で書かなくてもいいから楽だけどな。
ファイルは一つだけだったと思うよ。
追加でほしければ自分で追加もできたような。
0427デフォルトの名無しさん
2011/01/31(月) 22:40:06コンストラクターでラップするインスタンス指定できる
さらにはTargetプロパティも公開してるからなんとでもなるじゃん
0428デフォルトの名無しさん
2011/01/31(月) 23:04:320429デフォルトの名無しさん
2011/01/31(月) 23:07:280430デフォルトの名無しさん
2011/01/31(月) 23:17:33リフレクションが使われるようなケースの中にはコード生成する方が適切な場合も多いけど、
この場合は動的にやれるならそのほうが適切だろ
0431デフォルトの名無しさん
2011/01/31(月) 23:17:42それが書けるようになるまでちょっとした試行錯誤が必要だしなwww
0432デフォルトの名無しさん
2011/01/31(月) 23:20:11コード書かずに静的にやれる、以上
0433デフォルトの名無しさん
2011/01/31(月) 23:37:190434デフォルトの名無しさん
2011/01/31(月) 23:42:23最近のMSのサンプルなんかでもテスト用モックの動的自動生成とかやってるけど
当然そういうのは複雑な構造になるとダメ
でもそもそもテストを考えるならa.b.cみたいに階層掘らせるような構造にしちゃダメ
0435デフォルトの名無しさん
2011/01/31(月) 23:52:50簡単なものをわざわざ複雑にしようとしているようにしか見えない
ただのアクセサなら>>411で十分だと思うんだが・・・
0436デフォルトの名無しさん
2011/02/01(火) 00:06:46プライベートアクセサで、「元クラスのパブリックメソッド」以外に、「interfaceを継承して元クラスに明示的に実装されてるメソッド」
にアクセスできましたか?できたらコード例をお願いします><
0437デフォルトの名無しさん
2011/02/01(火) 00:55:550438401
2011/02/01(火) 00:56:48明日やってみます
ありがとうございました
※当方の環境は.net3.0なのでDynamicObjectは使えない
using System.Reflection;
//テストクラス中のテストメソッド
[TestMethod()]
[DeploymentItem("Doukaku.exe")]
public void TestMethod01()
{
AClass c1 = new AClass();
Type tp = typeof(AClass);
FieldInfo info = tp.GetField("_date", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Instance);
info.SetValue(c1,20110201);
IMiserable it = (IMiserable)c1;
string actual = it.Hiroyuki();
string expected = "aaa";
Assert.AreEqual(actual,expected);
}
0439401
2011/02/01(火) 01:33:28なおしました
using System.Reflection;
public void Method01()
{
AClass c1 = new AClass();
Type tp = typeof(AClass);
ConstructorInfo ci = tp.GetConstructor(new Type[]{});
object target = ci.Invoke(new object[]{});
FieldInfo info = tp.GetField("_date", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Instance);
info.SetValue(target,20110201);
IMiserable it = (IMiserable)c1;
//デバッグ
label1.Text = (int)info.GetValue(target).ToString();
label2.Text = it.Hiroyuki()
}
以上のコードで、interfaceを継承したクラスのinterface側メソッドのテストができました
(privateメンバへのアクセスあり)
0440427
2011/02/01(火) 06:57:10var accessor = new AClass_Accessor();
var target = (AClass)accessor.Target;
var miserable = (IMiserable)target;
あるいは
var target = new AClass();
var miserable = (IMiserable)target;
var accessor = new AClass_Accessor(new PrivateObject(target));
0441デフォルトの名無しさん
2011/02/01(火) 09:25:12何がアクセスできましたかだよ
.net1.0からインターフェイスの明示的な実装へのアクセスする場合は
そのインターフェイス型にキャストするって決まってんだろ
お前の勉強不足を俺らのせいみたいに言うんじゃねーよ屑が
0442デフォルトの名無しさん
2011/02/01(火) 09:41:280444デフォルトの名無しさん
2011/02/01(火) 12:42:280445デフォルトの名無しさん
2011/02/02(水) 06:45:07以前はTextRendererのMeasureTextをつかっていたのですが
無くなってしまったので代わりになるものを教えてください
0446デフォルトの名無しさん
2011/02/02(水) 06:52:12Graphcis.MeasureString()じゃね?調べてないから詳しくは知らん
0447デフォルトの名無しさん
2011/02/02(水) 06:59:01ありがとうございます、試してみます
0448デフォルトの名無しさん
2011/02/02(水) 10:03:00FormattedTextやglyphTypeface.AdvanceWidths利用すると
TextRenderer.MeasureTextの文字幅とは違った値が返されます
また、TextBlock.ActualWidthでは計測自体が出来ず、0が返ってきます
デザインされた文字ではなく単にTextBoxにMS Pゴシック,12ポイントで
表示した際の文字幅が欲しいだけなのですが、何か良い方法はないでしょうか
0449デフォルトの名無しさん
2011/02/02(水) 10:41:03ただしWPFのフォントサイズはpx単位だからptからは変換する必要がある px=pt*96/72
ちなみにTextRenderer.MeasureTextとかGraphics.MeasureStringは周囲の余白を含むので大きくなりがち
0450デフォルトの名無しさん
2011/02/02(水) 11:06:09ありがとうございます、無事文字幅を取得することが出来ました
emSizeの単位を理解していなかったことと、
TextFormattingMode.Displayを指定していなかったことが、
正しいpixelを取得できなかった原因でした
0451デフォルトの名無しさん
2011/02/02(水) 15:41:04FormattedTextを使って、文字幅の取得を行い、空白などを挿入することでMS Pゴシック,12ポイントの環境下で
アスキーアートを整形するプログラムをWPFで作っていたのですが、FontFamily="MS PGothic"と指定しても
TextBoxに表示した際に空白の幅が本来の半角5、全角11の通りになりません
WinFormのTextBoxでは正常な横幅でAAが表示されていたのですが、
WPFで同じように表示するにはどうすれば良いでしょうか
0452デフォルトの名無しさん
2011/02/02(水) 17:34:27TextBlock系使ってる限り逃れられない
0453デフォルトの名無しさん
2011/02/02(水) 17:42:080454デフォルトの名無しさん
2011/02/02(水) 19:27:55Bitmapに描画してWPFのBitmapSourceにコピーするだけ
0455デフォルトの名無しさん
2011/02/02(水) 19:33:100456デフォルトの名無しさん
2011/02/02(水) 19:46:09まじかよ、MSの新技術はほんとアテにならないな
0457デフォルトの名無しさん
2011/02/02(水) 20:05:270458デフォルトの名無しさん
2011/02/02(水) 20:12:02実際のWPFはどうなんですか?
0459デフォルトの名無しさん
2011/02/02(水) 20:38:23将来性で言うと、たぶん、今WPFが持ってる機能が全部Silverlightに引き継がれていって、
そうなった時にはWPF消える(けど、今身に着けた知識は使える)。
0460デフォルトの名無しさん
2011/02/02(水) 21:01:41WPFが消えることはない。WPFが消えたらSilverlightも自動的に消える。
0461デフォルトの名無しさん
2011/02/02(水) 21:04:120462デフォルトの名無しさん
2011/02/02(水) 21:47:25それって今C#で書かれてるWPFの機能をアンマネージコードで実装しなおすことを意味するんだよな
SilverlightってWinFormsなんかよりずっとアンマネージコードに依存してるんだぜ
0463デフォルトの名無しさん
2011/02/02(水) 23:42:55後、ランタイムサイズを抑える都合で
かなりイベントやライブラリを削ってる。
せめて、イベントだけでもWPFと等価にして欲しいよなあ。
0464デフォルトの名無しさん
2011/02/03(木) 11:29:280465デフォルトの名無しさん
2011/02/03(木) 11:36:160466デフォルトの名無しさん
2011/02/03(木) 11:41:120467デフォルトの名無しさん
2011/02/03(木) 11:44:270468デフォルトの名無しさん
2011/02/03(木) 11:52:56AAかけるからしかたないんじゃないの?
0469デフォルトの名無しさん
2011/02/03(木) 11:54:570470デフォルトの名無しさん
2011/02/03(木) 13:58:570471デフォルトの名無しさん
2011/02/03(木) 14:06:040472デフォルトの名無しさん
2011/02/03(木) 14:32:09ttp://blogs.msdn.com/b/text/archive/2010/04/13/blind-comparison-vs2008-vs-vs2010.aspx
0473デフォルトの名無しさん
2011/02/03(木) 17:13:33webBrowser.Navigateを使ってURL呼び出しした後、webBrowser1.Refresh(WebBrowserRefreshOption.Completely)で
更新をかけていますがキャッシュを読み込んでいるようです
下記URLを参考にして
ttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200409/04090095.txt
"http://www.hoge.net/hoge.pl?dummy="+DateTime.Now.ToString("yyyyMMddHHmm")
の形でやってみてもキャッシュを読み込む結果になってしまいました。
当方環境は
CPU:Core 2 Duo E8600
OS:WinXP 32bit
メモリ:3.25G
使用ソフト:VisualStudio2008
private void reloadpage()
{
while (stopflag == 0)
{
reloadpage_bg();
if (stopflag == 1)
{
break;
}
else
{
Thread.Sleep(60000);
}
}
stopaction();
}
(続く)
0474デフォルトの名無しさん
2011/02/03(木) 17:15:33{
string webad = "";
webad = "http://www.hoge.net/hoge.pl?dummy="+DateTime.Now.ToString("yyyyMMddHHmm");
webBrowser1.Navigate(webad,false);
webBrowser1.Refresh(WebBrowserRefreshOption.Completely);
System.Text.Encoding dest = System.Text.Encoding.UTF8;
len = (int)webBrowser1.DocumentStream.Length;
string webcode ="";
//webcode = webBrowser1.DocumentText;
byte[] buf = new byte[len];
webBrowser1.DocumentStream.Read(buf, 0, len);
Encoding ec = Encoding.GetEncoding(webBrowser1.Document.Encoding);
byte[] sjis_temp = System.Text.Encoding.Convert(ec, dest, buf);
string sjis_str = dest.GetString(sjis_temp);
try
{
int cback = sjis_str.IndexOf(")</span>");
webcode = sjis_str.Remove(cback);
int cfront = webcode.IndexOf(" <span>(");
webcode = webcode.Remove(0, cfront + 13);
webcode = DateTime.Now.ToString("D") + "," + DateTime.Now.ToString("t") + "," + webcode;
StreamWriter writer = new StreamWriter(fnam, true, Encoding.GetEncoding("Shift_JIS"));
writer.WriteLine(webcode);
writer.Close();
}
catch
{
stopflag = 1;
}
}
0475デフォルトの名無しさん
2011/02/03(木) 17:16:570476デフォルトの名無しさん
2011/02/03(木) 19:37:460477デフォルトの名無しさん
2011/02/03(木) 20:09:480478デフォルトの名無しさん
2011/02/03(木) 20:27:420479デフォルトの名無しさん
2011/02/03(木) 20:41:03object.Equalsで比較するような動作をさせたいです。
0480デフォルトの名無しさん
2011/02/03(木) 20:42:35両方オーバーライドせんと警告が出るだろ?
0481デフォルトの名無しさん
2011/02/03(木) 20:44:45StreamReaderでtxt形式ファイルのテキストを取得する感じで、
doc形式ファイル内のテキストをstringとして取得したいのですが、
関数など無いものでしょうか……?
0482デフォルトの名無しさん
2011/02/03(木) 20:49:15思いついたアイデアがあるけど詳しくないので今調査中
知ってる人があったら補足をよろしく
以前何かの関係で調べてた際にIEはキャッシュの再取得をなかなかしない設定だった
(なるべくローカルのキャッシュを利用)する傾向が高いとかで意図的に期限などをいじらないとだめだとかなんとか
で、今その期限をいじれそうなところ調べてるんだが(たぶんwebBrowser.Uriのところ)・・・
0483デフォルトの名無しさん
2011/02/03(木) 20:51:36Microsoft.Office.Interop.WordのRange.Textあたりじゃないか?
Office非依存にしたいのなら知らん
0484デフォルトの名無しさん
2011/02/03(木) 21:04:17webBrowser.Navigateにオーバーロードで追加ヘッダとか入れれるジャン・・・
0485デフォルトの名無しさん
2011/02/03(木) 21:06:03既定ではHashSetの比較はEqualityComparer<T>.DefaultのEquals
つまりTがIEquatable<T>を実装してなかったらGetHashCode/Equalsを使う
0486デフォルトの名無しさん
2011/02/03(木) 21:20:02webBrowser1.Navigate("http://www.hoge.com",null,null,"Cache-Control: no-cache");
0487デフォルトの名無しさん
2011/02/03(木) 21:26:39ありがとうございます
早速試してみます
0488デフォルトの名無しさん
2011/02/03(木) 21:27:35ありがとう。
なるほど、コンストラクタで指定するんですね。
0489487
2011/02/03(木) 21:45:380490デフォルトの名無しさん
2011/02/03(木) 21:59:34古い日付を与えて無理やりバージョン
というかこの辺はあまり利用してる人がいないのか国内に情報なさそうなので
MSが配ってるソースをみるとかしないと中でどうやってるかさっぱりわからん
あとhttpヘッダーの勉強してくれ
0491デフォルトの名無しさん
2011/02/03(木) 22:05:150492481
2011/02/04(金) 18:20:48返答が遅くなりましたが本文の取得に成功しました。
ありがとうございます。
ただ、テキストボックスの内容も必要との事で、
方法をググって探しています。
0493デフォルトの名無しさん
2011/02/04(金) 22:04:08本文と上手くつなぎ合わせる方法は知らない
0494デフォルトの名無しさん
2011/02/07(月) 18:11:470495デフォルトの名無しさん
2011/02/08(火) 01:22:46こら〜 モコナ〜!
0496デフォルトの名無しさん
2011/02/08(火) 01:28:210497デフォルトの名無しさん
2011/02/08(火) 01:35:06サーバはpng画像を定周期で出力、Webはaspx.csでサーバが出力した画像パスからバイト配列にしてResponseにして返す
って処理なんですけど、ファイルアクセス競合ってどうやって防ぐべきなんでしょう?
サーバ側は画像保存前後でlockファイルとか作って、web側はlockがある場合は消えるまでリトライ、とか考えたんですけど
結局競合する瞬間はあるし…。
JMeter使って検査するとIOException出ちゃいます。
みなさんこういう場合ってどういう対処しますか?
0498デフォルトの名無しさん
2011/02/08(火) 03:31:500499デフォルトの名無しさん
2011/02/08(火) 07:59:530500デフォルトの名無しさん
2011/02/08(火) 08:11:14ロックファイルを開けたらそのまま所有して操作するって風にしないと競合は防げない
まぁMutexのほうが便利ですけおね
0501デフォルトの名無しさん
2011/02/08(火) 09:48:190502デフォルトの名無しさん
2011/02/08(火) 11:37:49とりあえず、4.0 をインストールしたら正常に動いたのですが、
これは、XPの問題なのでしょうか?それとも、開発側のビルドの問題でしょうか?
開発環境は、Vista、VS2008で、ビルド対象のフレームワークは3.5にしてあります(4.0 は選択できない)。
0503デフォルトの名無しさん
2011/02/08(火) 11:41:21インストーラのFWが4.0になってると思われ
0504502
2011/02/08(火) 11:51:02早速のレスありがとうございます。
今のところEXEで配布しているため、インストーラは使用していません。インストーラが .NET を使う場合は注意なのですね。
また、LINQを使っていないEXEに関しては、対象を3.5にしてビルドをしても、2.0 だけ入っていれば、動きました。
0505デフォルトの名無しさん
2011/02/08(火) 11:54:240506デフォルトの名無しさん
2011/02/08(火) 12:04:260507502
2011/02/08(火) 12:09:05「プログラムと機能」には、「.NET Framework 4.0 Extended」など、4.0 とつくものが 5つ入っています。
以前2010をインストールして、すぐに削除したこともあり、その影響でしょうか。
>>506
特に参照設定の追加は行っていないです。
0508502
2011/02/08(火) 12:35:57すみません。原因がわかりました。
難読化する際に、4.0 の ilasm.exe を使うように設定しておりました。
お手数おかけしました。
0509デフォルトの名無しさん
2011/02/08(火) 15:45:590510デフォルトの名無しさん
2011/02/08(火) 17:28:19ここにファイルのデータを直接渡すことは可能でしょうか?
一度bytesに読み込んだ後にGCHandle.AllocでPinすれば渡せることを確認しています
ファイルマップなどを使用して直接渡すことはできないでしょうか・・・
0511デフォルトの名無しさん
2011/02/08(火) 17:35:20Win32APIでファイルマッピングしても良いし
.NET 4ならSystem.IO.MemoryMappedFiles名前空間のクラス使っても良い
0512デフォルトの名無しさん
2011/02/08(火) 17:47:30早速やっているんですが、データの先頭を表すIntPtrが取得できません
MemoryMappedViewStreamのPositionPointerでbyte*が取れそうなんですが、
実行するとNotSurpportedExceptionが発生します。
また、できればunsafeコードを使用しないでやりたいのですが、
どうやればデータの先頭のIntPtrが取れるんでしょうか?
0513デフォルトの名無しさん
2011/02/08(火) 18:06:250514デフォルトの名無しさん
2011/02/08(火) 18:13:15unsafeは避けられそうにないですが、これで満足です。
ありがとうございました!!
0515デフォルトの名無しさん
2011/02/08(火) 20:56:41画像処理とかやる時、全然違うぞ
0516デフォルトの名無しさん
2011/02/08(火) 21:13:48ポインタ触るよりMarshal.Copyの方が速いけどな
0517デフォルトの名無しさん
2011/02/08(火) 21:23:30いつ見てもいい名前だ
0518デフォルトの名無しさん
2011/02/08(火) 22:45:540519デフォルトの名無しさん
2011/02/08(火) 22:53:110520デフォルトの名無しさん
2011/02/08(火) 22:54:50代替品はないのか?
0521デフォルトの名無しさん
2011/02/08(火) 23:14:38いいツールだから自分はお金出してもいいけども、
初心者のハードルは上がっちゃうよなぁ。
0522デフォルトの名無しさん
2011/02/08(火) 23:16:09なんかその辺の流れはどうにもならない見たいねw
フリーで作る->多機能化その他で有料化へ踏み切る->他所が・・・
0523デフォルトの名無しさん
2011/02/08(火) 23:16:370524デフォルトの名無しさん
2011/02/08(火) 23:17:565,6年は先でしょ
0525デフォルトの名無しさん
2011/02/08(火) 23:54:460526デフォルトの名無しさん
2011/02/09(水) 23:16:24ありがとうございました。
今回私が作ったポーカーです。
駄作です・・・
バンバン言ってくれてかまいません。
遊び方のテキストが参照が違っているので、直してくれれば嬉しいです。
高校の授業で教わるのは無理がありすぎる・・・
http://uproda11.2ch-library.com/11284934.zip.shtml
DLkey はpoker です
0527デフォルトの名無しさん
2011/02/10(木) 00:06:43高校ってそんな暇なのか?(中学校の時には個人的にやってたけど、高校じゃそんな暇なかったな…僕が無能だからか)
とりあえず、ぱっと思いついたことを箇条書きにすると
・変数名はもっとわかりやすく。ましてや関数外で宣言されたメンバー変数なんて。
・確かに日本語は使えるけどさ…使わない方がよくね?
・リソースファイルから引っ張ってくるのも良いけど、同じサイズの画像なら、ImageListを使う手もあった
・カードの画像は一度、配列に放り込んで二次元配列なりで使えば、遙かに楽になるな。
ジョーカーとかは14番目のカードとするか、ラッパーになるような関数内で特殊処理するなりして。
・PictureBoxも配列・リストに放り込んでおくなりするとよかった。
・細かいところだけど、関数の途中で変数宣言するのはイクナイ癖。やるにしても、ブロックを作ってその中にするべき
・というか、isFlashなんていう大量の変数を作るくらいなら、列挙型なり、集合型…はC#にはないか、まあそいつらを使うと良い。
・i i2 i3なんて変数をforループのたびに作っちゃうなんて…先生もっと生徒のサポートしろよ
・usingはC#特有とはいえ、せめてtry finallyぐらい指示してあげなさいよ>先生
・c1 c2…なんて変数を宣言した時点で配列に仕様と思わなかったの? というかなんかレジスタっぽくって嫌。アセンブリ嫌い
・つうか、何このスクリプトで出力しました的なコードは…怖いよ
とは言え、よく頑張った。
パソコンに普段触れてないやつが初めてやったプログラミングにしては上出来な方だと思うよ。
ある意味、理想的な「初心者が組んだコード」を地でいっててすばらしい。
ま、そうなる前に周りの人が止めるから、そういうことにはまずならないんだけどな。
0528デフォルトの名無しさん
2011/02/10(木) 00:27:32ですよね・・・
なんとなく分かるところと分からないところがありますが
私自身もなんでこうなった感じはあります・・・
高校じゃこれが限界・・・
先生はあんまりサポートしない
っていうか個人でがんばるみたいな
まあ工業系の高校で、しかも電気の情報だから勉強してみよかみたいな?
先輩たちもやってるみたいだし
三年の一年間だけ・・・
0529デフォルトの名無しさん
2011/02/10(木) 00:36:10少ない小遣いで参考書吟味して独学する覚悟のないやつがプログラムやるんじゃねーよボケ
0530デフォルトの名無しさん
2011/02/10(木) 00:47:45プログラマーとして働く事になる覚悟がないやつは子供の頃からプログラムやっちゃいけない、も追加
>>528
高専の電気情報工学科と工業高校は別な? 工業高校ならそれでも仕方ないかな?
高専ならまずい。もう少し、学力というか、学ぶ力を身につけないと。
0531デフォルトの名無しさん
2011/02/10(木) 00:59:17ソース見ないでケチつけるのもなんだけど、なぜイクナイのか意味不明
0532デフォルトの名無しさん
2011/02/10(木) 01:17:16日本語使うなって言ってるけど、
微妙な英語力でラノベの超能力名みたいな英語書くくらいなら
日本語で書いたほうがいいに決まってる
0533デフォルトの名無しさん
2011/02/10(木) 01:24:120534デフォルトの名無しさん
2011/02/10(木) 01:43:320535デフォルトの名無しさん
2011/02/10(木) 01:49:04教師に期待する方が・・・
日本式横並び詰め込み方式さえできれば優秀とされる使えない人種なのに
0536デフォルトの名無しさん
2011/02/10(木) 01:54:31C# はいっぱい文法があるけど、どれもコードの綺麗さを保つ上で重要なものが多い。
徐々に覚えていくといいよ。
まあ、ちゃんと動いてるんだから上出来。俺の初心者の時を思い出した。。
バグが消えないんだよな。。今になっても俺はバグと戦ってるけど。
最低限、ブレークポイントをおいて、ウォッチ式使ってデバッグ出来るようにしておくといい。
ぜんぜん違う。
あと、擬似乱数生成器についてちゃんと理解できてない気がした。
Random rand1 = new Random(); // new Random(1);
Random rand2 = new Random(); // new Random(2);
for (int i = 0; i < 10; i++){
Console.WriteLine(rand1.Next());
Console.WriteLine(rand2.Next());
Console.WriteLine();
}
これを動かしたら何がいけなかったかわかると思う。(コメントの部分と差し替えてやってみて)
0537デフォルトの名無しさん
2011/02/10(木) 01:56:33>>・細かいところだけど、関数の途中で変数宣言するのはイクナイ癖。やるにしても、ブロックを作ってその中にするべき
こういうのは論外ですね
Cがそれしかできなかったからって古い悪習を強要するのはやめろ
こういうやつが開発現場にいると激しく開発効率が下がるってしばしばコラムでも糾弾の対象になる
>>・usingはC#特有とはいえ、せめてtry finallyぐらい指示してあげなさいよ>先生
これも論外
0538デフォルトの名無しさん
2011/02/10(木) 02:04:35何でもかんでも日本語って人はさすがに少ないけど、enum のメンバーとかは普通に日本語使う人多い。
変数は使う場所の直前で定義するのは C# に限らず、C++ の頃から言われてること。
関数の先頭で宣言とかありえない。
using は普通に教えた方がいいと思う。
0539デフォルトの名無しさん
2011/02/10(木) 02:12:47先頭は英語で初めて日本語を続けるようにするとVisualStudioのインテリセンスが使いやすくなる
0540527
2011/02/10(木) 02:26:22たしかDelphiかなんかの参考書に、どうしても途中で宣言したくなるようなことがあれば
その関数が必要以上に長く・複雑になってるから
別の関数に分けられないかどうか考えろって話だった希ガス
0541デフォルトの名無しさん
2011/02/10(木) 02:28:51こんな感じで先頭に$がつけられたらいいのにといつも思う
今は_を付けてるけどこれってprivate変数と同じ意味で気持ち悪いのよね
0542デフォルトの名無しさん
2011/02/10(木) 02:35:13馬鹿初心者に触ってる時点でお前のレベルが知れる
0543527
2011/02/10(木) 02:36:17なぜに二重引用かわからないけど、とりあえず
>>>・usingはC#特有とはいえ、せめてtry finallyぐらい指示してあげなさいよ>先生
>これも論外
え?それじゃあ、例外機構いらないって話?
何のためにtry finallyを拡張したusingまで用意されてると思ってるの?
確保したりソースは確実に解放できるようにすべきじゃね?
それとも例外機構がある言語でも戻り値が-1か調べてやれってこと?
それこそ昔の悪しき習慣だと思うんだが?
>>539
それ良いよね。個人的なプログラムを書くときに、それ使ってる。
0544デフォルトの名無しさん
2011/02/10(木) 02:40:02死ね
死んで速やかにふらっとに行け
ここは初心者相手に講釈垂れるスレじゃない
0545デフォルトの名無しさん
2011/02/10(木) 02:42:120546デフォルトの名無しさん
2011/02/10(木) 02:47:22市ねとかいってるほうが、さっさとどこかにいったほうが吉。
0547デフォルトの名無しさん
2011/02/10(木) 02:52:510548デフォルトの名無しさん
2011/02/10(木) 02:53:03>>544>>545みたいな荒らしの相手してやるだけ時間の無駄よ
0549デフォルトの名無しさん
2011/02/10(木) 02:53:29>>527みたいに間違ったことを平気で広めるやつは害悪すぎる
マジでやめてくれ
初心者は真に受けちまうからな
あとスレ違いであることは間違いない
0550デフォルトの名無しさん
2011/02/10(木) 02:57:18初心者は初心者スレ行けよ
しょーもない議論でレス流されたら迷惑
0551デフォルトの名無しさん
2011/02/10(木) 06:58:08マ歴2年くらい?
まだまだ人に教えられるレベルに無いよ
あんま自惚れちゃいかん
0552デフォルトの名無しさん
2011/02/10(木) 08:54:54ただしみながわさんは除く
0553デフォルトの名無しさん
2011/02/10(木) 08:57:53こんな素晴らしいアドバイスを下さる大先生がお書きになったコードが是非みたいですマジで
0554デフォルトの名無しさん
2011/02/10(木) 09:28:00遊んでみた
最初から並び替えといてくれると親切かな?と思った
きたままでFlashだったんで交換なしで”交換”ボタンおしたんだけど
カードが小さい順に入れ替わって何となく違和感を感じた
いきなりでこれだけ出来りゃ十分だとおもうよ
自分が教えてるなら
カード1枚の情報をクラスに分離してやってみて
とか言うかも
0555デフォルトの名無しさん
2011/02/10(木) 11:05:51アセンブリ参照についての質問で、C#あんまり関係ないかもだけどどこで聞いたらいいかわからないのでお願いします
アセンブリA、Bと、メインプログラムXがある
XはA、Bを参照し
BはAを参照している
Bが参照しているAは、Xが参照しているAより古いバージョンのものである
この状況で古いAと新しいAがGACに登録されていれば正しく動作するものの、
実際の運用ではサイドバイサイドで運用したいと思っています
そこで、Xから参照するAのみ、厳密にパスなどを指示すればできると考えましたが
app.configにそれらしい設定をすると、BからもそちらのAを見に行ってしまい、バージョンが異なりエラーとなります
Xから参照するAのみパスを指定するにはどうすればいいのでしょう
もしくはほかの方法がありましたらお願いします
0556デフォルトの名無しさん
2011/02/10(木) 11:27:000557デフォルトの名無しさん
2011/02/10(木) 11:30:55以下の指定でうまくいきました。お騒がせしました
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="A" culture="neutral" publicKeyToken="xxxxxxxxxxxxx"/>
<codeBase version="4.0.0.0" href="A_New.dll"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="A" culture="neutral" publicKeyToken="xxxxxxxxxxxxx"/>
<codeBase version="2.0.0.0" href="A.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
0558デフォルトの名無しさん
2011/02/10(木) 16:27:44すみません・・・
きちゃいました
>>554
ありがとうございます。
実は最初のところでも並び替えしようとしてたんですけど、
なぜかできませんでした・・・
時間もありませんでしたし・・・
そうですね・・・
すべて自分が悪いんです・・・
質問者に答えてくれる皆さんが素直にすごいと思いました。
ブレークポイントってすごく便利ですよね。
今回何度も助けられました。
0559デフォルトの名無しさん
2011/02/10(木) 16:41:250560デフォルトの名無しさん
2011/02/10(木) 18:04:390561デフォルトの名無しさん
2011/02/10(木) 23:40:06自分は根本的なところが分かっていないので何を直せばそのエラーが消えるかさっぱりわかりません。
なので10分くらい前の状態に戻ってやり直そうと思ったのですが、うまくいきません。
最初はアンドゥを繰り返してみたのですが何故か元に戻りません。
ならばとりあえずいったんセーブしないで終了して、今回の作業を開始する前のファイルで起動すれば前の状態からできるだろうとやってみたので
すが、何故か、前の状態のが残っていません(勝手にセーブされている?)
一体こういう場合どうすればいいでしょうか?
0562デフォルトの名無しさん
2011/02/10(木) 23:57:190563デフォルトの名無しさん
2011/02/11(金) 00:00:350564デフォルトの名無しさん
2011/02/11(金) 00:00:56あるいはデータセット他の大物クラスを破壊したとか
0565デフォルトの名無しさん
2011/02/11(金) 00:01:53デバッグを始めると保存されたんじゃなかったかな・・・?
差分を取ったりと管理してなければプロジェクト丸ごとコピーして履歴管理するしかないと思うよ
そのやってるプロジェクト一式は公開できる?
その書き込みだけでは何が起きてるかなんてさっぱりわからん
0566デフォルトの名無しさん
2011/02/11(金) 00:06:20Formのコードだったら、デザイナのコードを開いてundoしてみ?
0567デフォルトの名無しさん
2011/02/11(金) 00:06:53外部のメーカーのライブラリ導入してるときとかに起こる
0568デフォルトの名無しさん
2011/02/11(金) 00:13:47エラーを全部記録してアップしてみれば?
0569561
2011/02/11(金) 00:14:00本当に助かります。
まず、一回、ビジュアルスタジオ自体を終了しているのでアンドゥがもう出来ません。
おっしゃるとおり、こまめにバックアップ取るべきだということを痛感しました。
ほんとに事あるごとにとらないと私のような人間には対処不能になってしまい、恐ろしいです。
デバックすると保存されるんですね。それは知りませんでした。
以後気をつけます。
一応、ソースを公開します・・・・。
http://amer.web.fc2.com/owata.txt
もう何がなにやら・・・・。
0570デフォルトの名無しさん
2011/02/11(金) 00:16:300571デフォルトの名無しさん
2011/02/11(金) 00:23:59だね、そこでクラスが終わっちゃってるからエラーが出てる
それにしてもずいぶん古い形式のソースだな
もしかしてVS2003とかじゃね?
0572デフォルトの名無しさん
2011/02/11(金) 00:32:37会社で2003使うように強制されてるのか?
だとしたら哀れすぎる
2005から格段に良くなってるのに
ジェネリックも使えないし
そんな会社嫌すぎる
0573デフォルトの名無しさん
2011/02/11(金) 00:36:120574デフォルトの名無しさん
2011/02/11(金) 00:40:062分で解決・・・・・・・・orz
ありがとうございました・゚・(つд`)・゚・
VS2003?
よく知らないのですが、同じく2chで教えてもらったタダで使えるというビジュアルC#2010エクスプレスというのを
マイクロソフトからダウンロードして使っております。
会社ではなく個人で使ってます。
あれ?もっといいのがある・・・???(゚Д゚;)
0575デフォルトの名無しさん
2011/02/11(金) 00:41:42Visual C# Express は Visual Studio のサブセット。
0576574
2011/02/11(金) 00:55:33その教えてもらったスレの人を悪く言うつもりもないのですが、エクスプレスだと色々足りない機能があるという
説明がMSのサイトにあったので、そういうのがないエクスプレス使っても大丈夫?とスレで聞いたら、「その足りない
機能というのはお前程度なやつには不要な機能。エクスプレスで充分」と言われました。
だから、エクスプレスでいいのかな〜と思ったのですが、うーん。
ジェネリックとラムダ・・・・。
ちょっと調べて出直してきます。
0577デフォルトの名無しさん
2011/02/11(金) 00:55:37クラスにあるはずのものが無いってエラーなので、}が多すぎるのを疑って、
あとはpublic class Form1の横の「-」をクリックして場所を特定すれば解決だよ
VS2010で作ると、designer.csってのが出来るはずなんだけど、どこかのコードのコピー改変かな?
0578デフォルトの名無しさん
2011/02/11(金) 00:58:33caseの使い方が恥ずかし過ぎて
痛々しいコードだな
0579デフォルトの名無しさん
2011/02/11(金) 00:59:02絶対おかしい
ビジュアルC#2010エクスプレスならジェネリックもラムダも全部使えるし
そんなソースが自動生成されることはあり得ないし
絶対2003で作ったソースだろ
0580デフォルトの名無しさん
2011/02/11(金) 01:06:11とりあえず初心者さんはC#の初心者用スレがあるからそっちいってくれ
初心者のコードの添削とかしょうもない講釈とか始まるからうざいんだよ
0581デフォルトの名無しさん
2011/02/11(金) 01:10:17ちなみにExpressといえど出欠大サービス(死語)だぞ
まあある程度ごりごり書いて公開とかのになると難読化してー
とかクラス図作りてーとかでExpressは不満に思うけどそこまでまずはいかねーだろうし
仕事で使うなら会社に買ってもらえ(もしくは買え)ってところだな
0582デフォルトの名無しさん
2011/02/11(金) 01:13:58普通配列使う罠
0583デフォルトの名無しさん
2011/02/11(金) 01:17:51うん、お前程度にはエクスプレスで十分。
Expressかどうかの問題よりも、バージョンの問題じゃね?って言われてるわけよ、今は。
2003→2005→2008→2010と、使える機能増えてるわけだけども。
0584デフォルトの名無しさん
2011/02/11(金) 01:26:33初歩的すぎて誰の得にもならない助言とか時間の無駄だし
そういうの初心者スレでやるべきだと思うけどなぁ。
何でそんなに初心者構うのか分からない。
…また騒ぎになるからこれ以上はやめとこ!
0585デフォルトの名無しさん
2011/02/11(金) 01:30:30まー古いバージョンのIDE入れてるなら削除しちゃった方がいいけどね
WinForm書くのであればVC#2008でも十分だしな
OSやマシン次第では2008の方がサクサク動くし
最近はSL関連書いてるからVWD2010使ってるけどもっさり気味・・・
0586デフォルトの名無しさん
2011/02/11(金) 01:34:24別にスレ違いでも、過密スレでもないのに騒ぐなよ
0587デフォルトの名無しさん
2011/02/11(金) 01:37:390588デフォルトの名無しさん
2011/02/11(金) 02:03:27「今日は大サービスで出勤したことにしてやる」なんて良い上司だな
0589デフォルトの名無しさん
2011/02/11(金) 04:08:03for(int i = 0; i < 10; i++) {
int j = r.Next(i + 1);
num[i] = num[j];
num[j] = i + 1;
}
ってやれば空の配列に数字を入れながらランダムにできる
0590デフォルトの名無しさん
2011/02/11(金) 08:49:220591デフォルトの名無しさん
2011/02/11(金) 09:47:490592デフォルトの名無しさん
2011/02/12(土) 02:19:490593デフォルトの名無しさん
2011/02/13(日) 13:36:19ポインタの使えないC#ではどのように記述すればよいでしょうか
具体的にはXNAで描画するときの頂点配列verticesなんですが
今は重いデータと軽いデータ両方の頂点配列をpublic宣言して
そのクラス達を管理してる外側で描画時にif文でDrawUserPrimitivesに渡すもの自体を切り替えていますが
あまりスマートでない気がします
プロパティで参照すればいい気もしますが都度コピーしていては効率も悪いので
何かいい方法はないでしょうか
0594デフォルトの名無しさん
2011/02/13(日) 13:39:06普通に参照返すだけなら中身まではコピーされないですよ
0595デフォルトの名無しさん
2011/02/13(日) 16:38:09private double[] vertLarge;
private double[] vertSmall;
private bool Large = true;
があったとして
プロパティで
public double[] vertex
{
get
{
return Large == true ? vertLarge : vertSmall;
}
}
じゃいかんの?
仮に何かにコピーして返したとしても、>>594が言うように配列の変数自体は参照を持ってるだけだから、中身全部コピーなんていう ことにはならない。
XNAはよくわからんが、OpenGLの知識で行くと毎回頂点配列をメモリに送っていること自体がもったいないと思う。
OpenGLでいうところのVBOみたいなのがあるのならそれを使うべき。
0596デフォルトの名無しさん
2011/02/13(日) 17:12:50あ,なるほど勘違いしていました.
どーもです.
状態ごとに
vertices = omoi;とか代入しておけば
描画時にはverticesを呼び出せばいけると.
追加で申し訳ないのですが
型の違う配列になったらさすがに分岐しないと無理ですよね
まだちょっと重かったので軽いモデルでは法線情報を削り
<VertexPositionNormalColor>と<VertexPositionColor>を使い分けたいのですが
つくづく自分の設計能力の低さを実感orz
0597デフォルトの名無しさん
2011/02/13(日) 18:47:23道理でしょぼいプログラムが重いわけですね
C#もXNAも始めたばかりなので勉強になります.
0598デフォルトの名無しさん
2011/02/14(月) 21:40:31XNAが勝ってるところが思い浮かばない。
0599デフォルトの名無しさん
2011/02/15(火) 10:09:08特定のゲームエンジンの勉強しても他の環境では全く役に立たないけど
XNAは生DirectXに近いから知識の応用も広い
0600デフォルトの名無しさん
2011/02/15(火) 12:33:060601デフォルトの名無しさん
2011/02/16(水) 00:53:28それがさ、unityもC#で、しかもネイティブに変換できて
ブラウザ含めマルチプラットフォームという…。
0602デフォルトの名無しさん
2011/02/16(水) 01:13:050603デフォルトの名無しさん
2011/02/16(水) 11:48:260604デフォルトの名無しさん
2011/02/16(水) 19:50:30何が起きているのでしょうか・・・
http://ideone.com/qpaTi
0605デフォルトの名無しさん
2011/02/16(水) 19:59:42foreachの繰り返し変数はループ全体で使い回されるから、
すべてのクロージャが一つのitemを共有することになる。
a b cと出力させるには、ループの中でvar item2 = item;と宣言しなおして
取り込む変数のスコープを一回のループだけに限定してやればいい。
0606デフォルトの名無しさん
2011/02/16(水) 20:37:43なるほど!ポインタ渡しのようなものなのですね
ありがとうございました
0607デフォルトの名無しさん
2011/02/17(木) 20:49:16XHTMLを処理したいのですが
XElement("div", "aaaaaaaaaa<br />bbbbbbbbb");
のような書き方をしたいです
元の文字列をパースしてXNodeに変換すると、
異常に手間がかかってしまうので直接入力する方法が知りたいです
よろしくお願いします
0608デフォルトの名無しさん
2011/02/17(木) 20:55:18XElement.Parse()
0609デフォルトの名無しさん
2011/02/17(木) 21:42:01そんな風な汎用メソッドを一つ作ればいいんじゃないかと
XElement hoge = fuga.moge("div", "aaaaaaaaaa<br />bbbbbbbbb");
0610デフォルトの名無しさん
2011/02/17(木) 23:07:12作ってますが、javascriptが出力するソースコードが取得できません。
firefoxの「選択した部分のソースコードを表示」の機能で表示することはできます。
どうしたらC#のプログラムから取得できますでしょうか。
0611デフォルトの名無しさん
2011/02/17(木) 23:11:08それとhtmlヘッダーに書かれてるjsを取得したいだけってことはないよね?
0612デフォルトの名無しさん
2011/02/17(木) 23:18:090613デフォルトの名無しさん
2011/02/18(金) 00:59:30XElement hoge = new XElement("div", XElement.Parse("aaaaaaaaaa<br />bbbbbbbbb"));
これでいけました。ありがとうございました!!
0614デフォルトの名無しさん
2011/02/18(金) 01:15:33>>612
webBrowser.Document.Body.OuterHtml
これでいけました。ありがとうございました!!
0615デフォルトの名無しさん
2011/02/18(金) 01:19:410616デフォルトの名無しさん
2011/02/18(金) 19:57:28どこが間違っているのでしょうか?
class CTest : IEquatable<CTest>
{
public bool Equals(CTest other)
{
MessageBox.Show("call");
return true;
}
}
CTest test1 = new CTest();
CTest test2 = new CTest();
bool test = EqualityComparer<CTest>.Default.Equals(test1, test2); //呼ばれる
HashSet<CTest> set = new HashSet<CTest>(EqualityComparer<CTest>.Default);
set.Add(test1);
set.Add(test2); //呼ばれない
0617デフォルトの名無しさん
2011/02/18(金) 20:21:180618デフォルトの名無しさん
2011/02/18(金) 20:22:53IEquatable<T>だけを実装してはいけない
実装するならObject.Equalsもオーバーライドして、同じ結果を返す必要がある
GetHashCodeの実装も必要
そもそもIEquatable<T>は構造体のEqualsのパフォーマンスを上げるために実装するもので
クラスに実装する必要はない
0619デフォルトの名無しさん
2011/02/18(金) 20:28:360620デフォルトの名無しさん
2011/02/18(金) 20:34:40クラスならEqualsとGetHashCodeをオーバーライドするだけでいい
実際、structにするとIEquatable<T>.Equalsが呼ばれるようになる
0621デフォルトの名無しさん
2011/02/18(金) 20:35:51訂正
IEqualityComparer<T>ではなくIEquatable<T>だった
0622616
2011/02/18(金) 21:22:29ありがとうございます。
0623デフォルトの名無しさん
2011/02/19(土) 11:29:16UIスレッド以外から呼び出して大丈夫なんでしょうか?
0624デフォルトの名無しさん
2011/02/19(土) 11:43:510625デフォルトの名無しさん
2011/02/19(土) 11:56:440626デフォルトの名無しさん
2011/02/19(土) 13:26:46意外だな。
Formsの中で勝手に処理してしまってる可能性もあるか?
0627デフォルトの名無しさん
2011/02/19(土) 18:44:24他のクラスで使いまわしたいstaticなメソッドを集めたユーティリティクラスがあります。
このクラスを 「継承せず」 にクラス名の修飾無しでメソッドを使うベストなプラクティスはありますか?
Javaで言う static import みたいな事です。
例
namespace NS1 {
public class UtilClass {
public static Method1 {}
}
}
namespace NS2 {
ここで Method1 を修飾無しで使いたい。
}
0628デフォルトの名無しさん
2011/02/19(土) 18:50:51でも、個人的には「クラス名の修飾無しでメソッドを使いたい」なんて要求は、
たぶん正しくないと思うんだよね。
コード書くときのことばっかり考えて、後で見直すときのことを考えてないんじゃないの?
0629627
2011/02/19(土) 19:02:43using だとクラス名の修飾が必要になるかと思います。
UtilClass.Method1 のように
四則演算や配列操作をまとめたユーティリティクラスなどはよく作られると思いますが、
拡張メソッド以外のスマートな呼び出し方がないか探しています。
0630デフォルトの名無しさん
2011/02/19(土) 19:05:01Sin Cosなんかだって
Math.Sinとかじゃん
0631デフォルトの名無しさん
2011/02/19(土) 19:11:050632デフォルトの名無しさん
2011/02/19(土) 19:12:23オブジェクト指向を崇拝してたくせにVBみたいな機能を後付けしたJavaのほうがおかしい
0633デフォルトの名無しさん
2011/02/19(土) 19:13:390634デフォルトの名無しさん
2011/02/19(土) 19:15:230635デフォルトの名無しさん
2011/02/19(土) 19:18:180636デフォルトの名無しさん
2011/02/19(土) 19:18:42Cみたいなスタイルのコーディングを助長するという意味だよ
モジュールを使ったVBのスタイルと言ってもいいな
0637デフォルトの名無しさん
2011/02/19(土) 19:25:040638デフォルトの名無しさん
2011/02/19(土) 19:28:41グローバル空間にメソッドを追加するのでは名前が被る可能性が全然違う
0639デフォルトの名無しさん
2011/02/19(土) 19:34:19using Microsoft.VisualBasic.CompilerServices;
[StandardModule]
public static class StdModule {
public static int Mul(int i, int j) { return i * j; }
}
これでVB側ではクラス名の修飾なしで使えるからVBを使えってことで。
0640デフォルトの名無しさん
2011/02/19(土) 19:52:55.82余程小さなプログラム以外は
0641デフォルトの名無しさん
2011/02/19(土) 22:46:19.00スローされた例外の内部例外が
Control.Invokeメソッドで再スローされるのは仕様ですか?
ttp://ideone.com/ZaX4l
0642デフォルトの名無しさん
2011/02/19(土) 23:38:18.30http://connect.microsoft.com/VisualStudio/feedback/details/433765/control-invoke-throws-exception-getbaseexception-rather-than-the-actual-exception
0643デフォルトの名無しさん
2011/02/19(土) 23:41:16.62ToolStripから後ろに戻れないんですがこれバグですか?
(TABだけならちゃんとループする)
0644デフォルトの名無しさん
2011/02/19(土) 23:42:24.490645デフォルトの名無しさん
2011/02/20(日) 00:09:55.33バグでしたか、とりあえずGetBaseExceptionをオーバーライドして回避出来るみたいですね
ありがとうございました
0646デフォルトの名無しさん
2011/02/20(日) 00:50:32.722.このコンポーネントクラスを継承してコンポーネントクラスを作ったとします
継承先のコンポーネントクラスで、1.で張り付けたユーザーコントロールのメソッドを使いました。
このメソッドは継承元(base)のもの?継承先(this)のもの?
0647デフォルトの名無しさん
2011/02/20(日) 00:52:38.59継承しない場合はそのメソッドを使うには1で貼り付ける予定のコントロールを
newして・・とかしないと使えないよね
つまりそういうことです
0648デフォルトの名無しさん
2011/02/20(日) 00:53:14.13ストレステストなの?
0649デフォルトの名無しさん
2011/02/20(日) 08:51:57.620650デフォルトの名無しさん
2011/02/20(日) 12:13:12.88俺には何を言ってるのか全然理解できなかった。
0651デフォルトの名無しさん
2011/02/20(日) 14:28:34.920652デフォルトの名無しさん
2011/02/20(日) 23:45:50.62おう、もっと褒めてくれ
ま、リンク先のstringリテラルだけ見れば意図は分かると思うし、>>641本文も変なことは言ってない
0653デフォルトの名無しさん
2011/02/21(月) 00:47:15.32安心してくれ
お前が馬鹿なだけ
0654デフォルトの名無しさん
2011/02/21(月) 09:58:00.160655デフォルトの名無しさん
2011/02/21(月) 10:19:49.25やっぱXmlWriter?
あと、対象の属性・要素検索したり取り出す時に使うのってLinqToXML?
他の人が標準的に使うやり方でやってみたいけど標準が判らない
0656デフォルトの名無しさん
2011/02/21(月) 10:29:31.650657デフォルトの名無しさん
2011/02/21(月) 10:35:28.15書き出しや検索はLINQが使えるならLINQ to XML
使えないならXML DOMとXPath
0658デフォルトの名無しさん
2011/02/21(月) 10:37:54.65MSDNとかで調べたら
Xml.XmlDocument
とかで書いてるのは紹介されてたりしたんでそれ使ってたけど
今風の使い方的な?
0659デフォルトの名無しさん
2011/02/21(月) 10:40:20.920660デフォルトの名無しさん
2011/02/21(月) 11:10:47.24基本的にLinqToXMLでやっておくのがこの先
妥当な感じがしますね。
情報ありがとうございます。
0661デフォルトの名無しさん
2011/02/21(月) 11:16:20.74XPathをいちいち思い出さなくてもLINQだけで検索できる
0662デフォルトの名無しさん
2011/02/21(月) 11:56:49.970663デフォルトの名無しさん
2011/02/21(月) 12:13:11.02Linq最高
0664デフォルトの名無しさん
2011/02/21(月) 12:30:51.46性質の違うもんを比較すんなよw
0665デフォルトの名無しさん
2011/02/21(月) 13:52:24.810666デフォルトの名無しさん
2011/02/21(月) 16:30:24.871バイトのプリミティブ型が4つ並んでる配列があったら
それを直接4バイトのプリミティブ型としてキャストする事は出来ますか?
Cで言う、char型が4つの配列の先頭アドレスをintとして扱う、というような事です。
unsafeとかを使えば可能ですか?
0667デフォルトの名無しさん
2011/02/21(月) 16:31:59.950668デフォルトの名無しさん
2011/02/21(月) 16:34:38.22Marshalクラスのメソッド一覧眺めてみたらたぶんあるよ
0669デフォルトの名無しさん
2011/02/21(月) 16:36:15.81unsafeならCと全く同じことができたはず
0670デフォルトの名無しさん
2011/02/21(月) 16:51:52.300671デフォルトの名無しさん
2011/02/21(月) 17:24:27.47どういう名称ですか?
0672デフォルトの名無しさん
2011/02/21(月) 17:27:42.400673デフォルトの名無しさん
2011/02/21(月) 17:30:15.250674デフォルトの名無しさん
2011/02/21(月) 17:38:30.290675デフォルトの名無しさん
2011/02/21(月) 19:23:07.75MSごと切っちゃった方がいいかもな
0677デフォルトの名無しさん
2011/02/21(月) 19:48:44.16>>671のようなことならこちらへどうぞ
Microsoft Silverlight その7
http://hibari.2ch.net/test/read.cgi/tech/1288613056/
0678デフォルトの名無しさん
2011/02/21(月) 19:50:25.26ownerdrawを使いつつビジュアルスタイルにすることって出来ますか?
0680デフォルトの名無しさん
2011/02/21(月) 20:09:11.910681デフォルトの名無しさん
2011/02/21(月) 20:13:22.38やっぱりそうですかー
これを機会に学んでみようかな
0682デフォルトの名無しさん
2011/02/21(月) 20:24:49.62少なくともビジネスユーザーはそんなもの望んでない。
0683デフォルトの名無しさん
2011/02/21(月) 20:28:06.89XMLでUIパーツを配置してスタイルシートで装飾みたいなことはできます?
0684デフォルトの名無しさん
2011/02/21(月) 20:29:19.35MFCプログラマーだった俺が、WinFormsの習得に遅れて苦労した経験上の話。
今回は出遅れないぞと。
0685デフォルトの名無しさん
2011/02/21(月) 20:31:11.38出来るよ。但しCSSにあたる物がちょっと複雑なだけで
0686デフォルトの名無しさん
2011/02/21(月) 20:31:53.88ハイパーリンクであっちこっち飛ぶ学術書を長時間読むのは辛い
みんなどうしてるの?
0687デフォルトの名無しさん
2011/02/21(月) 20:33:13.97ありがとう!本格的に移行考えるよ
0688デフォルトの名無しさん
2011/02/21(月) 20:37:03.95atmarkitとか個人サイトとかで沢山資料はあるだろ
WPFもしかり
0689デフォルトの名無しさん
2011/02/21(月) 20:42:51.40で、詰まったらそれをwebで調べてとりあえず完成させる
一つ作った後だと長い奴読んでも飽きずに続けられるよ
0690デフォルトの名無しさん
2011/02/21(月) 20:49:32.90ありがとうございました。トライアンドエラーですね。頑張って勉強してきます
0691デフォルトの名無しさん
2011/02/21(月) 21:06:17.63それができない奴にプログラミングは無理。
0692大便
2011/02/21(月) 21:17:58.92こんなもの、さっさと廃止すべきです。
0693デフォルトの名無しさん
2011/02/21(月) 21:26:19.38執念深さとか粘着力とかいう言葉の方が適切だと思う。
でもこれ、確かに一つの才能だとは思うが、一歩間違うと偏執狂だから、
あまり人に威張れるようなものかという気もする。
あとまあ本当に頭がいい人は粘着力なんて要らない気もするよ
0694デフォルトの名無しさん
2011/02/21(月) 21:39:52.91そういう人はソフト作る人じゃなくて言語作ったり論文書いたりしそう
0695デフォルトの名無しさん
2011/02/21(月) 21:42:32.710696デフォルトの名無しさん
2011/02/21(月) 21:52:01.720697デフォルトの名無しさん
2011/02/21(月) 21:54:24.020698デフォルトの名無しさん
2011/02/21(月) 21:54:50.26お前が一番好きな言語を褒め称える活動に精を出せよ
0699デフォルトの名無しさん
2011/02/21(月) 21:56:58.340700デフォルトの名無しさん
2011/02/21(月) 22:03:26.890701デフォルトの名無しさん
2011/02/21(月) 22:12:09.13人の雄は煽てても調子に乗るのがオチじゃ
-電撃文庫 狼と香辛料-
0702デフォルトの名無しさん
2011/02/21(月) 22:17:35.600703デフォルトの名無しさん
2011/02/21(月) 22:21:30.18残念だけど、VB.NETはC#の ̄の上空に漂う最強なんだが?
すれはいをみないしたほうがっj
0704デフォルトの名無しさん
2011/02/21(月) 22:24:25.00MSDNは初めての概念を学ぶ時に読むものじゃないと思う。
比較的分かりやすく書いてる記事でも分かりにくい。
あと、日本語版は読まない方がいい。
知らない概念のことなら、CodeProjectとかに分かりやすい記事があったりするので、
そちらを読んだほうが早い。
0705デフォルトの名無しさん
2011/02/21(月) 22:29:14.240706デフォルトの名無しさん
2011/02/21(月) 22:30:51.070707デフォルトの名無しさん
2011/02/21(月) 22:40:48.890708デフォルトの名無しさん
2011/02/21(月) 22:45:54.720709デフォルトの名無しさん
2011/02/21(月) 22:49:23.680710デフォルトの名無しさん
2011/02/21(月) 22:53:40.740711デフォルトの名無しさん
2011/02/21(月) 23:30:08.72private void masturbation(Okazu okazu){
}
}
public interface Okazu{
}
public class HentaiMovie implements Okazu{
}
public class MysteriousHash{
}
0712デフォルトの名無しさん
2011/02/21(月) 23:54:34.300713デフォルトの名無しさん
2011/02/22(火) 00:06:31.54privateメソッドもPascalCaseで書くべきだと言っておこう。
0714デフォルトの名無しさん
2011/02/22(火) 00:07:16.820715デフォルトの名無しさん
2011/02/22(火) 00:21:55.740716デフォルトの名無しさん
2011/02/22(火) 00:46:09.67下のようなコードでChildren.Addは排他的に実行されますか?
本来ならlock(Children)をすれば疑いようもなく排他的になると
思うのですがChildren = nullの状態を作りたいのでlock(this)
をしています。
(Childrenがnullのときにlock(Children)をしてしまうとエラーになるので。)
class MyClass
{
public List<String> Children = null;
public MyClass(){
Children = new List<String>();
}
public void Add(String hoge)
{
lock (this)
{
Children.Add(new Object());
}
}
}
0717sage
2011/02/22(火) 00:58:28.380718デフォルトの名無しさん
2011/02/22(火) 01:01:33.220719デフォルトの名無しさん
2011/02/22(火) 01:03:35.18this含め、クラス外から見えるものをロックするのは厳禁
0720デフォルトの名無しさん
2011/02/22(火) 01:06:35.180721デフォルトの名無しさん
2011/02/22(火) 01:10:08.66private static readonly object _cri = new object();
のようなロックオブジェクトを作りクラス内だけで使うのが作法
クラス外からロックできるとデッドロックする可能性がある
0722デフォルトの名無しさん
2011/02/22(火) 07:55:07.480723デフォルトの名無しさん
2011/02/22(火) 08:20:02.470724デフォルトの名無しさん
2011/02/22(火) 08:20:50.520725デフォルトの名無しさん
2011/02/22(火) 08:26:45.04挿げ替える必要がなければreadonlyにしておくべきだろう
0726デフォルトの名無しさん
2011/02/22(火) 09:01:01.150727デフォルトの名無しさん
2011/02/22(火) 10:03:35.650728デフォルトの名無しさん
2011/02/22(火) 10:06:12.35【NTR】寝取られ 総合スレ 100
http://set.bbspink.com/test/read.cgi/erocomic/1268148145/
0729デフォルトの名無しさん
2011/02/22(火) 10:08:33.40ありがとうございます。そこで聞いてみます。
0730デフォルトの名無しさん
2011/02/22(火) 10:11:20.13そりゃデッドロックの可能性は上がるだろ
それに、
スレッド1: lock (a) { 処理 lock(b) { 処理 } }
スレッド2: lock (b) { 処理 lock(a) { 処理 } }
こう書くといかにもデッドロックしそうだけど
スレッド1: lock (a) { 処理 b.Foo(); } // Fooはthisをロックする
スレッド2: lock (b) { 処理 a.Bar(); } // Barもthisをロックする
これはわかりにくいだろ?
0731デフォルトの名無しさん
2011/02/22(火) 10:23:03.23ライブラリの設計者もそのつもりだったけど、
いろんな人が検証した結果、>>721が一番無難であるという結論に達したみたいだよ
0732デフォルトの名無しさん
2011/02/22(火) 10:42:42.33パフォーマンスが落ちるわけでもないしそんなに面倒になるわけでもないもん
>>721なら少なくともそのクラス内でのロックがデッドロックにつながることはなくなるわけで
危険の大小は別にしてもわざわざ潜在的な問題を含む方法を選ぶ意味がない
0733デフォルトの名無しさん
2011/02/22(火) 11:07:29.90外から値変えたい場合全部公開のメソッドとか経由で操作させるようにしてるかな
内部でprivateなロック使ってセーフな感じに
自由に外からロックかけられても困るしソフト肥大化してきたらバグつぶすのがしんどくなりそう
0734デフォルトの名無しさん
2011/02/22(火) 15:01:13.450735デフォルトの名無しさん
2011/02/24(木) 09:26:35.04.netのreadonlyクラス変数はダブルチェックロッキングしなくても安全と聞いた
0736デフォルトの名無しさん
2011/02/24(木) 09:37:12.92ロック用のオブジェクトなんか後で変更するわけがないから
readonly付けといて損はないというだけ
0737デフォルトの名無しさん
2011/02/25(金) 09:00:16.07タイミングにエラーダイアログが表示されてしまうのですが
これを回避するにはどうすれば良いでしょうか?
※チェック処理は「実行」ボタン等がクリックされたタイミングに集約したいと思っています。
0738デフォルトの名無しさん
2011/02/25(金) 09:46:28.93ということでいいの?
0739デフォルトの名無しさん
2011/02/25(金) 10:08:25.62DataErrorをハンドリングしろとダイアログそのものかに書いている筈
その通りにすればいい
0740デフォルトの名無しさん
2011/02/25(金) 10:13:33.15あ、一つ注意点が有った
エラーが起きるものはDataTableには保存されないので、表示と内部データが一致しなくなる
エラーチェックをDataTableの値を使ってやりたいなら数値カラムを止めるか、数字しか入力できないようにしないと無理
0741デフォルトの名無しさん
2011/02/25(金) 10:15:40.060742デフォルトの名無しさん
2011/02/25(金) 12:57:08.00アドバイスありがとうございます。
DGVのセル上では属性を文字列にし何でも入力可能な様
にする事により対応したいと思います。
0743デフォルトの名無しさん
2011/02/26(土) 17:36:06.19例えば、10行のデータが存在しているとして
3行目をアクティブにしたいのですがやりかたがわかりません。
0744デフォルトの名無しさん
2011/02/26(土) 22:33:31.54VB.NET質問スレ(Part35)
http://hibari.2ch.net/test/read.cgi/tech/1284423653/770
0745デフォルトの名無しさん
2011/02/26(土) 22:45:21.12マルチすんな死ね
0746デフォルトの名無しさん
2011/02/26(土) 23:06:10.06アホに聞かなくても調べたら一発だったwww
0747デフォルトの名無しさん
2011/02/26(土) 23:30:00.550748デフォルトの名無しさん
2011/02/26(土) 23:33:38.200749デフォルトの名無しさん
2011/02/26(土) 23:35:16.76/ \
【検索した?】 NO → なら、ねぇよ。死ね。
\
NO → 死ね。
まさにこれだな
0750デフォルトの名無しさん
2011/02/27(日) 00:19:38.150751デフォルトの名無しさん
2011/02/27(日) 00:19:49.040752デフォルトの名無しさん
2011/02/27(日) 10:23:00.07不可能
プロジェクトのプロパティでNET_VERSION_4とかCS_VERSION_4のようなシンボルを自分で定義しておく
0753デフォルトの名無しさん
2011/02/27(日) 14:24:19.14これには何か意図があるの?
コンストラクタはスーパークラスでキャストされた状態で呼ばれる事は無いから
インターフェイスを合わせる必要が無い事ってのは分かるんだけどさ。
0754デフォルトの名無しさん
2011/02/27(日) 14:30:21.200755デフォルトの名無しさん
2011/02/27(日) 14:31:47.25めんどくさいと感じるほど継承なんか多用するもんじゃない
0756デフォルトの名無しさん
2011/02/27(日) 14:36:38.57見せたくない基底クラスのコンストラクタって、見せたいのと同じくらいあると思うよ
デフォルトで基底クラスのコンストラクタが見える仕様だと、隠すための特別な構文が必要になって格好悪い
0757753
2011/02/27(日) 15:16:55.65JAVAが長いからかな?
確かに見せたくない場合にはいいね。
でもコンストラクタで渡すものって大体プロパティあるしそっちも消すの?
(隠蔽+Editor属性だっけ?)
0758デフォルトの名無しさん
2011/02/27(日) 15:25:20.03>>757が何を言おうとしているのか理解出来ない
0759デフォルトの名無しさん
2011/02/27(日) 15:27:37.71利便性のためのもののどちらかでしょう
0760デフォルトの名無しさん
2011/02/27(日) 15:38:13.37こういうのは多いと思う
Hoge(a, b) : base(a, b, b.A)
0761デフォルトの名無しさん
2011/02/27(日) 22:25:48.96コンストラクタを何パターンか用意するのがめんどいとは思う。
0762デフォルトの名無しさん
2011/02/27(日) 22:34:26.800763デフォルトの名無しさん
2011/02/27(日) 22:34:32.09派生例外クラスを出力するプログラム組めば?
0764デフォルトの名無しさん
2011/02/27(日) 22:34:47.280765デフォルトの名無しさん
2011/02/28(月) 00:19:14.270766デフォルトの名無しさん
2011/02/28(月) 01:41:14.830767デフォルトの名無しさん
2011/02/28(月) 02:38:19.050768デフォルトの名無しさん
2011/02/28(月) 07:30:36.140769デフォルトの名無しさん
2011/02/28(月) 10:25:57.59この属性をプロパティにつけると
そのクラスのシリアライズに失敗します。
つけなければ問題なく保存できます。
なにか対策ありますでしょうか。
実行環境はWin7 32bit .net 4 Client Profile です。
0770デフォルトの名無しさん
2011/02/28(月) 11:49:39.62まぁいいか
失敗したときに例外くらい出てないのか?
それを書けよ。一字一句もらすなよ
0771デフォルトの名無しさん
2011/02/28(月) 13:22:17.82確かに属性がシリアライズ不可なだけかもしれません
例外は「シリアライズに失敗しました・・・」的なメッセージらしいです
客先のPCなので残念ながら全部はわかりません
属性をはずすことにします。
0772デフォルトの名無しさん
2011/02/28(月) 13:25:14.60一番いいのはシリアライズ用のクラスを作ってそれ経由でシリアライズ、デシリアライズした方がいい
0773デフォルトの名無しさん
2011/02/28(月) 13:34:14.72そこまでやるとシリアライズする意味がわからなくなってXlinqになったのが俺
0774デフォルトの名無しさん
2011/03/01(火) 22:05:04.65メニュアイテムにショートカットキーを割り当てたのですが
たまに効かなくなって、そのキーを押すとフォーカス移動
なんかが起ります。
デフォルトでフォーカス移動にショートカットキーが割り当てられて
いるコントロールがあるのでしょうか?
0775デフォルトの名無しさん
2011/03/01(火) 22:08:21.940776デフォルトの名無しさん
2011/03/02(水) 05:07:07.32エレガントな方法ありませんか?
0777デフォルトの名無しさん
2011/03/02(水) 09:25:37.11そのショートカットキーが何かを書かないのか?
0778774
2011/03/02(水) 10:57:55.46メニューアイテムがenabledになってませんでした。
0779774
2011/03/02(水) 10:59:26.87要注意
だよね。
0780デフォルトの名無しさん
2011/03/02(水) 11:30:50.02紅茶を飲みながら作るといいよ
0781デフォルトの名無しさん
2011/03/02(水) 13:08:54.53enabledかどうか見りゃすぐわかるだろ
0782デフォルトの名無しさん
2011/03/02(水) 13:17:51.580783デフォルトの名無しさん
2011/03/02(水) 14:32:43.12エレガントじゃねぇな
0784デフォルトの名無しさん
2011/03/02(水) 19:57:12.21Linq使ったらエレガントじゃない罠
0785デフォルトの名無しさん
2011/03/02(水) 23:18:17.130786デフォルトの名無しさん
2011/03/02(水) 23:37:32.590787デフォルトの名無しさん
2011/03/02(水) 23:42:41.820788デフォルトの名無しさん
2011/03/03(木) 06:10:56.77Linq使って何をやるんだ?
0789デフォルトの名無しさん
2011/03/03(木) 21:08:15.15MSDNでDirectoryInfo.GetFiles をみてみたら、返される順序は保障されないって書いてあったけど。
0790デフォルトの名無しさん
2011/03/03(木) 21:14:37.95遅延評価(読み込みながらyieldで列挙が行われる)だから効率が良い
0791デフォルトの名無しさん
2011/03/03(木) 21:18:03.440792デフォルトの名無しさん
2011/03/03(木) 21:23:51.470793デフォルトの名無しさん
2011/03/03(木) 21:27:41.39普通に考えて糞設計だよな
yieldが一番エレガントなのはもちろんだけど
デリゲートでコールバックするバージョンが今まで無かったのが不思議
0794デフォルトの名無しさん
2011/03/03(木) 21:29:12.470795デフォルトの名無しさん
2011/03/03(木) 21:37:29.090796デフォルトの名無しさん
2011/03/03(木) 21:53:57.26Treeだから使うのはGetDirectoryです。こっちは記述無いけどソートされて居たと思う
0797デフォルトの名無しさん
2011/03/03(木) 22:07:41.25NTFSが名前順に並べてるから、それをそのまま返してるだけ。
ファイルシステムの実装が変われば順序が変わってもおかしくはない。
0798デフォルトの名無しさん
2011/03/03(木) 22:25:31.96ウザかったな
0799デフォルトの名無しさん
2011/03/03(木) 23:48:16.06ツールを作っています。
0800デフォルトの名無しさん
2011/03/03(木) 23:52:30.22なんで宇宙人とコンタクトレンズ取り合う必要があるの?
0801デフォルトの名無しさん
2011/03/03(木) 23:54:46.72察してやれよ…
0802デフォルトの名無しさん
2011/03/04(金) 00:13:09.590803デフォルトの名無しさん
2011/03/04(金) 00:15:35.490804デフォルトの名無しさん
2011/03/04(金) 00:20:21.010805デフォルトの名無しさん
2011/03/04(金) 00:26:53.900806デフォルトの名無しさん
2011/03/04(金) 00:34:47.500807デフォルトの名無しさん
2011/03/04(金) 03:05:02.270808デフォルトの名無しさん
2011/03/04(金) 09:18:41.897専用でも3.5
0809デフォルトの名無しさん
2011/03/04(金) 09:57:37.720810デフォルトの名無しさん
2011/03/04(金) 10:08:01.650811デフォルトの名無しさん
2011/03/04(金) 10:27:09.600812デフォルトの名無しさん
2011/03/04(金) 11:17:27.87コードを用意した。
StaticObjectクラスはAppDomain毎に確保されるから、
見かけ上はMainDomainのコードが変更してSubDomainが10を返すように見えるけど、
実際にはMainDomainが変更したのはMainDomainのStaticObjectで、SubDomainが見てるのはSubDomainのStaticObjectじゃないですか。
SubDomainからAppDomainのStaticObjectにアクセスする方法があれば知りたいのです。
0813デフォルトの名無しさん
2011/03/04(金) 11:20:07.97誤:SubDomainからMainDomainのStaticObjectにアクセスする方法があれば知りたいのです。
0814デフォルトの名無しさん
2011/03/04(金) 11:24:29.770815デフォルトの名無しさん
2011/03/04(金) 11:59:53.69こんな感じでどう
http://ideone.com/pcys3
0816デフォルトの名無しさん
2011/03/04(金) 15:19:02.99実際共有したいオブジェクトの中身は複雑だから単純にこうは行かないんだけど検討してみます。
ありがとうございます。
0817デフォルトの名無しさん
2011/03/04(金) 16:15:19.23古臭いリモーティングの仕組みやMarshalByRefObjectを排除できるのでちょっと気持ちいい
0818デフォルトの名無しさん
2011/03/05(土) 10:34:50.70そういうライブラリってあるのでしょうか?
0819デフォルトの名無しさん
2011/03/05(土) 14:54:11.250820デフォルトの名無しさん
2011/03/06(日) 00:43:49.05SettingsProviderの独自実装を作るしかないでしょうか?
ユーザーごとバージョンごとに設定ファイルを分けたりするは必要ないので
(むしろソフトのディレクトリ以外を汚染したくないです)
シンプルに設定を保存したいです
いい方法はないでしょうか?
0821デフォルトの名無しさん
2011/03/06(日) 00:47:47.260822デフォルトの名無しさん
2011/03/06(日) 00:54:24.49USBメモリなどに入れて設定ごと持ち運びたいです
インストーラーを使って配置するアプリでは諦めるしかないみたいですね
0823デフォルトの名無しさん
2011/03/06(日) 00:57:27.79スタティックなクラス定義して、シリアライズするのが早道だよ
0824デフォルトの名無しさん
2011/03/06(日) 01:01:27.420825デフォルトの名無しさん
2011/03/06(日) 08:21:36.46スタティックなクラスをデファインして、シリアライズするのがセオリー
0826デフォルトの名無しさん
2011/03/06(日) 12:56:41.420827デフォルトの名無しさん
2011/03/06(日) 14:26:04.39どんな型でデフォルト値のパラメータを渡してあげるのかがわからないのです。
ご教授お願いします。
var a = new[] {
new { X = 0, Z = "ONE" },
new { X = 1, Z = "TWO" },
new { X = 2, Z = "THREE" },
new { X = 3, Z = "FOUR" },
new { X = 4, Z = "FIVE" },
};
var b = new [] {
new { X = 0, W = "あ" },
new { X = 0, W = "い" },
new { X = 1, W = "う" },
new { X = 1, W = "え" },
};
var d = from cura in a
join curb in b on cura.X equals curb.X into p
from curp in p.DefaultIfEmpty(ここに何を入れればいいか分からない)
select new { cura.Z, curp.W };
0828デフォルトの名無しさん
2011/03/06(日) 14:40:09.040829デフォルトの名無しさん
2011/03/06(日) 14:43:06.02p.DefaultIfEmpty("値なし")
こんな感じでしょうか?これだとエラーになってしまって…。
何か根本的なことを理解してないのかもしれません。。
0830デフォルトの名無しさん
2011/03/06(日) 14:43:51.940831デフォルトの名無しさん
2011/03/06(日) 14:50:45.44http://psyas.wordpress.com/2009/12/14/%E2%96%A0%E3%80%90vb-net%E3%80%91linq-to-entities%E3%81%A7%E5%B7%A6%E5%A4%96%E9%83%A8%E7%B5%90%E5%90%88%E3%82%92%E3%81%99%E3%82%8B/
0832デフォルトの名無しさん
2011/03/06(日) 15:05:49.42from curp in p.DefaultIfEmpty(new { X=0, W= "default"})
TSource(この場合は匿名型 {X,W} )を要求されているのにstringを返して通るはずがない罠
0833デフォルトの名無しさん
2011/03/06(日) 15:10:18.85それで通りましたん!
ありがとうございます!!!
仰るとおり、stringじゃだめですね!!馬鹿ですみませぬ。
0834デフォルトの名無しさん
2011/03/07(月) 15:03:10.65よくlock(this)でデッドロックの危険が、と言われるけど
typeofみたいに対象インスタンスが複数になるわけでも
ないのになんでデッドロックになるんだろう?
0835デフォルトの名無しさん
2011/03/07(月) 15:13:54.12外からlock(a)とするのと、aのインスタンスメソッドの中でthisをロックするのは
どちらもaのインスタンスをロックしている。
同じオブジェクトが同時にロックされる可能性が高くなるから、当然デッドロックの危険も高くなる。
クラスの外から見えないオブジェクトをロックしている限り、
そのクラスの中だけで待合状態を起こさないように気をつけていれば
そのロックがデッドロックの原因になる恐れはない。つまり責任範囲が限定できるってこと。
0836デフォルトの名無しさん
2011/03/07(月) 16:23:43.39なんでロックを露出したがるの?変態なの?
0837デフォルトの名無しさん
2011/03/07(月) 17:12:38.12つまりは規約でlock(this)縛りするなら問題はないということか
規約縛りなんて守られないからやめとけって話かな
>>836
つまりICollection.SyncRootは変態という話ですねわかります
0838デフォルトの名無しさん
2011/03/07(月) 17:15:36.240839デフォルトの名無しさん
2011/03/07(月) 17:17:35.16列挙中に変更されないように外部からロックする必要があるだろ
0840デフォルトの名無しさん
2011/03/07(月) 17:40:13.53ジェネリック"以外"のコレクションならSync派生があるだろがよ
つかなんでジェネリック版にも用意しなかったのか理解に苦しむ
0841デフォルトの名無しさん
2011/03/07(月) 17:46:30.420842デフォルトの名無しさん
2011/03/07(月) 17:50:35.71おまえらこれでググれ つSynchronizedCollection
>>837
残念ながらBindingにはないらしい
地道にlockするしかないっぽい
0843デフォルトの名無しさん
2011/03/07(月) 17:53:01.58ジェネリックコレクションではSynchronizedメソッドがなくなったので、SyncRootプロパティもお役御免となった
0844デフォルトの名無しさん
2011/03/07(月) 17:53:47.510845デフォルトの名無しさん
2011/03/07(月) 19:24:23.41片っ端からコレクションなどをスレッドセーフにしたからといって安心というようなものじゃない
.NETはそういうポリシーなんだよ
0846デフォルトの名無しさん
2011/03/08(火) 23:52:12.27若干グレーっぽいような色が見えてしまいます。
何かいい方法はないでしょうか?
ただしTransparencyKeyは作成しているものの仕様上使うことはできません
0847デフォルトの名無しさん
2011/03/09(水) 00:01:15.06まあ固定サイズじゃないと上手くいくのかなって気もするけど。
しかし、なんでそんなアタック25みたいなキモいUI作りたいかね。
あんまり趣味のいいセンスとも思えないが
0848デフォルトの名無しさん
2011/03/09(水) 00:07:01.12技術的なことだけ答えていればいいのに。
0849デフォルトの名無しさん
2011/03/09(水) 00:08:35.03>若干グレーっぽいような色が見えてしまいます。
これだけじゃあなあ
SSもないし晒せる範囲のコードもないので本当に余計なことをやってないのかすらわからん
0850デフォルトの名無しさん
2011/03/09(水) 00:20:41.02決め付けてないでしょ。個人の感想です。
しかし、人にケチつけるな、というケチ?
平気で人をお前呼ばわりするタイプって大概こういう自分棚上げ野郎だね。
0851デフォルトの名無しさん
2011/03/09(水) 00:29:52.57Formから派生させたForm1クラスに以下のコードをどうぞ。希望通りかは分からんけど。
public Form1()
{
InitializeComponent();
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
this.BackColor = Color.Transparent;
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x020;
return cp;
}
}
protected override void OnPaintBackground(PaintEventArgs e)
{
// base.OnPaintBackground(e);
}
p/invoke使ってWinAPI使ってもいいけど。
Windows.Formsのコントロールを透明化するテクニックはネット上で沢山掲載されてるから、
分からなければ英語で検索することをおすすめする。"Form" "C#" "Transparent" とか。
0852デフォルトの名無しさん
2011/03/09(水) 00:33:27.13アタック25をつくりたいとしたら…?
0853デフォルトの名無しさん
2011/03/09(水) 00:38:42.00あとどういう物を作りたくてそういうことをやってるかというのも
軽く添えておけば代替案なんかもでてくるのにね
質問の仕方によっては答えがもらえないどころか攻撃されるだけという・・・
0854デフォルトの名無しさん
2011/03/09(水) 00:46:37.08代替案も糞もない。分からなければ分かりませんでいいのでは?
0855デフォルトの名無しさん
2011/03/09(水) 00:53:45.890856デフォルトの名無しさん
2011/03/09(水) 00:58:02.480857デフォルトの名無しさん
2011/03/09(水) 01:49:26.650858デフォルトの名無しさん
2011/03/09(水) 02:06:11.050859デフォルトの名無しさん
2011/03/09(水) 04:42:03.400860デフォルトの名無しさん
2011/03/09(水) 08:46:15.10遅くなって申し訳ないです。
用途はスプラッシュウインドウに使おうと思っています。
スプラッシュウインドウに使う画像はAlphaBlendを使用した影があるのですが、
TransparencyKeyで指定してしまうと影の部分がうまく透過されなかったのです。
>>851さんの方法で透明化し、
protected override void OnPaintBackground(PaintEventArgs e)
{
//base.OnPaintBackground(e);
e.Graphics.DrawImage(bmp, 0, 0); // bmp はスプラッシュウインドウの画像
}
このようにしたところ背景は透過されましたが、フォームの裏側の状態が変わってもはじめフォームの裏側にあった物が
透過され続けていましたw
いろいろサンプルを探してみたいと思います
0861デフォルトの名無しさん
2011/03/09(水) 13:42:36.36裏側のものが変わってもWM_PAINT飛んでこないかも
0862デフォルトの名無しさん
2011/03/09(水) 17:26:07.37ttp://www.ipentec.com/document/document.aspx?page=csharp-create-layered-window
こちらの方法で無事に目的を達成できました。ありがとうございました!
0863デフォルトの名無しさん
2011/03/10(木) 10:16:06.94すごいですね
なんとかツクールみたいにパーツ持ってきて切り貼りして数値変えたら
ソフトが作れるんですね
直接プログラムを書かなくていいって凄い
でもこんなのが通用するのはチュートリアルだけなんですよね、やっぱり?
0864デフォルトの名無しさん
2011/03/10(木) 10:24:47.48ボタンが押されたときの処理はプログラムで書く
コントロールをペタペタ貼り付けるのは業務でも普通に使う
0865デフォルトの名無しさん
2011/03/10(木) 10:29:05.71今まだチュートリアルで画像ソフトを作成しているんですが
プロパティで(name)って所にclearbuttonだのcloseButtonだの書いて
ダブルクリックで生成されたコードっぽいのは
処理じゃなく只のラベル?なんですか?
0866デフォルトの名無しさん
2011/03/10(木) 10:31:45.42private void clearbutton_Click(object sender, EventArgs e) {
// ここにclearbuttonが押されたときに実行したいプログラムを書く
}
0867デフォルトの名無しさん
2011/03/10(木) 10:33:46.25先は長い・・
0868デフォルトの名無しさん
2011/03/10(木) 23:37:37.22これに嵌る人ならモチベーション上がって一気にプログラムに慣れることができるだろう。
0869デフォルトの名無しさん
2011/03/11(金) 01:00:42.79長くかかるようならふらっとのほうに行ってくれないかな
初心者が居つくと講釈垂れる人が発生してうざいんだ
0870デフォルトの名無しさん
2011/03/11(金) 01:42:26.78こういう人が沸いてうざい
0871デフォルトの名無しさん
2011/03/11(金) 01:56:09.920872デフォルトの名無しさん
2011/03/13(日) 02:56:27.11いらっ
0873デフォルトの名無しさん
2011/03/13(日) 02:58:35.760874デフォルトの名無しさん
2011/03/13(日) 13:21:22.14記事のタイトルの 「C# 4」が象徴してるな
.NETのバージョンは「4」で正しいが、C#のバージョンは「4.0」
0875デフォルトの名無しさん
2011/03/13(日) 13:37:50.600876デフォルトの名無しさん
2011/03/13(日) 13:47:37.380877デフォルトの名無しさん
2011/03/13(日) 13:49:04.990878デフォルトの名無しさん
2011/03/13(日) 13:49:42.21ちゃんと読めよ
C#3.5とか出てくるぞw
0879デフォルトの名無しさん
2011/03/13(日) 23:24:54.39角を丸くするのに手こずってます。
というのは角を丸くすると背景を透明にしなければなりません。
しかし作っているのがグラフィックエディタということがあり、TransparencyKeyを
使うことが出来ません。
>>860の方法ではコントロールが描画されませんし……
いい方法はありませんかね??
0880デフォルトの名無しさん
2011/03/13(日) 23:29:00.76WPFで作るか、スキンを諦めるか、めんどくさいけど>>860で自力でがんばるか
0881デフォルトの名無しさん
2011/03/13(日) 23:30:12.570882デフォルトの名無しさん
2011/03/13(日) 23:37:21.31ログを漁ってみなよ
確か、Formを2枚重ねて〜とか話してたはず
0883デフォルトの名無しさん
2011/03/13(日) 23:40:33.16ちょっとアレですみません・・・
>>881
Region・・・ですか
>>882
そうなのですか!漁って見ますね
0884デフォルトの名無しさん
2011/03/13(日) 23:41:23.69ここかこっちか忘れたけどw
ふらっとC#,C♯,C#(初心者用) Part70
http://hibari.2ch.net/test/read.cgi/tech/1298054350/
0885デフォルトの名無しさん
2011/03/13(日) 23:45:48.56これですかねえ・・・
0886デフォルトの名無しさん
2011/03/13(日) 23:53:40.84それじゃないかなあ・・・
その後に一応サンプルコードも出回った記憶が・・・
0887デフォルトの名無しさん
2011/03/13(日) 23:56:51.80赤い線を描いてそれをつまんだらウインドウのサイズを変えるとかなんとかやってたな
0888デフォルトの名無しさん
2011/03/13(日) 23:57:24.88そうですかあ・・・
今日のところは一旦諦めます。
また明日にでも挑戦してみます
ありがとうございました。またよろしくお願いします
0889デフォルトの名無しさん
2011/03/14(月) 00:06:23.99http://2bangai.net/read/3303979ec9a1e7cb65be59f61c455e633f912a2b1ae9275feb52c175774f94b8/501
ここの563あたりからありました。
もう時間がないのでやはり続きは叉の機会にします。
本当にありがとうございました
0890デフォルトの名無しさん
2011/03/14(月) 00:06:49.13連レスすみません
0891デフォルトの名無しさん
2011/03/14(月) 00:13:19.16その辺
0892デフォルトの名無しさん
2011/03/14(月) 23:49:21.57結局>>881の方法でごにょごにょしたら出来ました。
フォームの移動等も割とすんなり出来ました。
ありがとうございました
0893デフォルトの名無しさん
2011/03/15(火) 00:07:44.19>>847の時点で書いてあるんだけどさw
0894デフォルトの名無しさん
2011/03/15(火) 00:09:24.36そもそもWinFormで透明を扱う需要がないし透明扱うサンプルって
Region使ったの無いので関係ない話に見える
0895デフォルトの名無しさん
2011/03/15(火) 00:41:36.870896デフォルトの名無しさん
2011/03/15(火) 13:37:09.290897デフォルトの名無しさん
2011/03/15(火) 14:19:41.75MSBuildとの差別化として手書きに適したツールを目指すならわかるが、XMLとかアホかと
VSで作ったプロジェクトファイルを必要に応じて弄ってコマンドラインからmsbuildでだいたいなんでもできるよ
0898デフォルトの名無しさん
2011/03/17(木) 16:09:03.23アップデーターを作ったのですが
アプリ起動→更新をクリック→アップデーター起動→新しいバージョンの.exeをDL→
古い.exeを削除し新しいものに置き換える
としたいのですが、最後の置き換えるときに古い.exeを削除できません。
Process.Start("Updater.exe");
Application.Exit(); // .exeを削除できるように終了する
このようにしてアップデーターを呼び出しています。
アップデーターを起動後はボタンをおすことで更新が始まります。
どなたか良い方法をご教授ください
0899デフォルトの名無しさん
2011/03/17(木) 16:35:40.550900デフォルトの名無しさん
2011/03/17(木) 16:42:01.59起動している自分自身ということになるのですかねえ・・・
一応対象となるプログラムは
Application.Exit();
でとじていますが・・・
0901デフォルトの名無しさん
2011/03/17(木) 16:44:10.910902デフォルトの名無しさん
2011/03/17(木) 16:45:19.68削除できないと例外がでるんだっけな、そこら辺はしらべてみてくれい。
0903デフォルトの名無しさん
2011/03/17(木) 16:46:26.920904デフォルトの名無しさん
2011/03/17(木) 16:49:46.51タスクマネージャーでプロセス見る限りではアップデーターではない方は消えています。
>>902
例外は出てます。アクセスが拒否されているみたいです。
>>903
hmhmググッてきます
0905デフォルトの名無しさん
2011/03/17(木) 17:54:02.98ひとつわかったのは
>>898の手順でアップデーターを起動した状態だとアップデートを行っていないにもかからわず
Windowsからアップデート対象のファイルを削除できませんでした。
Process.Start("Updater.exe"); だと呼び出し元がロックされた状態になるのですかねえ
0906デフォルトの名無しさん
2011/03/17(木) 18:23:33.90特権みたいのを与えないとむりとかそんなんじゃねえかな。
0907デフォルトの名無しさん
2011/03/17(木) 18:34:34.28試しに適当な実行ファイルを消させてみたら普通に消せました。
0908デフォルトの名無しさん
2011/03/17(木) 18:51:40.86オリジナルコントロールを作っていて、同じプロジェクト内でそのコントロールを使うために参照に
アップデート対象となる実行ファイルをいれていたせいでした。
クラス等も含めてコピーしてソースを直した結果無事に成功しました。
こんな初歩的なことですみません。
0909デフォルトの名無しさん
2011/03/17(木) 19:11:54.910910デフォルトの名無しさん
2011/03/17(木) 19:15:45.630911デフォルトの名無しさん
2011/03/17(木) 19:28:49.830912デフォルトの名無しさん
2011/03/18(金) 06:40:28.26取得できますか?
例:typeof(Func<TArg,TRet>)からTArgとTRetを取得
0913デフォルトの名無しさん
2011/03/18(金) 07:04:44.30試したことはないが
0914デフォルトの名無しさん
2011/03/18(金) 07:42:21.44がもつのではないでしょうか。
型情報から取得ってわけにはいかないでしょうか?
0915デフォルトの名無しさん
2011/03/18(金) 10:08:41.11一般には、typeof(デリゲートの型).GetMethod("Invoke")でMethodInfoを取得するしかない
それだって立派な型情報だと思うけど何が問題なのか
0916デフォルトの名無しさん
2011/03/18(金) 10:38:07.78申し訳ありません。せっかく素晴らしい方法を
教えていただいたのに、Invokeメソッドのことを見落としておりました。
DelegateはTarget(object)とMethod(MethodInfo)から成っているので、
デリゲートインスタンスからそのMethodを習得しろといわれているのかと
MethodInfoだけ見て反射的に…。
その方法でやらせていただきます。ありがとうございました。
0917デフォルトの名無しさん
2011/03/18(金) 16:31:21.47状況としてはこんな感じです↓
http://okwave.jp/qa/q6601769.html
ちなみにこれは俺がした質問です。
0918デフォルトの名無しさん
2011/03/18(金) 17:16:33.25OrderByとFirst使え
0919デフォルトの名無しさん
2011/03/18(金) 17:23:45.97なるほど!!それで出来そうです!!
>なんで無理してLINQでやろうとするかな
すみません。まだ覚えたてなので、使いこなせるようになりたくって。
0920デフォルトの名無しさん
2011/03/18(金) 17:49:43.02Linqでガッツリやれ
0921デフォルトの名無しさん
2011/03/18(金) 21:15:19.46C#でID・パスワードの自動再発行の機能をつくりたいのですが
一番効率的な方法ってどんなものがあるんでしょう?
ざっくりな質問ですいませんがよろしくお願いします。
0922デフォルトの名無しさん
2011/03/18(金) 21:18:22.55C#全く関係ないけどね
0923デフォルトの名無しさん
2011/03/18(金) 21:25:54.240924デフォルトの名無しさん
2011/03/18(金) 21:27:42.720925デフォルトの名無しさん
2011/03/18(金) 21:38:52.80ありがとうございます。ただ、実装にちと時間がかかりそうな気が・・
>>924
なるほど。。ちょっと調べてみたんですが良さげですね!
ありがとうございます。
0926デフォルトの名無しさん
2011/03/19(土) 05:16:25.91どの解説も直接メソッド呼び出せばいいだろって
ツッコミたくなるような糞ばっかりでうんざりしてます
0927デフォルトの名無しさん
2011/03/19(土) 05:16:46.970928デフォルトの名無しさん
2011/03/19(土) 05:18:10.92というか、あなた荒らしじゃないの?
この時間にいるのは荒らししかいないようだしね
0929デフォルトの名無しさん
2011/03/19(土) 05:28:09.96向こうはくだらねぇ質問スレの残骸なんだけど、C#が君のようなくだらねぇ質問者を引き寄せるんで、わざと分けたままなの。
0930デフォルトの名無しさん
2011/03/19(土) 05:37:36.35気の毒な人たちだね
そうやって自分たちの首絞めているんだね?
若いプログラマが育たなければ安泰とでも思ってるのかな?
そりゃ海外に負けるわけだ
0931デフォルトの名無しさん
2011/03/19(土) 05:41:59.990932デフォルトの名無しさん
2011/03/19(土) 07:12:56.27どうしてもっていうなら1万/hぐらいでお安く教えてやるよ
0933デフォルトの名無しさん
2011/03/19(土) 07:18:19.920934デフォルトの名無しさん
2011/03/19(土) 07:29:48.790935デフォルトの名無しさん
2011/03/19(土) 07:45:21.500936デフォルトの名無しさん
2011/03/19(土) 08:32:01.12必ず傘をさすようにってお天気で毎回言った方が良い
0937デフォルトの名無しさん
2011/03/19(土) 12:17:33.240938デフォルトの名無しさん
2011/03/19(土) 13:21:56.120939デフォルトの名無しさん
2011/03/19(土) 13:25:10.53Observerパターンを従来のインターフェイスによる方法とデリゲートを使った方法の
両方で書いてみれば、嫌でもデリゲートの威力は体感できると思うけどね。
あと別解。
FirstName, FamilyName, Age, .....などのプロパティを持つPersonクラスがあるとする。
List<Person>のソート方法を、Personのプロパティーの数だけ用意したい(Personの各プロパティーを
キーにしてソートする)とき、List.Sortのどのオーバーロードを使うのが一番簡潔に書けるか
やってみるとか。
0940デフォルトの名無しさん
2011/03/19(土) 13:55:36.16ありがとう
ソートはよくわからないけど、Obseverの方はよくわかった
0941デフォルトの名無しさん
2011/03/19(土) 14:44:28.61デリゲートがないと話にならない。
0942デフォルトの名無しさん
2011/03/19(土) 14:48:40.400943デフォルトの名無しさん
2011/03/19(土) 14:55:41.68http://ufcpp.net/study/csharp/misc_delegate.html
↑これじゃダメなの?
0944デフォルトの名無しさん
2011/03/19(土) 15:52:04.040945デフォルトの名無しさん
2011/03/19(土) 16:21:57.09それそれ、その説明がわかりにくい
普通にメソッドでいいじゃんって思う
eventや非同期でのデリゲートの有用性はわかりますが
それ以外でのデリゲートの有用性が知りたい
0946デフォルトの名無しさん
2011/03/19(土) 16:29:54.16その二つで有用ならそれで十分じゃねーの?
0947デフォルトの名無しさん
2011/03/19(土) 16:33:19.10鼻くそでも穿ってれば?
0948デフォルトの名無しさん
2011/03/19(土) 16:35:22.20ひょっとして、匿名メソッドとデリゲートを混同してない?
あと、eventと非同期の有用性わかったんならそれでOK。
0949デフォルトの名無しさん
2011/03/19(土) 16:39:04.99>>943ではコールバック=非同期みたいないい方をしてるけどLINQもコールバックだ
コールバック処理の中の一つの例が非同期処理
0950デフォルトの名無しさん
2011/03/19(土) 16:40:55.07え?それだけでいいの?
例えば、デリゲートに複数のメソッドを追加することできるけど
こういうを使う機会とかないんですか?
解説サイトの例がこういうのばかりなので
何に使えるのかが知りたいんだけど
もちろん自作クラスやコントロールに複数のイベントを
登録するというのはわかります
0951デフォルトの名無しさん
2011/03/19(土) 16:42:57.26eventを使うと勝手に利用されるつから
0952デフォルトの名無しさん
2011/03/19(土) 16:44:02.65それはあるかもしれない
匿名メソッドとデリゲートを一緒に解説してたりするから
混同している部分はあると思う
0953デフォルトの名無しさん
2011/03/19(土) 16:46:52.08マルチキャストなデリゲートなんて、イベント以外の何に使うんだよ。
0954デフォルトの名無しさん
2011/03/19(土) 16:50:20.42そうなんだー
じゃあ、とりあえずは、非同期とイベントを実現するのに
デリゲートは使われているって思っていればいいんですね
解説サイトの多くは演算処理に使ってたり
いまいち実用性がないようなコードばかりだったので
それ以外の使い道があるのかと思っていた
DelegateComandのようにある処理をまとめるために使う方法で
みんな使っているのかなと思ったけどそうでもなさそうですね
0955デフォルトの名無しさん
2011/03/19(土) 16:51:59.49超少数派
0956デフォルトの名無しさん
2011/03/19(土) 16:55:01.35>多くは演算処理に使ってたり
あんまり使ったことないけどC/C++時代にコールバックて
ソートか何かで使ってなかったっけ?
0957デフォルトの名無しさん
2011/03/19(土) 16:56:30.51また増えるし
0958デフォルトの名無しさん
2011/03/19(土) 16:58:48.570959デフォルトの名無しさん
2011/03/19(土) 16:59:57.03後は、LINQ覚えろ。
0960デフォルトの名無しさん
2011/03/19(土) 17:01:10.700961デフォルトの名無しさん
2011/03/19(土) 17:02:20.92いわゆる述語ってやつね。
比較関数とかを外から挿しこむの。
C#だと、IEqualityComparer使ったものとデリゲート使ったものが混在してるのよねぇ。
3.0以前のものはインターフェイス、3.5以降はデリゲートって感じで。
0962デフォルトの名無しさん
2011/03/19(土) 17:04:06.09前も同じこと言ってて同じ流れになったのに、また同じこと聞いて、何度繰り返すんだか。
0963デフォルトの名無しさん
2011/03/19(土) 17:04:45.960964デフォルトの名無しさん
2011/03/19(土) 17:05:46.85その辺その辺
>多くは演算処理に使ってたり
ってのは手っ取り早く簡単なネタで説明するには
その辺のコード書くほうが楽ってだけだと思うよ
実際はその辺のコードなんて.net側でどんどん実装しちゃうから
ほとんどユーザーが気にする必要が無いので無意味に見える
0965デフォルトの名無しさん
2011/03/19(土) 17:07:20.39俺は規制中なので無理
0966デフォルトの名無しさん
2011/03/19(土) 17:40:20.130967デフォルトの名無しさん
2011/03/19(土) 18:26:51.370968デフォルトの名無しさん
2011/03/19(土) 18:39:43.33IEqualityComparerはEqualsとGetHashCodeが常にセットだから
デリゲートよりもインターフェイスを使う方が適切
SequenceEqualはデリゲート使えてもいい気はするけど
0969デフォルトの名無しさん
2011/03/19(土) 20:00:06.18でもそれはやっぱり、ハッシュ値使うかどうか次第では。
ソートにハッシュ値は使わないわけで。
0970デフォルトの名無しさん
2011/03/19(土) 20:24:42.44これもComparison使えたほうがいいとは思うね。
0971デフォルトの名無しさん
2011/03/20(日) 03:37:01.170972デフォルトの名無しさん
2011/03/20(日) 17:07:46.66StreamReader reader = new StreamReader(stm, System.Text.Encoding.GetEncoding("Shift_JIS"));
StreamWriter writer = new StreamWriter(filePath, false, System.Text.Encoding.GetEncoding("Shift_JIS"));
writer.Write( reader.ReadToEnd();
これでおk?
回りくどい気がする、StreamからStreamWriteに直接データ送れないの?
0973デフォルトの名無しさん
2011/03/20(日) 17:20:44.10あとエンコーディングが同じならReaderWriterなんか使わずStream.CopyToでいい
0974デフォルトの名無しさん
2011/03/20(日) 17:21:27.700975デフォルトの名無しさん
2011/03/20(日) 17:24:33.690976デフォルトの名無しさん
2011/03/20(日) 17:28:34.040977デフォルトの名無しさん
2011/03/20(日) 17:36:03.68引数 1: 'System.IO.StreamWriter' から 'System.IO.Stream' に変換できません
//ネットのデータ受け取り
Stream stm = rsp.GetResponseStream();
//ファイルに出力
StreamWriter writer = new StreamWriter(filePath, false, System.Text.Encoding.GetEncoding("Shift_JIS"));
stm.CopyTo(writer, (int)stm.Length);
stm.Close();
0978デフォルトの名無しさん
2011/03/20(日) 17:38:05.840979デフォルトの名無しさん
2011/03/20(日) 17:39:12.63お前どこまでアホなん。>>976
0980デフォルトの名無しさん
2011/03/20(日) 17:42:31.62その使い方だとReaderで読み取ってWriterの手順を踏まないとエンコーディングぶっ壊れるので
直接書き込むのは止めた方がいいと思う
0981デフォルトの名無しさん
2011/03/20(日) 17:45:40.59Stream stm = rsp.GetResponseStream();
FileStream source = File.Open(@"D:\data.txt", FileMode.OpenOrCreate);
stm.CopyTo(source);
StreamWriterは糞、FileStreamは神
0982デフォルトの名無しさん
2011/03/20(日) 17:46:27.430983デフォルトの名無しさん
2011/03/20(日) 17:48:08.590984デフォルトの名無しさん
2011/03/20(日) 17:48:15.970985デフォルトの名無しさん
2011/03/20(日) 17:50:22.60気の毒な人たちだね
そうやって自分たちの首絞めているんだね?
若いプログラマが育たなければ安泰とでも思ってるのかな?
そりゃ海外に負けるわけだ
0986デフォルトの名無しさん
2011/03/20(日) 17:50:27.210987デフォルトの名無しさん
2011/03/20(日) 17:51:53.64ファイル出力後TextBoxを更新しようとすると
"追加情報: このストリームはシーク操作をサポートしません。"
なんでシークできないんじゃ
stm.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader(stm, System.Text.Encoding.GetEncoding("Shift_JIS"));
this.richTextBox1.Text = reader.ReadToEnd();
0988デフォルトの名無しさん
2011/03/20(日) 17:51:57.750989デフォルトの名無しさん
2011/03/20(日) 17:53:25.52C#関連のスレがこの障害者に荒らされまくってる
0990デフォルトの名無しさん
2011/03/20(日) 17:53:47.64糞クラスなのでサポートされていません
http://msdn.microsoft.com/ja-jp/library/system.net.sockets.networkstream.position.aspx
0991デフォルトの名無しさん
2011/03/20(日) 17:55:06.03リアルじゃびくびくしてるくせに
ネットではキチガイになる
0992デフォルトの名無しさん
2011/03/20(日) 17:55:33.17みんなはどう対策してる?
泣き寝入りかこれ
0993デフォルトの名無しさん
2011/03/20(日) 17:56:26.88http://hibari.2ch.net/test/read.cgi/tech/1300611299/
0994デフォルトの名無しさん
2011/03/20(日) 17:58:33.19みんなは天才なので1パスで済ます方法を考えるかMemoryStreamなどにコピーしてしまう
0995デフォルトの名無しさん
2011/03/20(日) 18:03:59.25//メモリコピー
MemoryStream ms = new MemoryStream();
stm.CopyTo(ms);
//ファイルに出力
FileStream fs = File.Open(filePath, FileMode.Create);
ms.Seek(0, SeekOrigin.Begin);
ms.CopyTo(fs);
fs.Close();
//ボックス更新
ms.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader(ms, System.Text.Encoding.GetEncoding("Shift_JIS"));
this.richTextBox1.Text = reader.ReadToEnd();
0996デフォルトの名無しさん
2011/03/20(日) 18:06:36.910997デフォルトの名無しさん
2011/03/20(日) 18:10:36.960998デフォルトの名無しさん
2011/03/20(日) 18:17:21.85//ボックス更新
StreamReader reader = new StreamReader(stm, System.Text.Encoding.GetEncoding("Shift_JIS"));
this.richTextBox1.Text = reader.ReadToEnd();
//ファイルに出力
FileStream fs = File.Open(filePath, FileMode.Create);
fs.Write(Encoding.Default.GetBytes(this.richTextBox1.Text), 0, this.richTextBox1.Text.Length);
0999デフォルトの名無しさん
2011/03/20(日) 18:20:28.391000デフォルトの名無しさん
2011/03/20(日) 18:23:15.6910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。