由于“xx”是引用封送类的字段,访问上面的成员可能导致运行时异常

DataTable dt = fm_main_data.c_data.BJLX; 

这段代码提示了异常:

是引用封送类的字段,访问上面的成员可能导致运行时异常;

============================================================================================

解决:

DataTable dt = fm_main_data.c_data.BJLX.Copy()

=========================================

原因:http://technet.microsoft.com/zh-cn/library/x524dkh4(v=vs.90).aspx


错误消息
由于“member”是引用封送类的字段,访问上面的成员可能导致运行时异常

当您尝试对从 MarshalByRefObject 派生的类成员调用方法、属性或索引器时,并且该成员是值类型时,会出现此警告。若要解决此警告,请将该成员复制到局部变量并对此变量调用方法。

下面的示例生成 CS1690:

// CS1690.cs
using System;

class WarningCS1690: MarshalByRefObject
{
   int i = 5;

   public static void Main() 
   {
     WarningCS1690 e = new WarningCS1690();
     e.i.ToString();   // CS1690

     // OK
     int i = e.i;
     i.ToString();
     e.i = i;
   }
}

=======================================================================================================================================================================================

我的总结:

一:MarshalByRefObject

marshal

[英]['mɑ:ʃl] [美][ˈmɑrʃəl]

n.元帅; 典礼官; 执法官; 消防局长; 

vt.整理,排列,集结; 

 

Marshal 类

提供了一个方法集,这些方法用于分配非托管内存、复制非托管内存块、将托管类型转换为非托管类型,此外还提供了在与非托管代码交互时使用的其他杂项方法。

MarshalByRefObject

允许在支持远程处理的应用程序中跨应用程序域边界访问对象。
.MarshalByValueComponent

实现 IComponent 并提供可远程控制的组件的基实现,该组件是由值封送的(传递序列化对象的副本)。

================================================================

介绍(http://blog.csdn.net/enemyisgodlike/article/details/20391861)

remoting 是MarshByReference的,可以传变量的引用,直接对服务器对象操作。速度快,适合intranet(企业内部互联网)。//??不确定
webservice 是MarshByValue的,必须传对象的值。速度慢,可以过FIREWALL,配置比较简单,适合internet(因特网)。//??不确定

DataSet 和 DataTable 对象从 MarshalByValueComponent 继承,并支持用于 .NET Framework 远程处理的 ISerializable 接口。 它们是唯一可用于 .NET Framework 远程处理的 ADO.NET 对象。

二:问题

fm_main_data.c_data.BJLX.Copy();中c_data是结构体 值类型 而 fm_main_data 定义如下:   private FM_Main fm_main_data;

1: 在哪里使用了MarshalByRefObject?

2:  提示异常可能造成什么结果?

3:  为什么示例生成 CS1690的代码:如果不使用tostring() (比如直接赋值)  就不会提示异常?


C#这里太墨迹了 待续待续。。。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值