C++/CLI WinForm调用Convert报E0254 Type name not allowed错误咨询
错误产生原因
你当前使用C++/CLI语言开发WinForm程序,代码中编写的Convert.ToDouble()、Convert.ToString()属于C#的语法写法,不符合C++/CLI的语法规则:
- C++/CLI中调用.NET托管类的静态方法时,不能使用点
.运算符,必须使用作用域解析运算符:: - IDE检测到类型名
Convert后直接跟随.,语法不合法,因此抛出E0254 Type name not allowed错误。
修复方案
- 将所有
Convert类静态方法调用处的.替换为:: - 检查代码文件顶部的命名空间引用:
- 如果已有
using namespace System;语句,直接使用Convert::ToDouble(...)、Convert::ToString(...)写法即可 - 如果未引入System命名空间,可以补充上述using语句,也可以直接写全限定名
System::Convert::ToDouble(...),效果完全一致。
- 如果已有
修正后的按钮点击事件代码如下:
#pragma endregion private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { double x = 0; double y = 0; double z = 0; x = Convert::ToDouble(textBox1->Text); y = Convert::ToDouble(textBox2->Text); z = x + y; textBox3->Text = Convert::ToString(z); }
实用提示:正式使用时建议补充输入合法性校验,避免用户输入非数值内容触发运行时转换异常。
内容的提问来源于stack exchange,提问作者cyhed
相关产品推荐
相关产品推荐

