zhengjian211 发表于 2012-4-21 18:40:20

用了Dictionary<string, string> 就报致命错误

本帖最后由 zhengjian211 于 2012-4-21 18:42 编辑

         static public void t1()      
{         
PromptEntityOptions p = new PromptEntityOptions("\n选择实体");         
PromptEntityResult res = Application.DocumentManager.MdiActiveDocument.Editor.GetEntity(p);         
if (res.Status == PromptStatus.OK)         
{            
Dictionary d = IsPipe();}public static Dictionary IsPipe()   
   {         
Dictionary result = null;         
result.Add("管道层", "WP_G");
}


报致命错误。。。怎么回事 百思不得其解啊!


zhengjian211 发表于 2012-4-21 18:43:20

public static Dictionary IsPipe()
      {
            Dictionary result = null;
            result.Add("管道层", "WP_G");
}这是ispipe函数

sieben 发表于 2012-4-21 22:37:29

我不知道该怎么说。
你还是先多看看别人的代码吧,先把一些基础的东西搞清楚。

induh62662 发表于 2012-4-22 00:09:42

YY是我思考的方式,BT是我追求的境界。

zhengjian211 发表于 2012-4-22 11:31:41

回复2楼:的确是对概念不清楚。

Dictionary result = null; 这句在 vs里面会马上抛出错误,而在cad里面则是直接崩溃。

只能说这种机制不是很合理,至少给个改错的机会了

sieben 发表于 2012-4-25 16:22:50

1,不是在你说的那一句出错
2,应该不会是只给别人改错的机会而独独不给你吧?这里也用不着改错。
3,再说一句废话,多看别人的代码。

sailorcwx 发表于 2012-4-26 00:44:08

Dictionary设置为null的话实际上是没有创建对象的,所以还需要new
把Dictionary result = null改成Dictionary<string,string> result = new Dictionary<string,string>()试试

zhengjian211 发表于 2012-5-2 21:08:33

sieben 发表于 2012-4-25 16:22 static/image/common/back.gif
1,不是在你说的那一句出错
2,应该不会是只给别人改错的机会而独独不给你吧?这里也用不着改错。
3,再说 ...

请问是哪一句出了错,这句在vs里面运行到此处会抛出错误而到了内嵌的dll里面就直接报内存错误,最后的改正方法的确是7楼所说.

zhengjian211 发表于 2012-5-2 21:10:50

public static Dictionary IsPipe()
      {
         Dictionary result = null改成Dictionary<string,string> result = new Dictionary<string,string>()
            result.Add("管道层", "WP_G");
return result;
}

zhengjian211 发表于 2012-5-2 21:13:41

可能我没表达清楚,同样的代码写在标准的控制台程序里面调试的时候会抛出错误,而到了内嵌cad的dll里面则直接报内存错误。 对于各位高手可能是小菜,对于我们业余选手可能要花上很多时间修改。 谢谢各位的指教!
页: [1] 2
查看完整版本: 用了Dictionary<string, string> 就报致命错误