3

VC ++ 2010にアップグレードした後、C#プロジェクトから厳密に型指定されたデータセットを使用するC ++ / CLIプロジェクトをビルドすると、警告C4564が発生します(メソッドはサポートされていないデフォルトパラメーターを定義します)。

ReadersManager.cpp(311):警告C4564:クラス'System :: Data ::DataTable'のメソッド'SetNewRecord'は、サポートされていないデフォルトパラメータ'action'を定義します

メソッドを呼び出すときに値「2」を明示的に指定します

この診断は、アセンブリ'System.Data、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'からタイプ'System:: Data::DataTable'をインポートしているときに発生しました。

この診断は、アセンブリ'System.Data.DataSetExtensions、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'からタイプ'System:: Data::TypedTableBase'をインポートしているときに発生しました。

この診断は、アセンブリ'MyProductDataStoreCLR、Version = 4.5.0.9、Culture = neutral、PublicKeyToken=null'からタイプ'MyProductDataStoreCLR:: ReadersDataSet::ReadersDataTable'をインポートしているときに発生しました。

への呼び出しで警告が発生しているSystem::Data::DataTable::Selectため、に関連する呼び出しコードに変更できるものはありませんSetNewRecord

これは、新しいC#オプションのパラメーター機能をサポートしていないC ++ / CLIの問題ですか?

4

1 に答える 1

11

警告レベル4のメッセージで、「いつか追突されるかもしれません」に分類されます。.NET 言語では、値を指定せずにデフォルトのパラメーター値を使用してメソッドを呼び出すサポートはむらがあります。VB.NET は常にそれを持っていましたが、C# はバージョン 4 で取得したばかりです。C++/CLI はそれをサポートしておらず、今後もサポートしません。C++ 言語サポートしているため、これは注目に値します。C++/CLI プログラマーはこれに驚かれる可能性があるため、警告が表示されます。

警告に対してできることはあまりありません。データセットのコードは自動生成されます。それ以外の場合はまったく無害です。デフォルト値で引数の値を指定せずにメソッドを呼び出すと、コンパイラ エラーが発生します。

#pragma warning(disable:4564)または Project > Properties > C/C++ > Advanced > "Disable Specific Warnings" 設定で警告をオフにするだけです。

于 2010-06-22T14:55:09.467 に答える