小编Can*_*ain的帖子

从包含文件名的路径获取没有文件名的完整路径

有没有内置的东西System.IO.Path只给我文件路径?

例如,如果我有 string

@ "C:\网络服务器\ PUBLIC\myCompany的\ CONFIGS\promo.xml"

是否有任何BCL方法可以给我

"C:\网络服务器\ PUBLIC\myCompany的\ CONFIGS \"?

c# file path

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

当没有指定的案例可以处理时,在switch语句中抛出异常

Let's say we have a function that changes a password for a user in a system in an MVC app.:

public JsonResult ChangePassword
    (string username, string currentPassword, string newPassword)
{
    switch (this.membershipService.ValidateLogin(username, currentPassword))
    {
        case UserValidationResult.BasUsername:
        case UserValidationResult.BadPassword:
            // abort: return JsonResult with localized error message        
            // for invalid username/pass combo.
        case UserValidationResult.TrialExpired
            // abort: return JsonResult with localized error message
            // that user cannot login because their trial period has expired
        case UserValidationResult.Success:
            break;
    }

    // NOW change password …
Run Code Online (Sandbox Code Playgroud)

c# exception switch-statement

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

原生原型与$ .extension()

在工作中,我们使用jQuery.在我们开始使用它之后不久,我看到一些开发人员正在向文件jquery-extensions.js添加函数.在里面,我发现添加了一大堆方法$,基本上相当于jQuery上的静态方法.这里有几个:

$.formatString(str, args) {
    ...
}

$.objectToArray(obj) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

等等.它们实际上都没有使用任何与jQuery有关的东西.这让我很奇怪.

最终,我们需要在我们的库中使用一个函数来本地化日期.我的解决方案是创建:

Date.prototype.toLocaleDate = function() {
    ...
}

Date.parseLocalDate = function() {
   ...
}
Run Code Online (Sandbox Code Playgroud)

在这之后不久,我找到一位高级开发人员来找我问我认为我在做什么.他告诉我,在这里,我工作的地方,我们不创造原型,因为它们是邪恶的.他给出的唯一理由是它们基本上是一种糟糕的语言特征,因为它们"可能被滥用"并且看到原型会很困惑(例如,我如何知道新的Date().toLocaleDate()是原型而不是原生的ECMAScript ).通过使用$.formatString(...)而不是"blah blah".formatString(...),我们清楚地表明任何带有$的东西都不是本机JavaScript的一部分.

这些原因看起来有些愚蠢,但我提出了妥协,所以他不必记住方法是否是原型函数名称的原型前缀$:

String.prototype.$format = function() {
    ...
}

"blah blah".$format(...);
Run Code Online (Sandbox Code Playgroud)

很快就被解雇了,现在我不得不在各处添加这些$ .myPrototypeAsAFauxStaticMethodOnjQuery()函数.

我是唯一认为这种做法很愚蠢的人吗?

javascript jquery prototype

10
推荐指数
1
解决办法
731
查看次数

确定字符串是否为"空"

我需要一个JavaScript函数来告诉我字符串对象是否为空.通过"空",我的意思是它不仅仅是空白字符.我写过这个原型:

String.prototype.isEmpty = function() {
  return this.length === 0 || this === " " || this.test(/^\s*$/);
}
Run Code Online (Sandbox Code Playgroud)

这好吗?

那里有更高性能的版本吗?

javascript regex

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

动态关键字启用"也许"monad?

所以我在C#lib中有这个:

public static TOut IfNotNull<TIn, TOut>
    (this TIn instance, Func<TIn, TOut> func)
{
    return instance == null ? default(TOut) : func(instance);
}
Run Code Online (Sandbox Code Playgroud)

使用如下:

DateTime? expiration = promo.IfNotNull(p => p.TermsAndConditions.Expiration)
                            .IfNotNull(e => e.Date);
Run Code Online (Sandbox Code Playgroud)

我一直在试图弄清楚如何使用C#4 dynamic关键字来启用此语法:

DateTime? expiration = promoOffer.TermsAndConditions.Maybe()
                                 .Expiration.Maybe()
                                 .Date;
Run Code Online (Sandbox Code Playgroud)

我有几个我认为有效的例子但是当你开始链接时它们就崩溃了Maybe().

有任何想法吗?

(我是在浪费时间吗?是Maybe()赢了IfNotNull()吗?)

c# dynamic

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

JavaScript缩小字符串文字?

我正在查看一些JavaScript压缩,并注意到没有对象属性名称的字符串被缩小为变量.

例如,假设我的脚本中有这两段代码:

alert("Wrong answer");
alert("Wrong answer buddy");
Run Code Online (Sandbox Code Playgroud)

如果我没弄错的话,我们从YUI和Closure得到的缩小是:

alert("Wrong answer");alert("Wrong answer buddy");

我认为最终的缩小将如下所示:

var a="Wrong answer";alert(a);alert(a+" buddy");
Run Code Online (Sandbox Code Playgroud)

有没有缩小工具呢?什么阻止我们的工具这样做?

javascript minify

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

跳过文件中的行; 通用扩展方法

有没有更好的方法来编写此扩展方法?

public static class StreamReaderExtensions
{
    public static StreamReader SkipLines(this StreamReader reader, int lines)
    {
        for (var i = 0; i < lines; i++)
        {
            reader.ReadLine();
        }

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

我想的是:

int linesToSkip = 3;
linesToSkip.Do(reader => reader.ReadLine());
Run Code Online (Sandbox Code Playgroud)

要么:

int linesToSkip = 3;
linesToSkip.Do(() => reader.ReadLine());
Run Code Online (Sandbox Code Playgroud)

但是Do()看起来会是什么样的?

c# file

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