问题列表 - 第6231页

比较两个列表的差异

我想要一些关于如何最好地编写一个通用函数的反馈,这个函数可以比较两个列表.列表包含类对象,我们想迭代一个列表,在第二个列表中查找相同的项目并报告任何差异.

我们已经有了比较类的方法,因此我们需要反馈如何从两个列表中提供方法(如下所示).

例如,假设我们有一个简单的"Employee"类,它有三个属性,Name,ID,Department.我们想报告List和另一个List之间的差异.

注意:
两个列表将始终包含相同数量的项目.

如上所述,我们有一个泛型方法,我们用它来比较两个类,我们如何结合这个方法来满足列表,即从另一个方法,循环通过List并将类提供给泛型方法....但我们如何找到第二个List中的等价类来传递给下面的方法;

public static string CompareTwoClass_ReturnDifferences<T1, T2>(T1 Orig, T2 Dest)
    where T1 : class
    where T2 : class
{
    // Instantiate if necessary
    if (Dest == null) throw new ArgumentNullException("Dest", "Destination class must first be instantiated.");

    var Differences = CoreFormat.StringNoCharacters;

    // Loop through each property in the destination  
    foreach (var DestProp in Dest.GetType().GetProperties())
    {
        // Find the matching property in the Orig class and compare
        foreach (var OrigProp in Orig.GetType().GetProperties())
        {

            if (OrigProp.Name != DestProp.Name || …
Run Code Online (Sandbox Code Playgroud)

.net c# list .net-2.0

44
推荐指数
3
解决办法
10万
查看次数

JUnit断言扩展

我经常为我的JUnit测试创建自定义断言方法.例如:

public void assertArrays(String[] actual, String[] expected)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何体面的第三方库可以提供比JUnit默认的更广泛的断言.

我在使用JUnit 4.

testing junit unit-testing junit4

3
推荐指数
1
解决办法
1906
查看次数

仅使用ServletContext查找应用程序的URL

我正在使用Spring MVC编写Java Web应用程序.我有一个后台进程通过数据库查找必须通过电子邮件发送给我的用户的通知.这些电子邮件消息需要包含应用程序的超链接.这似乎是一个相当常见的网络应用程序模式,但我遇到了麻烦.

如何使用服务器名称和上下文路径派生应用程序的完全限定URL?我无法访问HttpServletRequest中的任何方法,因为我将其作为后台进程运行,而不是响应Web请求.我能做的最好的就是访问ServletContext.

目前我将基本URL放入配置文件并在启动时读取它,但是此应用程序将获得许可并部署到客户的应用程序服务器,如果可能,我希望他们不必手动配置它.

java spring-mvc java-ee

49
推荐指数
2
解决办法
5万
查看次数

推动矢量矢量

推回矢量矢量有什么问题吗?喜欢

typedef vector<Point> Polygon;
vector<Polygon> polys;
polys.push_back(some_poly);
Run Code Online (Sandbox Code Playgroud)

some_poly中的所有元素都会被复制好吗?

我的代码中有一个错误,我似乎无法弄清楚它有什么问题.

c++ stl vector

3
推荐指数
1
解决办法
1777
查看次数

如何将数据传递给MSBuild任务的ITaskItem属性?

我有一个我在MSBuild中使用的自定义任务.效果很好.以前,我有一些属性接受了一些string数据.有人建议我应该改变它们ITaskItem.这样,如果我有空格,我应该没有问题.

以前的代码

public class CompressorTask : Task
    {
    ....
    public string CssFiles { get; set; }
    public string JavaScriptFiles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

示例msbuild文件(例如,MsBuildSample.xml)...

<CompressorTask
    CssFiles="StylesheetSample1.css, StylesheetSample2.css, 
              StylesheetSample3.css, StylesheetSample4.css"
    JavaScriptFiles="jquery-1.2.6-vsdoc.js"
... />
Run Code Online (Sandbox Code Playgroud)

请注意我是如何获得4个css文件的?我通过空间分隔符手动提取它们.KEWL.

新规范

 public ITaskItem[] CssFiles { get; set; }
 public ITaskItem[] JavaScriptFiles { get; set; }
Run Code Online (Sandbox Code Playgroud)

现在,我不确定我需要在MSBuild文件的CssFiles属性中设置什么值.

有什么建议?

.net msbuild itaskitem

3
推荐指数
1
解决办法
3910
查看次数

为什么我的finally块不能在C#中工作?

我一直在帮助同事在他们的代码中调试一些奇怪的行为.以下示例说明了这一点:

static void Main(string[] args)
{
    string answer = Sample();
    Console.WriteLine(answer);
}

public static string Sample()
{
    string returnValue = "abc";

    try 
    {
         return returnValue;
    }

    catch (Exception)
    {
         throw;
    }

    finally
    {
         returnValue = "def";
    }
}
Run Code Online (Sandbox Code Playgroud)

这个样本有什么回报?

你认为因为finally块,它返回"def",但事实上,它返回"abc"?我已经逐步完成了代码并确认了finally块实际上已被调用.

真正的答案是你不应该首先编写这样的代码,但我仍然对这种行为感到困惑.

编辑:根据一些答案澄清流程.

当您单步执行代码时,finally将在返回之前执行.

重复: 尝试中真正发生的事情{return x; } finally {x = null; 声明?

c# finally

6
推荐指数
2
解决办法
3061
查看次数

如何使用F#中的let创建新范围?

我试图在F#中初始化一个XmlDocument,而不会污染全局命名空间 - 我唯一的功能背景来自LISP,可以使用"let"创建一个新的范围.我想出了这个:

let doc = 
    let reader = new XmlTextReader("url")
    let doc = new XmlDocument()
    doc.Load(reader)
    doc
Run Code Online (Sandbox Code Playgroud)

当我的第一个解决方案不起作用时,我感到非常惊讶:

let doc = new XmlDocument() in
    let reader = new XmlTextReader("url");
    doc.Load(reader)

print_any reader.ToString // Still in scope!
Run Code Online (Sandbox Code Playgroud)

做我想要的首选方式是什么?

syntax f#

6
推荐指数
1
解决办法
984
查看次数

是否可以对HashTable进行排序?

我有一个返回的属性HashTable.我想在不重构我的财产的情况下对其进行排序.请注意:我不想退回其他类型.码:

    /// <summary>
    /// All content containers.
    /// </summary>
    public Hashtable Containers
    {
        get
        {
            Hashtable tbl = new Hashtable();
            foreach (Control ctrl in Form.Controls)
            {
                if (ctrl is PlaceHolder)
                {
                    tbl.Add(ctrl.ID, ctrl);
                }
                // Also check for user controls with content placeholders.
                else if (ctrl is UserControl)
                {
                    foreach (Control ctrl2 in ctrl.Controls)
                    {
                        if (ctrl2 is PlaceHolder)
                        {
                            tbl.Add(ctrl2.ID, ctrl2);
                        }
                    }
                }
            }

            return tbl;
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# sorting hashtable

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

多个外键

我的数据库设计以前是相当线性的,所以我很难理解这可能是一个非常容易解决的问题.

我有一个"POSTS"表,其中包含可能是"CATEGORY"或"TOPIC"子项的帖子.定义"POSTS"表的外键的最佳方法是什么?

我想我可以有一个名为POST_CATEGORY_ID的列和一个名为"POST_TOPIC_ID的字段,它可以是可空的,但这听起来不对.当然有一个我想念的简单解决方案!

database-design normalization

6
推荐指数
1
解决办法
1520
查看次数

连续调用recvfrom()会丢失数据?

我正在开发一个使用UDP的可靠文件传输程序.(用于计算机网络课程.)

我的问题是 - 好吧,考虑这种情况:

  1. 发送者(例如)要发送12个字节的数据.所以发件人执行此调用:

    sendto(fd, &buf, 12, 0, (struct sockaddr *)&cliaddr,sizeof(cliaddr));
    
    Run Code Online (Sandbox Code Playgroud)

    这以不可靠的方式发送12个字节的数据.该数据的前4个字节恰好是"消息长度"字段.在这种情况下,前4个字节的值可能为0x0000000C

  2. 接收器想要使用recvfrom()读取前4个字节.看到段大小是12个字节,它想要读取剩余的8个字节.所以接收器可能看起来像这样:

    /* read the segment size */
    recvfrom(sockfd,&buf,4,0,(struct sockaddr *)&cliaddr,&len);
    
    /* do some arithmetic, use bzero(), etc */
    
    /* read the rest of the data */
    recvfrom(sockfd,&buf,8,0,(struct sockaddr *)&cliaddr,&len);
    
    Run Code Online (Sandbox Code Playgroud)

当我执行此代码时,我可以毫无问题地收到前4个字节.但是当我尝试获取剩余数据时,这些数据似乎丢失了.在我的输出中,我得到了垃圾 - 它看起来像发送者发送到()的接下来的 12个字节的一部分.

这是预期的行为吗?也就是说,如果单个recvfrom()调用没有读取所有已发送的数据,是否可以保证该数据(剩余的8个字节)可供我使用?

似乎发送段头(包括其大小)的标准方法(后跟有效负载)不起作用.这是否意味着我需要发送2个单独的段 - 一个只包含头信息,然后是第二个带有效载荷的段?或者我只是错误地使用这些系统调用(或者是否存在我缺少的标志或setsockopt()?)

c sockets udp

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