小编Zer*_*vin的帖子

捕获控制台出口C#

我有一个包含很多线程的控制台应用程序.有些线程可以监视某些条件,如果它们是真的则终止程序.这种终止可以随时发生.

我需要一个可以在程序关闭时触发的事件,以便我可以清理所有其他线程并正确关闭所有文件句柄和连接.我不确定.NET框架中是否已经内置了一个,所以我在编写自己的框架之前就已经问过了.

我想知道是否有一个事件:

MyConsoleProgram.OnExit += CleanupBeforeExit;
Run Code Online (Sandbox Code Playgroud)

.net c# console events exit

88
推荐指数
4
解决办法
8万
查看次数

从C#调用F#代码

我正在玩F#和C#,并希望从C#调用F#代码.

我设法让它在Visual Studio中以相反的方式工作,方法是在同一个解决方案中有两个项目,并在F#项目中添加C#代码的引用.这样做之后,我可以调用C#代码,甚至在调试时逐步执行它.

我想要做的是F#代码来自C#而不是来自F#的C#代码.我在C#项目中添加了对F#项目的引用,但它的工作方式与以前不同.我想知道如果不手动完成这是否可行.

c# f# interop

77
推荐指数
3
解决办法
4万
查看次数

使用 linq 从动态 SQL 查询中检索和打印数据

我有一些现有代码,使用 ADO.NET 从数据库检索数据,我想将其转换为 linq。

该代码的作用是通过命令行接收 SQL 查询,执行它,返回行及其列名称,然后将它们打印到屏幕上。我想知道如何在 linq 中编写这段代码。

整个 sql 查询必须通过命令行给出,因为我想限制从中选择行的位置。这是我想要完成的唯一方法,所以除非你有一个可以这样工作的方法,否则我不能使用它。除了我自己之外,没有人可以访问该程序,因此安全性不是问题。

private static SqlConnection sqlConnection = new SqlConnection();

private static void OConnection()
{
    sqlConnection = new SqlConnection();
    sqlConnection.ConnectionString = MyConsoleApp.Properties.Settings.Default.ConnStr;
    sqlConnection.Open();
}
Run Code Online (Sandbox Code Playgroud)

...

string query = Console.ReadLine();
OpenConn();
SqlCommand command = new SqlCommand(query, sqlConnection);
SqlDataReader reader = command.ExecuteReader();

if (reader != null)
{
    while (reader.Read())
    {
        for (int i = 0; i < reader.FieldCount; i++)
        {
            Console.Write("| {0}: {1}", reader.GetName(i), reader.GetValue(i));
        }
        Console.WriteLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# sql linq

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

F#匹配两个值

我对F#很新,我希望将两个值与(match ... with ...)语法进行比较

当我尝试比较两个这样的值时出现问题:

let value1 = 19
let isValue1 y =
    match y with
    | value1 -> y + 1
    | _ -> y
Run Code Online (Sandbox Code Playgroud)

我得到一个警告,即永远不会达到代码的"| _ - > y"部分.为什么是这样?

我知道我可以执行以下操作以使函数按照我希望的方式工作:

let value1 = 19
let isValue1 y =
    match y with
    | _ when y = value1 -> true
    | _ -> false
Run Code Online (Sandbox Code Playgroud)

这也有效

let value1 = 19
let isValue1 y =
    match y with
    | 19 -> true
    | _ -> false
Run Code Online (Sandbox Code Playgroud)

我只是好奇为什么我不能这样做,以及匹配实际上是如何工作的.

f# pattern-matching

3
推荐指数
2
解决办法
828
查看次数

标签 统计

c# ×3

f# ×2

.net ×1

console ×1

events ×1

exit ×1

interop ×1

linq ×1

pattern-matching ×1

sql ×1