1

具体的には次のようなオブジェクトがあります。

table.ExtendedProperties["MS_Description"].Value

プロパティがない場合、Valueは null です。プロパティがあっても空である場合、Value.toString()"".

したがって、両方の不測の事態に対応する if ステートメントを作成したいと思います。これは私がこれまでに行ったことです:

if (table.ExtendedProperties["MS_Description"] == null ||
    table.ExtendedProperties["MS_Description"].Value.ToString().Equals(""))

問題は、それが null の場合でも、右側の条件をチェックしていることです。

何か案は?

4

5 に答える 5

3

できるよ:

if (table.ExtendedProperties["MS_Description"] == null || string.IsNullOrEmpty(table.ExtendedProperties["MS_Description"].Value))

コードがエラーになる理由table.ExtendedProperties["MS_Description"].Valueは、null かどうかをチェックしていないためです。

于 2012-12-13T21:42:19.463 に答える
2

したがってValue、文字列ではないため、すべての条件に対処する必要があります。

var description = table.ExtendedProperties["MS_Description"];
if (description == null ||
    description.Value == null || 
    description.Value.ToString().Equals(""))
    // no value

ところで、あなたのコードは完全に正しくありません

if (table.ExtendedProperties["MS_Description"] == null ||
    table.ExtendedProperties["MS_Description"].Value.ToString().Equals(""))

null の値をチェックする代わりに、null でtable.ExtendedProperties["MS_Description"]ないかどうかをチェックしています。それは本当だ。さらに進みますが、table.ExtendedProperties["MS_Description"].Valueが null の場合 (チェックしていませんでしたね?)、適用時に NullReferenceException が発生しToString()ます。

于 2012-12-13T21:42:04.737 に答える
1

あなたがプロパティを参照しているのDataTable.ExtendedPropertiesか、それとも何か他のものを参照しているのかはわかりませんが、そうであれば、プロパティはSystem.Data.PropertyCollectionを継承する を返しますSystem.Collections.HashTable

ここで説明するインデクサー ("Item") を含むほとんどのメソッドとプロパティは、HashTable から直接継承されるため、通常、table.ExtendedProperties[key] は null を含む任意のオブジェクトを返すことができます。

DataTable.ExtendedProperties.ContainsKey(object key)を呼び出して、PropertyCollection に特定のキーが含まれているかどうかを確認することもできます。

を呼び出すときに取得するオブジェクトのタイプを知っていますtable.ExtendedProperties["MS_Description"].Valueか?

その場合、プロパティが設定されているかどうかなどを判断するために使用できる他のプロパティがある可能性があります。

オブジェクトのタイプによってtable.ExtendedProperties["MS_Description"]は、次のようなこともできる場合があります。

if ((table.ExtendedProperties["MS_Description"] ?? "").ToString().Length == 0) {
      .....
}

それはすべての可能性を考慮に入れます:

  • 鍵が存在しない
  • キーは存在しますが、値は null です
  • キーが存在し、値が空です

table.ExtendedProperties["MS_Decription"]Value プロパティが null または空の場合、オブジェクトが "" を返す限り。したがって、返されるオブジェクトに関する情報がもう少しあれば、大いに役立ちます。

于 2012-12-13T21:59:28.947 に答える
0

決して null ではないように見えますが、代わりにプロパティをtable.ExtendedProperties["MS_Description"]チェックする null にする必要がありますValue

string value = table.ExtendedProperties["MS_Description"].Value;
if (value == null || value.ToString().Equals(""))
// OR 
if (String.IsNullOrEmpty(value))

nullを返すことができる場合table.ExtendedProperties["MS_Description"]は、必要です

if (table.ExtendedProperties["MS_Description"] == null ||
    String.IsNullOrEmpty(table.ExtendedProperties["MS_Description"].Value.ToString() ) 

そしてtable.ExtendedProperties["MS_Description"].Valuenullを返す可能性があるので、必要です

if (table.ExtendedProperties["MS_Description"] == null ||
    table.ExtendedProperties["MS_Description"].Value == null ||
    String.IsNullOrEmpty(table.ExtendedProperties["MS_Description"].Value.ToString() ) 
于 2012-12-13T21:48:15.033 に答える
0
string.IsNullOrEmpty(table.ExtendedProperties["MS_Description"].Value)
于 2012-12-13T21:42:28.960 に答える