作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的 C++/CLI 类:
// MyClass.h
#pragma once
namespace MyNamespace {
using namespace System;
public ref class MyClass {
private:
MyClass();
IntPtr m_ptr;
};
}
// MyClass.cpp
#include "MyClass.h"
using namespace System;
namespace MyNamespace {
MyClass::MyClass() {
m_ptr = IntPtr::Zero;
}
}
m_ptr = IntPtr::Zero
始终带有红色下划线并带有 IntelliSense 错误:“引用不能绑定(bind)到 initonly 字段”。是什么赋予了?我怎样才能摆脱这个?
最佳答案
嗯,这是 IntelliSense 解析器中的一个错误。由爱迪生设计集团撰写。以编写 C++ 前端而闻名,但 C++/CLI 确实给了他们锻炼机会。一般来说,initonly 字段有问题(IntPtr::Zero 是 initonly),类似于 here但与此错误无关。在 C++ 中没有任何等价物很可能是一个促成因素。
像这样的代码并没有得到太多的测试,分配是完全多余的。 CLR 已经硬保证托管类中的所有字段都是零初始化的。
所以解决方法#1 只是省略分配,它没有做任何有用的事情。
解决方法 #2 是使用标准 C++ 构造函数初始化语法:
MyClass::MyClass() : m_ptr(IntPtr::Zero) {}
MyClass::MyClass() {
m_ptr = IntPtr();
}
关于.net - 智能感知错误 : a reference cannot be bound to an initonly field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16920005/
我有一个像这样的 C++/CLI 类: // MyClass.h #pragma once namespace MyNamespace { using namespace System;
以下代码编译时出现警告和智能感知错误: ref class Test { initonly static TimeSpan Delay = TimeSpan(1,1,1); Test(
给定一个 FieldInfo,可以设置一个 C# readonly/CLR InitOnly 成员字段。 我什么时候、为什么要这样做?对于序列化程序,我创建了一个对象类型的空实例,然后填充数据流中的所
我是一名优秀的程序员,十分优秀!