Visual c++ 建筑C和x2B时发出警告C4564+/使用强类型数据集的CLI项目

Visual c++ 建筑C和x2B时发出警告C4564+/使用强类型数据集的CLI项目,visual-c++,c++-cli,warnings,strongly-typed-dataset,visual-c++-2010,Visual C++,C++ Cli,Warnings,Strongly Typed Dataset,Visual C++ 2010,升级到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=b77a5c5619

升级到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,版本=4.5.0.9,区域性=中性,PublicKeyToken=null”导入类型“MyProductDataStoreCLR::ReadersDataSet::ReadersDataTable”时发生此诊断

调用
System::Data::DataTable::Select
时发出警告,因此与
SetNewRecord
相关的调用代码中没有我可以更改的内容


这是一个C++/CLI不支持新的C#可选参数功能的问题吗?

这是一个警告级别4的消息,属于“这可能有一天会让你在后端遇到”类别。在.NET语言中,使用默认参数值调用方法而不指定值的支持是不稳定的。VB.NET一直都有它,C#刚刚在第4版中获得了它。C++/CLI不支持它,而且肯定永远不会支持它。这是值得注意的,因为C++语言确实支持它。C++/CLI程序员可能会对此感到惊讶,因此发出警告

对于警告您无能为力,数据集的代码是自动生成的。否则它是完全良性的,如果您调用该方法时没有为参数提供默认值,那么您将得到一个编译器错误

只需使用
#pragma warning(disable:4564)
或Project>Properties>C/C++>Advanced>“禁用特定警告”设置关闭警告