C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■29363  Re[14]: 行末のセミコロンの省略
□投稿者/ NyaRuRu -(2008/12/09(Tue) 01:17:11)
    No29361 (.SHO さん) に返信
    > ■No29271 (NyaRuRu さん) に返信
    > 
    >>   Func<string,string> f;
    >>   string s;
    >>
    >>   var a = f     // ここにセミコロンを挿入できてしまう
    >>   (s+"!").ToString();
    > 
    > これも、(s+"!").ToString(); は、コンパイルは通りますが
    > 意味をなさないので f にくっつけてしまっていいように思えます。
    
    うーむ,"意味"ですか.
    
    確かに,コードとして意味が無さそうな例をだしてしまったのは申し訳ないのですが,
    かといって,意味がありそうな例が構成できないというわけでもないように思います.
    
    戻り値を捨てている文を一律に「意味を成さない」というのは無理で,実際それは
    メソッドの中のアクションというか副作用次第です.
    世界のどこにも何の影響も残さないようなアクションなら,確かに意味を成しません.
    しかし,世界のどこかに影響を残すなら,それは「意味を成しうる」ものです.
    
    例えば StringBuilder クラスの多くのメソッドは,自分自身の内容を変更し,
    戻り値としては自分自身の参照を返すようになっています.
    
    var sb1 = new StringBuilder();
    var sb2 = new StringBuilder()
    
    (isFooBar() ? sb1 : sb2).AppendLine("Hello");
    
    Console.WriteLine(sb1.ToString());
    Console.WriteLine(sb2.ToString());
    
    例えばこの (isFooBar() ? sb1 : sb2).AppendLine("Hello"); は,
    丸括弧で始まって,戻り値を捨てているものの,アクションの効果を期待して
    単独で使われても不思議ではないような例です.
    こういうケースを自動で判別できないように思います.
記事No.29161 のレス /過去ログ53より / 関連記事表示
削除チェック/

■86577  Re[1]: 開かれているエクセルファイルを終了する方法について
□投稿者/ 魔界の仮面弁士 -(2018/02/16(Fri) 12:50:29)
    No86576 (夜叉丸 さん) に返信
    > テキストファイルなどの場合は開かれていようが
    > 開かれてなかろうが関係なくディレクトリを削除することができるのですが、

    そういうことではありません。
    「メモ帳」は、ファイルの内容を読み込みおわると、すぐにクローズしているだけです。


    Excel ファイルであっても、右クリック→新規作成で開いた場合には、
    メモリに読み込んだ後直ちにクローズされるので、
    元のファイルはすぐに削除することができます。


    結局のところ、それらのファイルをオープンしたままになっているアプリケーションが
    存在しているかどうか、ということになります。アンチウィルスソフトウェアが
    対象のファイルをスキャンしている最中も、ロックされることになるでしょう。

    あるいはファイルのみならずディレクトリについても、それを掴んでいる
    アプリケーションがあれば削除が失敗する可能性があります。


    > とにかくディレクトリを削除する方法はありますか?

    その場合、そのファイルやディレクトリを利用しているアプリケーションに
    悪影響が出てしまいますよね。使用しているソフトを特定した上で
    随時終了するようにしてください。

    ただし、アプリケーションを正しく終了させる方法というのは、
    時として個別対応が必要となることもあります。

    処理実行中は終了ボタンを受け付けないアプリケーションや、
    終了時に「ファイル名を指定して保存」のダイアログを伴うアプリなども
    ありますからね。


    どうしても削除できない場合には、
    https://support.microsoft.com/ja-jp/help/179365/
    などを利用して、次回起動時に削除するようにするといった手もあります。
記事No.86576 のレス /過去ログ148より / 関連記事表示
削除チェック/

■87530  Re[4]: Icon について
□投稿者/ 夜叉丸 -(2018/06/01(Fri) 14:20:53)
    No87529 (魔界の仮面弁士 さん) に返信

    > 連続実行させて検証していないので、思いつきになりますが、
    >>Icon icon = System.Drawing.Icon.FromHandle((new Bitmap(ms)).GetHicon());
    > HICON からの読み取り中に、Bitmap が Dispose されてしまったとか?
    > うーん。すぐには思い当たらないです。
    >
    すみません。アイコンから取得したデータは正常でした。
    データを保存するところに問題がありました。

    >
    > GetBuffer には、未使用バイト領域が含まれる可能性がありえます。
    >
    > 今回は問題無いとしても、念のため ToArray を使った方が良いと思いますよ。
    > あるいは TryGetBuffer メソッドでも良いですけど。
    > http://8thway.blogspot.com/2015/12/memorystream.html
    >
    ms.GetBuffer() → ms.ToArray()
    に変更しました。
    (VisualStudio2017 C# .Net) ですが、ms.TryGetBuffer()は存在しなかったです。

    >
    > .ico フォーマットではなく .png フォーマットで永続化しているのは、
    > 意図的なものでしょうか。
    >
    意図しているものではなくて
    サンプルで引っ張ってきたもの(http://4423lab.wpblog.jp/archives/170)を使用しました。


    >
    > もしも Ico 形式のまま無加工で永続化するなら、こんな感じで書けそうです。
    >
    > // 利用方法:
    > //  byte[] binary = srcIcon.ToBinary();
    > //  Icon dstIcon = bin.ToIcon();

    bin は byte[] = binary だと思うのですが
    (VisualStudio2017 C# .Net) ですが、bin.ToIcon() は使えませんでした。


    > System.Drawing.Icon の場合、それぞれのアイコンを個別に取り出す機能がありませんので、
    > 正確な画像データを得たい場合には No87527 で紹介した IconLib 等を利用してみてください。

    現状では複数存在したとしてもどれを選べばよいかの
    条件判断ができないので、デフォルトで入ってくるアイコンでとりあえずは充分です。

    試しにIconLibを使ってアイコンを取得する方法も試してみます。
記事No.87523 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87531  Re[5]: Icon について
□投稿者/ 魔界の仮面弁士 -(2018/06/01(Fri) 14:38:02)
    No87530 (夜叉丸 さん) に返信
    > (VisualStudio2017 C# .Net) ですが、ms.TryGetBuffer()は存在しなかったです。
    TryGetBuffer は、.NET Framework 4.6 で追加されたメソッドです。
    現在のプロジェクトのターゲット フレームワークは何になっていますか?


    > サンプルで引っ張ってきたもの(http://4423lab.wpblog.jp/archives/170)を使用しました。
    最初の質問は
     icon.Save(ms);
     Byte[] bytes = ms.ToArray();
    だったのに、何故変更したのかな…と思っていました。


    > bin は byte[] = binary だと思うのですが
    > (VisualStudio2017 C# .Net) ですが、bin.ToIcon() は使えませんでした。

    ありゃ、済みません。先の拡張メソッドのサンプルの
     public static Icon FromBinary(this byte[] binary) { … }
    の部分を
     public static Icon ToIcon(this byte[] binary) { … }
    にリネームしておいてください。
記事No.87523 のレス /過去ログ150より / 関連記事表示
削除チェック/

■94583  Re[2]: For文の書き方について
□投稿者/ 通りすがり -(2020/04/22(Wed) 13:35:21)
    No94578 (元コボラー さん) に返信
    変数宣言なしに@を使っているなら、後からメンバ変数やグローバル変数で変数宣言されると
    バグに繋がるかも。一人で小規模なプログラムを作っている場合に問題になることは
    少ないでしょう。複数人で同じような変数が20個くらい並んでくるなら、コーディング規約で
    変数名がスコープの広いものと被らないような対策を考えた方が良いかも。ローカル変数でも
    数十行ダラダラとコーディングするなら同じ問題に繋がり易いと思います。
記事No.94578 のレス /過去ログ164より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -