ふらっとC#,C♯,C#(初心者用) Part83
乙だがそろそろチンパン消せよw
なおそうかなとも思ったんだけど、そう言う伝統なのかと思ってさ。w
5 :
全スレ975:2012/01/02(月) 23:58:55.08
全スレ981さんへ
ご助言ありがとうございます。
どの道1/3,4は1日中勉強する予定でしたので誰からもチャットが来なければ頂いたサイトを参考に勉強したいと思います^^
1/4ですが、出来れば講師を受けたいと思います。
これ以上はスレ違いと反感をかいかねないため、どうぞSkypeまたはLiveMessengerへ連絡頂ければ幸いです。
他の方も講師をしていただける方がいらっしゃいましたら下記まで連絡をお願いいたしますm(_ _)m
自分のレベル:
HTMLは実務経験あり。
プログラム歴1年くらい。
変数やクラス等の概念は問題ないと思います。
C#は10日程度です。
Skypeアカウント:aspcsharp
LiveMessengerアカウント:
[email protected]
ネカフェでC#開発とかってできるかなぁ
利用するたびVisualStudioインスコすんの?
PC買った方が安くすむだろw
こないだ展示用PCが1万くらいで売ってただろwプログラムできないけどw
あんまり非力なPCだとVS2010は重くて使い物にならないぞ
VS2005持っているなら、中古ノート1万以下のP4 メモリ512 辺りで開発できそうだな
xp sp3入れたら開発はきついな
12 :
デフォルトの名無しさん:2012/01/03(火) 00:43:06.46
ヨドバシの福袋ノートなら1万くらいで開発専用なら悪くなさそうだったな
普通にノート買うつもりで浮いた予算でSSDに変えれば開発ではこまらん
構造体の要素に配列は入れられますか?
通常の配列なら普通に何の問題もなく入れられる
C言語なんかでイメージするような固定長バッファをイメージしてるなら、unsafe付けてfixed
FrameWork1.1が不評すぎてSP3と2010入れてみたけどこれいいね
小文字大文字関係ないのが特に(・∀・)イイ!!
構造体への参照を返すメソッドって作れますか?
>>10 画面がないコマンドみたいなツールならGeodeの512Mで余裕
そのかわりエディターは秀丸
>>16 void SansyouWoKaesuMesoddo( out HageStruct hs )
{
...
}
HageStruct[] SansyouWoKaesuMesoddo()
{
...
}
配列にしちゃうのはP/Invokeでポインタ渡したいときにMSも使ってる手だぬ
構造体内のデータをソース内でセットするんじゃなくて
iniファイルとかからまとめて取り込むのはどうするの?
どのテキストもみんなソースに羅列書きで
それ真似したくない
22 :
デフォルトの名無しさん:2012/01/03(火) 12:56:53.61
iniじゃなくてxml使うようになったから、あなたの希望は永久に実現されない
WindowsFormのTreeViewで、フルパスの文字列からそのTreeNodeを得る
良い方法があったら教えてください。
フルパスを分解して一番上から辿って行くという素直な方法しかない
そんな馬鹿な
TreeView.NodesからTreeNode.FullPathを探せばいいだろ
>>24 Dictionay<string,TreeNode> で検索用辞書を用意して、TreeView作成時に全部登録しておく
普通は再帰使って地道に検索するけどね
>>21-23 > iniファイルとか
「とか」なんだから、今時はxmlで保存してDataContructとか使うと答えておけば良い
iniならまだしもxmlなんてユーザーの触れる代物じゃ無いんだがね。
設定ツール用意する?
そうするとツールの使い方聞かれて面倒。
となると結局iniなんだよな〜
XPも無くなるし今後は保存場所も問題だよね〜
設定ファイル触らせる方が間違ってる
iniなら大丈夫って感性もよく分からないけど
iniならなぜ大丈夫と言えるのだろう
少なくとも家の人間は俺以外誰も分からない
触らせたり読ませたりしないんだったらバイナリファイルにシリアライズしろってことだろ
速度も速いし
iniやxmlは触って/触らせてなんぼだろ
一口にユーザーと言ってもいろいろいるからね。
専業主婦とかではないだろw
状況に依るだろ
滅多に変更しないものでもGUIを用意するの?
使い方を聞かれないGUIを用意するのが一番なんだけど
面倒なんだよな
面倒だからユーザに苦労を転嫁してしまいたい
>>21が言ってるのは構造体のデータを外に出したいってだけで
ユーザビリティがどうこうじゃねえ(=使うのは本人だけ)と思うけどな
脇道に逸れるのが得意だよな
まあ、優位論は他でやるといいよ。
無いものは無いんだから。
それでもiniにしたけりゃP/InvokeでGetPrivateProfileStringでもなんでもどうぞ。
止めないから存分に茨を踏めばいい。
xmlは差分が取れるからバージョン管理しやすい
iniも差分とれるしバージョン管理しやすいけど、使いたくない
要素数が可変だとiniは使わないほうがいい
43 :
21:2012/01/03(火) 17:04:37.55
結局どうすれば・・・?
要は開発中に設定変えるたびにコンパイルしたくなくて
iniファイルだけ調整して試運転したいのが主
構成ファイルで十分じゃね
46 :
21:2012/01/03(火) 17:16:11.63
それって構造体やオブジェクトのデータに使えるの?
Settingでいいだろ
プログラマー…すごい奴らだ。
なんで安いんだろ?
?
.NET Frameworkの既存のDeserializerの類が型引数を取らないのはなぜなんだぜ?
キャストが減って便利じゃね?
型引数つける場所がへんだろ
IsolatedStorageは弄らない事を建前にしてるからなんかなあ
やってみりゃわかるけどリフレクションが絡むとジェネリックうざい
型が分散して扱いづらくなる
分散はしないだろ。書き方が変なんじゃね
たとえばXmlSerializer<T>にしたいって話だろ?
ジェネリックだとFromMappingsとかFromTypesとかできなくなるよ
共通の非ジェネリッククラスを継承するようにしてもいいが、
結局上に挙げたメソッド使うときには非ジェネリックになってしまうし
キャストを減らすためだけに無駄な継承階層増やすのもな
>>28>>29 出来ました!どうもありがとう
入れ子にするとこんなコンパクトになるとは驚き
そしてスタックが溢れるのか。胸熱
再帰ですな
aspでSQLからDatasetに格納して表示まで成功しました。
そこから、リンクを貼って一覧画面から詳細画面に飛ぶにはどうすればいいですか?
<A>タグでリンクかけばいいんじゃないの?
どの行のリンクをクリックしたかで詳細画面の情報も変わってきます。
そのため、リンクにどのような情報を埋め込めば良いのかが分からないのです。
分からない事
・一覧画面のリンクに埋め込む情報はどんな情報か
・その情報を別画面へ持ち込む方法
・持ち込んだ情報をSQL Serverへ送って検索する方法
・検索結果をDataSetに格納する方法
必要な情報を自分で選べばいいだけだろw
URLに情報を埋め込んだとします。
例)~.aspx?number=xxx
この情報を(number)を
・SQL Serverへ送って検索する方法
・検索結果をDataSetに格納する方法
についてどのような方法メソッドやプロパティが使用できるのかご教授ください。
使用できるのかと言うか、使用するべきかですね。
ご教授を要求するとか偉そうだなあ
>>61が出来てるなら何も困るとこないだろ
どういう調査して何を試したか位かけ
>>67 >>ご教授を要求するとか偉そうだなあ
間違った言葉だったのですね。常識知らずで申し訳ありません。
内容をもう少し整理してから書き込みます。
70 :
デフォルトの名無しさん:2012/01/04(水) 08:23:01.31
>>60 再帰って、脱するルーチンミスると無限ループしそうで怖くて
なかなか使う機会がが無い
>>70 そんなの日常茶飯事。スタックオーバーフローが出るだけ。
数回修正すれば治るから大丈夫
再帰怖くない。
72 :
デフォルトの名無しさん:2012/01/04(水) 10:48:17.67
便乗で教えて。デバッグ中とか、無限ループしちゃったら、どうやって止めるのが安全なの?
「デバッグの停止」を実行すればいいじゃん
一般論は無いが、中断して変数や実行場所を弄れば安全に脱出できる場合もあるからまずはそれで
コネクションとかロックとか放置できないものが無ければプロセス強制終了でもいいけど
シフトF5なんて普通に指が動くなあ
再帰はプログラミング初学生が言語に興味もつきっかけとかではアリだが
プロが業務コードとして残すようなものじゃない
無限ループがありえるかありえないかってコードみたらすぐに分かりそうだけど
それでも躊躇するというのはコード以外の要因でバグになった場合を考えてるんですか・?
無限ループでなくても処理によっては結構簡単にスタックオーバーフローするぞ
さすがにTreeNodeの例だったらそこまで深くなる前に他の問題で逝くだろうけど
>>76 TreeNodeとかFileSystemなどは、再帰に向いた構造になっているだろ
それらを扱う時あえて再帰を避ける理由は特にないだろ
後はQSoetとBinaryTreeが再帰の定番かな?
セオリーが常に正しいとは限らないと理解できるようになったら中級卒業だよ
非再帰に書き直して遅くなるコードがあったら書き直すのは適切かとか、
状況は色々あるのにプロだからの一言で片付ける奴はプロじゃねえよ
調子こくな
レベル3かなあ。
プログラミングできると言い切れるほどの能力は無いというか、
どこまで行っても足を踏み入れたばっかりみたいな感覚。
言語だけ覚えてもアーキテクチャはまた別だからなあ。
>レベル3
>様々な先輩プログラマとの交流を持つようになります。
ここで交流させてもらってるから俺ももうレベル3を自認していい?
アルゴリズムの優位論は他所でやってくれて構わないよ
あと動的型と静的型とか、そういう思想に近いのも他所でやってね
C#に関係ないから
邪魔だから
邪魔って分かる?
分からないなら死んでね
はい死んだー↓ キミ今死んだよ
______
r〃〃〃 f7⌒ろ)
l‖‖‖ || f灯
|‖‖‖ || | |
|儿儿儿._」⊥厶
〔__o____o_≦ト、
. i / ⌒ ⌒ ヽ )
!゙ (・ )` ´( ・) i/
| (_人__) | \
\ `ー' / / ー- 、
. ,ィ(⊆≧リ≦⊇)〃 / rク\
. / | ̄r少}¨ ̄〃 / /′ ヽ
〃 l | l| | l| 〃 / / └ヽ
/ l |l | |l/″ / ! 厂 \
く, Y ! l」fレト! / | / 1
丿 | | 丿} じ’ / | / |
/ l | `¨ / レ′ |
真の思考停
(在位 2009年9月16日〜2010年6月8日)
民主朝の初代考停、言行不一致、虚言、脱税、
そして外交において巨大な負の遺産を築いた。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace test
{
public partial class test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string nmb = Request.QueryString["number"];
}
protected void Button1_Click(object sender, EventArgs e)
{
// ここでもnmb変数を使いたい
}
}
}
nmb変数を
protected void Button1_Click(object sender, EventArgs e)
内でも使用したいのですが、どうすれば良いのでしょうか。
89 :
デフォルトの名無しさん:2012/01/04(水) 16:00:21.30
>>88 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace test
{
    public partial class test2 : System.Web.UI.Page
    {
        string nmb;
        protected void Page_Load(object sender, EventArgs e)
        {
            nmb = Request.QueryString["number"];
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            // ここでもnmb変数を使いたい
            if(nmb != null)//いらないかな?
            {
            }
        }
    }
}
入力したら即utf8に変換して内部では常にutf8で処理するのがオススメ
93 :
デフォルトの名無しさん:2012/01/04(水) 19:48:56.71
>>89ですがなんとかできました。
ありがとうございました。
metaに書くの止めてぇ
ちゃんとヘッダ返してよ
あの人を返してよ
>>90 なるほど、変数の宣言だけを外に出せば良いのですね!!
勉強になります。
QueryStringは毎度同じ値が送られてくるんでPage.Loadでプライベート変数に入れればいいけど、
リクエスト間で変わる値・1度しか送られない値はViewStateやSessionに保存しないとダメだよ
自作のクラスライブラリを作りたいのですが
使う時にインスタンスを作った時に実行される部分を作るにはどうやって書けば良いでしょうか?
class Hoge {
private string foo = /*ここと*/;
public Hoge() { /* ここ */ }
}
コンスト…ラクタァーッッッッッッッッッッッッッツ
静的なのもあります
static ClassName() {
}
静的な場合
・パラメータを与えることができません
・アクセス修飾子をつけてはいけません
インスタンス作った時ゆうてるやないか
言ってみたかっただけです
まあライブラリ作るって言うんなら.cctorの方も知っとくべきだな
んん?
使う時のコードじゃなくてDLLの方のコードなんですが・・・
Mainとか書いても受け付けてもらえないみたいですし・・
folderBrowserDialogもどきなんですがフォームアプリのテンプレートを弄って作れますか?
ちょっと何言ってるかわかんない
dllだろうが何だろうが
インスタンス化されるときはコンスラクタが呼ばれるだろ
インスタンスメンバーとは限らんでしょ
>使う時のコードじゃなくてDLLの方のコードなんですが・・・
>Mainとか書いても受け付けてもらえないみたいですし・・
DllMainはどう書くんですかみたいな質問じゃねーの
もう少し詳しい挙動がほしいな
そのMainの中でどういう処理をしたいのか
いろいろ書いたけどエラーばっかりだ・・
ダイアログを出すDLLなんですがまず使うのはフォームでいいですよね?
使う時にはインスタンスを作って
instance.startPath = hogestring;
instance.ShowDialog(this);
Console.WriteLine(instance.Result);
みたいに使いたいです。
DLLの中身になる部分はフォームアプリにして出来てます
その"エラー"の詳細を貼れよ
とりあえずSTAThreadにはなってそうだが
人の質問に答えないのは大幅減点だぜ
早いところ問題を解決したいのは分かるが、少し落ち着け
namespace FolderBrowserDialogEX
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void InitializeComponent()
{
this.SuspendLayout();〜略〜this.ResumeLayout(false);
}
private void Form1_Load(object sender, EventArgs e)
{}
}
static class FolderBrowserDialogEX
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
すみません
Mainの中ではプロパティで与えられたstringやboolを受け取って
それに応じたフォームを表示したいです。
とりあえずみたいにしたらエラーでなくなったけど指摘されてる文字がありますね・・
(長文スマソ)
連投すみませんでした。
なんとなく出来たみたいなので作ってあるコードをコピペしてみます。
[STAThread] はあっても無くてもフォームが出ましたがそれについても調べてみます。
どうもありがとうございました。
STAThreadってのはスレッドの実行モードで、これが指定されてないといろんな機能が使えない
たとえばクリップボードとか
呼び出し元もFormアプリならSTAになってるはずだけど、コンソールアプリからSTA必須のコンポーネントを読んでも動かないからね
あとFolderBrowserDialogEX.Mainは呼ばれてないんじゃないかな?
例えば、string str = "2012/11/31";
strが正しいかどうかをチェックするにはどうすれば良いのでしょうか。
IsDateメソッドを使用すると言うことまでは分かったのですが、
If (IsDate(str))としたところ、
名前 'IsDate' は現在のコンテキスト内に存在しません。と言うエラーが表示されます。
その関数はVBじゃないと使えないもん
"yyyy/MM/dd"とDateTime.TryParseExactでできっかな
規定のフォーマット指定子がありそうだけど面倒だからみてなす
IsDateの実態はMicrosoft.VisualBasic.dllのMicrosoft.VisualBasic.Information.IsDateだからね
実装が怪しいのでVBでもTryParse使った方がいいけど
仕様書に「日付はyyyy/MM/dd形式とする」と書いてあったから
それを解析するのにTryParseExactでyyyy/MM/ddって書式指定したら
2011/1/1がエラーになるってクレームが来た
知らんがな
コード書かない人間がカスタム書式指定子を把握している訳ないだろ
仕様書書いた奴が悪いw
122 :
116:2012/01/04(水) 22:27:17.53
と言う事は、日付を検証するメソッドはC#に用意されていないと言う事ですね?
DataTime型に突っ込んでみてエラーの有無を拾いたいのですが、エラーを拾うにはどんなメソッドやプロパティが使用できますか?
全然人の話し聞いてないし読んでねえな
殺すぞ
>>115 ほんとだ
static class FolderBrowserDialogEX全部消しても動きました。なんか不思議
FrameWork1.1のFolderBrowserDialogが使えるようになるまで(ファイルが多すぎて)10分近くかかってたので自作したんですが
使いたい機能が未対応で途中でVS2010にしたんですが4.0のダイアログが結構改善してました。せっかくここまで作ったのに┐(゚〜゚)┌
みなさんどうもありがと。
126 :
116:2012/01/04(水) 22:37:14.44
理解が悪くて申し訳ないw
DateTime.TryParseExactを使用して文字列を日付型に入れ込む事は出来てるのですが、
やりたい事は"正しい日付かどうかの検証"なのです。
DateTime.TryParseExactは型を変更するメソッドとの理解が間違いでしょうか?
戻り値
型: System.Boolean
s が正常に変換された場合は true。それ以外の場合は false。
変換は要らないので検証だけというなら正規表現でも書くんだねえ。
またはVBに戻るか。
>>126 32日とか入力してテストしたら、レス書くのと変わらん早さで判ると思うんだが・・・
静的な配列を作ったのですがこいつにアクセスするにはどうしたらいいんでしょうか?
public static int[]hairetu={A,B,C};
インスタンスを作れないので単純に
hairetu[1];
だとcs0176が出てしまいます。
>>130 すいません。環境に依存した問題のようなので取り下げさせていただきます。
クラス名.hairetuで通常はアクセスできるようですね。
>コンパイラ エラー CS0176
>インスタンス参照で静的メンバ 'member' にアクセスできません。typename を代わりに使用してください。
>>130のコードならこのエラーは出ないよね
なんで勝手に省略するのかな
自作のDLLにメソッドを追加したいのですが、
使う時にインスタンスを作った時に現れるようにするにはどこに書けば良いでしょうか。
下のものを書いても出ませんでした。
public void Reset(bool b)
{
//変数を初期化
}
instance.Show(this);
と同じように
instance.Reset(true); とやりたいです。
134 :
デフォルトの名無しさん:2012/01/05(木) 00:24:35.99
1) 君が言うDLLはC#の物なのか?C++とかいわないよね?
2) C#のDLLとした場合なぜ「どこに書けばいい?」と聞くのにメソッドを追加したいクラスが晒されないのだろうか
流石にエスパーを期待しすぎだ
何がしたいのか具体的に書け。
箇条書きで短く簡潔にまとめて書くと、自分の言いたいことが素直に伝わるぞ。
>>79-82 って同じ人?無自覚にまきちらした自分が否定されて傷ついたのかもしれないけど
C#で再帰じゃないと書けないコードって例えば何よ?
それをまともに提示できないなら
コード書く能力がたりない事実を見ないようにしてるだけだと思う
もっとMSDNが多様な構文を記載してくれてたり、
応用事例を挙げててくれてたり、
わかりやすく書いてくれてたりしないだろうかね。
138 :
デフォルトの名無しさん:2012/01/05(木) 00:41:37.93
そういうのは外部の本とかの役目でしょ
すみません。
DLLはC#です。
2)がちょっと意味が分かりませんがコードはすべて
public partial class FolderBrowserDialogEX: Form
{ }
この中に書いてあります。
Show()他、既定のメソッドがいくつかあるのでそこに並べて書けば良いのかと思って探したのですが、
書き込めるような箇所にはなっていなかったのでだめでした。
そういうのは外人の本とかの役目でしょ
>>138 どんな本がいいの?
未だにAmazonのプログラムカテゴリでc++の次がJAVAなんだけど、
c#ってまだマイナーなの?
>>140 どの本なの?
>>136 割り込んで悪い。
やり取りを全部読んだわけじゃないけど、俺的には再帰みたいなありふれたテクニックを
学校の教科書の中でしかお目にかからないもののように認識してるあんたの方が
ちょっと非常識に感じるけど....
>>139 言ってることが意味不明かと。
143 :
デフォルトの名無しさん:2012/01/05(木) 00:57:08.10
>>139 クラス名を晒せと言っているのではなく、クラスのソースを晒せと言うこと。
>>133で「出す」って言ってるけど、何を出したいのかを説明して。
>>139 こっちでやってみたけど問題なくReset追加してアクセスできたぞ
↓FolderBrowserDialogEXを使うwinform
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ClassLibrary1;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            ClassLibrary1.FolderBrowserDialogEX fbdFX = new FolderBrowserDialogEX();
            fbdFX.Reset(true);
            fbdFX.Show();
        }
    }
}
>>145の続き
クラスライブラリ側
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ClassLibrary1
{
    public class FolderBrowserDialogEX : Form
    {
        public void Reset(bool b)
        {
            this.Text = b.ToString();//変数を初期化
        }
    }
}
147 :
デフォルトの名無しさん:2012/01/05(木) 01:02:17.42
148 :
デフォルトの名無しさん:2012/01/05(木) 01:04:51.36
C#かわいいよC#
149 :
デフォルトの名無しさん:2012/01/05(木) 01:06:05.82
有料レクチャー君の話じゃないけどマジで
作業中のプロジェクトさえ見れば一発なんだけどなw
よくわからん質問から質問の意図を探りコードを貼って回答とかあほくさ
>>144 クラス内のコードはForm_LoadやButton_ClickやtreeViewを追加したり展開したりという一般的なものなので
特に関係ない部分のように思うんですが・・・
こんなのがあります↓
private void Form1_Load(object sender, System.EventArgs e)
private void treeView1_DoubleClick(object sender, System.EventArgs e)
private void button2_Click(object sender, System.EventArgs e)
とか
public FolderBrowserDialogEX()
{
InitializeComponent(); ←フォームの大きさなど初期値を設定
}
こういうのがありあます。
出ないというのは
DLLを使う時に
myDialog.FolderBrowserDialogEX f = new myDialog.FolderBrowserDialogEX();
出ないというのは
Resetのメソッド名がコードデザイナの自動で出るポップアップの中のメンバに無いという意味です。すみません
出ないというのはf.を押したときにポップアップのメンバに現れないという意味です。
良く見たら出てましたo(*≧з≦)o
スマソ≡≡≡=(ノTдT)ノ ワアァァ・・!!
>>136 例えば最初のTreeNodeの探索など、再帰を使わずに効率よくシンプルに書ける方法無いと思うがな
再帰より少ないステップ数で書ける物なら書いてみろよ
ツリー構造のデータの処理に使う分には大抵深さは知れてるし
関数型とかに馴染み無くても一般的にわかりやすいからな
それ以外は高確率で逝く
Main()の中で全体をtry{}に入れててもエラーで終了してしまうことがあるんですが、どうすれば正常に終了させることができますか?
ID欲しいねえ
>>142 君の周りでありふれてても、それは君の周りのレベルが低いからなんじゃないかな
まともなコードで見たこたないや
ボタン押したらメッセージ表示させるとか
できるようになりました^^電卓もつくれるようになりました
次は何をすればいいですか?
>>159 逆だと思うけどね俺は。まあ、君みたいなタイプと議論してもたぶん無駄だな....
まあ一応具体的な問題を振っておく。
では例えばWindows FormのControlを引数にとって、そのControlの内部コントロールを
「再帰的に」全て取得してControl[]で返すメソッドを再帰呼び出しを使わずに
書いてみて欲しい。
>>155 キャリアがそれなりに長くて、例えばクイックソート組んで高確率で逝くスキルならプログラミングやるべきじゃないぜ
>>165 そのAPI設計が下手なんだよ。気づけないのかなあ。
> 「再帰的に」全て取得してControl[]で返す
コレね。脳が老化してるよきっと。
出来ない奴のひがみキタコレ
自分には出来ない
→他の人にも出来ないはずだ
→自分のやり方が正しい
成長出来ないダメグラマーの三段論法
結局宿題解けない低レベル君だった訳かw
むしろ再帰じゃないと出来ないと本気で思ってるらしいレベルの低さに愕然
そんな抽象的なことで喧嘩しても仕方ないだろう
鎧の上から殴り合いなんてまどろっこしいことしないで
裸でやれよ
177 :
デフォルトの名無しさん:2012/01/05(木) 07:15:15.61
すみませんが・・・
File.Delete()しようとすると
System.UnauthorizedAccessException
がでます。Win7sp1です。
ファイルが存在しないとかはありません。
プロセス握ってることもないです(手動だと消える)
なんでですかね?
VS環境でif文の条件分岐でピクチャーボックスに表示する画像を変えるにはどうすればいいですかね・・・。
>>177 UnauthorizedAccessって通りにアクセス権限がないんじゃない
>>178 ピクチャーボックスのImageプロパティかImageLocationプロパティに
条件に応じた新しい画像を指定してやりゃいいんじゃないの
>>179 動かしているユーザーはadminiなんですけどね。なんでだろ?
GUIならあっさり消えますが。。。
181 :
178:2012/01/05(木) 09:01:42.62
>>179 ありがとん。
とりあえず複数ピクチャーボックスを用意してVisibleを切り替えることでなんとかした。
ひとつのピクチャーボックスで複数の画像を切り替えたかったんだけどまあいいか・・・。
>>180 UACかな、管理者として実行している?
>>182 >>183 えー。すみません。やり方がわかりません。
ちなみにUSERにフルコントロールつけたら動作しました。。
C++からの移植をやってるんですが、ポインタの代わりにC#で用いられる一般的な手法ってなんなんでしょうか?(unsafe以外で)
参照
ポインタは用途が汎用過ぎるので一つで代用できるものでもない
>>186 参照だけど、ポインタがジャグ配列のようになってるデータを次々見ていけるような機能は無いね。
値を参照することは同じように出来るけど。
>>187 状況によってどんな代用をした事があるか?ってことでお願いします。
189 :
デフォルトの名無しさん:2012/01/05(木) 12:18:26.91
なんで上から目線なのかw
質問の仕方が悪いから
>>187のような話になってるのにw
こういうポインタのケースはどうすればいいですか?って例を出して個別に聞けよ
>>188 まあジェネリックコレクションと言うかList<T>をポインタの代用にしているのかな?
Linq使えばC++より便利な時もあるし
なんでソース晒せば一発で解決しそうなことをさも隣の席に座ってる人に
雑談レベルで投げかけるような質問の仕方するかね・・・
一応突っ込んでおくか....
>>169 馬鹿だろあんた。
「再帰的に」、とは「再帰呼び出しを使って」という意味ではない。
というか、ゴチャゴチャ言ってないでやって見せてみろと。
漠然とした質問を投げて後から小出しにしていくのは馬鹿の典型
という漠然とした突っ込み。
それを言うなら、馬鹿の顕著な特徴は「自分に突っ込めない」こと。
ID欲しいよ
IDには馬鹿の馬鹿を補正したり抑止したりする機能も、
幼稚の幼稚を補正したり抑止したりする機能もないけどね。
いい加減これもうっとうしいから一言。
>>195みたいな一点突破主義って、ネトウヨ的っていうかファシズム的だよな。
万能解が常に存在すると思ってる奴は世間知らずの甘ちゃん
>>196 万能とは思ってないが無いよりましだから欲しいってだけ
馬鹿は自分の馬鹿さが分からない馬鹿なんだよ
だからオウム返ししかできない
IDがあってもお前らなら解析してしまいそうだ。
少なくともIDがあれば
>>196みたいなキチガイの一連のレスが判明して
キチガイを再確認できるけどな
>>203 やっぱり思考がネトウヨ的だね。
と言ったところで理解できるとは思ってないが。
人格攻撃するよりもプログラム書いて示すほうが効率的なのになあ
コード書くのが目的なら2chはあまりにも非効率ッ
烈海王で脳内再生された
ワロタ
人民元暴落間近、実はマイナス成長の中国GDP
アメリカの研究者の中には、今年の中国のGDPはマイナス10%ぐらいではないかと推計する人もいます。
そもそも中国の国家統計局が出している数字は、「架空の物語」です。
全国人民代表大会で決まった成長率を覆すような数字を、地方政府が上げるはずがない。16%だの24%だの、ありえない数字を出してきます。
みんなそれを知っていますから、加減してほどよい数字を作り上げる。それが国家統計局の仕事なんです。
中国の現状からすればGDPが上がるとは思えません。個人消費は明らかに減っています。住宅はといえば6500万戸が空き家状態。
企業は設備投資どころではなく、政府の財政支出も限界に来ています。
日本の新聞もようやく中国の不動産バブル崩壊について書き始めました。しかし内容は必ずしも正しくない。
不動産価格が上海で25%、北京で20%下落したといいますが、実際には40%ぐらい下がっていると思われます。
JBPRESS
http://jbpress.ismedia.jp/articles/-/34131?page=2 世界のGDP(単位10億ドル)
1位 アメリカ 14,526.55
2位 中国 5,878.26
3位 日本 5,458.80
↓
1位 アメリカ 14,526.55
2位 日本 5,458.80
3位 中国 5290.43
徹底的にハードなネトウヨコピペするぞ!まで読んだ。
型変換がキツい・・・どうしようもなさそうだ・・・
213 :
デフォルトの名無しさん:2012/01/05(木) 19:28:44.72
うん
System.Web.HttpUtilityでWebページのソースコードを変換したいのですが
System.Web.まで入力するとメンバがパーミッション関係が3つくらいしかでなくて
参照設定の中にもないのですが、どのようにしたら良いでしょうか?
.NET 4 ClientProfileから.NET 4に変更する
カコログ参照
802:デフォルトの名無しさん[sage] 2011/12/07(水) 23:56:13.56
Defaultの.NET Framework Client Profileになってると
参照設定しようにも、System.Web が見当たらない
んでHttpUtility.UrlDecodeが認識してくれなくて一日潰した・・・
805:デフォルトの名無しさん[sage] 2011/12/08(木) 00:31:45.81
>>802 そんなことのためにFullに変更するのはやめましょう
WebUtilityかUri.EscapeXxxを。
ありがとうー両方やってみます。
public System.Threading.Thread t;
と宣言してあるスレッドがボタンを押すと
t = new System.Threading.Thread(new System.Threading.ThreadStart(hogehogeStart));
で実行されるのですが、
hogehogeStartの中で状態を表示するために
label2.Text = "hogehoge";
とやりたいのですが、
「有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'label2' がアクセスされました。」
となってしまいます。
これはどうやれば出来るでしょうか?
WinFormアプリです。
219 :
デフォルトの名無しさん:2012/01/06(金) 00:50:05.91
今作ってるコード出せ
日本語でぐだぐだ説明するんじゃねえ
BeginInvokeを使う
もしくは直接スレッド使うのやめてBackgroundWorkerでReportProgress呼んで
ProgressChangedイベントハンドラでラベル更新
>>218 生兵法は怪我のもと。
コピペコードで誤魔化せる分野じゃないから、ちゃんと真面目に勉強した方がいいと思う。
しかし酷いコードだな。
できました。
分かりやすく書いて頂いていろいろ勉強になります。
今までは上の方法で出来ていたのですごく複雑になった気がするのですが
こっちが正しいようなので覚えるしかないですね。助かりました。
>>224 今までっていうのはつまりThread使う前ってことかな?
一応普段何気なく書いてるプログラムっていうのはUIを処理するThread上で
動いてるんだけど、今回のThreadを使うことでUI Threadとは別のThreadを
作って動かしてることになるから、異なるThread間のやり取りはちょっと面倒な
ことになる
今まではFramework1.1で
>>218の書き方でフォームのコントロールを読み書きできたんですが・・
デバッグモードじゃないとControl.CheckForIllegalCrossThreadCallsがデフォルトでtrueにならないから、というのと
Handleプロパティに明示的/内部的に触らないと例外が出ず、潜在的なバグの原因になるということだろうね
東京にある6つのキー局の内、製作から財務まで一貫して朝鮮人が行ってるテレビ局が1つ
中国共産党から毎年大量の反日工作費が流れているテレビ局が2つ
もろに北朝鮮と繋がっているテレビ局が1つ
年寄はまだまだテレビという外国人に騙され続ける
俺は2chで世の中の真実に覚醒した!というネトウヨ脳w
まで読んだ。
ネトウヨも天皇はすばらしいものだというんだよ。
お仕着せの価値観を信じ込んでしまうバカってのはどうしてもいなくならない。
ひ弱な現代っ子のネトウヨが天皇なんか本気で崇拝してるわけないでしょw
酷使様を気取るのにカッコが付かないから天皇という意匠を利用してるだけ。
それ自身が不敬だということに気づかないのが何よりの証拠。
まあそれ以前に単に頭が悪いというのもあるがw
enum Fruits{
apple,
banana,
melon
}
string test = "banana";
みたいに定義して、
(Fruits)test で Fruits.banana
みたいに扱う方法ってないの?
文字列から列挙型に変換したいんだけど・・・
俺も知らなかった。
どうせなら TryParse( ) も欲しいところ。
Enum.TryParse、.NET 4とSilverlight 4にはあるよ。
知らなかった。
どうせなら 「ここにみんなの欲しいものを入れてね」 も欲しいところ。
なんで知らないんだよ…
ITアットマーク?のc#入門にズバリ書いてあったと思うけど…
俺は知ってたけど、知る知らないの問題じゃないね。
>>232みたいな疑問がわいたら、普通は真っ先にEnumのメンバ一覧を見なきゃ。
何のためのOOPよ。
てかお前らそんなことすら乗ってない入門書やサイトで勉強してんのかよ
ここがID表示板だったら面白いだろうなぁw
>>239 enumの場合はちょっと特殊かもね
Enumクラスというのがあるというのは知識問題だから
数字を
1st
2nd
3rd
みたいな表記に直してくれるメソッドない?
これに関してははっきり言える
ない
ららららいぶらり
らららら
なさそうなら自分で作ればいいのに
クラスとか作って数字突っ込んだら文字返すとかその程度でしょ?
Mapで変換テーブルでも組んでおけばいいと思うよ。
int CompareTo(object obj) {}の上書きで
return Date型 - Date型 > 0 のような感じで大小を比較したいのですが、
どうすればいいですか?
ええええすぱーきてー
251 :
デフォルトの名無しさん:2012/01/07(土) 16:48:18.18
C#で書かれたHadoopみたいなものはないでしょうか?
Javaを入れられない環境なのです
>ITアットマーク?のc#入門にズバリ書いてあったと思うけど…
お前某カタカナ三文字の単語を言わせたいだけだろ
?
>>249 DateTimeなら >,<,+,- 使えるよ
自作クラスなら演算子オーバーロード
カタカナ3文字といえば、、?
?
?
260 :
デフォルトの名無しさん:2012/01/07(土) 18:29:02.64
>>251 おまえの環境にも境遇にも興味ないけど、いい加減現実を見たら?
下のようなswitch式でコントロールの種類で分岐させたいのですが
Control型は使えないというエラーが出てしまいます。
同じようなことをするにはどういう方法でやれば良いでしょうか?
switch (System.Windows.Forms Control cnt)
case (System.Windows.Forms.TextBox):
case (System.Windows.Forms.NumericUpDown):
それよりなんでそんなぶっ細工なコードの書き方なの?
すでにそんな変なコードがあってそれをどうにかしてるの?
swichは基本的に数値だけじゃなかったっけ?
>>262 is
でもまずはそんなクソなことしなくて済むように考えましょう
swich・・・x
switch・・・○
switchは整数と文字列しか受け入れない
型名の文字列取り出して分岐するっての可能ではあるが
お勧めできないからやりたければ自分で調べてちょーだい
C#初代から始めて、今のいままで全然気付かなかったぜぇ
今日の今まで全然気付かなかった衝撃の新事実発見
class DisposeTest : IDisposable
{
public void Dispose() { MessageBox.Show("Dispose"); }
}
IEnumerable<int> TestEnumrate() { using (new DisposeTest()) yield return 0; }
void Test()
{
foreach(var tmp1 in TestEnumrate()) {} // Dispose() が呼ばれる
var tmp2 = TestEnumrate();
while(tmp2.MoveNext()) {} // これでも Dispose() が呼ばれる
}
なぜこれで try catch 句は、入れられないのだろう・・・
そしてさらなる衝撃の新事実
http://d.hatena.ne.jp/NyaRuRu/20070331/p1 class TestC // IEnumerable 持ってない
{
public class TestE : IDisposable // IEnumerator 持ってない
{
public int Current { get { return 0; } }
public void Dispose() { MessageBox.Show("Dispose"); }
public bool MoveNext() { return false; }
public void Reset() { }
}
public TestE GetEnumerator() { return new TestE(); }
}
void Test()
{
foreach (var item in new TestC()) {}
}
これで動くしw
だが、IDisposableはインターフェイスを持って無いと動かないらしい
IEnumerableの挙動って想像以上にややこしいんだな
yield return を使ったコードを書くと、while文でも Dispose するが 自前コードだと駄目。
終点に到達した時に Dispose しているみたいだけれど、迂闊にいれると二重 Dispose になってしまったりと・・・
271 :
262:2012/01/08(日) 02:12:05.93
>>262 の書き方がすごく不評なんですが、具体的にどういう意味で不細工なんでしょうか?
素人なので実感がないので教えていただきたいです。
取り合えず質問の件はisで解決できました・・・
>>271 コントロールをそういう風に判断するコードを書くってケースがそもそも
想像できないんだよな
なんでそういうコードが必要なのか知りたいくらい
まずコンパイル通らないコードは不細工だよ
誰がどう思おうと
酷い回答する奴らだな・・・
>>262 汎用的なのは案外難しい話で、でも単純にその程度でしかないのなら、if 文で書ききってしまうのがベストだと思います。
if(cnt is System.Windows.Forms.NumericUpDown) return 1; // enum の方がいいかもね
if(cnt as System.Windows.Forms.TextBox != null) return 2; // 派生クラスの可能性にも注意
という形で、一旦整数なりenumなりにマッピングしたのち、switchで分岐。
if文の並び順にも注意すべし、先に基底クラスを調べてから派生クラスを調べると全部基底クラスとして判定されてしまいます。
>>270 Dispose()は何百回呼ばれても動作するように実装しないと駄目だから、
二重 Dispose なんて用語はないし、そういう状況を考慮する必要もない
268と269は全然等価じゃないし、269はDipose()呼んでないんだから
実行されないのは当たり前
>>275 そんな所はどうでもいいと思います、普通そうするのは当たり前w
ただ、yield return 形式で作り出したオブジェクトと互換のあるような順序で
Disposeを実行するクラスを作る事は自前では可能なのかなとか?
そんな所、ソコイラにいちいち糞な回答して引っ掻きまわしているのはあんただろ。
yield returnを使用したアセンブリをreflectorなどで覗いてみては?
そういう自前クラスが勝手にできてるから
あんまり関係ないけどDisposeは何回呼んでも問題ないように実装しなければならないと仕様で決まっている
久しぶりにスレ見たけどレベル下がりすぎ
自分も型switchが欲しくなって、ちょっと便利なヘルパーライブラリ作って見た
/// <summary>型からenumへマッピングするアトリビュート</summary>
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
class TypeMapEnumAttribute : Attribute
{
/// <summary>比較優先順位(小さいほど早く比較)</summary>
public readonly int Order;
/// <summary>マッピングしたい型</summary>
public readonly Type Type;
/// <summary>マッピングしたい型を指定する</summary>
/// <param name="order">比較優先順位(小さいほど早く比較)</param>
/// <param name="type">マッピングしたい型</param>
public TypeMapEnumAttribute(int order, Type type) { Order = order; Type = type; }
/// <summary>型をenumにマッピングする</summary>
/// <typeparam name="TEnum">マッピング情報 TypeMapEnumAttribute 入りのenum型</typeparam>
/// <param name="o">型を調査したいオブジェクト</param>
/// <param name="id">型からTEnum値にマッピングされた値</param>
/// <returns>マッピングに成功したならばtrue</returns>
public static bool ToEnum<TEnum>(object o, out TEnum id) { return ToEnumImp<TEnum>.ToEnum(o, out id); }
/// <summary>ToEnumの実装</summary>
class ToEnumImp<TEnum>
{
class TypeAndEnum : IComparable<TypeAndEnum>
{
public readonly Type Type;
public readonly TEnum Enum;
public readonly int Order;
public TypeAndEnum(Type t, TEnum e, int o) { Type = t; Enum = e; Order = o; }
public int CompareTo(TypeAndEnum other) { return Order.CompareTo(other.Order); }
}
static readonly TypeAndEnum[] fields;
static ToEnumImp()
{
Type type = typeof(TEnum);
if (!type.IsEnum) throw new Exception("TEnumがenum型ではない");
List<TypeAndEnum> fieldInfoList = new List<TypeAndEnum>();
System.Reflection.FieldInfo[] fieldInfoArray = type.GetFields(
System.Reflection.BindingFlags.Static |
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic);
foreach (var fieldInfo in fieldInfoArray)
{
object[] attributes = fieldInfo.GetCustomAttributes(typeof(TypeMapEnumAttribute), false);
if (attributes.GetLength(0) == 0) continue;
TypeMapEnumAttribute typeMapEnum = (TypeMapEnumAttribute)attributes[0];
TEnum e = (TEnum)fieldInfo.GetValue(null);
TypeAndEnum tae = new TypeAndEnum(typeMapEnum.Type, e, typeMapEnum.Order);
fieldInfoList.Add(tae);
}
fieldInfoList.Sort(); // 比較優先順位でソートする
fields = fieldInfoList.ToArray();
}
public static bool ToEnum(object o, out TEnum id)
{
if (o != null)
{
Type type = o.GetType();
for (int i = 0; i < fields.GetLength(0); ++i)
{
if (type == fields[i].Type || type.IsSubclassOf(fields[i].Type))
{
id = fields[i].Enum;
return true;
}
}
}
id = default(TEnum);
return false;
}
}
}
文字列使えるんだからType.Name(厳密にしたければFullName)でも並べとけってのは禁句なの?
利用サンプル
enum ETypeMap
{
[TypeMapEnum(1, typeof(System.Windows.Forms.Button))]
Button,
[TypeMapEnum(0, typeof(System.Windows.Forms.TextBox))]
TextBox,
[TypeMapEnum(999, typeof(System.Windows.Forms.Control))]
Control,
}
class TestClass
{
static public void Test()
{
//object x = new System.Windows.Forms.Button();
object x = new System.Windows.Forms.TextBox();
ETypeMap typeId;
bool result = TypeMapEnumAttribute.ToEnum<ETypeMap>(x, out typeId);
System.Diagnostics.Debug.Assert(result, "マッピングされていない型を発見");
switch (typeId)
{
case ETypeMap.Button: MessageBox.Show("Button"); break;
case ETypeMap.TextBox: MessageBox.Show("TextBox"); break;
case ETypeMap.Control: MessageBox.Show("その他のControl"); break;
default: throw new System.Exception("switch文エラー");
}
}
}
実装を長々と貼るな
いちいちenum定義して属性付けてとかするくらいなら型名取得して文字列でswitchの方がマシ
>>285 それだと右クリックリファクターで一斉名前変更が出来なくなって凄く感じ悪くなる。
ちょっと便利なコード貼るサイトも利用してほしいね
>>289 caseの方にもtypeof並べるとか頭使おうぜー
switch(a.GetType().Name){
case typeof(b).Name:
case typeof(c).Name:
case typeof(d).Name:
case typeof(e).Name:
default:
break;
}
Dictionary<Type, Action>でマッピングするような考え方の方がいいと思う
いちいちenum介すのはDRY的にやりたくないな
>>294 Dictionaryは使いにくいと思う、単純に比較して以上終了とならない継承の問題があるので。
貼られてる糞コードも解決してないぞ
一応、簡単に対処するために比較優先順位を投入してあるんだけどね
もっとインテリジェントに、半順序ソートして自動検出できるようにもできるけど
それは今後の課題にしておく。
こういうのはどういう状況下で必要になるんだろう
いやそもそも単にis並べればええんちゃうんかと
ToEnumで線形検索しちゃってるんだからisの方が速いだろ
>>298 オブジェクト指向を理解 { せず | できず } に、C# とかを使うはめになった時。
オブジェクト指向を理解してC#使う人はどういう風に書くの
>>284のToEnumの実装じゃ全くswitchの意味がないな
結局上から順に if (o is T1) else if (o is T2) ...とやってるのと同じことを
リフレクションで難しくクソ効率悪く書いてるだけだ
まあ、質問者は効率なんて求めてないでしょ
自分の書きたいように書ければ満足なだけで
普通は使わないと思う
どうなんだろ
sealされてるクラスを含むControlコレクションに対して何かやりたいときかなあ?
コントロールに合わせた特徴を列挙したいとか…
System.Convert.GetTypeCode() 等のパターンとかみて、型 enum マップの基本を勉強しろとしかいいようがないな・・・
ほんと向上心がないんだね
307 :
262:2012/01/08(日) 12:38:50.88
いろいろすみません。
用途は
>>223のコードを弄ってコントロールへ文字列を送る部分を一まとめに書こうとしてます。
引数1をWindow.Forms.Controlにして
引数2をclass Form1で予め定義しておくコントロールの配列、
引数3に内容というふうにして
class hoge 76行目の所の_SetText("[・・・を
_setText(textBox,1,"文字列");とか、_setText(numericUpDown,1,"1234");とか・・・
delegate…
>>307 何の役に立つのか俺には想像できないが
コントロールの型で分岐したいだけだったら
if (control is TextBox) { テキストボックスの場合 } else if (control is NumericUpDown) { NumericUpDownの場合 } else …
がベスト。switchとかいらん。ディクショナリとデリゲート使ってもいいけど君には難しい。
>>301-302 いや、マジでこんなことが必要になることは絶対ありえないとは言わない。
でも、継承をうまく使えずにこういうことが必要となるのは結構ありがち。
そもそもなんでswitchって整数と文字列に限るの?
…これだけのために継承書くかと言われると
ないわ
普通にif使うより長くなったら意味無いだろうに・・・・
分岐よりポリモーフィズム使えってのは、
サブクラスがぼこぼこ増える場合に分岐を書き足さなくていいからでしょう?
確かコード何とかって本ではそんな趣旨だったけど、
本来は増える見込みのないものまで全部書くんか?
>>311 それ以外はコンパイル時定数じゃないしコンパイラが等値比較の挙動を知らないから
そういう場合は特に最適化できないのでifと変わらんからif使えということ
switchはあえて厳しい制限を設けることで「ここ最適化しやすいよ」とコンパイラに伝えるためにあるものなので
switchに定数しか書けないのはテーブルジャンプを作りたいからだろう、C言語からそういう感じだ。
アトリビュートもアセンブリの事情で引数は定数とtypeof()演算子が使える。
恐らく、開発者であるヘジルスバーグも、型名スイッチについてはきっと考えた事は間違いないと思われる。
アトリビュートに許されてswitchに許されないとか、特に事情がないとすれば訳が分からない。
しかし、それでなお取りやめたんだろうな。
意図する所は、色々コードを組んでいれば見えてきて、バグの元やめとけって事なんだろうなと思った。
コード量が足りないと不便に感じたりする事もある。
しかし、ここの否定している奴の言い分は、論外の予感、論点ずれまくり。
>>317 実行時の型情報(Typeオブジェクトが持ってるハンドルの値)はコンパイル時に決まるわけじゃなくて、
実行時に型がロードされるまでわからない値なんだよ。
属性は、リフレクションで属性を取得しようとしたときに
属性のコンストラクタが実行される簡単な仕組みなので、typeofが使えるのは何の不思議もない。
typeofの結果の値自体は実行するまでわからないの。
>>318 それでも可能だが・・・、仮にそれを認めたとしても.NETには型の完全名ってヤツがあるんだ。
生半可な知識晒さない方がいいよ
isでスイッチだと、親子関係のクラスがケースに書かれていたらどっちに分岐って問題出るだろ
分岐とかそういった話の前に、実装を隠す為のデザインパターンについて多少でも勉強すればいいんだよ。
.Net のライブラリでも駆使されている、そこにswitchなんぞ適用したら・・・
そういう所に視点が及ばないから論外。
何ていう名前のパターンさ
論外の前に具体性がないよ
デザパタに名前がついているのは会話で扱いやすくするためだそうだよ
今生かせや
型の完全名は衝突しないんだっけ
>>320 上の方にisで判定する時は子供からやれよって書いてあるよ
クソウゼェから同じ話題に対して同じこと何度も言わないで
完全名はね、それ以前に型情報だけロードしてクラスをロードしないっていうメソッドが実はリフレクションにあるんだよ。
だから出来るの。関係無いの。
型の完全名ってCLRのバージョン依存じゃなかったっけ
脇道で花火してるようだけど、質問者への回答はとりあえず
>>309でいいの?
異論なし?
クラスの中のEqualsメソッドでやってきたクラスが自分と同じかを比較したい時はisを多く使うだろう。
クラスの外で、何クラスかを分類した時は as を使って null チェックが基本となるだろう。
沢山コード書け。
逆だろ
Equalsでisを多く使ってる気がするのは値型が多いからで、as使えるならasの方が綺麗だし効率もいい
分岐先が多いとasは見辛くなる
同値なのか同類なのか、そこが重要なんだよ、逆とか関係ない。
>>330 参照型に対するisは (x as T) != null と同じだが
何を言ってるんだ?
332 :
331:2012/01/08(日) 14:11:49.14
ああ x is T が x.GetType() == typeof(T) と同じだと勘違いしてるのか
継承を禁止してないならもちろん x.GetType() == typeof(T) が適切
333 :
331:2012/01/08(日) 14:13:26.54
>>332はEqualsを実装する場合の話
申し訳ない
コード書けってのもなんかなあ
お前らみたいな暇を持て余してる連中利用して楽に仕上げたいだろ?だろ?
web上のデータを取得する方法は
WebClient wc = new WebClient();
wc.DownloadString(URL);
のようにWebClientクラスを使って一発で済ます方法の他に
HttpWebRequest
HttpWebResponse
StramReader sr = new StreamReader(st, enc);
と3つのクラスを順に使いながら取得する面倒な方法の二つに大別できるかと思います。
後者の面倒な方法の需要はどういうときにありますか?
前者のWebClientクラスだけで事足りるような気もするのですが・・・
httpヘッダーいじれるかどうかどかもうちょっと踏み込んだことやる場合に使うかも
2chのdatを取得するような場合もWebClientじゃあ運営うるさそうだしなあw
>>336 取得される側から見ても違いはあるんですか?
>>337 あるよ
まあ差分取得推奨してるところなんて今時2chくらいだろうけどw
2chのdatを丸ごと取得するのと更新があった分だけ取得するのでは
チリも積もれば・・・だしねえ
あとは細かい転送ができることでレジュームダウンロードのようなこともできる
xxxバイトまで転送したのでこの続きから送ってとか
WebClientはgzip標準で使ってない
gzip使わないとダウンロード量が2〜3倍ぐらいになったりするときもある
ひと手間かければ使えるけど
あとはステータスコードの取り扱いがいやらしい
>>280-287 型からenumへマッピングして、switch 文で効率よく分岐するのヘルパーライブラリに
簡単なオプティマイズを施して、線型検索O(n)からハッシュテーブルによるO(1)検索に作り替えてみた。
単純に最初の検索だけは線型検索で地道に検索して、結果をハッシュテーブルに放り込むだけです。
もし使ってみたい人がいたらどーぞ
入れ替えは ToEnumImp<TEnum> クラスの所だけです。
/// <summary>ToEnumの実装</summary>
class ToEnumImp<TEnum>
{
class TypeAndEnum : IComparable<TypeAndEnum>
{
public readonly Type Type;
public readonly TEnum Enum;
public readonly int Order;
public TypeAndEnum(Type t, TEnum e, int o) { Type = t; Enum = e; Order = o; }
public int CompareTo(TypeAndEnum other) { return Order.CompareTo(other.Order); }
}
static readonly TypeAndEnum[] fields;
static readonly Dictionary<Type, TEnum> typeToTEnum;
static ToEnumImp()
{
Type type = typeof(TEnum);
if (!type.IsEnum) throw new Exception("TEnumがenum型ではない");
List<TypeAndEnum> fieldInfoList = new List<TypeAndEnum>();
System.Reflection.FieldInfo[] fieldInfoArray = type.GetFields(
System.Reflection.BindingFlags.Static |
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic);
foreach (var fieldInfo in fieldInfoArray)
{
object[] attributes = fieldInfo.GetCustomAttributes(typeof(TypeMapEnumAttribute), false);
if (attributes.GetLength(0) == 0) continue;
TypeMapEnumAttribute typeMapEnum = (TypeMapEnumAttribute)attributes[0];
TEnum e = (TEnum)fieldInfo.GetValue(null);
TypeAndEnum tae = new TypeAndEnum(typeMapEnum.Type, e, typeMapEnum.Order);
fieldInfoList.Add(tae);
}
fieldInfoList.Sort(); // 比較優先順位でソートする
fields = fieldInfoList.ToArray();
typeToTEnum = new Dictionary<Type, TEnum>();
}
public static bool ToEnum(object o, out TEnum id)
{
if (o != null)
{
Type type = o.GetType();
if (typeToTEnum.TryGetValue(type, out id)) return true;
for (int i = 0; i < fields.GetLength(0); ++i)
{
if (type == fields[i].Type || type.IsSubclassOf(fields[i].Type))
{
id = fields[i].Enum;
typeToTEnum.Add(type, id);
return true;
}
}
}
id = default(TEnum);
return false;
}
}
>>342 大量にコード貼るなら外部サイト使ってくれ
人の話聞いてないみたいだからほっとけ
>>341-344 のコードをさらにマルチスレッドにも対応しました。
ここを if (typeToTEnum.TryGetValue(type, out id)) return true;
これに lock(typeToTEnum) if (typeToTEnum.TryGetValue(type, out id)) return true;
ここを typeToTEnum.Add(type, id);
これに lock(typeToTEnum) typeToTEnum.Add(type, id);
入れ替えればOKです。他は問題ない筈。
御前の頭に問題がある
349 :
デフォルトの名無しさん:2012/01/08(日) 17:49:52.98
俺すげーになって場がしらけてることをわかってない
>>348 ゴミ書き込みまくる奴よりは有意義だろw
351 :
デフォルトの名無しさん:2012/01/08(日) 17:50:52.99
>>350 雑談をするところで長々とコードを貼るところではない
コードは外部に貼ってまとめておいてくれれば評価されたのに
それをしなかっただけで単なるうざい人
コード貼るならサイト使えって1回目に言われた時点で理解しろよ
同じことを二度言うのは嫌いなんだ
それ以前に
>>1 >このスレッドは
>「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です
誰かのくだらないコードを読まされるスレじゃないハズ
>>353 そうですよ、質問者に対して意地悪な事ばかりする奴は徹底的に叩きます
あんたの事だよ
コード張ってるアホは質問者に対してのアクションじゃないし
それ以前に誰も頼んでない
久々に覗いたが、質問者に対する返答が酷過ぎるよ、なんだよこの気分滅入るような馬鹿は。
ゆとり世代の学級崩壊みたいになってんな
好きな時に好きなこと書いてるだけ
ルール無視
>>338 > あるよ
> まあ差分取得推奨してるところなんて今時2chくらいだろうけどw
>>399 > WebClientはgzip標準で使ってない
ああ!WebClientクラスだと差分取得ができないんですか!
なるほど、そういうときに
HttpWebRequest
HttpWebResponse
StramReader
を使う方式に利点が出てくるんですね。
もっとも差分で無圧縮のデータを取得するくらいなら最初から圧縮済みのデータを丸ごとDLしたほうが負荷は低い(ry
伝送負荷と演算負荷は別だし
震災前
/::::::::::::::::::::::::::::::;;::ノ ヽ;::\
/::::::::;;;;;;;;;,,,;;...-‐''"~ ヽ:;::l
|:::::::::::| 岡田 異音 |ミ|
|:::::::/ ,,, ヽ,、 '|ミ|
'|:::::::l '''"" ゙゙゙゙` |ミ|
|:::::|. ,,r ‐、 ,, - 、 |/
,/⌒| ノ ・ _), (. ・ `つ|
| ( "''''" |"'''''" |
ヽ,,. ヽ |
| ^-^_,, -、 |
| _,, --‐''~ ) | マニフェストもう守れない。どうしよう・・・・
'ヽ ( ,r''''''‐-‐′ /
震災後
|:::::::::/ |ミ|
|::::::::| ,,,,, ,,,,, |ミ|
|彡|. '''"""'' ''"""'' |/
/⌒| -=・=‐, =・=- |
| ( "''''" | "''''" |
.ヽ,, ヽ .| キリッ
| ^-^ |
. | ‐-===- | 大震災が起こったのだからマニフェストの破綻も致し方ありません
,\. "'''''''" /
朝鮮民主党
おわり
差分取得ってなんすか?
なんか問題でもあるんすか?
yieldってどうやって呼び出すんですか?
まず靴を履いて外に出ます。
コンパイラさんに感謝してMoveNextを余分だよボケが
シュワッチ
>>350 まあ確かに。
って言うか、コード貼るなって言ってる奴も結局「俺の言う事を聞け(ムキー)」でしかないなw
確かにじゃねえよ寝ぼけてんのかクズが
id表示してほしいな
馬鹿の一つ覚えみたいにIDID…
よっぽどIDが都合悪いらしいな
流れをきるようで申し訳ないですが、
Windows(XP以降)のエクスプローラー上で選択状態にした複数のファイルの名前を、
右クリックメニューから起動するプログラムに渡したいのですが、どうやったら渡せるでしょうか。
とりあえず単純にレジストリキー登録で右クリックにプログラムを登録する方法では、
複数ファイルを選択してプログラムを起動してもargsに渡されるファイル名は一つだけでした。
(ちなみに右クリックの"送る"のところに登録すれば送るのシェル拡張?で複数ファイル名が渡されるようですが、"送る"に登録する以外の方法が知りたいです)
エクスプローラー上で選択状態になっているファイル名を取得する方法でもOKです。
どうかよろしくお願いします。
(IDが)効いてる効いてるw
>>373 レジストリのopen??commandの代わりにopen?DropTargetにする
IDropTargetを実装してCLSID適当に付けてCOMに登録すればいい
残念ながら君には不可能だが
名無しでいいよ:2011/08/15(月) 23:20:15.53 ID:2fed4jwtO
FNS歌謡祭やHEY!×3の制作会社
株式会社CELL
東京都千代田区麹町2―2―4麹町YTビル
前バリ・REN4・野田らに政治献金した後藤組のフロント企業
メディアトゥエンテイワン
東京都千代田区麹町2―2―4麹町YTビル
ポインタを揃えた?
ラムダ内でfixedで得たポインタを以下のように使おうとすると、
fixed (int* p = a) {
Action lambda = () => *p = 0;
}
このようなエラーが出ます。
「エラー CS1764: 匿名メソッド、ラムダ式、またはクエリ式の内部では、固定のローカルな 'p' は使用できません」
じゃあということで、以下のように別のポインタを作って間接的に使うと、
エラーにならず、目的通りに動いてくれました。
fixed (int* p = a) {
int* pp = p;
Action lambda = () => *pp = 0;
}
お聞きしたいことは、
・直接使うとエラーにする理由
・後者のように間接的に使う方法は問題ないか(もちろんラムダはfixed内のみで使う前提で)
です。お願いします。
> ・直接使うとエラーにする理由
fixed抜けた後でlambdaを使うことが可能になるだろ
ListにAddされたりしたら追跡できん
> ・後者のように間接的に使う方法は問題ないか(もちろんラムダはfixed内のみで使う前提で)
fixedの中だけならまあいいんじゃない
仕事でそんなの書く奴がいたらアレだけどまさかな
動画を右クリックしてプロパティを開いて
概要のところにタイトルとかカテゴリを記入することができますが
C#でそれをするにはどうすればいいですか?
読み込みしかできないっぽいんですが
>>381 そのタイトルとかカテゴリーはなにか
可能性は二つ
1 .動画独自のデータ
2 NTFSの代替データストリーム
1だったら自分で何とかするしかない
2はc#からの利用は自前でcomのインターロップコード書くかdsofile.dllを使う
NTFSサブストリームのことかねえ
安直にはdsofileライブラリを使う
根性があるならCreateFileとWriteFileでも行けるでしょう
生半可な根性では無理ですが
おっと
MP3のようなタグだから、WindowsAPI Codepack 使うのが一番お手軽
VC#で使用できるガントチャート作成用コンポートネントで無償のものは無いでしょうか?
>>382 >>383 ファイルの概要情報プロパティです
これがNTFSサブストリームなのかよくわかりませんが
テキストファイルも動画ファイルも同じように
タイトル、表題、作成者、カテゴリ、キーワード、コメント
という感じになっています
右クリックして直接編集する分には簡単にできたので
これを利用して動画などの情報(タグ)をコメント欄などに書き込み
管理するソフトを作ろうと思ったのですが、難しそうですね…
dsofileで試してみます
ありがとうございます
388 :
デフォルトの名無しさん:2012/01/09(月) 19:16:44.39
>>387 ファイルの種類ごとにメタデータのフォーマットが違うからねぇ
ここらへんはなんとかしてほしいわな
ある程度はWindows7からシェル経由でなんとかなるけど
違うクラスで同じ処理を実行する場合同じコードをもう一つのクラスにコピペするのと
他方から1つのものを使うようにコードを書くのではどちらが普通の書き方ですか?
コピペは論外だがケースバイケース
別のクラスにその処理を移動してそれを両方から使うほうが適切な場合もある
大原則で同じコードを複数の場所に書かないと言うのがある
>修正するとき全部修正しないといけなくなって漏れがリスキーだから
FormB書いててFormAの中にある処理と同じことをしたくなったからといって
FormBがFormAのstaticメソッドを呼んだりするのは不適切
そういうときはその処理専用のクラス作るかユーティリティクラスに入れるべき
なるほど。一つお利口になりました^^
ありがと
コピペ王に俺はなる!
コピペするとコピペ罪で捕まりますわ
コピペしたら警告してくれるIDEくだちゃい
398 :
デフォルトの名無しさん:2012/01/09(月) 22:03:53.54
サイト 維持 のために アフィ の クリック お願いします!!
アスペクト指向用のライブラリがあればコピペしなくてもいいのにな
既存の物は論外だ
400 :
デフォルトの名無しさん:2012/01/09(月) 22:41:03.07
_,,....,,_ _人人人人人人人人人人人人人人人_
-''":::::::::::::`''> 広 告 ク リ ッ ク し て い っ て ね! <
ヽ::::::::::::::::::::: ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
|::::::;ノ´ ̄\:::::::::::\_,. -‐ァ __ _____ ______
|::::ノ ヽ、ヽr-r'"´ (.__ ,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、
_,.!イ_ _,.ヘーァ'二ハ二ヽ、へ,_7 'r ´ ヽ、ン、
::::::rー''7コ-‐'"´ ; ', `ヽ/`7 ,'==─- -─==', i
r-'ァ'"´/ /! ハ ハ ! iヾ_ノ i イ iゝ、イ人レ/_ルヽイ i |
!イ´ ,' | /__,.!/ V 、!__ハ ,' ,ゝ レリイi (ヒ_] ヒ_ン ).| .|、i .||
`! !/レi' (ヒ_] ヒ_ン レ'i ノ !Y!"" ,___, "" 「 !ノ i |
,' ノ !'" ,___, "' i .レ' L.',. ヽ _ン L」 ノ| .|
( ,ハ ヽ _ン 人! | ||ヽ、 ,イ| ||イ| /
,.ヘ,)、 )>,、 _____, ,.イ ハ レ ル` ー--─ ´ルレ レ´
アスペ向き まで読んだ
403 :
デフォルトの名無しさん:2012/01/09(月) 23:34:20.59
このスレでUbuntuでC#プログラミングしてる方っていますか?
居たらどのくらい実用可能か教えてください(NET.Framework的に)
>>402 結局コントロール名を文字列リテラルで書いてたら意味ないでしょ
普通にswitch (control.Name)でいい
405 :
デフォルトの名無しさん:2012/01/09(月) 23:51:01.50
>>402 以前switchでコントロールの判断させるロジックの質問した人だよね?
そういうことがしたかったの?
>>404 こうやれば入力支援で大文字小文字とかの入力ミスがなくなるので良いと思ったのですが
それは Invoke(new SetTextCallback(SetText), cntName , msg );
の引数1もつかわずに名前を入れた共有変数1つだけを見ればいいということですか?
>>405 そうです
>>406 もっと上の方で何をやってるからそういう仕組みが必要なのかわかればなあ・・・
名前だけじゃなくTagっていうobjectのあいてる領域があるから
そこに任意の数字を入れてやるとかいう手もあるし
場合によってはswitchで判断するコントロールを継承したクラスを作って
自分が使いやすいようにintを足してやるとかするとかすればいいんだが・・・
ええい!生意気な乳首め!
409 :
409:2012/01/10(火) 00:15:13.11
Silverlightプロジェクトを、Expression Blend4で作っています。
C#、XAMLはわからないので、デザインモードで作っています。
ブラウザで開き、ボタンを押したらYahooのページに移動するようにしたいです。
C#のコードの画面(.cs)は、以下のように記載されています。
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Diagnostics;
続く・・
410 :
409:2012/01/10(火) 00:15:54.25
続き・・
namespace SilverlightApplication6
{
public partial class MainPage : UserControl
{
public MainPage()
{
// 変数を初期化するときに必要となります
InitializeComponent();
}
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
// TODO: ここにイベント ハンドラーのコードを追加します。
System.Diagnostics.Process.Start("
http://www.yahoo.co.jp/");
}}}
しかし、ビルドしようとすると、
「型または名前空間名'Process'は名前空間'System.Diagnotics'に存在しません。
アセンブリ参照が不足しています。」とエラーになります。
どうしたらよいでしょうか。よろしくお願い致します。
>>402 率直に言って何がしたいのか全然わからない。
たぶん書いてる本人もそこを詰めてないから分かってないんだろうな。
まあ、手段(switch)が目的化してる倒錯だけは読み取れるけどw
>>409 SilverlightにSystem.Diagnostics.Processは無い
COMで迂回してもいいが、SilverlightだったらそんなことしないでHtmlPage.Window.Navigateで一発
413 :
412:2012/01/10(火) 00:33:07.90
補足
ブラウザで開くからCOMは無理だな
ブラウザ内のSilverlightはHtmlPage.Window.Eval("alert('Hello World')");
のようにJavaScriptを実行させることができるから、Navigateの動作が気に入らないならお好きなように
414 :
409:2012/01/10(火) 00:39:04.98
>>412 ご教示ありがとうございます。
以下のように書けばよいのでしょうか?
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
// TODO: ここにイベント ハンドラーのコードを追加します。
HtmlPage.Window.Navigate("
http://www.yahoo.co.jp/");
}
上記でビルドしようとしたところ、
「名前'HtmlPage'は現在のコンテキスト内に存在しません。」のエラーになってしましました。
>>413で頂戴したコードに変えてみたのですが、同様のエラー文が出てきてしまいました。
書き方が違うのでしょうか。よろしくお願い致します。
>>407 なんか難しそうな言葉が・・
>>411 >率直に言って何がしたいのか全然わからない。
正解と違うやり方をしようとしてるからなにをしようとしてるのか?って見えるんでしょうか?
delegateとかInvokeとか詳しく理解してればコントロールへのアクセスを直接実行できるのかと思いますが
そういうのが難しそうなので文字列を送るサンプルをもらったのでそれでなんとかしたいと思ってるだけです。
Framework1.1では別スレッドからフォームへのアクセスがエラーにならなかったのですが
4.0に移したらエラーになったので対策してます。
別スレッドの重い処理中でlistViewの上から順に処理しつつ、状況をlabelに表示したり、
フォームの操作の処理を並行したいのが目的です
そもそも知らない方法に出くわした時に知ってる方法でごまかすというのが間違いなんですかね・・
>>414 using System.Windows.Browser;
をファイルの先頭に追加
さすがにC#の知識ゼロでSilverlightは無理があるからちゃんと入門書買ってきて出直せ
1.1から4に移行する程間あけちゃう怠け癖が問題
>>415 そんなのごちゃごちゃこねくり回すより
ちょっとそこらでControl.Invokeの使い方調べる方が早いと思うよ
419 :
409:2012/01/10(火) 01:23:40.23
>>416 ありがとうございます!できました!
以前、Blendを使っての業務をしていたのでいけるかと思いましたが、
ちょっと業務の範囲をそれると、もう完全にお手上げですね・・
何はともあれ、本当に助かりました!
ありがとうございました!
textBox1.Text = "abc";
を、↓にすればいいんだっけか?
textBox1.Invoke(new Action(()=>textBox1.Text = "abc"));
this.InvokeかtextBox1.Invokeかいまいち分からないけど。
>コントロールの基になるウィンドウ ハンドルを所有するスレッド上で、デリゲートを実行します。
て事だから、SendMessageで処理されるの?
>>375 >>376 ツンデレか!w
要点をお教え頂きありがとうございました。
教えていただいた内容やアドレスからなんとか、GUID(CLSID)をつけてCOMに登録したり、
IDropTargetやIShellExecuteHookのC#での使用方法等がわかりました。
いろいろ調べていくうちにIContextMenuを実装するのが最終的にしたい事には
一番しっくり来るかなと思いましたのでそちらを更に調べていこうと思います〜。
>>420 textBox1が乗ってるウィンドウと同じスレッドでnew Action(()=>textBox1.Text = "abc")を実行します
ってだけ
デリゲートの意味が分からないなら調べろ
SendMessageは一切関係ないから忘れとけ
>>422 >SendMessageは一切関係ないから忘れとけ
SendかPostか分からないけどメッセージは飛んでるみたい。
msg=0xc20b hwnd=0x50408 wparam=0x0 lparam=0x0 result=0x0
(FormのWndProcをオーバーライドして確認)
別スレッドからthis.Invokeした場合だけでtextBox1.Invokeや同一スレッドから実行した場合は確認できず。
やっぱXXX.InvokeのXXXを何にするかはそのUIスレッドに属していれば何でもいいんだね。
>>382 dsofileであっさりできました
ぐぐってみるとOffice Documentsじゃないとエラーが出るみたいな
ことが書いてある記事もあったけど
動画でもなんでもできました
ありがとうございました
C++のdllを呼び出そうとしているのですが
void* hoge;
DeviceOpen(&hoge);
をC#で書こうとして
IntPtr hage;
[DllImport("dll名"]
public extern DeviceOpen(out IntPtr hage);
フォーム起動時の最初で
unsafe{
fixed(IntPtr* p = &hage){
DeviceOpen(out* p);
}
}
と、やっても何のエラーもい表示されずに以下の関数をすっとばしてフォームを表示してしまいます。
この場合、何がいけないのでしょうか?
ポインタ周りがわかっていないからだとは思うのですが、よろしくお願いします。
ファイル側からexeを指定して起動された場合のイベントはどこで処理すればいいんでしょうか
fixedとかいらん
DeviceOpenは返値無いのか?
>>426 ファイル側ってのがよく分からんが、Mainメソッドじゃね
馬鹿には無理
430 :
425:2012/01/10(火) 09:34:59.83
>>427 最初はfixed無しでやっていたのですが、ポインタのアドレスを渡す為にunsafeとfixedにしてみました。
DeviceOpenは返値あるのですが、そこに値を返す前に関数が終了してしまいます。
private void test
{
int res = DeviceOpen(out hage);
Messagebox.Show("オープン");
}
でも、resに値が入る前にtest関数が終了してしまいました。
民主党には朝鮮人など外国人のなりすまし、スパイが約90名在籍している
野田内閣は過半数が帰化人
野田はどうだろうか
韓国人から賄賂を貰い、韓国人の集いに出席している野田は
Loadイベント辺りだと未処理の例外はスルーされたはずだけど
try-catchやってみたら
C#でwebアプリ作る時に
Model
View
Controller の概念に分けて開発するようになってるのは何があるの?
SilverLightでいいの?
434 :
425:2012/01/10(火) 10:02:29.67
>>432 try-catchをやってみたら、dllが見えて無いだけでした。
参照では追加できないdllだったので、直接フォルダに放り込んだところ読めて、ハンドルが取得出来ました。
ありがとうございます。
(その後のdllの読み込みでは、try-catchでもエラーが表示されずに関数が終了してしまいましたが・・・)
>>428 Mainメゾットをヒントにググったら”コマンドライン引数”で解決できました
ありがとうございました
リゾット
メゾネット
methodのこと?
>>430 void*ならIntPtrで受けた方が良いよ
それ以前にマネージメモリのポインタ渡して大丈夫なのかよ
大丈夫にきまっとるやんけ
1回の呼び出しでポインタへのアクセスが終わるならいいけど
メモリを登録するような使い方をする場合はGCHandleが必要って制限はある
__________ | 見ろよ! |
./::::::::::::::::::ノ、ヽ | 民主党支持者がいるよ!w |
./:::::::;;;-‐‐''"´ |:::| \____ ________/
|:::::::| 。 .|:::| ノ´⌒ V _____
.|::::/ ⌒ ⌒ ヽ:| γ⌒´ ヽ, / _____)
|:::| /・\ /・\|| // ""⌒⌒\ ) | / ヽ
げひひw .|´ ⌒_ ヽ⌒ | . i / ⌒ ⌒ヽ ) | 〉 ⌒ ⌒ |
.| :::⌒(__人_)⌒| !゙ /・\ /・\i/ |/. /・\ /・\ヽ
⊂ ̄ヽ___ ヽ \__| ⊂ ̄ヽ_ | :::⌒(__人_)⌒⊂ ̄ヽ_ | ::::⌒(__人_)⌒:: |
<_ノ_ ヽ_ _/ <_ノ_. \ \__| / .<_ノ_ \ ´ \__| ノ い〜ひっひw
フォームアプリのボタンをGIFアニメにすることはできまつか?
ディレクトリを列挙する際にapp_dataなどのディレクトリを巻き込んでしまうとエラーが出てしまいます
こういった特別なディレクトリのみを回避する方法はないでしょうか
K-POOPが何だって?w
独習C#第三版なんとか通読。分かりやすかったのではないかと思います。ありがとうございました。
一点だけ、結構さくさく読み進められてた(つもり)でしたが、最終章(16章)だけ中々頭に入りませんでした…
ぱっと見は、本を通じて殆ど無い図示なんかが出てきて綺麗なのですが。
テイストが違うので、章立てで原著か、訳者の方が違うのかな?と思ったら、
日本語版で加筆されたらしい章でした。
元々ちょっと複雑な内容なのでそれまでなのか、ハーバート・シルト先生の説明が
翻訳挟むのをものともせず偉大なのか…
>>445 例外キャッチしてスキップするでいいんじゃないかな
ルンルン♪ランラン♪
教えてください。あるPanelに複数のLabelなどが配置されていて、
それらはDockプロパティでFillされておりPanel自体は背面に隠れて画面から全く見え無い状態になっているとして、
マウスオーバーされた際に、Panelの外枠の色を変え、マウスリーブされた際に色を元に戻すような処理を考えてます。
しかしながら、Panelが背面に隠れているため、マウスオーバーイベントが走りません。
そこで、それぞれのLabelでマウスオーバーとマウスリーブイベントが発生した時に、Panelのマウスリーブ、マウスオーバーイベントを発生させるようにしたのですが、
LabelからLabelに移動した際に、移動元のLabelでマウスリーブイベントが流れた後に移動先のマウスエンターのイベントが流れるため、一瞬、色が戻ってしまいます。
ですので、なんとかPanelのマウスオーバー、マウスリーブイベントで、マウスがコントロール上にあるかどうか判断したいのですが、何か良い方法はないでしょうか?
>>449 そうなんだよなw
最終章だけ妙に分かり辛い
455 :
デフォルトの名無しさん:2012/01/12(木) 13:27:47.57
C#で書かれたMapReduce分散処理システムはありませんか?
Mono for Androidで動かしたいのでピュアマネージドなものを探しています。
CLEditorのようなWYSIWYGエディタコントロールって
WindowsForm用は無いでしょうか?
2chやニコニコ動画に民主党から反日工作費が流れていることが知られるようになってきた。
民主党が用意した資金で工作員が2chを荒らしていることもだんだんと知られるようになってきた
>>457 もう次の衆院選は維新の会に入れるしかないな。
また看板だけ見て票入れる奴がでてきたよ
全然懲りてねーのな
維新の会がだめっていってんじゃないぞ
人見ろ、人
シルト先生は旧世代の人
オブジェクト絡んだプログラムはへたくそ
わかりやすく感じるかもしれないけど
あまりいい本じゃない
何らかのエラーが発生したとき、メソッドにエラーに該当する数字をreturnさせるべきか、
自前の例外を定義してそいつをthrowすべきかで結構悩むことがある。
お手軽さ第一なら return -1 とかにするのが一番楽なんだけどね。
発想が逆だろ
例外が一番簡単に高度なフロー制御が出来て楽だが、実行コストが段違いに大きいのでやむを得ない場合にしか使わない
通常は列挙型他のカスタム型や、boolでチマチマ値を返す
intやstringで管理するのは茨の道で特殊な変態以外には勧められない
例外の実行コストなんてどうでもいい。例外なんだから。
コスト気にしないといけないようなもんはそもそもエラーではない。
>461
必ず例外を投げる必用があるのは、呼び出し側がエラーを想定してない場合は
プログラムの実行を強制停止したい(それ以上処理を継続されては困る)場合だけ。
それ以外はお好みでいいよ。
どこかにも例外を制御に使うなって書いてあったな
MSDNにもあったような
例外は制御に使うもんでしょ
普通に想定される通常の制御に使うなってこと
467 :
デフォルトの名無しさん:2012/01/12(木) 21:21:08.55
例外は制御に使われてるな
web系のアクセスに使われるやつで
httpのサーバーが返すエラーを例外でひろった記憶が
どの言語とは言わないが、イテレータの終端で例外を報告する奴は何であんなデザインなんだろう
>>467 やってみないと成功するかどうかわからないし十分重い処理だから例外を使うのが適切
470 :
デフォルトの名無しさん:2012/01/12(木) 21:27:16.11
Webbrowserでクッキーが残ります、削除方法教えてください
>>468 Rubyのイテレータは内部イテレータが基本だから、(外部イテレータもあるが)
利用側で勝手に操作できるC#のイテレータとは事情がだいぶ違う
C#風に書くと
list.ForEach(x => { if (cond1(x)) break; else if (cond2(x)) continue; else hoge(x); });
みたいな制御ができなきゃいけないので
最近は何か調べ物をする時には「C# ○○」ではなく、「WPF ○○」と検索することが多くなった・・・
クラスの特定のメンバだけ遅延評価って出来る?
アクセスするときになって初めて値を代入する
普通は「遅延初期化」と呼ぶんじゃないかな
フィールドじゃなくてプロパティのゲッタで初期化すればいい
クラスの変数にアクセスするときに、変数自身をpublicにしないで、
プロパティを経由するのが推奨される理由ってなんですか?
オーバーライドできるから
>>478 後で実装を変更するため
こういう話だと「バインディングするため」とかいうのが必ず出てくるんだけど
それは逆で、普通はプロパティを使うからプロパティしかバインディングできないので理由ではない
遅延初期化みたいなこともできるし
実用的かはともかくアクセスしてきたスレッドによって返す値を変えたり柔軟
なるほどわかりました。ありがとうございます。
想定されているかどうかの判断はどうやってるの?
例えばFileStreamでFileMode.Openのときに無効なパスを入れると
FileNotFoundExceptionが発生するけど、
ファイルが無い事態って普通に想定できない?
484 :
デフォルトの名無しさん:2012/01/12(木) 23:14:13.26
そう思うならFile.Existsでチェックすればいい
でもその直後にファイルが無くなるかもしれないし、ファイルがあっても開けないこともある
それは想定外だから例外は必要
486 :
483:2012/01/12(木) 23:22:51.66
>>485 想定できるとするなら(利用者が対策とるのを期待するなら)nullとかエラーコード返す実装でもいいよね。
ファイルが突然無くなることも、理由があって開けないことも想定できるといえば想定できる。
現に
>>485初め多くの人が挙動を知ってる。
そういう意味ではない?
>>475 C#4.0 からの Lazy<T> ではダメ ?
極論が始まったら話は打ち切った方がよい
○か×か
>>486 ・やってみないとわからない
・十分重い処理である
・失敗要因は複数あり、呼び出す側が区別できた方が有用と思われる
あえて例外を使わない理由がない
>>486 File.Openで言うならnull以外返せないから原因を伝えられない
>>488 違うよ。例外を使うべきか否か(想定できるかできないか)の基準を聞きたかったの。
>>489 なるほど。
エラーコードは見落とすとプログラムが意図せずに走り続けてしまったり
>>491 なるほどってw
例外の目的は異常が起こったときにプログラムを強制終了させることだって言ってるじゃん。
それとも違うと思うなら言ってみ?
>>489はちょっと今の論点からはずれてると思うよ。
>>493 え、それって手段じゃないの?
目的ならcatchして処理を続行できる今の仕組みはおかしいでしょう。
だから、メソッドの呼び出し元が例外を想定していなかった場合(catchして
適切な処理をしなかった場合)、プログラムを強制終了させることが例外を投げる目的ですよ。
>>492が言ってる通り、エラーコード方式だと、エラーコードを適切に処理しなかった場合、
開いてないはずのストリームやデバイスを読み書きすることになりかねないでしょ
例外の目的は呼び出し階層をすっ飛ばしてエラー処理のある個所にジャンプすることだよ
戻り値だと中間のコールスタック全部で適切な処理をしないとエラー情報が伝播しなくなるからね
想定してなくても強制終了はないわ
File.Copyでコピーできないファイルがあります。
ほかのプロセスで開きっぱなしなので当然なのかもしれませんが。
どうにかコピーする方法はないですか?
ぐぐるとVolume Shadow Copy Serviceというのを使うとコピーできる
らしいのですが、使い方がわかりませんでした。
そうだね
復旧できない階層抜けるために新しい制御構造やエラーenum作って
戻り値の連鎖させるのって馬鹿らしい
>>498 エクセルなんだろうなぁ・・・w
読み取り専用で読んで、ファイルに書き込めばいいのじゃないの?
WebBrowserを使ったプログラムで
Navigateしてからwebborwser.Document.Body.GetElementsByTagName("A");
で要素探す、ということを繰り返していると
CallbackOnCollectedDelegateが検出されました。
コールバックが、型XXXX.Form1+D_MyWndProc::Invokeのガーベージコレクションされたデリゲートで行われました。
これは、アプリケーションのクラッシュ、破損、およびデータの損失を発生させる可能性があります。
デリゲートをアンマネージコードに渡すとき、デリゲートは2度と呼び出されないことが確実に成るまで
マネージアプリケーションによって維持されなければなりません。
とでて終わってしまいます
これを回避するにはどうすればいいですか?
>>502 どんな内容のコードかわからないけど
普通の使い方してたらそんなエラー出ない
それと
WebBrowser.Document.Links使えばいいんじゃないの?
初心者ほどWebBrowserを使いたがる法則
上級者でも業務でも使うだろ
それはどうかな
SHDocVw参照に追加して自前でCOMオブジェクトを管理したほうが安全な場合もあるけど面倒くさい
民主党には朝鮮人など外国人のなりすまし、スパイが約90名在籍している
野田内閣は過半数が帰化人
野田はどうだろうか
韓国人から賄賂を貰い、韓国人の集いに出席している野田は
509 :
デフォルトの名無しさん:2012/01/13(金) 12:08:51.97
>要素探す、ということを繰り返していると
どのくらい繰り返したんだろう
GetElementsByTagNameで抽出した後どのくらい処理してるかにもよるしなあ
うん
朝鮮人みたいなやつだな
みたいというか国籍は韓国ですが
ネトウヨと韓国人お断り
>みたいというか国籍は韓国ですが
おい
おい
教えてください!
axWebBrowser上でWEBページを表示させて、その中にあるボタンをクリックし、
画面を遷移させる方法で悩んでます。
フォームボタンにはvalue値が設定されているので、それを
for (i=0;i<= buttons.length;i++)
{
IHTMLInputElement subm = (IHTMLInputElement)buttons.item(i, 0);
if (subm.value == "hogehoge")
というFor文で探りあてるところまではできましたが、
その後のクリックを
((IHTMLElement)subm).click();
〜読み込み待機処理〜
としても、axWebBrowser上の画面が遷移しません。
クリックの仕方が悪いのか、何が原因なのか……
どなたか教えてくださいませ!
ボタンのクリックは
element.InvokeMember("click");
だよ。
>>517 通常のWebBrowserコンポートネントだとそれでいけるのですが、
axWebBrowserの場合、IHTMLDocument型でWebページの情報を取得し、
その中のIHTMLInputElementでボタンを探すことになります。
IHTMLInputElementIHTMLInputElementメンバにはInvokeMemberがないため、
>>516のような方法でクリックさせてみています。
最後に何かにキャストすればInvokeMemberが使えるようになるのでしょうか?
>>516です。
自己解決しました。
お騒がせしました・・・
C#でクラスを勉強してまして、こういうクラスを作って
class ClassHoge
{
private string _name;
private string[] _subject = new string[5];
public string name
{
get { return _name; }
set { _name = value; }
}
public string this[int index]
{
get { return _subject[index]; }
set { _subject[index] = value; }
}
}
こうはできたのですが
ClassHoge[] Hoge = new ClassHoge[10];
Hoge[0] = new ClassHoge();
classHoge[0].name = "名前";
classHoge[0][0] = "配列1";
最後の部分をこんな風したいのです
classHoge[0].subject[0] = "配列1";
何か方法ないでしょうか
無いですな
残念
えっ?
public IList<string> Subject[int index]
{
get { return _subject; }
}
524 :
523:2012/01/13(金) 19:03:46.31
ごめん
インデクサ要らない
class ClassHoge
{
public string subject[] = new string[1];
public string name;
}
ClassHoge[] Hoge = new ClassHoge[10];
classHoge[0].name = "名前";
classHoge[0].subject[0] = "配列1";
>>523 すみませんインデクサも勉強中で何が不要なのかすらわかっていません
そこら辺をもっと勉強します。ありがとうございました
>>525 publicなら動きました!
どこ見てもprivateでしか記述してないので、publicにすべきではないのかと思ってました
大変助かりました。ありがとうございました
いや配列をpublicにすべきでないというのは合ってる
フィールドにすべきでもない
自分でしか使わないならpublicでもいいよ
string line = "hoge<>aiueo<>test";
string[] delimiter = { "<>" };
string[] result = line.Split(delimiter, StringSplitOptions.None);
lineを<>で区切りたいのですが、1度しか使われることのない変数、2行目が無駄に感じられます。
C#ではline.Split({"<>"}, StringSplitOptions.None);のように匿名配列を使うことは出来ないのでしょうか?
// ↑は出来ませんでした。
string[] result = line.Split(new string[]{ "<>" }, StringSplitOptions.None);
ではだめ?
531 :
529:2012/01/13(金) 19:57:45.75
>>529 string[] result = line.Split(new string[]{"<>"}, StringSplitOptions.None);
>>530 レスありがとうございます。なるほど、new string[]をつければ良いのですね。
たしかに付けなければ型が分からない。
宣言時の初期化でそれが不要なのは糖衣構文だったわけですか。
さすがにネタか自演臭い
delegate void SetFocusDelegate();
void SetFocus()
{
textBox2.Focus();
}
Invoke(new SetFocusDelegate(SetFocus));
上の3箇所の記述で別スレッドからwinformのtextBoxにフォーカスを与えるようにしているのですが、
listViewのチェックボックスn番目にチェックをつけるにはInvokeのところの行はどう書いたら良いでしょうか?
ほか2箇所は↓でOKですか?
delegate void checkDelegate(int num);
void SetCheck(int num)
{
listView1.Items[num].Checked = true;
}
>>533 とりあえずISynchronizeInvokeの使い方をググって調べて。
Controlはこれを実装してる。
追加。
あと、Action<T>とか汎用のデリゲートもこの際覚えた方がいいよ。
汎用デリゲート使うかどうかは好きにすればいいけどデリゲート名にDelegate付けるのやめろ
規約違反だ
どこの規約よw
それこそ大きなお世話だわ。
っていうか、デリゲートって適切な命名がしにくい場合が多いから、
とりあえず○○Delegeteにしとくのは悪くない選択だと思うが
まあMSの推奨だわな
hogeCallbackとかhageDelegateはやめろと言ってる
ニコニコ動画みたいに画面にコメントを流したいんですけど
コメントの長さによってコメントの流れる速さが違いますが
その計算式教えてください。
>>539 陸橋を渡る電車の時間を求める的な問題でも解いてろ厨房
>型を以前のバージョンと区別するための Ex または類似のサフィックス
あ、拡張版だよってコレふんだんに使っちゃってるわw 駄目なのか
>>540 それってあくまでクラスライブラリを作る時の規約違反をチェックするツールだよね。
VSのコード解析やFxCopは別にクラスライブラリに限らず
一般にコードの品質を高めるためのものと位置付けられてるが
例えば長さ200pxの文字列が幅1000pxのウィンドウを4秒で出現から
消えるまでに10ミリ秒単位で移動する量は何ピクセルになるでしょうか?
>あくまでクラスライブラリを作る時の規約違反をチェックするツール
んなわけねえだろうがよ
あ、そうか足せばいいのか。
1000 + 200 / (4000 / 10)
FxCopを「クラスライブラリを作る時の規約違反をチェックするツール」って言ったことを指摘してるんじゃねえの
何とかいてありますか(棒)
支援 .NET Framework 設計方針所指定之正確程式庫設計的警告。
と書いてあります。
VSのコード解析やFxCopはクラスライブラリに限らずコードの品質を高めるためのもの。
で、そのルールは「クラスライブラリ開発のデザインガイドライン」をベースにしてるってこと。
ガイドラインそのものとはまた別の話なんだよ。
ライブラリって程式庫なのか。へえ。
あ、「デザイン上の警告」じゃなくて「名前付けの警告」の方かw
いずれにしても
>>548の項のトップに
The Managed Code Analysis tool provides warnings that indicate rule violations in managed code libraries.
とはっきり書いてあるけどさ。
そうなんだ
まあMS様公認かどうかより、そのルールが合理的かどうかの方を問題にした方がいいと思うんだけど、
デリゲート名をDelegateでサフィックスするな、っていうのはちょっと筋が悪くない?
Attributeはちょっと特別かも知れんけど、EventArgsやExceptionとどう違うって言うんだろうか。
Actionぐぐってここまでできますた
続きおしえて
public void changeCheckState(int num, bool b)
{
listView1.Items[num].Checked = b;
}
Action<int, bool> listViewTest;
listViewTest = changeCheckState;
ヘンにカタカナ語が氾濫してる日本語ドキュメント読むより
台湾と英語の両併記の方がスッキリ読めるよ (慣れたら
名前付けの警告 .NET Framework デザイン ガイドラインの名前付け規則の順守をサポートする警告です。
命名警告 支援遵守 .NET Framework 設計方針之命名慣例的警告。
ほらスッキリ
>>557 ISynchronizeInvokeもググってねって言ってるじゃん。
コピペコードでやっつけても身にならんよ
そ、遵守
>>556 だから以前はCallbackサフィックスを付けろというルールがあった(削除されたけど)
Delegateだとイベントハンドラもデリゲートだし、
デリゲートはDelegateの派生型ではあるけど、どっちかというとクラスやインターフェイスと同格の
型の種別の名前としての意味合いが強いし
>>561 なるほどEventArgsやExceptionをあげたのは不適切だったかも。
確かにサフィックスなしで命名できればそれに越したことはないけど、
>>537にも書いたがデリゲートの場合はそれでは命名が難しい場合があると思うんだけどさ。
デリゲートは型の種別なんだから、クラスに〜Classって付けるようなもんだぞ
何か付けて区別するならインターフェイスにIプレフィックス付けるのと同じように
Dプレフィックス付けるほうが一貫してる
だいたいデリゲートかどうかなんて使われ方で一目瞭然なんだし
イベントハンドラでも汎用デリゲートでもないデリゲートなんてそう多く使われるものでもない。
それを問題にするなら例えば構造体にプレフィックスやサフィックス付ける方が重要だと思うが。
しばらくデリケートな話題が続きます
566 :
デフォルトの名無しさん:2012/01/13(金) 22:56:57.36
下痢デートとか
なんか話がかみ合わない気がするのは、たぶん特に3.0以降自前でデリゲート定義する
必要性があまりないからだろうな。
たしかにその意味ではどうでもいい話だ。
>>559 ぐぐった
ISynchronizeInvoke cnt ;
cnt = listView1;
cnt.BeginInvoke(listViewTest,new object[]{i,true});
↑でいいですか?
コピペ君って馬鹿だな、まで読んだ。
君って馬鹿だな、まで読んだ。
んだ。
574 :
デフォルトの名無しさん:2012/01/14(土) 02:13:44.35
Microsoft Visual C# 2010 Express を使い始めたのですが、
標準の文字コードはSJISになっているのでしょうか?
何も考えずに.csファイルを作ってエディタで開いて文字コードを確認したらSJISになっていました。
SJISにない文字を入れて保存するとUTF8で保存しなおしてくれるようなのですが、
標準で何もしなくても UTF8 で保存するにはどこを設定すれば良いのでしょうか?
>>575 Shift-JIS vs UTF8 と考えるからおかしくなるんだ
ASCII vs UTF8 と考えてみたまえ
その疑問は無意味だ
犬 猫 龍 虎 猫 龍 龍 犬
この文字列から龍が何個あるか調べるにはどうすればいいですか?
"犬 猫 龍 虎 猫 龍 龍 犬 ".Count(c=>c=='龍')
c=>c== これどういう意味?
>>579 そこで区切るかw
左辺 c=>c
右辺 '龍'
食わず嫌いして見向きしてなかったLINQというやつだね。
さらっとみただけでは到底理解できない。。。
おおよそやろうとしてることは理解できるが一番謎なのは
cがどこからでてきたのかだ
C#のような型を明確にする言語の常識でみるとcの存在は気持ち悪い
意味わかんねー
誰か丁寧に教えて
なるべく省略しないで書くと
(int c) =>{ return c == '龍'; }
C#は型推論とかデリゲートとかで型省略しまくりだが
あくまで略記であってコンパイル時に静的に型が決まっていることには変わりない(dynamicは例外)
>>583 型推論により、型の指定が省略されているだけだろ
コンパイル時には、右辺の '龍' により型が推論されるから何も問題無い
プログラミングっていうより正規表現に近いな
>>586 それは間違い
ラムダ式の内容に関係なく、Countの引数の型がFunc<char, bool>だから
戻り値がboolで引数がcharと推論される
ラムダ式勉強して、仕事のプログラムでつかったら、
「新人とかわからんだろ、何考えてるんだ」って怒られたな。
みんなのところは、平気でこういう新技術的なのつかわせてもらえるの?
>>589 新技術っていうよりそれまでのC#とは別物のような気がする
そんな大袈裟なもんでもない
川俣の読み過ぎ
592 :
デフォルトの名無しさん:2012/01/14(土) 10:46:54.31
>>591 まあ蓋を開けてみればそうなんだが、明らかに型を明確にするのがC#って
感じだったのに「慣れた人のための楽する方法」になってるので感じが違いすぎる
>>589 そんなもん、言語の標準機能なのに解らない方が悪い。
新人がどうこうより、その文句言った奴が解らないだけなんじゃないだろうか。
>>593 いやいやw
C#使える時点で生産性はあがってるのに、明らかに言語のスタイルから
外れたような新機能で可読性を犠牲にしてまでやる必要はない
なんでcに1文字が入るのかわからん
ラムダはC++やJavaも欲しがってるぞ
それに言語のスタイルもクソも、C#はどんどん便利なもの取り入れて拡張していくスタイルだろ
>>596 それまでの便利だから取り込むを超えてる気がする
タイプ面倒なので変数名はアルファベット1文字でいいよね
に近いくらい可読性が犠牲になってる気がする
var v = "犬 猫 龍 虎 猫 龍 龍 犬 ";
//このラムダ式は
Console.WriteLine(v.Count(c=>c=='龍').ToString());
//この匿名メソッドの省略記法みたいなもんだが、
//匿名メソッドの方が可読性が良いかどうかは疑問だ
var v = "犬 猫 龍 虎 猫 龍 龍 犬 ";
Console.WriteLine(v.Count(delegate(char c){
return c == '龍';
}));
"犬 猫 龍 虎 猫 龍 龍 犬 ".Count(c=>c=='龍')
これ、一文字ならOKだけど、"猫 龍"を検索しようとするとエラーになるね。
char型はOKだけど、string型は駄目ってことかな?
一部消し忘れたが勘弁
private static bool Is龍(char c) { return c == '龍'; } // これは離れた場所にある
Enumerable.Count<char>(v, new Func<char, bool>(Is龍));
ジェネリックと拡張メソッド使ってる以外はこれが初期のC#だが、分かりやすいか?こんなもん
603 :
602:2012/01/14(土) 11:07:10.87
訂正
拡張メソッドは使ってない
やはり俺は
int cnt = 0;
foreach (char c in "犬 猫 龍 虎 猫 龍 龍 犬 ".ToCharArray())
{
if (c == '龍')
{
cnt++;
}
}
がわかりやすいなw
C#3.0の時代からあって今C#4.0でもうすぐC#5.0が出る/出たっていってるのに
いまさら何言ってんすか
冗長だから可読性高いというのはコードの密度が下がって読む速度が分量的に上がってるだけ
余計なノイズを排除して本質だけを残すことによって可読性が良くなるとも考えられる
まあかく言う俺もvarの便利さに最近気付いたんだがな
>>606 問題は慣れたプログラマばっかりじゃないってことだ
その点を忘れてるよね
レベルによってどれがいいかも変わるだろう
なかなか万人向けの基準を作るのは難しいな
>>607 俺もだ
ちょっと前までは、何となく気持ち悪さを感じてたが
右辺での初期化が強制されるので、今はvarの方が良いと感じる
型推論は代入時に型が確定する。
よって var による変数の定義には、常に代入 = 初期値の投入が必要になるってことじゃない?
自分は複数の変数定義を一遍にやるときに、各行の変数の位置が揃うのが気に入ったんだけれど。
頭に全神経使ってるときは
そういう微妙なストレスと言えるかも微妙な不快感すら受けたくないよね
varの弱点は初心者の学習の妨げになることや
objectの受け方でコードが理解しづらくなること
どうせvarでも静的に型確定するんだし、ふつーに型宣言すりゃいいのに
びみょーな手抜きしやがってからに。。
長い型書きたくないもんねー
型宣言の必要性を盲信する人達の言うことを聞いたせいで
ArrayList<Hoge> list = new ArrayList<>();
みたいな明後日の方向へ行っちゃった言語もある
時々メソッド呼び出しの中に長々とラムダ式入れる馬鹿がいるよな
外に出せとw
varで書いてコミット前に置換すれば解決じゃねw
ジェネリック型が絡むと型名がクッソ長くなるから型推論は当然の要請だわ
ディクショナリーを列挙するたびにKeyValuePair`2とか書いてたら日が暮れるぞ
大丈夫
我々にはまだ明日がある
こういう流れ好き
>>618 笑うところじゃないだろ
わかってる人じゃないと読めないコードは可読性悪いコードだろ
分かれよ
って話
>>625 いやいや
LINQとかラムダ式は別の段階だわ
その辺が実装される前までは分かれよだけど
可読性じゃなくレベルが低いんだな
>>627 少人数でコード書くのならそれでいいと思うよ
>>628 コーディング規約で決まっているのならそれでいいんじゃないか
何人規模か知らないけど、一生小学生とコーディングしてればいいんじゃない
LINQとラムダ式を規制したら小学生とかww
レベル低いのはお前だろ
可読性の中でも読み手のレベルによって左右されている部分は、結局のところ環境によってしまうよね。
頭がいいスーパーマン()ならLINQとラムダ式無しで対応できるだろww
そんなこともできないの?ww
IDEが支援してくれるのにwww
メタボなんだしせめて指先だけでも動かしたほうがいいんじゃないの?ww
だから集団には規則がある。
草が生え始めましたよ
馬鹿にされて悔しいのは分かるけど落ち着こうね
君が最強だよ
新人が分からんだろうって、分からなかったら聞けよ
質問したこと、答えたことないのか?
答えるにしても「ラムダ式っていう名前だから、後は調べて」で終わる
手取り足取する必要性ないし
習得に1日かかるようなものでもない
LINQとラムダ式までばりばりに使える人を探すより
その手前まではきっちり使える人を探すほうが楽って話
分かっていないのは新人じゃなくて、規約だけを作っているような層だろ
あいつら平気でJavaの規約を.NETにコピペ流用したりするし
可読性の話をしているのだから使える必要性はない
論点がずれている
まあ野放にLINQ許可すると、パズルにして遊ぶ奴出てくるのが問題だな
パット見で理解出来るレベルは許可しても良さそうだが、線引きやりにくい
ばりばりに使えるレベルまでは行かなくとも
意味が分かるレベルまでは1時間で行ってもらわんと困るわ
>>642 そんなの教えたりする暇があるなら本来の目的を理解してくれってことだ
LINQやラムダ式はなくてもできる
「ラムダ式っていう名前だから、後は調べて」って答えるのに一時間かかるのか?
職場のレベルに追いつくのは目的と外れているとでも言いたげ。
いちいち時間割いて教えるようなことか?
>>644 アホか
業務レベルでそんな指示して時間消費されるのももったいないし
何かの際にそんなことで慣れてる人に割り込み入る方がもったいない
LINQやラムダ式使えたら新しいことができるわけでもない
ラムダ式を使えない奴が30分かけて作ったコレクション操作と、LINQで1分で書いたラムダ式
信頼性が高いと思うのはどっち?
ものの十数秒質問するためにメールでアポイント取ってるのか?
こんなの食事中の雑談の中でも質問できるだろうが
コミュ症なのかもしらんけど
一言答えるのがもったいないって時給いくらなんでしょ
「ラムダ式を習得しなさい」と指示出すわけでもあるまい。
分からん文法が出てきたら聞くだけの話で、何が業務レベルだ。
一言ってw
わかってるやつに割り込みいれることほどもったいないことは無い
日本でデスマ案件が発生する理由の最たる例じゃないか
人が追加されるので先に投入されてる人が自分の持分にかかれなくて
追加投入された人に時間さかれるからさらに効率落ちてるのに
>>652 分かってる奴が増えないから答えられる奴が増えないんだよ
んで分かってる奴の負担が増えるとか言い出すんだよね。
知識共有してますか?
はい、草いただきました。
大げさだな
ラムダ式なんてぶっちゃけそんなに大層なことじゃないだろ
後で尻拭いするよりは最初から面倒を見た方が楽だよ
駄目な職場ってのは勉強会もしないしな。
658 :
デフォルトの名無しさん:2012/01/14(土) 13:49:53.57
だからLINQとラムダ式は使わない
でいいじゃないか
自分がいなくなってレベルが低い人が来ようが問題ないし
>>648 ラムダ式を使える奴が、ラムダ式を使わないで1分で書いたコレクション操作、
これが一番信頼性が高いだろう。
自分が職場の足引っ張ってるの間違いじゃない
アホだなあ
LINQの高度なコレクション操作は.NETライブラリに同等品が無いし、ラムダ式もIQueryable使用時には必須と言っていい
好みの問題で避けて通れるようなもんじゃないんだよ
>>659 じゃあ1分で書けよ
経営者でもない人間がいなくなった後の心配をする必要はない
人に教えてる経験上、
ラムダ式はみんな一発で覚える。
それくらい、「今までになかっただけで実は簡単」だと思う。
むしろ、eventとかyield returnの方が全然わかってもらえない。
メソッドにして分離するとセマンティクスがその場に残らないし
665 :
デフォルトの名無しさん:2012/01/14(土) 14:10:41.02
いつもこの流れだ
他所でやれ
ラムダ式使える俺カッコイイってやつが威張っているだけにしか見えない
データ抽出に関してはLINQの方が読みやすいでしょ。
SQLの実行計画見る度に思ってた、データ抽出の動作を書くのって冗長だなって。
拡張メソッド形式ならC#っぽさも残ってるし、みんな覚えた方がいいよ。
ここは
ふらっとスレですよ
使えて当然だからカッコいいとか無いわー
今更ラムダ式使わないってアピールしている方が異常者だよ
Windows Phone 7だとDBにはLINQ to SQLしか用意されてないんだぞ?
LINQは割と複雑だけど、ラムダ使えないってのは恥でしかないわ
ラムダ式は一つの特性除いてそう変わった仕組みじゃない
TPOに分けて使えばいい
野球で言えばバントみたいなものかな
スリーバントのような特殊ルールがある
Linqは勘違いしてるけど置き換えじゃない
新しい概念
野球に対してサッカーのような…
ラムダ式って使い方がひどいと1行プログラムみたいな醜い存在だからなあ
おまいら土曜の昼間に何やってんだよw
なんか、昔の三項演算子規制が懐かしい。
ラムダ式は見た目が取っつきづらいだけで、技術者レベルならそんなに難しいもんじゃないでしょ。
センパイが書いたコードを理解するためにお勉強して、そいつも使えるようになったらそれでいいじゃん。
もちろん限度はあるけど。
>>613 初めてわかってもらえたような気がする。。。
>>669 例えばと言われても一般に言われているLINQの有用性に対し肯定してるってだけだよ?
ググればいくらでも出てくる。
可読性を損なうケースもあるらしいけどまだ経験無いや
データ項目中の区分値によって条件自体が変わるとか?
>何かの際にそんなことで慣れてる人に割り込み入る方がもったいない
新人を教育する係すらいないスバラシイ職場です
この世のインフェルノを体験したい方は是非ご入社ください
いつまで経っても教育してると感じているなら、それは世代交代できていない証
全然自慢にならない
本来は次の兵卒が軍曹に上がってくるはずなのに、後人が育たないからいつまで経っても軍曹の上に行けない
軍曹役が好きな人なら別だけど
拡張メソッド形式使えばいいよ
どっちにしても気持ち悪さは残るけど
述語の連結
流れるようなインターフェース
視認性の高さは語り尽くされてると思うけど
>>680 これをどうまとめるのか、やってみろとしか言えんわw
>>677 そうは言っても、定着率が低いのは環境だけでなく業界の都合もあるでしかし
まとめ許可頂きました。
linq嫌いでも拡張メソッドのCountやFirstOrDefaultだけ使えばいい
まとめ見るようなやつらだとブログのコメント欄に「日本語でOK」が並びそう
ひょっとしてここでLINQって言われてるのは「クエリ構文」のことか?
てっきりEnumerableの拡張メソッド群のことかと思ってたが
>>683 許可しない
俺の投稿は俺の著作物
無断転用は断る
↑この人を赤&デカ字でお願い
689 :
デフォルトの名無しさん:2012/01/14(土) 15:45:13.08
ListやArrayにはForEachがありますが、なぜEnumerableに拡張メソッドとして無いんですか?
あると便利だと思うんですが。まぁ .ToList().ForEach(...) とかやればできますけど。
690 :
599:2012/01/14(土) 16:24:30.63
"犬 猫 龍 虎 猫 龍 龍 犬 "から"猫 龍"するにはどうしたらいい?
string CatAndDragon()
{
string src = "犬 猫 龍 虎 猫 龍 龍 犬 ";
return "猫 龍";
}
佐野量子思い出した
693 :
599:2012/01/14(土) 16:38:19.04
>>691 自分の質問見直して吹いたw
"犬 猫 龍 虎 猫 龍 龍 犬 "から"猫 龍"が何個あるか検索するにはどうしたらいい?
反日ネット工作員
朝日新聞社→社員約300人
民主党とその取り巻きの資金が入った反日工作会社→数社約450人
朝日新聞の社員は捕まった49歳の編集者を含め新聞記事を書く合間に2chを荒らしている程度とみられているが
民主党が用意した反日工作会社はほぼ24時間体制で工作を行っている
工作範囲は民主党が予め工作費を流している2ch、ニコニコ動画を中心にyoutube、個人のブログなどである。
Regex.Matches("犬 猫 龍 虎 猫 龍 龍 犬 ", "猫 龍").Count
汎用性を持たせるならRegex.Escapeして前後に\sのゼロ幅アサーションを追加する
>>693 「猫」と「龍」の個数の和?「猫 龍」の一連の文字の個数?
前者の前提で、
var str = "犬 猫 龍 虎 猫 龍 龍 犬 ";
var count = Regex.Matches(str, "猫").Count
+ Regex.Matches(str, "龍").Count;
Console.WriteLine(count);
無駄すぎて吹いたw
無駄過ぎと笑う場合は無駄すぎないソースを示す事
"犬 猫 龍 虎 猫 龍 龍 犬 ".Count(c=>c=='猫' || c=='龍')
700 :
599:2012/01/14(土) 17:08:50.03
しーしゃーぷはStringオブジェクトの文字列比較を
==演算子で見れるようデフォルトでオーバーロード
してあるんだっけ?
オーバーロードじゃないよ
反日ネット工作員
朝日新聞社→社員約300人
民主党とその取り巻きの資金が入った反日工作会社→数社約450人
朝日新聞の社員は捕まった49歳の編集者を含め新聞記事を書く合間に2chを荒らしている程度とみられているが
民主党が用意した反日工作会社はほぼ24時間体制で工作を行っている
工作範囲は民主党が予め工作費を流している2ch、ニコニコ動画を中心にyoutube、個人のブログなどである。
>>703 じゃなんなの?
何もしなくてもオブジェクト内の文字列を==で
比較できる言語仕様になってるってこと?
オーバーライド
>>576 すいません、よくわからないんですが
設定できないということなんでしょうか?
演算子はstaticだからオーバーライド出来ませーん
オーバーライドと言いたいのか?
オーバーロードと言いたいんだよ。。。
というか
>>706はオーバーライドの意味わかってんのか?
>>699 それ正しいの?
文字列と文字の比較してるよねぇ
りゆー
動かしてみればいいじゃない
717 :
712:2012/01/14(土) 17:33:34.67
ああ、Char配列になるのか、納得。
配列にはならん
IEnumerable<char>
フォームを閉じた時に文字列を返す方法を教えて
というか文字列のラッパークラスオブジェクトとCのChar文字列
を同義に考えてるやつがまだいるのか??
ヒント: スレタイ
724 :
デフォルトの名無しさん:2012/01/14(土) 18:22:14.15
ド素人だからHelloWorldをまずやってみることにしたんだけど、デバッグで確認したら、確かにhello world表示したけど一瞬でデバッグ終了した・・・
「キー押すまで消えないよ」に設定するにはどうすればいいのですか?それともソースの最後になにか記号いれなきゃいけない場合教えてくださいー。
Small Basicでは標準でキー押すまで消えなくてそれが好きだったのに。
HelloWorldでデバッグ??w
まあそれはいいとして、ブレイクポイントいれろよだったら。。
ちなみにPress Any Key To Continueのことね
Console.ReadKey()おすすめ
Console.ReadLine();
throw new Exception( "Goodbye World!" );
731 :
デフォルトの名無しさん:2012/01/14(土) 18:31:29.69
>>720 string s = myform.Show(this);
↑ここ
うぉ、りょ、両方試してみる。サンクス
参照設定で System.Windows.Formsを追加してから
using System.Windows.Forms;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MessageBox.Show("Hello world");
}
}
}
と言うHello Worldも有りだよ
>>731 まずShowメソッドはvoid型だからの戻り値はなし
さらにShowメソッドはフォームが閉じるまで待機しない
myform.Closingイベントを設定して閉じる直前にプロパティ等で取得するか、
モーダル(フォームが閉じるまで制御が戻らない)をお望みなら
myform.ShowDialog()してから同様にプロパティ等で取得する。
プロパティというのは、myformの型の方で文字列を取得できるように公開しておくということ。
>>731 myform.Show(this);がどのような実装か知らないけど
一般的なFormのShowなら無理
Showで表示してもそこで止まらないから
モーダルなフォーム(ダイアログ)にしてShowDiaologなら可能
それが嫌ならmyformにpublicなプロパティつけろよ
もう一個方法あるけどすすめない
被った…いやん
ちなみに
Console.write
と
Console.writeline
の違いってなに?
改行の有無
writeもwritelineもそんなもんはない
質問。
インスタンスから、インスタンスの名前そのものを取得することは可能?
var hoge = 1;
とある場合に、変数 hoge から文字列 "hoge" を取得すると言うふうに。
たとえば自作クラスに name プロパティを作って、その初期値に、インスタンスの名前を入れて置くようなことをしたい。
デバッグ用のログ出力で楽することを考えている程度だから無理ならいいのだけど、C# なら出来そうな気がして。
>>740 つまり
console.writeline("お名前は?"); (これだと)
| ←(ここからタイピングできるってこと?)
>>719 質問の回答だと「public new string ShowDialog()を作れ」だけど、
newは良くないからプロパティでその文字列を公開する。
汎用的なFormならこんなのも用意してやる。
var hoge = hogeDialog.ShowDialog2(); // Cancel時はnullか空文字が返るように。
hogeDialog.Dispose();
おっと、using使いたいけどそうするとhogeのスコープが限定されると。
ShowDialog2の中でDisposeするか??
馬鹿は回答すんなよ
749 :
744:2012/01/14(土) 18:48:27.60
書いてる間に話がだいぶ進んでたw
>>745 Console.Out.WriteLineって書けばいいのかおい?
次はFloatについて質問しろよ
浮動小数点って何が浮動するんですか?
名前を聞いてきて、答えると「ようこそ、「名前」さん!」っていうの作ってるんだけど、名前を読み込んだあとの出力するところ、これだとエラーでる。
助けて
Console.WriteLine("What is your name?");
Var name = Console.ReadLine();
Console.Write("Hello" name");
>>755 ×Console.Write("Hello" name");
○Console.Write("Hello" + name);
>>742 意味が分からないけど、リフレクションかな。
プロパティとフィールド一覧およびその内容などが取得可能。
かつてないConsoleブームw
>>758 できた!hello とnameの間にスペースとるにはどうすれば・・・・
Console.Write("Hello " + name + " !");
みたいにスペース入れた方がいいかもな
まあやればわかる
Consoleに何レス費やす気だw
プログラミングのやり始めの時期は、だれだってコンソールCUIに
夢中になったはずだ
RADで動きもしない大層なUIを組んだよ派
>>763 で、次は途中で改行するにはどうすれば・・・・
だろ?w
20〜30年前だろ
このConsoleクラスも、半分デバッグ用だろ今や。。
え!
ディスクリプタオブジェクトの魔力は現代でも人々を虜にして止まない
Debugの方は初期状態で名前空間がインポートされて無いって意味だろ?
Console一つ取ってもリダイレクトしたりどこかのプロセスに渡したり
いやいやTraceSource使えよ
TraceSource?何ソレ美味しいの?
DebugみたいにDEBUGシンボルが立ってないと無効になるとかそういう欠点のないものだよ
ググったけど美味そうには見えなかった。
Visual Studioの出力ウィンドウ上でフィルタリングとか出来るやつは無いの?
log4派なので
引数にインスタンス生成できませんか
表現を変えてください
コンソールってだめですか・・・・
なんかHALと喋ってるみたいで内心興奮します
ですよね
SCMも当然コンソール派です
Tortoiseとか笑わせないでくださいよ
しぃゆぅあぃ
さて、HelloWorldと「名前」さんこんにちは、は出来た。
次はなにしようか
反日ネット工作員
朝日新聞社→社員約300人
民主党とその取り巻きの資金が入った反日工作会社→数社約450人
朝日新聞の社員は捕まった49歳の編集者を含め新聞記事を書く合間に2chを荒らしている程度とみられているが
民主党が用意した反日工作会社はほぼ24時間体制で工作を行っている
工作範囲は民主党が予め工作費を流している2ch、ニコニコ動画を中心にyoutube、個人のブログなどである。
ネトウヨきもっ、まで読んだ。
FizzBuzz
"自動車 飛行機 三輪車 ナチグロン"と言う文字列から、二つ目の単語の"飛行機"を取り出すには?
790 :
デフォルトの名無しさん:2012/01/14(土) 20:33:10.32
"自動車 飛行機 三輪車 ナチグロン".Split(' ')[1]
Splitの引数で空白を無視して、インデクサ直打ちじゃなくてSkip&FirstOrDefaultにするとなお良いかも
インターフェースでoperator == を使いたいんだけどどうしたらいいですか?
MicrosoftのWebサイトで、2005年のC#だけどチュートリアルみたいなのがあったのでそれやる。
さんくす
無理
っていうかイミュータブル(変更不能)でない参照型には==は実装してはいけないお約束
インターフェイスは当然継承可能、すなわちイミュータブルではないので
>>795 マジですか……
>イミュータブル(変更不能)でない参照型には==実装してはいけない
について、もう少し詳しく教えてください。理由とか
「純粋にデータを表す型以外には演算子を付けるな」って教訓のちょっとピントはずれな表現だよ
別に行列クラスとかも存在するしケースバイケース
あと演算子オーバーロードが使えないのはインターフェイスにstaticメソッドが定義できないから
有効な理由は書いてあるけど、お勧めしない理由ってどこに書いてあるんだこれ。
明確な理由は書いてないなw
理屈としては、ある時点でa==bが成立しても、知らない間に知らないところで
aまたはbが参照しているオブジェクトの値が変更されてa==bが成立しなくなっている
可能性が生じるから、ということだと思ったが、これって「羹に懲りて〜」そのものだよなw
俺はナンセンスだと思うからこんな忠告は無視してる。
変更できる型だと常に同じ結果を返さないから、と
Equalsだと許容される理由がよく分からん
値型だと==を実装しないとパフォーマンスが落ちたり不適切な動作になることがあるけど
参照型の場合は常に==による参照比較は正しく動作するから
わざわざややこしいことしないでEquals使ってろってことじゃないの
ところで
>>798の "Equals のオーバーライド" のところのサンプルコードって
Equalsの仕様に違反してね?
対称じゃないだろこれ
System.Drawingの値型どもの立場はどうなるんだ
string strの中身が無いことを判断する部分ですが
C#の場合nullと""は区別されるようで、if (str == null || str == "")
と書かなければならないと思いますが||を使わずに一つの式で書く方法があったら教えてください。
Null合体演算子かString.IsNullOrEmpty
>>804 String.IsNullOrEmpty
Size「貴様に”ども”などと一括りにされる筋合いはないわ」
面白いと思った?
>>803 値型だから==実装するの推奨
==は値の比較で、もともと参照型の値というのは参照先を指し示す値そのものなわけで
その参照の値とオブジェクトが表す値を区別する必要がない場合(つまりイミュータブル)に限り
==を実装してもいいってことだろ
十分合理的じゃん
そもそも参照等価を==で検査する仕様にしたのが間違いの始まり。
これだけはVBのやり方の方が正しい気がする。
簡潔に伝えるのは難しい
==をオーバーロードできるからおかしくなるんであって
Javaみたいに==は常に直接ビット単位の値比較(参照型はハンドル値の比較)を行うという決まりなら
それはそれで一貫してると思う
なるべくその挙動に似せるための制限が「イミュータブルのみ」なんでしょ
>>815 逆でしょ
==をオーバーロードしなくても使えるから直感に反する変なことになってる。
参照の検査なんて専用の演算子を用意すればよかったのに。
ポインタだと思えば別に変じゃなくね?
値型に==使うと直接の値比較になるのに
参照型に==使うと勝手に参照外しが行われるというのも変といえば変じゃないか
Elseは無効だとエラーでた。
なんのこっちゃ?
ちなみに今は魔法使いかどうかを判定するプログラム作ってる。
年齢きいて、
If age >=30だったら「魔法使いです」
Else
「魔法使いじゃない」という使い方をしているんだが・・・
ちなみにVIPのC# wiki
プログラムの前にコミュ力を勉強すべき
>>818 if文のソースを全部よこせ
それだけじゃわからん
Stringの==が文字列比較になるのって演算子オーバーロードじゃなくて言語仕様なんだな
+による連結もそうだけど文字列操作は言語によって違うから
.NETで共通の実装を用意するのは不適切ということなのかな
小文字で使えよ
>>820 {
Console.WriteLine("年齢を入力してください");
string age_str = Console.ReadLine();
int age = Convert.ToInt32(age-str);
If(age >=30);
{
Console.WriteLine("あなたは魔法使いです");
}
else;
{
Console.WriteLine("あなたは魔法使いではありません");
}
else; → else
If(age >=30); → If(age >=30)
ありがとう、解決出来た。
でももう一個エラーでてきたよ・・・
「名前'str'は現在のコンテキスト内には存在しません。」
string age_strじゃだめなのかな・・・・
int age = Convert.ToInt32(age-str);
↓
int age = Convert.ToInt32(age_str);
>>826 ×int age = Convert.ToInt32(age-str);
○int age = Convert.ToInt32(age_str);
Stringとstringってなにか違うんですか?
>>830 string a;
String b;
両方書いてから
using System;
を消して見れ
>>830 stringはSystem.Stringに対するエイリアスだよ。
System.Stringという.Netの型に対し、stringで呼び出せるようになっている。
言語ごとに型の名前が違ったりするからね。
整数型(System.Int32)なんかは、VBではInteger、C#ではint。
ったくよけいなことしよってって感じだよなstring
using System;
してんなら、Stringってかきゃぁいいのに、こざかしい
>>830のような逆に疑問がわくような仕様・工夫?はいらないわ。。
Shiftを1回休ませてあげようって親切心だよきっと
組み込み型は小文字で統一してるからだよ
intも無くしてInt32と書くならエイリアス無くてもいいけど
C++から移植中です。
STLにあるpartial_sortおよびnth_elementと同じ事をC#でやりたいんですが、
なんのメソッドを使えばいいのか教えて下さい。
items.Skip(start).Take(count).OrderBy(x=>x.Name).ElementAt(i);
startからstart+countまでの間を取り出してNameプロパティでソートしてi番目の要素を取り出す
移植するくらいならSTLのソース読んで書けばよかろう
Console.Write("Hell World");
Console.Write("ばかなのぉ?");
Console.Write("Hell Sutema World!!");
string url = "http%253A%252F%252F";
url = url.Replace("http%253A%252F%252F", "
http://");
プログラミング暦1時間の俺でも分かる余裕
Uri.UnescapeDataStringを2回かける
でもなんで2回エスケープされてんの?
おお、できた!イロイロタメシタノニ・・・
すごいなんでわかった?
System.Web.HttpUtility.UrlDecode(string)
って使うのは非推奨になったんだっけかな
質問させてください。
Microsoft Visual Studio 2010 Expressを使っています。
アプリに登録したファイル(フルパス)を、ユーザーが拡張子ごとに登録したソフトで開く、
というアプリを作ろうとしています。
例えば、mpg,avi=MPC、jpg,png,bmp=Irfanview、といった風に設定し、
関連づけとは違うソフトでファイルを開きたいときに使うという目的です。
拡張子とツールの設定はユーザーが行うものなのですが、
この設定情報の保存方法がわかりません。
C#だと設定情報はXMLでやるのが普通らしいですが、
どのような形で作成したら良いのか全然わかりません。
(調べてもapp.configのことばかりです。これじゃないですよね?)
これらの方法が分かり易く載っているサイトなどありましたら
教えていただけるとありがたいです。
よろしくお願いします。
>>850 1. 「拡張子とツールの関連付け」 のコレクションを、プロパティとして持つクラスを作る
2. 1のクラスを、DataContractSerializer等でシリアライズする (シリアライズ先は、その用途ならIsolatedStorageがオススメ)
852 :
850:2012/01/15(日) 01:41:20.14
>>851 ぬおお、難しいw
やっぱりINIファイルのように簡単にはいかないのですね。
わからないことだらけですが、検索したら何件かそれらしいのが引っかかったので、
なんとか調べて頑張ってみます。
ありがとうございました。
いや、難しくは無いんだが…
汎用的なシリアライズに関しては、
>>50辺りを参照
854 :
850:2012/01/15(日) 01:48:30.80
>>853 わざわざご丁寧にありがとうございます。
参考にさせてもらいますね。
>>851 IsolatedStorageって実際のところどこで管理してるの?
856 :
851:2012/01/15(日) 01:58:54.98
>>855 WinVista以降且つ、Silverlightの場合は
%userProfile%\AppData\LocalLow\Microsoft\Silverlight\is\
.NET Frameworkの場合はどうだか忘れたけど、多分近い場所
WinXPだと、パスが違うかも
MacOS+Silverlightはシラネ
ごめん調べた、AppDataね。
特殊フォルダと同じように考えておけば良い?
前に使おうとした事があったんだけど、
アプリ間での共有やアンインストーラからの削除なんかが良く分からなくて止めた経緯があって。
場所さえ分かれば通常のフォルダと同じ操作が出来そうだね。
%USERPROFILE%\AppData\Local\IsolatedStorage\gqzskxte.kvr\o3n4qmjk.byq\Url.dbu0wb1a0fbn2utt3xb3oi5wi2agm2oq\Url.dbu0wb1a0fbn2utt3xb3oi5wi2agm2oq\Files\TopLevelDirectory
さすがにこんな所に手で弄る可能性のあるファイル置く気にはならない
どうも実行ファイル名をハッシュして場所決めてるみたいで、衝突しそうだし逆算不能っぽいし
C#でJAVAのThread-run()-start()みたいな投げっぱなしでいいスレッドはどうすればいいの?
ThreadでもThreadPool.QueueUserWorkItemでもTask.Factory.StartNewでもお好きに
.NET 4が使えるならTask.Factory.Start推奨。
>>859 手で弄る必要が無くてもちゃんと削除する手段は提供しないと。
インストーラー配布のClickOnce用という事?
通常アプリで使うなら削除ボタンを用意してやればいいのかな?
使う機会は少なそうだね、
ハッシュじゃバージョンアップできないし・・・
ネトウヨきもっ、まで読んだ。
いちいち呼んでんじゃねえよタンカスが
OSのフォルダのアイコンとかって自作ツールで使ったらダメですか?
気にしたことはないが、きっとどこかには書いてあるんだろうな
埋め込みじゃなくて実行時に取れば問題ないだろきっと
そやね
勝手に使ってるフリーソフトは結構あるねw
>>867 Express以外のVSにはちゃんとアイコンライブラリーが付属する。
その中にXPとVistaのアイコンが含まれてたはずだから、それなら使っても問題ないはず。
もちろんそのバージョンのVSを使用権を持ってることが前提だけど
ま、ライセンスは不明だが、評価版のVSにもアイコンライブラリー付いていたはず(2010は確認していません)
秒数をmm:ss形式に変換したいのですが
TimeSpan.FromSeconds(sec)とするとhh:mm:ssとなってしまいます
基本的に60分を超えるような場合はこの形式でいいのですが
59分59秒までの場合はmm:ssで表示させたいのですが方法を伝授してください
TimeSpanのToStringがフォーマット受け付けてくれないので
自分でフォーマットするしかないね
>返される文字列は、"c"形式で書式指定されており、その書式は次のとおりです。
>[-][d.]hh:mm:ss[.fffffff]
「カルチャに依存していません」だから逃げられない。
情報が古かった
.NET4では書式指定できる
しかし省略可能な書式指定子は無いっぽい
ないですか
秒からそれぞれの値を計算してフォーマットつくる方式でやってみます
秒から?
Hoursプロパティ見て"mm:ss"と"hh:mm:ss"を振り分けるだけでよくない?
listviewで選択されているアイテムがありまして、ボタンを押したら1つ下のアイテムを選択させたいのですがエラーになりました
アドバイスお願いいたします
// 現在選択されているアイテムを取得
int si = listView1.SelectedItems[0].Index;
// 一つカウント
si++;
// 一つ下のアイテムを選択する
listView1.SelectedItems[si].Selected;
エラー内容
割り当て、呼び出し、インクリメント、デクリメント、および新しいオブジェクトの式のみがステートメントとして使用できます。
hh:mm:ssでとりだして、性器痴漢で尖塔の00:をトリミグカットしてやればいい
わざと変な変換してるのが相当うざい
コード手入力ミス
sec = 123;
if (3600 >= sec) {
span = TimeSpan.FromSeconds(sec).ToString("hh:mm:ss");
} else {
span = new TimeSpan(sec).ToString("mm:ss");
}
知らんけど
ListView.SelectedIndexCollection indexes = this.ListView1.SelectedIndices++;
>>882 俺が作った奴はこうなっていた
aaa.text = new DateTime(0).Add(sec).ToString(@"HH:mm:ss");
12時間表記か24時間表記かという違い?@って何だろう?どうやって調べたらいいんだろう
>>885 兎に角TimeSpanの書式指定が上手く行かなかったからDateTime.ToString(fmt)を使ったようだ
詳細はちょっと記憶がない
>>884 おおおこれで出来ました!
@をつけなくてもエラーは出ませんが何故ここでつけているのでしょうか?
>>883 演算子 '++' を 'System.Windows.Forms.ListView.SelectedIndexCollection' 型のオペランドに適用することはできません。
>>887 @を付けた時の俺に聞くしかないが、意味はファイルのパスを表記する時 @"c:\"と書くのと同じだと思うよ
呼び覚ませ、@を付けた時の俺
>>878 何がしたいのかようわからんけど、その書き方を踏襲するなら
// 一つ下のアイテムを選択する
listView1.Items[si].Selected = true;
じゃねーの?
@を付けると\がエスケープせずにかけるの。
逆に改行とかがかけなくなるの。
改行はそのまま改行すればよろしい
>>892 それでした
trueでした
int si = listView1.SelectedItems[0].Index;
listView1.Items[si].Selected = false;
listView1.Items[++si].Selected = true;
こんな感じで書いてみたんですが、複数行選択されてしまいます
listviewで複数行選択できないプロパティがあるのかなと思いましたがないみたいで困りました
>>896 ありました。。。。失礼しました
listview 複数行選択 禁止で検索して最初の3ページ目までしか読んでませんでした
MessageBox.Show("あ\nい");//改行される
MessageBox.Show(@"あ\nい");//\nと表示される
MessageBox.Show("あ
い");//改行される
おっとコピペしたままだった
MessageBox.Show(@"あ
い");//改行される
あい、わかりました
もういいですよ
数少ない知識をドヤ顔で書いてるんだから、好きにさせてやれや。
数当てゲームできたはいいけど、乱数分からないので答えをあらかじめ決めてる。
乱数をc#でやるにはどうすればいいの?
ggrks
初心者だから調子に乗ってました
ごめんね
>>906 ありがとう・・・
ごめんね・・・・カスでごめんね・・・・・
コンピューターは計算して乱数吐き出すんだって。不思議だよね、あらかじめ決められたことをこなす道具なのに、あたかもじぶんで物事を決めているみたいで
いくらコンピューター様でもユーザーが操作する時刻までは分からんからね
Z80のRレジスタ思い出した
911 :
デフォルトの名無しさん:2012/01/15(日) 22:50:59.52
MessageBox.Show("既にファイルが存在します。\n上書きしますか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2);
なんで、Showなんでしょう?
なんで、ShowDialogじゃないの? なんか理不尽だわ!と思うのはおかしいことなのでしょうか?
>なんで、Showなんでしょう?
Dialogとしてしか出せないからサフィックス無駄だと判断されたんじゃないですかね
最終的には命名者に問い合わせしないと断定はできませんが
>なんで、ShowDialogじゃないの? なんか理不尽だわ!と思うのはおかしいことなのでしょうか?
どうでもいいの線引き人によって違いますからね
不快感を与えない範囲なら別によいのではないでしょうか
>>911 MessageBoxがあなたのいうDialogに相当すると思うので、
この場合は、MessageBoxに対して、Showという動作指示を
だしているということです
なので、MessageBox.Show()で、ShowするのはMessageBoxである
ことが自明なので、MessageBox.ShowDialog()だと、むしろ、
冗長な表現になります
という感じでいかがでしょうか?
VB6だとモーダルかどうかはShowの引数で変えてたんだけど、
動作が全く違うオーバーロードは良くないってことで.NETでShowDialogになったんじゃなかろうか
そのくせ
MessageBoxIcon.Exclamation
MessageBoxIcon.Warning
と2つ用意されてるんだよなぁ。そっちのほうが冗長じゃない?
>>914 そんな教条主義的な理由というより、端的にその方が分かりやすいからでしょきっと。
>>913 それでいいんじゃない?
あと、仮にMessageBox.ShowDialogとした場合、それでも良いとは思うが、
だったらMessageBox.Showもあるのかなという疑問がどうしても出てくる。
っていうか、語学と一緒で、こんなのいちいち何故とか考えずにあるがまま受け入れたほうが
建設的だよ。もっと頭を使うべきことが他に山ほどある
Microsoft.VisualBasic.Interaction.MsgBox("もっと頭使え");
C#の乱数の精度ってどのくらいなんですか?
メルセンヌツイスタ?
インデクサで作った配列もどきを、配列を引数にしているメソッドに渡すことは可能ですか?
FileStreamのReadメソッドの第一引数に、byteで作ったインデクサのクラスのインスタンスを指定したら
byte[]に変換出来ないというエラーが出てしまいました。
民主党には朝鮮人など外国人のなりすまし、スパイが約90名在籍している
野田内閣は過半数が帰化人
野田はどうだろうか
韓国人から賄賂を貰い、韓国人の集いに出席している野田は
首になった蓮○はシャブで逮捕歴のある人間と仲が良いな。蓮○自身はやってんの?
い-6-1
テレビが言えない民主党のスポンサー=韓国北朝鮮
あとはもうわかるよな
>>918 あんまり内部がどうなってるかの情報ないような。
メルセンヌツイスターは、C#版のソースコードあるし、気になるようならそれ使えばいいんじゃないかと。
ありがとうございます。
とりあえずReadByteで一個ずつコピーしてみます
924 :
デフォルトの名無しさん:2012/01/16(月) 13:46:56.03
次の変数の値が今の変数の次の数値か判断したいのですが、下記のように記述すると配列の枠を超えてしまうため、エラーになってしまいます。
回避方法はありますでしょうか。
for(i=0;i<num.Length;i++)
{
if(num[i]+1==num[i+1])
}
for(i=1;i<num.Length;i++)
{
if(num[i-1]+1==num[i])
}
かな??
926 :
デフォルトの名無しさん:2012/01/16(月) 14:34:05.52
927 :
デフォルトの名無しさん:2012/01/16(月) 14:42:00.71
>>925 この方法も検討したのですが、次の配列が続き番号の場合に処理をしたいことがあり、過ぎてしまうと処理が複雑になってしまうんですよね。
暫定の対処法としては、もう一つifを追加して最終の配列か判断するというものです。
どうもスマートじゃないんですよね。
良い方法ありますでしょうか?
for(i=0;i<num.Length;i++)
{
if(i<num.Length-1)
{
if(num[i]+1==num[i+1])
}
}
>>924 「次の変数の値」が配列の最後尾の値の場合どうしたいかによる
string s1="あいうえお";
string s2="かきくけこ";
string s3="さしすせそ";
char[,] c;
s1をchar型2次元配列の1行目に
s2をchar型2次元配列の2行目に
s3をchar型2次元配列の3行目に
代入するにはどうすればいい?
char[0][0]は"あ"
char[1][4]は"こ"
という具合に
>>924 for(i=0;i<num.Length-1;i++)
{
if(num[i]+1==num[i+1])
}
>>929 charに全角文字入るか?
とりあえずString.ToCharArray()かAtring.SubString()使ってみれ
>>929 [][]なのか[,]なのか、代入は初期化時?
>>929 string≠char[]なのでstringから一文字ずつ取り出して代入する
再起動、休止、スタンバイ、電源を切るのイベントを受け取ってe.Cansel=trueみたいにすることはできますか?
WndProcでWM_POWERBROADCAST(0x218)来たら
PBT_APMQUERYSUSPEND(0)をチェックして、
BROADCAST_QUERY_DENY(0x424D5144)をResultに入れるのはどうだろう?
Vista出た頃から使えなくなって久しいメッセージじゃなかったかなそれは
while(GetMessage())
は流石に見なくなった