相关疑难解决方法(0)

String.IsNullOrBlank扩展方法

我不断检查字符串字段以检查它们是否为空或空白.

if(myString == null || myString.Trim().Length == 0)
{
    throw new ArgumentException("Blank strings cannot be handled.");
}
Run Code Online (Sandbox Code Playgroud)

为了节省自己的一些输入,可以为String类创建一个具有相同效果的扩展方法吗?我理解如何为类实例添加扩展方法,但是如何向类添加静态扩展方法呢?

if(String.IsNullOrBlank(myString))
{
    throw new ArgumentException("Blank strings cannot be handled.");
}
Run Code Online (Sandbox Code Playgroud)

c# extension-methods

14
推荐指数
3
解决办法
6342
查看次数

用于IEnumerable的C#实现的F#Seq模块?

F#有一堆标准的序列操作符,我已经了解并喜欢我对Mathematica的体验.F#现在得到了很多关注,当它一般发布时,我打算经常使用它.

现在,由于F#尚未普遍发布,我无法在生产代码中真正使用它.LINQ使用类似SQL的名称来实现其中一些运算符(例如'select'是'map','where'是'filter'),但是我找不到'fold','iter'或'partition'的实现.

有没有人见过标准序列运算符的任何C#实现?这是某人应该写的东西吗?

c# f#

11
推荐指数
2
解决办法
5345
查看次数

在C#中编写F#递归文件夹访问者 - seq vs IEnumerable

我经常在F#中使用这个递归的"访客"

let rec visitor dir filter= 
    seq { yield! Directory.GetFiles(dir, filter)
          for subdir in Directory.GetDirectories(dir) do yield! visitor subdir filter} 
Run Code Online (Sandbox Code Playgroud)

最近我开始在C#中实现一些F#功能,我试图将其重现为IEnumerable,但是我很难得到更多:

static IEnumerable<string> Visitor(string root, string filter)
{
    foreach (var file in Directory.GetFiles(root, filter))
        yield return file;
    foreach (var subdir in Directory.GetDirectories(root))
        foreach (var file in Visitor(subdir, filter))
            yield return file;
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我必须在C#版本中为递归做一个双重foreach,而不是在F#中... seq {}是否隐含地执行'concat'?

c# f#

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

"如果object为null,则为null;如果object为null,则为object.member"的快捷方式

我正在尝试编写一个通用扩展方法,让我这样做:

this.startDate = startDateXAttribute.NullOrPropertyOf<DateTime>(() =>
{
    return DateTime.Parse(startDateXAttribute.Value);
});
Run Code Online (Sandbox Code Playgroud)

NullOrPropertyOf()将返回null如果它是一个上使用的null对象(例如,如果startDateXAttributenull),或返回的结果Func,如果它不为空.

这种扩展方法会是什么样的?

c# generics

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

有机会使用Func <>来提高代码可读性

今天我终于"得到"了Func<>委托,并看到我如何使用它来使我的一些不太可读的LINQ查询(希望)更具可读性.

这是一个简单的代码示例,在一个(非常)简单的例子中说明了上述内容

List<int> numbers = new List<int> { 1, 5, 6, 3, 8, 7, 9, 2, 3, 4, 5, 6, };

// To get the count of those that are less than four we might write:
int lessThanFourCount = numbers.Where(n => n < 4).Count();

// But this can also be written as:
Func<int, bool> lessThanFour = n => n < 4;

int lessThanFourCount = numbers.Where(lessThanFour).Count();
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供他们使用的场景的任何示例Func<>吗?

(请注意,我不主张Func<>在如上所示的简单场景中使用,它只是一个希望使功能变得Func<>清晰的示例.)

.net linq lambda

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

为什么我不能检查连接字符串上的空引用?

可能是一个C#noob问题,所以不要激怒我.我试图这样做:

if (ConfigurationManager.ConnectionStrings["PrimaryConnectionString"].ConnectionString != null)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但我一直得到一个System.NullReferenceException.我想,因为它返回一个我可以检查null并继续前进的字符串.我花了一段时间才找到正确的方法:

ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["PrimaryConnectionString"];
if (cs != null)
{
    this.Connection.ConnectionString = cs.ConnectionString;
}
Run Code Online (Sandbox Code Playgroud)

所以在其他情况下,比如检查Session对象的某些值,我会null像这样检查:

if (Session["EmployeeID"] != null)
{
    _EmployeeID = System.Convert.ToInt32(Session["EmployeeID"]);
}
Run Code Online (Sandbox Code Playgroud)

所以我只是想知道你怎么知道什么时候能做或不能做检查null

c# asp.net null connection-string nullreferenceexception

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