原文连接:http://blog.sunmast.com/sunmast/articles/860.aspx
我的一些看法:
用 gcnew 是个好主意。
看到这个比较兴奋:
引用类型在堆栈上 ReferenceType h;
处理Dispose的方式也还不错:
调用Dispose 方法 ReferenceType^ h = gcnew ReferenceType;
delete h;
这个也可以接受:
调用Dispose 方法 ReferenceType^ h = gcnew ReferenceType;
delete h;
但是这样
ref class ReferenceType {};
value class ValueType {};
不见得比
__gc class ReferenceType {};
__value class ValueType {};
高雅。或者说一样垃圾。除非 ref/value 可以省略。对于class 缺省应该是ref,对于 struct缺省应该是 value。
不过最让我感到恼火同时也感到欣慰的是:
的确,这样对访问的控制更精确了。。。但是*——#……%—%86
新的box和un-box还是可以接受。新的属性处理的确比原来的好多了。但是
还是太罗嗦。这个property 本来就是特殊处理。那么Get当然是返回property那行的类型。set的输入参数也肯定是相同的类型。而且也肯定没有返回值。所以,上面的例子完全应该:
总体来说,好消息比坏消息多了点。
我的一些看法:
用 gcnew 是个好主意。
看到这个比较兴奋:
引用类型在堆栈上 ReferenceType h;
处理Dispose的方式也还不错:
调用Dispose 方法 ReferenceType^ h = gcnew ReferenceType;
delete h;
这个也可以接受:
调用Dispose 方法 ReferenceType^ h = gcnew ReferenceType;
delete h;
但是这样
ref class ReferenceType {};
value class ValueType {};
不见得比
__gc class ReferenceType {};
__value class ValueType {};
高雅。或者说一样垃圾。除非 ref/value 可以省略。对于class 缺省应该是ref,对于 struct缺省应该是 value。
不过最让我感到恼火同时也感到欣慰的是:
public ref class ReferenceType
{
public:
// 程序集内部和外部同时可以访问
private public:
// 仅程序集内部可以访问
protected public:
// 程序集外部仅继承了的类型可以访问,内部代码可以直接访问
};
{
public:
// 程序集内部和外部同时可以访问
private public:
// 仅程序集内部可以访问
protected public:
// 程序集外部仅继承了的类型可以访问,内部代码可以直接访问
};
的确,这样对访问的控制更精确了。。。但是*——#……%—%86
新的box和un-box还是可以接受。新的属性处理的确比原来的好多了。但是
property String^ Name
{
String^ get()
{
return m_value;
}
void set(String^ value)
{
m_value = value;
}
}
{
String^ get()
{
return m_value;
}
void set(String^ value)
{
m_value = value;
}
}
还是太罗嗦。这个property 本来就是特殊处理。那么Get当然是返回property那行的类型。set的输入参数也肯定是相同的类型。而且也肯定没有返回值。所以,上面的例子完全应该:
property String^ Name
{
get()
{
return m_value;
}
set()
{
m_value = value;
}
}
{
get()
{
return m_value;
}
set()
{
m_value = value;
}
}
总体来说,好消息比坏消息多了点。