小编Mur*_*lex的帖子

C#编译器-未分配的字段和局部变量初始值

出于好奇:

此代码有效并执行:

public class Program
{
    private static DateTime date;

    public static void Main()
    {
        Console.WriteLine(date.ToString("o"));
    }
}
Run Code Online (Sandbox Code Playgroud)

看到它在.NET Fiddle上工作

但这甚至不编译(未分配的局部变量):

public class Program
{
    public static void Main()
    {
        DateTime date;
        Console.WriteLine(date.ToString("o"));
    }
}
Run Code Online (Sandbox Code Playgroud)

看到它(不是)在.NET Fiddle上工作

DateTime是不可为空的值类型,因此不需要将其分配和初始化为具有值,它具有默认值。

那么,为什么编译器允许DateTime字段版本进行编译,而不让本地变量版本进行编译?当代码被编译为IL时,是什么阻止了使用值类型的局部变量?

.net c# datetime compiler-errors compilation

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

带端口的 SQL Server 连接字符串不起作用

场景:使用默认设置和连接端口 (1433) 的 SQL Server 2014 Developer,使用 Entity Framework 6 的 C#。

在我的 C# 应用程序中使用带有 EF6 的 SQL Server,以下连接字符串非常有用:

Data Source=localhost;Initial Catalog =...
Run Code Online (Sandbox Code Playgroud)

但是这个连接字符串失败了:

Data Source=localhost,1433;Initial Catalog =...
Run Code Online (Sandbox Code Playgroud)

是的,这是正确的端口。

通过查看 SQL Server 的配置,我找到了一个通过激活 TCP/IP 协议的解决方案,但是,由于它是默认端口,它不是应该像其他没有该端口的连接字符串一样工作吗?即使 TCP/IP 已停用(这是默认设置)?

谢谢!

c# sql-server entity-framework connection-string

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

实体框架 - 表达式与Func

考虑这两个代码:

运用 Func<T, bool>

public IQueryable<Blog> GetBlogs(Func<Blog, bool> predicate)
{
   return context.Blogs.Where(predicate).AsQueryable();
}
Run Code Online (Sandbox Code Playgroud)

运用 Expression<Func<T, bool>>

public IQueryable<Blog> GetBlogs(Expression<Func<Blog, bool>> predicate)
{
   return context.Blogs.Where(predicate); // No need of AsQueryable
}
Run Code Online (Sandbox Code Playgroud)

因此,在第一种情况下,实体框架将始终返回数据库中的所有对象,对吧?那么打电话有AsQueryable什么意义呢?无论如何它有帮助吗?它与Expression版本相似?

c# expression entity-framework

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