Questions tagged «c#»

C#(发音为“ See Sharp”)是由Microsoft开发的一种高级,静态类型的多范例编程语言。C#代码通常针对Microsoft的.NET系列工具和运行时,其中包括.NET Framework,.NET Core和Xamarin。使用此标记可解决有关用C#或C#正式规范编写的代码的问题。


16
如何从C#关闭计算机
从C#程序关闭计算机的最佳方法是什么? 我发现了一些可行的方法-我将在下面发布它们-但它们都不是非常优雅。我正在寻找更简单的本机.net。
138 c#  .net  windows  shutdown 


7
如何等待异步方法完成?
我正在编写一个WinForms应用程序,该应用程序将数据传输到USB HID类设备。我的应用程序使用了出色的Generic HID库v6.0,可以在这里找到。简而言之,当我需要将数据写入设备时,这就是被调用的代码: private async void RequestToSendOutputReport(List<byte[]> byteArrays) { foreach (byte[] b in byteArrays) { while (condition) { // we'll typically execute this code many times until the condition is no longer met Task t = SendOutputReportViaInterruptTransfer(); await t; } // read some data from device; we need to wait …

6
在C#中使用参数调用存储过程
我可以在程序中执行删除,插入和更新操作,并尝试通过从数据库中调用创建的存储过程来进行插入操作。 这个按钮插入我做得很好。 private void btnAdd_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(dc.Con); SqlCommand cmd = new SqlCommand("Command String", con); da.InsertCommand = new SqlCommand("INSERT INTO tblContacts VALUES (@FirstName, @LastName)", con); da.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text; da.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text; con.Open(); da.InsertCommand.ExecuteNonQuery(); con.Close(); dt.Clear(); da.Fill(dt); } 这是按钮的开始,该按钮将调用名为sp_Add_contact添加联系人的过程。的两个参数sp_Add_contact(@FirstName,@LastName)。我在Google上搜索了一个很好的例子,但没有发现任何有趣的事情。 private void button1_Click(object sender, …

16
在某些情况下禁用“必需的验证”属性
我想知道是否可以在某些控制器操作中禁用“必需的验证”属性。我想知道这是因为在我的一种编辑表单上,我不需要用户为他们先前已经指定的字段输入值。但是,我然后实现了一种逻辑,即当他们输入值时,它会使用一些特殊的逻辑来更新模型,例如对值进行哈希处理等。 关于如何解决此问题有任何建议吗? 编辑: 是的,客户端验证在这里是一个问题,因为它将不允许他们在不输入值的情况下提交表单。

4
ThreadStatic属性如何工作?
[ThreadStatic]属性如何起作用?我以为编译器会发出一些IL来填充/检索TLS中的值,但查看反汇编似乎并没有达到该水平。 作为后续措施,如果将其放在非静态成员上会怎样?我们有一个开发人员犯了这个错误,而编译器甚至没有发出警告。 更新资料 在这里回答的第二个问题:用静态C#修改ThreadStatic
138 c#  static  threadstatic 

7
如何防止IDisposable传播到您的所有班级?
从这些简单的类开始... 假设我有一组简单的类,如下所示: class Bus { Driver busDriver = new Driver(); } class Driver { Shoe[] shoes = { new Shoe(), new Shoe() }; } class Shoe { Shoelace lace = new Shoelace(); } class Shoelace { bool tied = false; } A Bus有一个Driver,A 有Driver两个Shoe,每个Shoe都有一个Shoelace。一切都很傻。 将IDisposable对象添加到Shoelace 后来我决定对进行某些操作Shoelace可以是多线程的,因此我EventWaitHandle为线程添加了一个与之通信。所以Shoelace现在看起来像这样: class Shoelace { private …

7
您如何在.NET中进行模拟?
是否有一种简单的开箱即用的方法来模拟.NET中的用户? 到目前为止,我一直在代码项目中使用此类来满足所有模拟要求。 使用.NET Framework是否有更好的方法呢? 我有一个用户凭据集(用户名,密码,域名),它代表我需要模拟的身份。
138 c#  .net  impersonation 


13
将任何对象转换为字节[]
我正在编写一个原型TCP连接,但在均匀化要发送的数据时遇到了一些麻烦。 目前,我只发送字符串,但是将来我们希望能够发送任何对象。 此刻的代码非常简单,因为我认为所有内容都可以转换为字节数组: void SendData(object headerObject, object bodyObject) { byte[] header = (byte[])headerObject; //strings at runtime, byte[] body = (byte[])bodyObject; //invalid cast exception // Unable to cast object of type 'System.String' to type 'System.Byte[]'. ... } 这当然很容易解决 if( state.headerObject is System.String ){...} 问题是,如果我这样做,我需要在运行时检查无法转换为byte []的所有类型的对象。 因为我不知道在运行时不能将每个对象都转换为byte [],所以这不是一个选择。 如何在C#.NET 4.0中将任何对象完全转换为字节数组?
138 c#  .net  object  byte 

5
带有异步Lambda的并行foreach
我想并行处理一个集合,但是在实现它时遇到了麻烦,因此希望获得一些帮助。 如果要在并行循环的lambda中调用C#中标记为async的方法,则会出现问题。例如: var bag = new ConcurrentBag<object>(); Parallel.ForEach(myCollection, async item => { // some pre stuff var response = await GetData(item); bag.Add(response); // some post stuff } var count = bag.Count; 计数为0时会发生问题,因为创建的所有线程实际上都是后台线程,并且Parallel.ForEach调用不等待完成。如果删除async关键字,则该方法如下所示: var bag = new ConcurrentBag<object>(); Parallel.ForEach(myCollection, item => { // some pre stuff var responseTask = await GetData(item); …

9
使用基本身份验证的HttpWebRequest
我正在尝试通过一个模仿“基本身份验证请求”的身份验证请求,该请求是我们在为此行为设置IIS时经常会看到的。 该URL是:https ://telematicoprova.agenziadogane.it/TelematicoServiziDiUtilitaWeb/ServiziDiUtilitaAutServlet?UC =22&SC=1&ST=2(警告:https!) 该服务器作为应用程序服务器在UNIX和Java下运行。 这是我用来连接到该服务器的代码: CookieContainer myContainer = new CookieContainer(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://telematicoprova.agenziadogane.it/TelematicoServiziDiUtilitaWeb/ServiziDiUtilitaAutServlet?UC=22&SC=1&ST=2"); request.Credentials = new NetworkCredential(xxx,xxx); request.CookieContainer = myContainer; request.PreAuthenticate = true; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); (我从本网站的另一篇文章中复制了此内容)。但是我从服务器收到以下答案: 基础连接已关闭:发送时发生意外错误。 我想我已经尽了我所有的C#知识所能提供的一切可能的任务,但是没有什么...

15
您是否将单元测试放在同一项目或另一个项目中?
为了方便起见,您是否将单元测试放在同一项目中?还是将它们放在单独的程序集中? 如果像我们一样将它们放在单独的程序集中,则最终在解决方案中会有许多其他项目。这非常适合编码时的单元测试,但是如何在没有所有这些额外程序集的情况下发布应用程序?
137 c#  unit-testing 

16
将字符串转换为可为null的类型(int,double等)
我正在尝试进行一些数据转换。不幸的是,许多数据都是字符串形式,应该是int或double等等。 所以我得到的是这样的: double? amount = Convert.ToDouble(strAmount); 这种方法的问题是,如果strAmount为空,如果为strAmount为空,则我希望它等于null,因此当我将其添加到数据库中时,该列将为null。所以我最终写了这个: double? amount = null; if(strAmount.Trim().Length>0) { amount = Convert.ToDouble(strAmount); } 现在可以正常工作,但是我现在有五行代码而不是一行。这使事情更加难以阅读,尤其是当我有大量要转换的列时。 我以为我会使用字符串类和泛型的扩展名来传递类型,这是因为它可以是double或int或long。所以我尝试了这个: public static class GenericExtension { public static Nullable<T> ConvertToNullable<T>(this string s, T type) where T: struct { if (s.Trim().Length > 0) { return (Nullable<T>)s; } return null; } } 但是我得到了错误:无法将类型'string'转换为'T?' 有没有解决的办法?我对使用泛型创建方法不是很熟悉。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.