小编GET*_*Tah的帖子

ViewResult()和ActionResult()之间的区别

ViewResult()ActionResult()ASP.NET MVC有什么区别?

public ViewResult Index()
{
    return View();
}

public ActionResult Index()
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc

292
推荐指数
5
解决办法
15万
查看次数

静态代码块

从去JavaC#在java中我可以做到以下几点:我有以下问题:

public class Application {
    static int attribute;
    static {
        attribute = 5;
    }
   // ... rest of code
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以从构造函数初始化它,但这不符合我的需要(我想初始化并调用一些实用程序函数而不创建对象).C#支持这个吗?如果是,我该如何完成?

提前致谢,

.net c# static

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

合同要求使用

这是我的问题.我是契约设计的忠实粉丝,我正在使用这个概念,特别是在开发可供其他开发人员使用的库时.我刚刚发现了一种新的方法,即:Contract.Requires而不是Exception:所以不要:

public void SomeMethod(string name){
   if(name==null) throw new NullArgumentException("Null values not supported");
} 
Run Code Online (Sandbox Code Playgroud)

我现在有:

public void SomeMethod(string name){
   Contract.Requires(name != null);
}
Run Code Online (Sandbox Code Playgroud)

编辑:我在调试模式下在VS2010下工作.

问题:Contract.Requires什么都不做,即使name是什么时候null!

MSDN文档说:

为封闭方法或属性指定前置条件协定.

但是如果条件不满足则没有指定任何内容!

我还注意到还有其他 Contract.Requires重载会抛出异常,显示消息......但是接下来是什么Contract.Requires(Boolean)

EDIT下面的答案强调必须安装一个插件才能充分发挥ContractAPI的作用,那么那些希望他们的代码在不同平台上表现相同的Mono用户呢?

c# design-by-contract

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

比较Double.NaN与自身

我很难找到为什么这两个操作返回不同的值:

  1. Double.NaN == Double.NaN 回报 false
  2. Double.NaN.Equals(Double.NaN) 回报 true

我有第一部分但不是第二部分的答案而不是"为什么这两个比较返回不同的值"

.net c# double nan

38
推荐指数
2
解决办法
2381
查看次数

按日期排序数组会产生意外结果

这听起来像一个简单的问题,但我花了我的星期天试图找出下面描述的我的实现有什么问题所以我作为最后的手段将它发布到SO.

我有一个从服务器接收数据结构的javascript应用程序.出于性能原因,服务器端发送未排序的数据.

以下是接收数据的javascript代码片段:

    var seriesRawDataArray = ko.observableArray();
    ...
    analyticscontext.series(seriesRawDataArray).done(function () {
        renderSeries();
    });
Run Code Online (Sandbox Code Playgroud)

analyticscontext模块查询使用AJAX的数据:

function series(seriesData) {
    return $.ajax({
        url: "/api/analytics/series",
        type: "GET",
        success: function (data) {
            return seriesData(data);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

renderSeries执行渲染它之前的数据排序:

    // Sort the data by date using moment.js
    seriesRawDataArray.sort(function (left, right) {
        var leftDate = moment.utc(left.timeStamp);
        var rightDate = moment.utc(right.timeStamp);
        var diff = leftDate.diff(rightDate);
        return diff > 0;
    });
Run Code Online (Sandbox Code Playgroud)

问题

这是我从服务器收到的数据样本: 在此输入图像描述

注意最后的未分类项目.在seriesRawDataArray.sort似乎有原来的阵列,它没有得到不管我在分类方法发生变化排序没有影响.输出总是:

在此输入图像描述

注意这里的未排序元素.我正在使用的库和数据肯定不是问题,因为这个jsfiddle运行得很好!这段代码有问题吗?

javascript arrays sorting knockout.js

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

委托(Lambda表达式)Vs接口和抽象类

我一直在寻找这个设计问题的简洁答案但没有成功.我既没有在".NET Framework设计指南"中也没有在"C#编程指南"中找到帮助.我基本上必须将模式公开为API,以便用户可以将他们的算法定义并集成到我的框架中,如下所示:

1)

// This what I provide
public abstract class AbstractDoSomething{
   public abstract SomeThing DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

用户需要实现这个抽象类,他们必须实现该DoSomething方法(我可以在我的框架内调用并使用它)

2)

我发现这也可以通过使用代表来实现:

public sealed class DoSomething{
   public String Id;
   Func<SomeThing> DoSomething;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,用户只能以DoSomething这种方式使用类:

DoSomething do = new DoSomething()
{
  Id="ThisIsMyID",
  DoSomething = (() => new Something())
}
Run Code Online (Sandbox Code Playgroud)

这两个选项中的哪一个最适合作为API公开的简单,可用和最重要的理解

编辑

1的情况下:注册以这种方式完成(假设MyDoSomething扩展AbstractDoSomething:

MyFramework.AddDoSomething("DoSomethingIdentifier", new MyDoSomething());
Run Code Online (Sandbox Code Playgroud)

如果是2:注册完成如下:

MyFramework.AddDoSomething(new DoSomething());
Run Code Online (Sandbox Code Playgroud)

c# api design-patterns

18
推荐指数
2
解决办法
2591
查看次数

内部接口实现

直接问题:我有一个实现两个接口的类:

public class A : Interface1, Interface2{
   // Interface 1 implementation...
   // Interface 2 implementation...
}
Run Code Online (Sandbox Code Playgroud)

有没有办法(没有创建另一个新类)使Interface1实现内部并将其隐藏在其他组件中(只有Interface2将保持公开)?

编辑:一些更有用的信息:Interface1Interface2在另一个核心组件中定义为公共,不能更改.

提前致谢,

.net c# interface

17
推荐指数
1
解决办法
8855
查看次数

奇怪的字符串文字比较

深入了解C#,我遇到了一个与对象引用相等的小问题.我说我有两个字符串:

String a = "Hello world!";
String b = "Bonjour le monde";
bool equals = ReferenceEquals(a, b);  // ******************* (1)
b = "Hello world!";
equals = ReferenceEquals(a, b);       // ******************* (2)
Run Code Online (Sandbox Code Playgroud)

(1)false和那是预期的.ReferenceEquals 文档

ReferenceEquals比较实例

但是之后:

  • 为什么(2)会返回true
  • 字符串ab它们不是同一个对象吗?如果是,那么它们是如何变得相同的,因为我从未明确地做过a=b

c# string

16
推荐指数
3
解决办法
1701
查看次数

本机和托管析构函数

我有一个本机对象(C++),它有一个gcroot指向托管对象(C#)的指针.

class SomeNativeClass {
    gcroot<SomeManagedClass ^> managedClass;
};
Run Code Online (Sandbox Code Playgroud)

问题 当我在delete(someNativeClass)之前分配的本机代码中删除此类的本机实例时,managedClass实例是否会被垃圾收集,或者我是否应该显式删除它(在本机析构函数中)?

c# c++-cli

12
推荐指数
1
解决办法
1513
查看次数

同步发布顺序

我扫描了所有关于这个问题的答案的java 文档synchronized,没有运气.

说我有thread1,thread2,thread3试图在同一时间运行下面的代码.

 synchronized(lockObj) { 
     doSomething();
 }
Run Code Online (Sandbox Code Playgroud)

假设thread1先获取doSomething(),thread2然后thread3阻止并等待该synchronized语句.

  1. thread1释放锁时,哪个线程将首先释放?
  2. 释放锁时适用的一般订单规则是什么?

java synchronized

11
推荐指数
1
解决办法
2895
查看次数