小编Jac*_*cob的帖子

DBNull的简洁用法?(三元?)

似乎三元运算符中存在某种类型的混淆.我知道这已经在其他SO线程中得到了解决,但它始终是无效的.另外,对于我的情况,我真的只是在寻找更好的方法.

我希望能够使用

proc.Parameters[PARAM_ID].Value = 
    string.IsNullOrEmpty(dest.Id) ? DBNull.Value : dest.Id;
Run Code Online (Sandbox Code Playgroud)

但相反,我坚持这个:

if (string.IsNullOrEmpty(dest.Id))
{
    proc.Parameters[PARAM_ID].Value = DBNull.Value;
}
else
{
    proc.Parameters[PARAM_ID].Value = dest.Id;
} 
Run Code Online (Sandbox Code Playgroud)

三元运算符失败是因为DBNull和字符串之间没有可能的转换,并且看起来很傻,因为值似乎是对象,编译器将它踢回给我,我不得不关心.这个问题的可空版本的答案是将null转换为字符串并完成它; 但是DBNull不能转换成字符串,所以没有运气.

有没有更简洁的方法来做到这一点(顺便说一下,没有使用nullables?)

谢谢!

c# ado.net dbnull ternary-operator

9
推荐指数
3
解决办法
4156
查看次数

绕过ASP.NET MVC中的OutputCache

我在我的MVC网站中使用OutputCache属性如下:

[OutputCache(Duration = 5000,
        VaryByParam = "name;region;model;id;op;content;featured;isStarred;page;size;")]
Run Code Online (Sandbox Code Playgroud)

但有时我想完全绕过输出缓存并强制从数据库中获取.对于我不断将新数据加载到数据库进行测试的测试环境,尤其如此.

无论如何我在这种情况下可以绕过缓存吗?

谢谢.

model-view-controller asp.net-mvc outputcache

9
推荐指数
2
解决办法
3630
查看次数

php array_map回调参数范围

在下面的代码中,传递给wrap_map的回调函数无法在外部函数中看到参数,为什么?(详见代码注释)

public static function wrap_implode($ar, $wrap, $delim){
  echo "wrap is $wrap"; //wrap is ok
  $res = array_map(function($val){
     echo "wrap is $wrap"; //wrap is not set here!
     return $wrap. $val . $wrap;
   }, $ar);

   return implode($delim, $res);
}
Run Code Online (Sandbox Code Playgroud)

php scope php-5.3

9
推荐指数
1
解决办法
3593
查看次数

如何使用字符串参数来表示命名空间或类型?

我需要在.NET 2.0 C#脚本中获得一些JSON输出.目标是使用一种方法输出我需要的所有JSON提要.所有模型都具有相同的id和name属性,因此我在这里有大约15个具有相同部分的命名空间.简而言之:因为我使用城堡我可以调用这样的函数:

/public/get_place_tags.castle
/public/get_place_types.castle
/public/get_place_whichEver.castle
Run Code Online (Sandbox Code Playgroud)

在城堡中调用每个方法,即:get_place_tags(){}但是我想不必工作,我可以调用一个方法从每个类型获取输出,如下所示:

/public/get_json.castle?wantedtype=place_types
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这一问题?

namespace campusMap.Controllers
{
    [Layout("home")]
    public class PublicController : BaseController
    {
        /*  works and returns */
        public void get_pace_type()
        {
            CancelView();
            CancelLayout();

            place_types[] types = ActiveRecordBase<place_types>.FindAll();
            List<JsonAutoComplete> type_list = new List<JsonAutoComplete>();

            foreach (place_types place_type in types)
            {
                JsonAutoComplete obj = new JsonAutoComplete();

                obj.id = place_type.place_type_id;
                obj.label = place_type.name;
                obj.value = place_type.name;

                type_list.Add(obj);
            }

            string json = JsonConvert.SerializeObject(type_list);
            RenderText(json);
        }

        /*  can;t ever find the namespace */
        public void get_json(string wantedtype) …
Run Code Online (Sandbox Code Playgroud)

.net c# casting castle-windsor c#-2.0

9
推荐指数
1
解决办法
1703
查看次数

文本使用绝对定位打破

我有一个小挑战,我没有在Stack Overflow上找到任何解决方案.

这就是我得到的:

错误

这就是我喜欢它的方式:

正确

为了产生这种标题效果,我正在使用绝对位置.我甚至不知道标题的宽度和高度.因此,使用此解决方案时大文本会中断.

我的HTML:

<div class="content">
  <h1 class="title">February 2015</h1>
  <p>Mussum ipsum cacilds, vidis litro abertis. Consetis adipiscings elitis. Pra lá , depois divoltis porris, paradis. Paisis, filhis, espiritis santis. Mé faiz elementum girarzis, nisi eros vermeio, in elementis mé pra quem é amistosis quis leo. Manduma pindureta quium dia nois paga. Sapien in monti palavris qui num significa nadis i pareci latim. Interessantiss quisso pudia ce receita de bolis, mais bolis eu num gostis.</p>
</div>
Run Code Online (Sandbox Code Playgroud)

我的CSS:

.content { …
Run Code Online (Sandbox Code Playgroud)

html css absolute

9
推荐指数
1
解决办法
4247
查看次数

加载时间和运行时动态链接之间的差异

Load-time动态链接和Run-time动态链接有什么区别?

dll

8
推荐指数
2
解决办法
6077
查看次数

选择DSL框架

我正在开发一个需要我定义DSL的项目.由于提出正确的DSL对我的项目至关重要,我决定评估现有的框架,这些框架有助于定义DSL,解析它和代码生成(必须使用基于.NET的语言)我考虑的框架是:

  1. Boo语言具有可定制的编译器和pythonish语法,非常适合定义DSL.
  2. Windows powershell,支持可扩展的命令行开关.
  3. 支持可视化建模的Microsoft DSL工具,但不太灵活(在我看来)
  4. ANTLR是经过验证的工具
  5. C#流畅的接口.(对此不太满意)
  6. 奥斯陆框架(在生产中使用是否成熟?)

上面提到的每个框架都有利弊,我无法做出决定.在上述框架之间做出选择,你会选择哪一个?为什么?

还有其他任何框架都是如此根本以至于我可能错过了吗?

任何帮助或指导将不胜感激.

.net dsl

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

RMI和CORBA的差异?

我正在学习决赛,并且有一些关于RMI和CORBA的问题.这些是从学习指南中获取的讨论问题,因此没有真正的应用背景.

  1. 为什么RMI和CORBA基于TCP?问题表明要根据调用语义来回答.

到目前为止我所想到的是TCP将比UDP更可靠,而在RMI/CORBA中,我们需要网络可靠性.我还读到了TCP深深嵌入本机Java网络类的地方.我对此声明没有信心,因为CORBA可以用任何语言实现.

  1. 讨论RMI和CORBA名称服务之间的区别.

我对这个问题有点困惑,因为我到目前为止所读到的是RMI和CORBA是融合技术,RMI可以访问CORBA对象.我现在如何理解,名称服务似乎非常相似,任何差异都不值得注意.

  1. 为什么RMI需要显式动态调用而不像CORBA?

我没想出任何东西.

我意识到我问了三个不同的问题,但它们似乎都有关系.

java corba rmi

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

关于"int const*p"和"const int*p"

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    int i1 = 0;
    int i2 = 10;

    const int *p = &i1;
    int const *p2 = &i1;
    const int const *p3 = &i1;

    p = &i2;
    p2 = &i2;
    p3 = &i2;

    cout << *p << endl
        << *p2 <<endl
        << *p3 <<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

可以使用VC6.0和VC2010编译代码.但我有一个问题:

const int*p =&i1;

这意味着什么"p"点不能修改,但p不能修改,我是对的吗?所以

p =&i2;

这条线可以遵守,是吗?

这一行:

int const *p2 = &i1;
Run Code Online (Sandbox Code Playgroud)

在我看来,这意味着p2无法修改,而p2点可以改变,我是对的吗?为什么

p2 =&i2;

可以编译?

关于这一行:

const int const*p3 …

c++ const

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

不同的铸造行为

这真的很奇怪.我正在追踪这个错误:

否定二进制补码的最小值是无效的.

......事实证明这是由于这样的代码:

var valueFromUser = "470259123000000";
var doubleValue = Convert.ToDouble(valueFromUser, CultureInfo.InvariantCulture);
Math.Abs((int)doubleValue);
Run Code Online (Sandbox Code Playgroud)

的确,当我在LINQPad中运行它时:

(int)Convert.ToDouble("470259123000000", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

......它给了我:

-2147483648

但是,这里的另一位开发人员说他得到的东西完全不同(不是在LINQPad中):

-1141206336

当我尝试仅在常量上评估转换时:

(int)470259123000000.0
Run Code Online (Sandbox Code Playgroud)

...因为需要我收到编译错误unchecked.还有这个:

unchecked((int)470259123000000.0)
Run Code Online (Sandbox Code Playgroud)

...评估-1141206336与其他开发人员一样.所以我想也许Convert创造了一个与常数略有不同的值.不,这评估为True:

Convert.ToDouble("470259123000000", CultureInfo.InvariantCulture) == 470259123000000.0
Run Code Online (Sandbox Code Playgroud)

到底发生了什么事?为什么评估这些看似相同的表达式会产生如此不同的结果?

更新:

找到了一个提示.的十六进制表示4.70259123E14-1141206336是:

0x42FABB2BBFA92C00
       0xBBFA92C0
Run Code Online (Sandbox Code Playgroud)

所以我猜其中一个演员将这些位直接推入了int.-2147483648更大的谜团也是如此.

.net c# double casting .net-4.0

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