小编Jon*_*tus的帖子

关键字Set在VBA中实际做了什么?

希望这是一个简单的问题,但我非常喜欢这个技术答案!

有什么区别:

i = 4
Run Code Online (Sandbox Code Playgroud)

Set i = 4
Run Code Online (Sandbox Code Playgroud)

在VBA?我知道后者会抛出错误,但我不完全理解为什么.

vba variable-assignment

149
推荐指数
4
解决办法
20万
查看次数

Windows窗体应用程序中异常处理的最佳实践?

我目前正在编写我的第一个Windows Forms应用程序.我现在已经阅读了一些C#书籍,所以我对C#处理异常的语言功能有了比较深入的了解.它们都非常理论化,所以我还没有想到如何在我的应用程序中将基本概念转换为一个良好的异常处理模型.

有人愿意分享关于这个主题的任何智慧珍珠吗?发布你看过像我这样的新手所犯的常见错误,以及处理异常的一般建议,使我的应用程序更加稳定和健壮.

我目前正在努力解决的主要问题是:

  • 什么时候应该重新抛出异常?
  • 我应该尝试某种中央错误处理机制吗?
  • 与预先测试诸如磁盘上的文件之类的内容相比,处理可能引发的异常会产生性能损失吗?
  • 是否所有可执行代码都包含在try-catch-finally块中?
  • 有空的挡块是否可以接受?

感谢所有建议!

c# exception-handling winforms

117
推荐指数
7
解决办法
7万
查看次数

我应该知道什么是计算机科学概念?

您认为计算机科学中的哪些概念使您成为更好的程序员?

我的学位是机械工程,所以最终成为一名程序员,我有点缺乏基础知识.我最近学到了一些标准的CS概念,让我对我正在做的事情有了更深刻的理解,特别是:

语言特色

  • 指针和递归(谢谢乔尔!)

数据结构

  • 链接列表
  • 散列表

算法

  • 泡泡排序

显然,目前这个名单有点短,所以我希望得到以下建议:

  1. 我应该理解什么概念,
  2. 正确理解它们的任何好资源(因为维基百科有时可能有点密集和学术).

computer-science

92
推荐指数
8
解决办法
6万
查看次数

我可以创建通用类型字典吗?

我想创建一个Dictionary对象,使用字符串Keys,保存通用类型的值.我想它看起来像这样:

Dictionary<string, List<T>> d = new Dictionary<string, List<T>>();  
Run Code Online (Sandbox Code Playgroud)

并允许我添加以下内容:

d.Add("Numbers", new List<int>());
d.Add("Letters", new List<string>());
Run Code Online (Sandbox Code Playgroud)

我知道我可以为字符串列表执行此操作,例如,使用以下语法:

Dictionary<string, List<string>> d = new Dictionary<string, List<string>>();
d.Add("Key", new List<string>());
Run Code Online (Sandbox Code Playgroud)

但如果可能的话,我想把它作为通用名单......

然后2个问题:

  1. 可能吗?
  2. 语法是什么?

非常感谢,
乔恩

c# generics

55
推荐指数
3
解决办法
8万
查看次数

将数组写入Excel范围

我目前正在尝试使用以下代码将对象数组中的数据写入Excel中的范围,其中objData只是一个字符串数组:

private object m = System.Type.Missing;
object[] objData = getDataIWantToWrite();

Range rn_Temp;
rn_Temp = (Range)XlApp.get_Range(RangeName, m);
rn_Temp = rn_Temp.get_Resize(objData.GetUpperBound(), 1);
rn_Temp.value2 = objData;
Run Code Online (Sandbox Code Playgroud)

这几乎可以工作,问题是范围被填满但是每个单元格都获得了第一个项目的值objData.

逆向工作,即

private object m = System.Type.Missing;
object[] objData = new object[x,y]

Range rn_Temp;
rn_Temp = (Range)XlApp.get_Range(RangeName, m);
rn_Temp = rn_Temp.get_Resize(objData.GetUpperBound(), 1);
objData = (object[])rn_Temp.value2;
Run Code Online (Sandbox Code Playgroud)

将返回一个包含工作表中所有值的数组,所以我不确定为什么阅读和赋值的工作方式不同.

有没有人成功地做过这件事?我目前正逐个单元地编写阵列,但它需要处理很多(> 50,000)行,因此非常耗时.

c# excel interop

51
推荐指数
3
解决办法
11万
查看次数

将类列表序列化为XML

我有一组类,我想序列化为XML文件.它看起来像这样:

public class Foo
{
  public List<Bar> BarList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

bar只是一组属性的包装器,如下所示:

public class Bar
{
  public string Property1 { get; set; }
  public string Property2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想对此进行标记,以便将其输出到XML文件 - 这将用于持久性,并且还可以通过XSLT将设置呈现为一个很好的人类可读形式.

我想得到一个像这样的好的XML表示:

<?xml version="1.0" encoding="utf-8"?>
<Foo>
  <BarList>
    <Bar>
      <Property1>Value</Property1>
      <Property2>Value</Property2>   
    </Bar>
    <Bar>
      <Property1>Value</Property1>
      <Property2>Value</Property2>   
    </Bar>
  </Barlist>
</Foo>
Run Code Online (Sandbox Code Playgroud)

Barlist中的所有条形图都写在哪里,包含所有属性.我很确定我需要在类定义上使用一些标记才能使它工作,但我似乎找不到合适的组合.

我用属性标记了Foo

[XmlRoot("Foo")]  
Run Code Online (Sandbox Code Playgroud)

list<Bar>属性

[XmlArray("BarList"), XmlArrayItem(typeof(Bar), ElementName="Bar")]
Run Code Online (Sandbox Code Playgroud)

试图告诉Serializer我想要发生什么.这似乎不起作用,我只是得到一个空标记,看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Foo> 
  <Barlist />
</Foo>
Run Code Online (Sandbox Code Playgroud)

我不确定我使用自动属性的事实是否会产生任何影响,或者如果使用泛型需要任何特殊处理.我已经使用了更简单的类型,比如字符串列表,但到目前为止,我已经找到了一个类列表.

c# xml serialization

34
推荐指数
1
解决办法
7万
查看次数

VBA垃圾收集器详细信息

我发现自己最近不得不写一些VBA代码,只是想知道是否有人曾经遇到过有关VBA垃圾收集器如何工作的任何细节?.Net GC确实有很好的记录,但我在VBA GC上找不到一丝细节,除了模糊的提到它是一个参考计数器.我认为它与VB6 GC非常相似,但无法找到任何相关信息.

具体来说,我有兴趣知道:

  • 触发GC的原因
  • 它使用什么算法(例如,收集生成?)
  • 如何处理循环引用(如果有的话)?
  • 有没有办法监控其运作

这比任何特别需要知道的更多是出于好奇,任何洞察都非常感激!

vb6 vba

17
推荐指数
1
解决办法
8403
查看次数

使用LINQ to SQL在数据库之间进行复制

鉴于两个相同模式的数据库,有没有简单的方法在两者之间传输记录?我正在使用LINQ to SQL,因为我需要在此过程中执行一些额外的操作,并且使用表示我正在传输的记录的对象使这更容易.这是一个小规模的帮助应用程序,因此SSIS可能有点过分,SQLBulkCopy不允许我在途中轻松查询对象.

我想做的是:

public static void TransferCustomer
                     (DBDataContext DCSource, 
                      DBDataContext DCDest, 
                      int CustomerID)
{
  Customer customer;
  using (DCSource = new DBDataContext(SourceConnStr))
  {
    customer = DCSource.Customers
                       .Where(c => c.CustomerID == CustomerID)
                       .Single();
  }

  using (DCDest = new DBDataContext(DestConnStr))
  {
    DCDest.Customers.InsertOnSubmit(customer);
    DCDest.SubmitChanges();
  }
}
Run Code Online (Sandbox Code Playgroud)

但是由于显而易见的原因,这会引发消息异常:

已尝试附加或添加非新的实体,可能已从另一个DataContext加载.这不受支持.

我可以通过像这样对象的浅拷贝来解决这个问题:

public static Customer Clone(this Customer customer)
{
  return new Customer()
  {
    Name = customer.Name,
    Email = customer.Email
    etc...
  };
}
Run Code Online (Sandbox Code Playgroud)

然后插入克隆的项目.如果我只复制有问题的字段,而不是任何表示表关系的引用,这可以正常工作.然而,它有点啰嗦,我正在做的方式需要我手动分配克隆方法中的每个字段.任何人都可以建议任何使这更容易的方法吗?我想知道的两件事是:

  1. LINQ to SQL能否以更简单的方式执行此操作,
  2. 有没有一种很好的方法可以使用Reflection来制作一个可以插入的浅拷贝?

非常感谢!

c# linq-to-sql

9
推荐指数
1
解决办法
6802
查看次数

C#中的XML - 从资源,操作和显示中读取

我想做以下事情,找不到优雅的方式:

  1. 将XML模板读入 System.Xml.XmlDocument
  2. 使用我的UI中的数据填充它
  3. XSLT我写的 转换它
  4. 应用CSS样式表
  5. 将其渲染为WebBrowser控件

我目前正在从磁盘上的文件中读取它,填充它,然后在填充后将其保存回磁盘.我XSLT在模板中引用,然后CSSXSLT然后使用该WebBrowser.Navigate([filename])方法显示XML文件.

显然,当我来部署此应用程序,它会打破可怕的文件将不会存在于磁盘上,我将无法引用XSLTCSS文件中的XML文件,因为它们会资源.我打算将模板作为资源包含在内,但无法从中找到一种巧妙的方法.

任何帮助非常感谢

c# xml

5
推荐指数
1
解决办法
3632
查看次数

IE7/8 Javascript陷阱

我已经构建了一个小的单页内联网应用程序,它非常Javascript.它在Chrome和Firefox中运行得很漂亮,但是只要你在IE7/8中加载它,界面就会变得极其缓慢.它有各种jQueryUI小部件,如draggables和可调整大小的窗格,一旦你开始点击和拖动,帧速率就会下降到不可用的区域.

在我尝试理解IE8开发人员工具之前,IE7/8脚本引擎中是否有任何已知的问题我可以在我的代码中检查?我已经看到了.innerHTML()很慢的参考,但我不知道是否还有其他我应该寻找的东西.

javascript jquery internet-explorer jquery-ui

5
推荐指数
1
解决办法
418
查看次数