Tag: 返回

异步方法中的奇怪调试器行为

当我在代码中跨越断点时,我遇到了调试器的奇怪行为: public async Task DoSomeWork() { await Task.Run(() => { Thread.Sleep(1000); }); var test = false; if (test) { throw new Exception(“Im in IF body!”); } } 调试器进入if body。 值得注意的是,exception并没有真正被抛出,只是看起来就是这样。 因此,如果您将断点正确放置,则无法重现。 你必须把它放在上面,然后下降到if体来抓住它。 同样适用于任何类型的exception实例(以及显式null ),甚至return而不是throw 。 除此之外它即使我await删除行也有效。 我尝试从不同的PC运行此代码片段,因此它不是PC的麻烦。 另外我认为它是VS代码中的错误,并试图在JetBrains的Rider中运行它 – 结果相同。 我确定这是异步的事情,但它是如何明确起作用的?

返回带有C#函数的2个字符串

我有一个函数,我想返回2个值? 这可能吗? 这是我的代码,但它似乎不喜欢我想要返回2个值 public string PlayerCards(string player1C1, string player1C2) { generatedCard = randomCard.Next(1, 52); player1C1 = generatedCard.ToString(); player1C1 = player1C1 + “.png”; return player1C1, player1C2; } 我做了一些谷歌搜索,但我没有找到我需要的东西。

从内部使用块返回是否可以

我正在进行代码审查,并找到了许多具有以下格式的代码: public MyResponse MyMethod(string arg) { using (Tracer myTracer = new Tracer(Constants.TraceLog)) { MyResponse abc = new MyResponse(); // Some code return abc; } } 当我运行代码分析时,我得到一个CA2000警告Microsoft.Reliability 代码应该重写为: public MyResponse MyMethod(string arg) { MyResponse abc = new MyResponse(); using (Tracer myTracer = new Tracer(Constants.TraceLog)) { // Some code } return abc; } 或者没关系? 编辑 报告警告的行是: MyResponse […]

在C#中返回两个列表

我一直在研究这个问题,我仍然不确定如何实现以及从单独的方法返回两个列表的最佳方法是什么? 我知道有类似的问题浮出水面,但它们似乎互相矛盾,哪个是最好的方法。 我只需要简单有效地解决我的问题。 提前致谢。

将C ++数组返回给C#

我似乎无法弄清楚如何将数组从导出的C ++ DLL返回到我的C#程序。 我从google搜索中发现的唯一一件事就是使用Marshal.Copy()将数组复制到缓冲区中,但这并没有给我我想要返回的值,我不知道它给了我什么。 这是我一直在尝试的: 导出function: extern “C” __declspec(dllexport) int* Test() { int arr[] = {1,2,3,4,5}; return arr; } C#部分: [DllImport(“Dump.dll”)] public extern static int[] test(); static void Main(string[] args) { Console.WriteLine(test()[0]); Console.ReadKey(); } 我知道返回类型int []可能是错误的,因为托管/非托管差异,我只是不知道从哪里开始。 除了将字符数组返回到字符串而不是整数数组之外,我似乎无法找到答案。 我想到我使用Marshal.Copy获得的值不是我返回的值的原因是因为导出函数中的’arr’数组被删除但是我不是100%肯定,如果有人能清除它的话那太好了。

创建数据库查询方法

我不确定是否已被删除,但我想要做的是创建一个返回查询结果的方法,以便我可以重用连接代码。 据我了解,查询返回一个对象,但我如何传回该对象? 我想将查询作为字符串参数发送到方法中,并让它返回结果,以便我可以使用它们。 这就是我在黑暗中刺伤的东西,它显然不起作用。 这个例子是我尝试使用查询结果填充列表框; 工作表名称为Employees,字段/列是名称。 我得到的错误是“Complex DataBinding接受IList或IListSource作为数据源。”。 有任何想法吗? public Form1() { InitializeComponent(); openFileDialog1.ShowDialog(); openedFile = openFileDialog1.FileName; lbxEmployeeNames.DataSource = Query(“Select [name] FROM [Employees$]”); } public object Query(string sql) { System.Data.OleDb.OleDbConnection MyConnection; System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand(); string connectionPath; //build connection string connectionPath = “provider=Microsoft.Jet.OLEDB.4.0;Data Source='” + openedFile + “‘;Extended Properties=Excel 8.0;”; MyConnection = new System.Data.OleDb.OleDbConnection(connectionPath); […]

如何通过正则表达式删除字符串中的额外返回和空格?

我将HTML代码转换为纯文本。但是有很多额外的返回和空格。如何删除它们?

变量在当前上下文中不存在?

我知道这很可能是一个愚蠢的问题,但我是一名大学生,他是C#和面向对象编程的新手。 我试图在别处找到答案,但我找不到任何有用的东西。 调试器一直告诉我变量’cust_num在当前上下文中不存在’。 如果有人能告诉我我做错了什么并让我觉得自己像个白痴,我会非常感激。 谢谢! string get_cust_num() { bool cust_num_valid = false; while (!cust_num_valid) { cust_num_valid = true; Console.Write(“Please enter customer number: “); string cust_num = Console.ReadLine(); if (cust_num == “000000” || !Regex.IsMatch(cust_num, @”^[0-9]+$”) || cust_num.Length != 6) { cust_num_valid = false; Console.WriteLine(“Invalid customer number detected. Customer numbers must be a 6 digit positive integer […]