小编Kor*_*tak的帖子

如何检查字符串是否可以在PHP中用作变量名?

在PHP中,可以使用变量变量......

例如...

class obj { }
$fieldName = "Surname";
$object = new obj();
$object->Name = "John";
$object->$fieldName = "Doe";
echo "{$object->Name} {$object->Surname}"; // This echoes "John Doe".
Run Code Online (Sandbox Code Playgroud)

但是,$ fieldName字符串可能包含变量名称中不允许的某些字符.PHP仍然会创建具有该名称的字段(很像关联数组),但我无法使用$ object - > ......访问它,因为它无法正确解析.

现在,是否有任何函数可以检查字符串是否可以用作有效的PHP变量名.如果没有,如何使用正则表达式创建它?PHP中的变量名称有哪些规则?

php variables object names variable-variables

7
推荐指数
2
解决办法
4700
查看次数

如何在LINQ查询中访问关联?

实体数据模型

我在查询这个问题时遇到了问题(我是LINQ的新手,请原谅我),我花了几个小时在网上搜索.在SQL中我只想这样做

SELECT c.Forname, c.Surname cg.Title, g.GroupName
FROM Contact c
    inner join ContactGroup cg on cg.ContactID = c.ID
    inner join Group g on cg.GroupNameID = g.ID
WHERE g.ID=1;
Run Code Online (Sandbox Code Playgroud)

我曾经尝试过,但失败了,因为:

var result = 
    from c in cc.Contacts
    from cg in c.ContactGroups
    from g in cg.Group 
    where g.ID==1
    select new
    {
        c.Forename,
        c.Surname,
        cg.Title,
        g.GroupName
    };
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我做错了什么或指导我到某个地方获取更多信息吗?

非常感谢.

c# linq ado.net-entity-data-model

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

仅从Entity Framework中的表中检索第一行

背景:

实体框架4,带有SQL Server 2008

问题:

我有一张桌子Order.每行都有一列Timestamp.

用户可以选择过去的一些时间,我需要获得Order最接近指定时间的时间,但这是在指定时间之前发生的.换句话说,指定时间之前的最后一个订单.

例如,如果我有订单

2008-01-12
2009-04-17
2009-09-24
2010-11-02
2010-12-01
2011-05-16
Run Code Online (Sandbox Code Playgroud)

并选择一个日期2010-07-22,我应该得到2009-09-24 order,因为这是指定日期之前的最后一个订单.

var query = (from oData in db.OrderDatas
            where oData.Timestamp <= userTime
            orderby oData.Timestamp ascending
            select oData).Last();
Run Code Online (Sandbox Code Playgroud)

这与我正在尝试的最接近.但是,我不确定Last运算符在转换为SQL时是如何工作的,如果它完全被翻译的话.

题:

此查询是获取所有数据(早于userTime),然后获取最后一个元素,还是将其翻译,以便只从数据库返回一个元素?我的表可以容纳非常多的行(100000+),因此性能是一个问题.

另外,如何检索数据库中最接近的时间(不一定是更早的时间)?在一个例子中2010-07-22,人们会得到2010-11-02,因为它更接近指定的日期2009-09-24.

c# select entity-framework sql-server-2008

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

VS调试器做了什么使增量运算符执行速度比什么都不做?

这是自解释代码(执行十亿次操作):

int k = 0;

Stopwatch sw = new Stopwatch();
sw.Start();
for (int a = 0; a < 1000; a++)
    for (int b = 0; b < 1000; b++)
        for (int c = 0; c < 1000; c++)
            k++;

sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);

sw = new Stopwatch();
sw.Start();

for (int a = 0; a < 1000; a++)
    for (int b = 0; b < 1000; b++)
        for (int c = 0; c < 1000; c++)
            ; // NO-OP

sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
Run Code Online (Sandbox Code Playgroud)

结果是(至少在我的电脑上)某处(以毫秒为单位)

2168 …
Run Code Online (Sandbox Code Playgroud)

.net c# performance increment

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

在代码隐藏中测试ListBox的滚动条可见性

如何检查列表框的垂直滚动条是否在代码隐藏中可见?

我有一个带有x:Name ="listOfItems"的列表框,其底层ScrollViewer的VerticalScrollbarVisibility设置为auto.

设置ListBox的ItemsSource属性后,我想检查verticalScrollbar是否可见,但我不知道要检查哪个属性或如何深入列表框的scrollviewer元素.

有什么建议

wpf visibility listbox scrollbar code-behind

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

NetworkStream 如何在两个方向上工作?

我读过 Tcp Echo 服务器的示例,但有些事情我不清楚。

TcpClient client = null;
NetworkStream netStream = null;

try {
  client = listener.AcceptTcpClient(); 
  netStream = client.GetStream();

  int totalBytesEchoed = 0;
  while ((bytesRcvd = netStream.Read(rcvBuffer, 0, rcvBuffer.Length)) > 0) {
    netStream.Write(rcvBuffer, 0, bytesRcvd);
    totalBytesEchoed += bytesRcvd;
  }

  netStream.Close();
  client.Close();
} catch {
  netStream.Close();
}
Run Code Online (Sandbox Code Playgroud)

当服务器收到数据包(while 循环)时,他将数据读入 rcvBuffer 并将其写入流。

让我困惑的是通信中消息的时间顺序。使用 netStream.Write() 写入的数据是立即发送到客户端(甚至可能仍在发送),还是仅在已写入流(由客户端)处理的数据之后发送。

下面的问题甚至可以澄清前面的问题:如果客户端通过写入流来发送一些数据,那么该数据是否会移动到服务器端的消息队列中等待读取,因此流实际上是“空”?这可以解释为什么服务器可以立即写入流 - 因为来自流的数据实际上在其他地方缓冲......?

c# tcplistener netstream packet

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

当socket关闭时,TcpClient.EndConnect抛出NullReferenceException

我正在尝试使用TcpClient.BeginConnect / TcpClient.EndConnect组合连接到我的服务器.但是,有些东西不能正常工作.

方案如下:

  • 打电话给 TcpClient.BeginConnect
  • 服务器故意脱机(用于测试目的) - 因此无法建立连接.
  • 我关闭应用程序(client.Close()关闭套接字的过程中调用,然后停止异步操作)
  • TcpClient连接回调方法发生了IAsyncResult
  • TcpClient.EndConnect用给定的方法调用方法IAsyncResult
  • NullReferenceException发生在EndConnect()
  • 由于最后一个表单(窗口)已关闭,应用程序应该退出 - 但它不会,至少在BeginConnect操作完成之前(这很奇怪,因为已经调用了回调).

例外

这里发生的事情NullReferenceException就是抓住了.从上图中可以看出,既不是client也不arnull.问题是EndConnectMSDN文档没有提到抛出此异常的情况.

所以基本上,我不知道发生了什么.问题是我被迫等待应用程序关闭(好像连接操作仍然等待超时).如果服务器在线,它连接和断开就好了.

是什么 NullReferenceException 在这方面的意思BeginConnect如果无法建立连接,如何避免操作阻止应用程序关闭?


附加说明(评论中要求):

以下是创建客户端的代码(客户端是成员变量:

public void Connect()
{
    try
    {
        lock (connectionAccess)
        {
            if (State.IsConnectable())
            {
                // Create a client …
Run Code Online (Sandbox Code Playgroud)

c# sockets connection asynchronous tcpclient

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

线程问题

我正在第一次尝试在应用程序中使用线程,但在我尝试实例化我的线程的行上,我得到错误'方法名称预期'.这是我的代码:

private static List<Field.Info> FromDatabase(this Int32 _campId)
    {
        List<Field.Info> lstFields = new List<Field.Info>();

        Field.List.Response response = new Field.List.Ticket
        {
            campId = _campId
        }.Commit();

        if (response.status == Field.List.Status.success)
        {
            lstFields = response.fields;
            lock (campIdLock)
            {
                loadedCampIds.Add(_campId);
            }
        }

        if (response.status == Field.List.Status.retry)
        {
            Thread th1 = new Thread(new ThreadStart(FromDatabase(_campId)));

            th1.Start();

        }

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

c# multithreading

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

x:如果元素包含在UserControl的内容中(Silverlight),则名称不起作用

情况:

我有一个UserControl像这样的"包装器面板" (为简洁起见,删除了名称空间和视觉细节):

<UserControl ...>
<Grid x:Name="LayoutRoot" Background="White">
    <ContentPresenter x:Name="integratedPanelContent" Margin="5" /> 
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

然后在Code-behind中我注册了一个依赖属性

public FrameworkElement PanelContent
{
    get { return (FrameworkElement)GetValue(PanelContentProperty); }
    set { SetValue(PanelContentProperty, value); }
}
public static readonly DependencyProperty PanelContentProperty =
    DependencyProperty.Register("PanelContent", typeof(FrameworkElement), typeof(MyWrapperPanel),
      new PropertyMetadata(null, OnPanelContentChanged));

private static void OnPanelContentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    ((MyWrapperPanel)d).OnSetContentChanged(e);
}

protected virtual void OnSetContentChanged(DependencyPropertyChangedEventArgs e)
{
    if (PanelContent != null)
        integratedPanelContent.Content = PanelContent;
}
Run Code Online (Sandbox Code Playgroud)

现在我可以将任何内容包装到我的控件中:

<my:MyWrapperPanel x:Name="myWrap">
    <my:MyWrapperPanel.PanelContent>
        <TextBlock x:Name="tbxNothing" Text="Nothing" />
    </my:MyWrapperPanel.PanelContent>
</my:MyWrapperPanel>
Run Code Online (Sandbox Code Playgroud)

问题描述:

每当我尝试在代码隐藏中使用引用tbxNothing时,系统抛出, …

silverlight user-controls code-behind wrapper

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

RIA不会生成所有代理实体

框架:Silverlight 4 + Entity Framework 4(SL业务应用程序:解决方案中的SL项目和.WEB项目)

我的数据层中有两个类(未映射到DB,手动创建 - 我需要它们用于特定视图)

[EnableClientAccess]
public class CityInfoFull
{
    [Key]
    public int Id { get; set; }

    public String Country{ get; set; }
    public String Region { get; set; }
    public String City { get; set; }
    public int Population { get; set; }
    public DateTime Founded { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

RIA在Geography.Web.g.cs中生成适当的代理类

在同一个命名空间中,我有另一个类:

[EnableClientAccess]
public class Person
{
    [Key]
    public int Id { get; set; }

    public String FullName { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

c# code-generation entity-framework-4 silverlight-4.0 wcf-ria-services

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