有没有内置的东西System.IO.Path只给我文件路径?
例如,如果我有 string
@ "C:\网络服务器\ PUBLIC\myCompany的\ CONFIGS\promo.xml"
是否有任何BCL方法可以给我
"C:\网络服务器\ PUBLIC\myCompany的\ CONFIGS \"?
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) 在工作中,我们使用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函数来告诉我字符串对象是否为空.通过"空",我的意思是它不仅仅是空白字符.我写过这个原型:
String.prototype.isEmpty = function() {
return this.length === 0 || this === " " || this.test(/^\s*$/);
}
Run Code Online (Sandbox Code Playgroud)
这好吗?
那里有更高性能的版本吗?
所以我在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()吗?)
我正在查看一些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)
有没有缩小工具呢?什么阻止我们的工具这样做?
有没有更好的方法来编写此扩展方法?
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()看起来会是什么样的?