小编joh*_*hnc的帖子

创建将T限制为枚举的通用方法

我正在构建一个扩展Enum.Parse概念的函数

  • 允许在未找到枚举值的情况下解析默认值
  • 不区分大小写

所以我写了以下内容:

public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum
{
    if (string.IsNullOrEmpty(value)) return defaultValue;
    foreach (T item in Enum.GetValues(typeof(T)))
    {
        if (item.ToString().ToLower().Equals(value.Trim().ToLower())) return item;
    }
    return defaultValue;
}
Run Code Online (Sandbox Code Playgroud)

我得到一个Error Constraint不能是特殊类System.Enum.

很公平,但是有一个解决方法允许Generic Enum,或者我将不得不模仿该Parse函数并将类型作为属性传递,这会迫使您的代码出现丑陋的拳击要求.

编辑以下所有建议都非常感谢,谢谢.

已经解决了(我已离开循环以保持不区分大小写 - 我在解析XML时使用它)

public static class EnumUtils
{
    public static T ParseEnum<T>(string value, T defaultValue) where T : struct, IConvertible
    {
        if (!typeof(T).IsEnum) throw new ArgumentException("T must be an enumerated type");
        if (string.IsNullOrEmpty(value)) return …
Run Code Online (Sandbox Code Playgroud)

c# generics enums generic-constraints

1122
推荐指数
12
解决办法
33万
查看次数

String.Empty和""(空字符串)有什么区别?

在.NET中,String.Empty和之间的区别是什么"",它们是可互换的,还是存在一些基本的参考或本地化问题,这些问题String.Empty将确保不是问题?

.net string double-quotes

278
推荐指数
11
解决办法
8万
查看次数

如何在单个连接中的多个字段上进行LINQ连接

我需要做一个LINQ2DataSet查询,在多个字段上进行连接(如

var result = from x in entity
join y in entity2 
       on x.field1 = y.field1 
and 
          x.field2 = y.field2
Run Code Online (Sandbox Code Playgroud)

我还找到了一个合适的解决方案(我可以在where子句中添加额外的约束,但这远不是一个合适的解决方案,或者使用这个解决方案,但假设是一个等值连接).

LINQ是否可以在单个连接中加入多个字段?

编辑

var result = from x in entity
             join y in entity2
             on new { x.field1, x.field2 } equals new { y.field1, y.field2 }
Run Code Online (Sandbox Code Playgroud)

我引用的解决方案是假设上面的等值连接.

进一步编辑

为了回答我最初的例子是等值的批评,我确实承认,我目前的要求是等同于我,我已经采用了上面引用的解决方案.

但是,我试图了解LINQ应该采用/应该采用的可能性和最佳实践.我很快就需要使用表ID进行日期范围查询连接,并且只是预先解决了这个问题,看起来我必须在where子句中添加日期范围.

一如既往地感谢所有建议和意见

c# linq join

235
推荐指数
9
解决办法
28万
查看次数

为什么ASP.NET webforms需要Runat ="Server"属性?

为什么我必须runat="server"在所有ASP.NET控件上指定它是必需属性,并且server是我对ASP.NET知识有限的唯一选项,如果我不使用它,我会收到错误?

我明白我可以选择在我的HTML标签上使用它,并且我理解客户端/服务器范例以及它实际指定的内容.

它是一个冗余标记,可能只是由控件作为ASP.NET控件隐含,还是有潜在的原因?

asp.net runatserver

202
推荐指数
4
解决办法
13万
查看次数

Visual Studio 2005上的编译时间非常慢

我们的编译时间非常慢,在双核2GHz,2G Ram机器上可能需要20多分钟.

这很大程度上是由于我们的解决方案的规模已经发展到70多个项目,以及VSS,当你拥有大量文件时,它本身就是瓶颈.(不幸的是,交换VSS不是一个选项,所以我不希望它下降到VSS bash)

我们正在考虑合并项目.我们还在寻找多种解决方案,以便为应用程序的每个元素实现更大的关注点分离和更快的编译时间.我可以看到这将成为一个DLL地狱,因为我们试图保持同步.

我很想知道其他团队如何处理这个扩展问题,当你的代码库达到一个临界质量时你会怎么做,你正在看着状态栏传递编译消息的一半时间.

更新 我忽略了这是一个C#解决方案.感谢所有的C++建议,但是我已经有几年了,因为我不得不担心标题.

编辑:

到目前为止有很好的建议(不是说下面没有其他好的建议,只是帮助了什么)

  • 新的3GHz笔记本电脑 - 失去使用率的力量在向管理层致敬时起到了奇迹
  • 编译期间禁用反病毒
  • 在编译期间'断开'与VSS(实际上是网络) - 我可能会让我们完全删除VS-VSS集成并坚持使用VSS UI

仍然没有通过编译扯皮,但每一点都有帮助.

Orion在评论中确实提到仿制药也可能有一个游戏.从我的测试来看,似乎确实有最小的性能损失,但不足以确定 - 由于光盘活动,编译时间可能不一致.由于时间限制,我的测试没有包含与实时系统中出现的一样多的泛型或代码,因此可能会累积.我不会避免在它们应该被使用的地方使用泛型,只是为了编译时的性能

替代方法

我们正在测试在新解决方案中构建应用程序新领域的实践,根据需要导入最新的dll,当我们对它们感到满意时,将它们集成到更大的解决方案中.

我们也可以通过创建临时解决方案来对现有代码执行相同的操作,这些解决方案仅封装我们需要处理的区域,并在重新集成代码后将它们丢弃.我们需要权衡重新整合这些代码所需的时间与我们获得的时间,因为没有Rip Van Winkle喜欢在开发过程中快速重新编译的经验.

c# compilation visual-studio

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

C#vs Java泛型

我听说Generics的Java实现不如C#实现那么好.因为语法看起来很相似,那么Java实现的不合标准是什么,还是宗教观点呢?

c# java generics comparison

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

什么是NaN或IsNumeric的C#等价物?

测试输入字符串的最有效方法是,它是否包含数值(或相反的非数字)?我想我可以使用Double.Parse或正则表达式(见下文),但我想知道是否有一些内置的方法来做到这一点,如javascript NaN()IsNumeric()(是VB,我不记得?).

public static bool IsNumeric(this string value)
{
    return Regex.IsMatch(value, "^\\d+$");
}
Run Code Online (Sandbox Code Playgroud)

c# parsing

99
推荐指数
6
解决办法
11万
查看次数

.NET List <T> Concat与AddRange

通用List上的AddRangeConcat函数有什么区别?一个推荐超过另一个?

.net linq extension-methods list

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

在Windows上运行Ruby/Rails的限制

在RoR的安装文档中,它提到在Windows上运行Ruby on Rails存在许多限制,在某些情况下,整个库不起作用.

这些限制有多糟糕,我是否总是默认使用Linux来编写/运行RoR,Iron Ruby是否可以解决这些限制或者它们是操作系统本身的核心?

编辑感谢您在Linux上安装和运行的答案,但我真的想了解安装文档中引用的功能限制,以及非工作库 - 我试图找到评论的链接,但它是在我安装msi软件包时,安装中引用了我的想法

编辑 感谢最近对IronRuby的引用,它肯定是一个值得关注的项目,因为它显然是一种.NET语言,如果它符合承诺,它将是非常宝贵的.然而,最终,在我的情况下,我只是咬了一口子并安装了一个Ubuntu服务器.

<偏见>我应该在几年前完成它</ bias>

ruby windows ironruby ruby-on-rails

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

CYPHER查询中的LIKE子句

Cypher查询似乎不支持LIKE.

是否有任何其他构造可以执行相同的任务?

例如:

start n = node(*) where n.Name LIKE('%SUBSTRING%') return n.Name, n;
Run Code Online (Sandbox Code Playgroud)

neo4j cypher

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