タグ

ブックマーク / qiita.com/jun1s (3)

  • C#8.0で導入された配列インデクサの範囲指定がexclusive endな理由 - Qiita

    string line = "01234567"; string line2 = line[0..4]; Console.WriteLine(line); // 01234567 Console.WriteLine(line2); // 0123 この記事がとても分かりやすいです。 array[start..end] の時、startは「包括的(inclusive)」、endは「排他的(exclusive)」となります。 つまり、startは結果に含まれますが、endは結果に含まれません。 "01234567"という文字列に対して[2..4]は"23"です。 どうしてそうなっているのでしょうか? 分かりにくいと思う人もいるかもしれませんが、CやC++と同様、C#の「配列のインデックス」というのは「N番目の要素」を表しているというよりは「配列として確保されたメモリ上のデータの先頭からの距離」

    C#8.0で導入された配列インデクサの範囲指定がexclusive endな理由 - Qiita
    ghostbass
    ghostbass 2023/09/04
  • 「DI使うとインタフェース地獄に陥るらしいから使いたくない」と言っていたA氏がインタフェースを使わずにDIで幸せになるまで - Qiita

    「DI使うとインタフェース地獄に陥るらしいから使いたくない」と言っていたA氏がインタフェースを使わずにDIで幸せになるまでC#DIDependencyInjection依存性の注入 DIはインタフェース定義しなくても十分実用的だし、むしろそっちの方が質だよ、という話をします。C#や.NETを使っていますが、それに限らず普遍的な内容です。 インタフェースと実装に分けるとか無理。DIなど不要! 中堅社員のA氏は、「DIっていちいち実装とインタフェース分けないとダメなんでしょ?。さすがにやってられんわ」と言って頑なにDIを導入しようとしません。 DIはテスタビリティと併せて語られることが多かった為か、A氏は「注入するクラスは基的にインタフェース定義しましょう」という記事ばかりを読んでいたのです。 インタフェースと実装を分けるとは、例えば次のような事です。 services.AddScoped

    「DI使うとインタフェース地獄に陥るらしいから使いたくない」と言っていたA氏がインタフェースを使わずにDIで幸せになるまで - Qiita
    ghostbass
    ghostbass 2021/10/20
    Attribute付けたりInterface付けたりでまとめてコンテナに登録とか色々。/個人的にはinterfaceあまり使わないけど実装クラスをnewすることもほぼない
  • SQL文字列を構築するベストではないかもしれないがベターなプラクティス(VB.NET) - Qiita

    はじめに この記事は、最先端のテクノロジーを紹介するものではありません。セキュリティ対策やパフォーマンス改善、正規化…そういう高度な(?)話題ですらありません。そんなものとは無縁の、泥のような開発現場で腐った魚のような目をした日々を送っているVBプログラマーの皆様にお送りする、「毎日をちょっとだけ楽しくする」TIPS記事です。 あなたは今、SQLのSELECT句を文字列で生成するプログラムを書いているとします。「今どき生SQLとかだっさww」とか思われるかもしれませんが、そんな現場は今でも普通にゴロゴロしています。 もしあなたが古いVB6プログラマーだと、このようなソースを書いているかもしれません(Qiitaの熱心な読者の皆さんは「まさかw」と思われるかもしれませんが、まさに今私がメンテナンスしているソースコードがこういうソースのオンパレードなのです)。 Dim sql As String

    SQL文字列を構築するベストではないかもしれないがベターなプラクティス(VB.NET) - Qiita
    ghostbass
    ghostbass 2018/09/21
    VB.Netになって文字列の結合に"+"が使えるようになった?(ていうかVB6まで使えていたけど怖いから"&"を使っていた)/ていうかLinq使うかQueryBuilder使うかどっちか。パラメータ化できないのはアレ。
  • 1