問題タブ [nullable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Nullable で DateTime.TryParse を使用する方法?
DateTime.TryParse メソッドを使用して、文字列の日時値を Nullable に取得したいと考えています。しかし、これを試すと:
コンパイラが教えてくれる
'out' 引数は変数として分類されていません
ここで何をする必要があるのかわからない。私も試しました:
それもうまくいきません。何か案は?
.net - リフレクション付きの.NET動的オブジェクト
Nullable(of Enum)
aが実際Enum
にリフレクションによってであるかどうかを判断するにはどうすればよいですか?
私は、データベース呼び出しから取得したT
タイプのオブジェクトに動的にデータを取り込むメソッドを使用しています。IDataReader
基本的に、データリーダーの序数をループし、序T
数の名前に一致するすべてのプロパティとプロパティにデータを入力します(列名を変更するために属性マジックもスローされます)。他のすべての状況ではうまく機能しますが、プロパティをチェックするBaseType
とSystem.Enum
、代わりに見つけることができます。System.ValueType
したがって、列挙型チェックが失敗し、メソッドが爆破されます。
[編集:
Type.IsEnum
必要な方法で機能しません。ここでの主な問題は、T
のBaseType階層には、それがであるとは何も書かれていないということですEnum
。それをNullable
タイプにすることは私のEnum
権利を失うかのようです。]
何か案は?
c# - このコードがC#で無効なのはなぜですか?
次のコードはコンパイルされません。
エラー1「System.DBNull」と「string」の間に暗黙の変換がないため、条件式のタイプを判別できません。
これを修正するには、次のようなことを行う必要があります。
これは確かに合法であるため、このキャストは無意味に思えます。
三項分岐のタイプが異なる場合、コンパイラは値をタイプオブジェクトに自動ボックス化しないようですが、同じタイプの場合、自動ボックス化は自動的に行われます。
私の考えでは、最初のステートメントは合法である必要があります...
コンパイラがこれを許可しない理由と、C#の設計者がこれを選択した理由を誰かが説明できますか?これはJavaでは合法だと思います...これは確認していませんが。
ありがとう。
編集: JavaとC#がこれを異なる方法で処理する理由、これを無効にするC#のシーンの下で何が起こっているのかを理解してください。私は三元の使い方を知っていて、例をコーディングするための「より良い方法」を探していません。C#の3値のルールは理解していますが、なぜ...
編集(Jon Skeet):この質問にはボクシングが含まれていないため、「autoboxing」タグを削除しました。
c# - 構造体変数を Nullable に初期化する
c#で変数をNullableとして宣言する方法はありますか?
c# - Null 許容 GUID
私のデータベースでは、テーブルの 1 つに null を許可する GUID 列があります。Guid を使用するメソッドがありますか? テーブルに新しいデータ行を挿入するパラメーター。ただし、myNewRow.myGuidColumn = myGuid と言うと、次のエラーが表示されます。「System.Guid」に。」
c# - C#ADO.NET:nullとDbNull-より効率的な構文はありますか?
をDateTime?
使用してフィールドに挿入しようとしているものがありDbParameter
ます。私は次のようにパラメータを作成しています:
そして、 sを考慮しながらDateTime?
の値をwhileに入れたいと思います。dataPrm.Value
null
私は最初は賢いと思いました:
しかし、それはエラーで失敗します
演算子'??' タイプ「System.DateTime?」のオペランドには適用できません。および「System.DBNull」
したがって、2番目の引数が最初の引数のnull許容でないバージョンである場合にのみ機能すると思います。それで私は行きました:
しかし、それも機能しません:
'System.DateTime'と'System.DBNull'の間に暗黙の変換がないため、条件式のタイプを判別できません。
しかし、私はそれらのタイプ間で変換したくありません!
これまでのところ、私が仕事に取り掛かることができるのは次のとおりです。
それは本当に私がこれを書くことができる唯一の方法ですか?三項演算子を使用してワンライナーを機能させる方法はありますか?
更新:なぜ私は本当にわかりませんか?バージョンが機能しません。MSDNによると:
?? 演算子は、nullでない場合は左側のオペランドを返し、そうでない場合は右側のオペランドを返します。
それがまさに私が欲しいものです!
Update2:それは最終的には明らかでした:
c# - C#では、条件演算子をnull許容型に暗黙的にキャストできないのはなぜですか
暗黙のキャストが失敗する理由について興味があります...
代わりに明示的なキャストを実行する必要がある理由
コンパイラーには、暗黙のキャスト決定を行うために必要なすべての情報があるように思えますね。
vb.net - VB.NET Nullable 構文の歴史
決定的な答えは見つかりません。C# 2.0 以降、宣言できるようになりました
の省略形として
VB.NET ではこのショートカットが許可されていないことをどこかで読んだことを思い出します。しかし、見よ、今日VS 2008で試してみたところ、うまくいきました。
.NET 2.0以降このようになっているのか、それとも後で追加されたのか、誰か知っていますか?
c# - C# での null 許容型の使用
人の意見が気になるだけです。C# で null 許容型を使用する場合、null をテストするベスト プラクティスの方法は次のとおりです。
また
また、null 以外の型に代入する場合は次のようになります。
より良い:
php - MySQLのnull以外の列に空の文字列がありますか?
私は、PHPからMySQLを実行するために、標準のmysql_connect()、mysql_query()などのステートメントを使用していました。最近、私は素晴らしいMDB2クラスの使用に切り替えています。それに加えて、プリペアドステートメントを使用しているので、入力やSQLインジェクション攻撃を逃れることを心配する必要はありません。
しかし、私が直面している問題が1つあります。null以外として指定されている(つまり、NULL値を許可しない)VARCHAR列がいくつかあるテーブルがあります。古いMySQLPHPコマンドを使用すると、次のようなことが問題なく実行できます。
ただし、次のようなクエリがある場合:
そして、PHPでは次のようになります。
null value violates not-null constraint
これにより、エラー「 」がスローされます
一時的な回避策として、$value
空かどうかを確認し、 " "
(単一のスペース)に変更しますが、これは恐ろしいハックであり、他の問題を引き起こす可能性があります。
代わりにNULLを挿入しようとせずに、プリペアドステートメントで空の文字列を挿入するにはどうすればよいですか?
編集:プロジェクトが大きすぎてコードベース全体を調べ、空の文字列 ""を使用しているすべての場所を見つけて、代わりにNULLを使用するように変更します。私が知る必要があるのは、標準のMySQLクエリが「」とNULLを2つの別個のものとして扱うのに(私が正しいと思うように)、プリペアドステートメントが「」をNULLに変換する理由です。
「」とNULLは同じものではないことに注意してください。たとえば、期待どおりの代わりにSELECT NULL = "";
戻ります。NULL
1