小编jpa*_*ugh的帖子

具有递增的非直观表达式评估

对于以下代码

<?php

$a=1;   $b=$a++;              var_dump($b);
$a=1;   $b=$a+$a++;           var_dump($b);
$a=1;   $b=$a+$a+$a++;        var_dump($b);
$a=1;   $b=$a+$a+$a+$a++;     var_dump($b);
$a=1;   $b=$a+$a+$a+$a+$a++;  var_dump($b);
Run Code Online (Sandbox Code Playgroud)

我得到了这个结果:

int(1)
int(3)
int(3)
int(4)
int(5)
Run Code Online (Sandbox Code Playgroud)

我预计1,2,3,4,5而不是1,3,3,4,5.$a=1; $b=$a+$a++;我们获得后为什么$b=3

PHP 7.1.5-1 + deb.sury.org~xenial + 1(cli)(建于2017年5月11日14:07:52)(NTS)

php increment opcode

46
推荐指数
3
解决办法
2007
查看次数

用for循环或while循环迭代?

我经常看到如下代码:

Iterator i = list.iterator();
while(i.hasNext()) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但我写的是(当Java 1.5不可用或者每个都不能使用时):

for(Iterator i = list.iterator(); i.hasNext(); ) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

因为

  • 它更短
  • 它保持i在较小的范围内
  • 它减少了混淆的可能性.(在i外面使用?i声明在哪里?)

我认为代码应该尽可能简单易懂,这样我才能制作复杂的代码来完成复杂的事情.你怎么看?哪个更好?

来自:http://jamesjava.blogspot.com/2006/04/iterating.html

java iterator for-loop

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

检查原始字段的类型

我正在尝试确定对象上字段的类型.当它传递给我时,我不知道对象的类型,但我需要找到longs的字段.很容易区分盒装,Long但原始图像long似乎更难.

可以确保传递给我的对象只有Longs,而不是原语,但我宁愿不.所以我拥有的是:

for (Field f : o.getClass().getDeclaredFields()) {
    Class<?> clazz = f.getType();
    if (clazz.equals(Long.class)) {
        // found one -- I don't get here for primitive longs
    }
}
Run Code Online (Sandbox Code Playgroud)

一种似乎有用的hacky方式是:

for (Field f : o.getClass().getDeclaredFields()) {
    Class<?> clazz = f.getType();
    if (clazz.equals(Long.class) ||  clazz.getName().equals("long")) {
        // found one
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有的话,我真的想要一个更干净的方法.如果没有更好的方法,那么我认为要求我收到的对象只使用Long(不是long)将是一个更好的API.

有任何想法吗?

java reflection primitive

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

ASP.Net MVC 4表单,带有2个提交按钮/操作

我在ASP.Net和razor中有一个表单.

我需要有两种方式来提交表单:一种是通过Edit操作,另一种是通过Validate操作.

我应该怎么做呢?

我不介意使用JavaScript.

编辑:

使用自定义属性我得到此错误.

控制器类型'InspecoesController'上的当前动作'Resultados'请求在以下操作方法之间是不明确的:System.Web.Mvc.ActionResult Validar(System.Collections.Generic.ICollection 1[Waveform.IEP.Intus.Server.Web.ViewModels.ResultadoViewModel]) on type Waveform.IEP.Intus.Server.Web.Controllers.InspecoesController System.Web.Mvc.ActionResult Resultados(System.Collections.Generic.ICollection1 [Waveform.IEP.Intus.Server.Web. ViewModels.ResultadoViewModel])类型为Waveform.IEP.Intus.Server.Web.Controllers.InspecoesController

asp.net razor

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

我怎样才能实现模式承诺/延期?

我想写一个Promise/Deffered模式.完美的变体到底是:

MyObject().CallMethodReturningPromise()
   .done( result => {
       ...something doing;
   } )
   .fail( error => {
       ...error handle;
   } )
   .always( () => {
       ...some code;
   } )
Run Code Online (Sandbox Code Playgroud)

我发现了这个实现https://bitbucket.org/mattkotsenas/c-promises/overviewhttps://gist.github.com/cuppster/3612000.但是我怎么能用它来解决我的任务?

c# promise

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

最有效的方法来计算两个日期之间的周数

正如它在锡上说的那样,我只需要在C#中两个日期之间计算周数(即7天跨度,而不是日历周)的最有效方式.

c# datetime

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

使用ResourceManager

我正在尝试在C#类中使用ResourceManager,但在创建ResourceManager类的新实例时不知道替换basename的内容.

我有一个单独的项目,其中包含上面我的项目引用的资源文件,命名如下:

  • Resources.resx
  • Resources.es-ES.resx

如果我有如下代码片段,当我想使用英语或西班牙语版本的资源时,我应该用什么替代基本名称?

ResourceManager RM = new ResourceManager(basename,Assembly.GetExecutingAssembly());
Run Code Online (Sandbox Code Playgroud)

我尝试了汤姆建议的方法,但我得到了臭名昭着的错误

找不到适合指定文化或中性文化的资源.

我的解决方案有两个项目,项目YeagerTech是一个Web应用程序,项目YeagerTechResources包含所有资源.YeagerTech项目提到了YeagerTechResources.

创建资源管理器时,我有以下语法:

ResourceManager RM = new ResourceManager("YeagerTechResources.Resources",
    Assembly.GetExecutingAssembly());
Run Code Online (Sandbox Code Playgroud)

显然,这是不正确的.

YeagerTechResources项目中的资源文件将其BuildAction设置为Embedded Resource.

我的资源文件的名称是:Resources.resx和Resources.es-ES.resx.

如果有人可以在实例化资源管理器时根据我的项目和资源文件名告诉我确切的语法,我将非常感激...

我做了我能想到的一切来解决这个问题而且不能......

这是我在这里解决它的最后一次尝试......

ResourceManager RM = new ResourceManager("YeagerTechResources.Resources", Assembly.GetExecutingAssembly());

sb.Append(RM.GetString("RegisterThanks"));
Run Code Online (Sandbox Code Playgroud)

执行上面的代码后,我收到以下错误:

找不到适合指定文化或中性文化的资源.确保在编译时将"YeagerTechResources.Resources.resources"正确嵌入或链接到程序集"YeagerTech"中,或者所有所需的附属程序集都是可加载和完全签名的.

我能够完全没有问题地使用HTML标记中的资源,但是当转到Controller中的C#代码时,我继续得到上述错误.

根据我的项目所需的确切语法的任何帮助将不胜感激.

c# localization resourcemanager

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

如何在SQL 2000/2005上为Oracle数据库设置链接服务器?

我能够创建和执行DTS包从远程Oracle数据库拷贝表以本地SQL服务器,但要设置为链接服务器到Oracle数据库的连接.

DTS包当前使用Microsoft OLE DB Provider for Oracle,具有以下属性:

  • 数据源: SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=acc)));uid=*UserName*;pwd=*UserPassword*;
  • 密码:UserPassword
  • 用户ID:UserName
  • 允许保存密码:true

如何使用上面定义的数据源将链接服务器设置为Oracle数据库?

sql sql-server oracle

21
推荐指数
1
解决办法
8万
查看次数

在Razor中显示枚举下拉列表的名称

如何在Razor的下拉列表中显示我的枚举的自定义名称?我目前的代码是:

@Html.DropDownListFor(model => model.ExpiryStage,
        new SelectList(Enum.GetValues(typeof(ExpiryStages))),
        new { @class = "selectpicker" })
Run Code Online (Sandbox Code Playgroud)

我的枚举是:

public enum ExpiryStages
{
    [Display(Name = "None")]
    None = 0,

    [Display(Name = "Expires on")]
    ExpiresOn = 1,

    [Display(Name = "Expires between")]
    ExpiresBetween = 2,

    [Display(Name = "Expires after")]
    ExpiresAfter = 3,

    [Display(Name = "Current")]
    Current = 4,

    [Display(Name = "Expired not yet replaced")]
    ExpiredNotYetReplaced = 5,

    [Display(Name = "Replaced")]
    Replaced = 6
}
Run Code Online (Sandbox Code Playgroud)

例如,我想在DropDownList中显示"Expired not yet changed"而不是ExpiredNotYetReplaced.

c# asp.net asp.net-mvc enums razor

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

C#Reflection - 对象与目标类型不匹配

我正在尝试使用propertyInfo.SetValue()方法使用反射设置对象属性值,并且我得到异常"对象与目标类型不匹配".它真的没有意义(至少对我来说!)因为我只是想在一个带有字符串替换值的对象上设置一个简单的字符串属性.这是一个代码片段 - 它包含在一个递归函数中,所以有更多的代码,但这是胆量:

PropertyInfo fieldPropertyInfo = businessObject.GetType().GetProperties().FirstOrDefault(f => f.Name.ToLower() == piecesLeft[0].ToLower());
businessObject = fieldPropertyInfo.GetValue(businessObject, null);

fieldPropertyInfo.SetValue(businessObject, replacementValue, null);
Run Code Online (Sandbox Code Playgroud)

我已经通过执行此比较验证了"businessObject"和"replacementValue"都是相同的类型,返回true:

businessObject.GetType() == replacementValue.GetType()
Run Code Online (Sandbox Code Playgroud)

c# reflection

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