小编bru*_*nde的帖子

为什么不能在方法中本地声明枚举?

今天,我发现自己编写了这样的代码......

public class LocalEnums {

    public LocalEnums() {
    }

    public void foo() {
        enum LocalEnum {
            A,B,C
        };

        // ....
        // class LocalClass { }

    }
}
Run Code Online (Sandbox Code Playgroud)

当编译器报告本地错误时,我有点惊讶enum:

成员枚举LocalEnum不能是本地的

为什么枚举不能像一样在本地声明?

我发现这在某些情况下非常有用.在我工作的情况下,其余的代码不需要知道任何关于enum.

是否有任何结构/设计冲突可以解释为什么这是不可能的,或者这可能是Java 的未来特性?

java enums

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

LINQ group by表达式语法

我有一个类似这样的T-SQL查询:

SELECT r_id, r_name, count(*)
FROM RoomBindings
GROUP BY r_id, r_name
Run Code Online (Sandbox Code Playgroud)

我想用LINQ做同样的事情.到目前为止我到了这里:

var rooms = from roomBinding in DALManager.Context.RoomBindings
                        group roomBinding by roomBinding.R_ID into g
                        select new { ID = g.Key };
Run Code Online (Sandbox Code Playgroud)

如何提取count(*)和r_name部分?

c# linq

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

用于处理多种消息类型的设计模式

我已经把GOF放在我的桌子上了,我知道必须有某种设计模式来解决我遇到的问题,但是我无法弄明白.

为了简单起见,我改变了我正在使用的一些接口的名称.

所以这就是问题,在线路的一侧,我有多个服务器发送不同类型的消息.在电线的另一端,我有一个客户端,需要能够处理所有不同类型的消息.

所有消息都实现相同的公共接口IMessage.我的问题是,当客户端获得新的IMessage时,它如何知道它收到的IMessage类型?

我想我可以做类似下面的事情,但这只是感觉太糟糕了.

TradeMessage tMessage = newMessage as TradeMessage;
if (tMessage != null)
{
    ProcessTradeMessage(tMessage);
}

OrderMessage oMessage = newMessage as OrderMessage;
if (oMessage != null)
{
    ProcessOrderMessage(oMessage);
}
Run Code Online (Sandbox Code Playgroud)

第二个想法是向IMessage添加一个名为MessageTypeID的属性,但是这需要我写下面的内容,这也很糟糕.

TradeMessage tMessage = new TradeMessage();
if (newMessage.MessageTypeID == tMessage.MessageTypeID)
{
    tMessage = newMessage as TradeMessage;
    ProcessTradeMessage(tMessage); 
}

OrderMessage oMessage = new OrderMessage();
if (newMessage.MessageTypeID == oMessage.MessageTypeID)
{
    oMessage = newMessage as OrderMessage;
    ProcessOrderMessage(oMessage);
}
Run Code Online (Sandbox Code Playgroud)

我知道这个一般问题已被解决了一百万次,所以必须有一种更好的方法来解决一个方法,该方法将接口作为参数,但需要基于哪个类实现该接口的不同流控制.

c# design-patterns

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

受保护/公共内部类

有人可以向我解释protected/ public 内部课程有什么区别?

我知道public内部类是尽可能避免的(如本文所述).

但据我所知,使用protectedpublic修饰符之间没有区别.

看看这个例子:

public class Foo1 {
 public Foo1() { }

 protected class InnerFoo {
  public InnerFoo() {
   super();
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

...

public class Foo2 extends Foo1 {
 public Foo2() {
  Foo1.InnerFoo innerFoo = new Foo1.InnerFoo();
 }
}
Run Code Online (Sandbox Code Playgroud)

...

public class Bar {
 public Bar() {
  Foo1 foo1 = new Foo1();
  Foo1.InnerFoo innerFoo1 = foo1.new InnerFoo();

  Foo2 foo2 = new Foo2();
  Foo2.InnerFoo innerFoo2 = foo2.new …
Run Code Online (Sandbox Code Playgroud)

java access-modifiers inner-classes

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

用于匹配javadoc片段的正则表达式

这个问题让我在正则表达式中思考匹配包含一些指定文本的javadoc注释.

例如,查找包含以下内容的所有javadoc片段@deprecated:

/**
* Method1
* .....
* @deprecated
* @return
*/
Run Code Online (Sandbox Code Playgroud)

我设法得到表达式,/\*\*.*?@deprecated.*?\*/但在某些情况下失败,例如:

/**
* Method1
* .....
* @return
*/
public int Method1() { } 

// this method should be @deprecated
public void Method2() { }    

/**
* Method3
* .....
* @return
*/
public int Method3() { } 
Run Code Online (Sandbox Code Playgroud)

它匹配第一个javadoc片段中的所有代码,直到第三个javadoc片段.

有人可以给这个正则表达式吗?

java regex javadoc

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

SelectNodes没有作用于Element

如果我在XmlElement上调用SelectNodes,并传递XPath查询,如下所示:

XmlNodeList nodes = xmlElement.SelectNodes("// OtherNode");

节点列表将用于文档中的所有OtherNode元素,而不仅仅是来自xmlElement的元素.

我似乎记得这是设计上的,并且有充分的理由,但我不记得那个好理由是什么,也不记得如何绕过它.

.net xml xpath

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

使用LINQ搜索XML文档

我有一个类似于这个的xml文档:

<Root>

    <MainItem ID="1">
        <SubItem></SubItem>
        <SubItem></SubItem>
        <SubItem></SubItem>
    </MainItem>
    <MainItem ID="2">
        <SubItem></SubItem>
        <SubItem></SubItem>
        <SubItem></SubItem>
    </MainItem>

    ...
</Root>
Run Code Online (Sandbox Code Playgroud)

我想基于属性ID的值返回整个MainItem元素.如果属性ID等于2,那么有效,然后返回给我MainItem元素.

我无法解决如何使用LINQ执行此操作.谷歌似乎有大量的信息,但我似乎无法找到我正在寻找的东西.

帮助不大?

TIA

:-)

c# xml linq

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

如何编写这个嵌套的Linq To Xml查询

嗨,我正在为医学研究编写一个应用程序,他们将输入性别,年龄和一些其他值,这些值将计算到ResultValue

现在我有一个XML文件,其中包含有关Age,Gender和ResultValues组合的结果的一些信息,我想打印出TestResult的描述(如果先证者属于哪个组)有一点需要注意的是我必须处理值范围这意味着实际值位于低部分和高部分之间...我有三个组...好的hier是我的XML文件

<?xml version="1.0" encoding="iso-8859-1"?>
 <Result>
        <ID>1</ID>
        <Description>You belong to Group 1</Description>
        <Genders>
            <Gender type="female">
                <Ages>
                    <Age low="18" high="24">
                        <ResultValue low="0" high="19"/>
                    </Age>
                    <Age low="25" high="34">
                        <ResultValue low="0" high="20"/>
                    </Age>
                    <Age low="35" high="44">
                        <ResultValue low="0" high="21"/>
                    </Age>
                    <Age low="45" high="54">
                        <ResultValue low="0" high="22"/>
                    </Age>
                    <Age low="55" high="64">
                        <ResultValue low="0" high="23"/>
                    </Age>
                    <Age low="65" high="110">
                        <ResultValue low="0" high="24"/>
                    </Age>
                </Ages>
            </Gender>
            <Gender type="male">
                <Ages>
                    <Age low="18" high="24">
                        <ResultValue low="0" high="19"/>
                    </Age>
                    <Age low="25" high="34">
                        <ResultValue low="0" high="20"/>
                    </Age>
                    <Age low="35" high="44"> …
Run Code Online (Sandbox Code Playgroud)

c# xml linq

4
推荐指数
1
解决办法
3646
查看次数

LINQ 2 Entities,如何在linq查询中检查DateTime.HasValue

我有这种方法应该从称为ENTRY的表(&EntitySet)中获取最新消息的发布

///方法获取“天”作为参数,用于新的TimeSpan(days,0,0,0); !!

using (Entities db = new Entities())
    {
        var entries = from ent in db.ENTRY
                      where ent.DATECREATE.Value > DateTime.Today.Subtract(new TimeSpan(days, 0, 0, 0))
                      select new ForumEntryGridView()
                      {
                          id = ent.id,
                          baslik = ent.header,
                          tarih = ent.entrydate.Value,
                          membername = ent.Member.ToString()
                      };
        return entries.ToList<ForumEntryGridView>();
    }
Run Code Online (Sandbox Code Playgroud)

在这里,DATECREATED在数据库中为空。我无法在此查询中放置“如果” ...以任何方式进行检查?提前Thx

c# linq-to-entities nullable

4
推荐指数
2
解决办法
3876
查看次数