Questions tagged «c#»

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

10
#if RELEASE是否会像#if DEBUG在C#中那样工作?
在我看到的#if编译器指令的所有示例中,它们都使用“ DEBUG”。我可以使用“ RELEASE”以相同的方式排除在调试模式下编译时不想运行的代码吗?我想在此块中包含的代码会发送大量电子邮件,并且我不想在测试时不小心将其发送出去。
277 c#  .net  debugging 

17
如何使用.NET创建具有特定扩展名的临时文件?
我需要生成一个扩展名为.csv的唯一临时文件。 我现在要做的是 string filename = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv"); 但是,这不能保证我的.csv文件是唯一的。 我知道发生碰撞的机会非常低(特别是如果您认为我没有删除.tmp文件),但是这段代码对我来说并不好。 当然,我可以手动生成随机文件名,直到最终找到一个唯一的文件名(这应该不成问题),但是我很好奇想知道其他人是否找到了解决此问题的好方法。
277 c#  .net  temporary-files 

2
“ x为空”和“ x ==空”有什么区别?
在C#7中,我们可以使用 if (x is null) return; 代替 if (x == null) return; 与旧方法相比,使用新方法(以前的示例)有什么优势? 语义有什么不同吗? 只是一个品味问题?如果没有,我什么时候应该使用另一个? 参考:C#7.0的新增功能。


14
C#中的内联函数?
您如何在C#中执行“内联函数”?我认为我不了解这个概念。他们喜欢匿名方法吗?像lambda函数一样? 注意:答案几乎完全涉及内联函数的功能,即“手动或编译器优化,将被调用者的主体替换为函数调用站点”。如果您对匿名(又名lambda)函数感兴趣,请参阅@jalf的答案或每个人都在谈论的“ Lambda”是什么?。
276 c#  optimization  inline 

10
.NET HashTable与字典-字典可以这么快吗?
我试图弄清楚何时以及为什么使用Dictionary或HashTable。我在这里做了一些搜索,发现人们谈论我完全同意的《词典》的一般优势,这导致装箱和拆箱的优势略有提高。 但是我也读过Dictionary并不会总是按插入对象的顺序返回对象,而是对其进行排序。像HashTable一样。据我了解,这导致HashTable在某些情况下会快得多。 我的问题是,这些情况可能是什么?我在上面的假设中错了吗?您可能会使用哪种情况来选择另一种情况(是的,最后一种情况有点模棱两可)。

2
存储库模式逐步说明[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 7年前关闭。 改善这个问题 有人可以向我解释.NET中的存储库模式,一步一步给出一个非常简单的示例或演示。 我知道这是一个非常普遍的问题,但到目前为止,我还没有找到满意的答案。

30
获取“找不到类型或名称空间名称”,但一切似乎还好吗?
我得到: 找不到类型或名称空间名称 VS2010中的C#WPF应用出现错误。这部分代码编译良好,但是突然我收到了此错误。我试着删除项目参考和using语句,关闭VS2010并重新启动,但是仍然有这个问题。 任何想法为什么会发生这种情况,好像我在做正确的事情using? 我还在VS2010中指出,该名称空间的intellisense可以正常工作,因此VS2010似乎具有项目参考并且一方面可以看到名称空间,但是在编译过程中没有看到它?

8
相反的Intersect()
相交可用于查找两个集合之间的匹配项,如下所示: // Assign two arrays. int[] array1 = { 1, 2, 3 }; int[] array2 = { 2, 3, 4 }; // Call Intersect extension method. var intersect = array1.Intersect(array2); // Write intersection to screen. foreach (int value in intersect) { Console.WriteLine(value); // Output: 2, 3 } 但是我想要实现的却是相反的,我想列出一个集合中另一个集合中缺少的项目: // Assign …

5
C#6.0是否适用于.NET 4.0?
我创建了一个带有C#6.0好东西的示例项目-以零传播和属性初始化为例,设置目标版本.NET 4.0即可。 public class Cat { public int TailLength { get; set; } = 4; public Cat Friend { get; set; } public string Mew() { return "Mew!"; } } class Program { static void Main(string[] args) { var cat = new Cat {Friend = new Cat()}; Console.WriteLine(cat?.Friend.Mew()); Console.WriteLine(cat?.Friend?.Friend?.Mew() ?? …
275 c#  .net  c#-6.0 

17
为什么在发送SMTP电子邮件时出现“无法分配属性”?
我不明白为什么这段代码无法正常工作。我收到一条错误消息,指出无法分配属性 MailMessage mail = new MailMessage(); SmtpClient client = new SmtpClient(); client.Port = 25; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Host = "smtp.gmail.com"; mail.To = "user@hotmail.com"; // <-- this one mail.From = "you@yourcompany.com"; mail.Subject = "this is a test email."; mail.Body = "this is my test email body"; client.Send(mail);
274 c#  email  smtpclient 

30
将SQL保留在存储的Procs与代码中有什么优缺点?
已关闭。这个问题是基于观点的。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 将SQL保留在C#源代码或存储的Procs中有哪些优点/缺点?我一直在和一个朋友在我们正在研究的一个开源项目(C#ASP.NET论坛)上讨论这个问题。目前,大多数数据库访问是通过在C#中构建SQL内联并调用SQL Server DB来完成的。因此,我正在尝试确定,对于该特定项目,哪一个最好。 到目前为止,我有: 代码的优点: 易于维护-无需运行SQL脚本即可更新查询 移植到另一个数据库更容易-没有proc移植到端口 存储过程的优点: 性能 安全

11
不抛出异常时,try / catch块是否会损害性能?
在与Microsoft员工进行代码审查期间,我们在一个try{}块内遇到了很大一部分代码。她和一位IT代表建议,这可能会影响代码的性能。实际上,他们建议大多数代码应位于try / catch块之外,并且仅应检查重要部分。微软员工补充说,即将发布的白皮书警告不要尝试错误的try / catch块。 我环顾四周,发现它会影响优化,但似乎仅在范围之间共享变量时才适用。 我不是在问代码的可维护性,甚至不是在处理正确的异常(毫无疑问,有问题的代码都需要重构)。我也不是指使用异常进行流控制,这在大多数情况下显然是错误的。这些是重要的问题(有些更重要),但这里不是重点。 不抛出异常时,try / catch块如何影响性能?

12
使用Lambda / Linq对对象排序列表
我在字符串中有“按属性排序”的名称。我将需要使用Lambda / Linq对对象列表进行排序。 例如: public class Employee { public string FirstName {set; get;} public string LastName {set; get;} public DateTime DOB {set; get;} } public void Sort(ref List<Employee> list, string sortBy, string sortDirection) { //Example data: //sortBy = "FirstName" //sortDirection = "ASC" or "DESC" if (sortBy == "FirstName") { list …

7
CS0120:非静态字段,方法或属性'foo'需要对象引用
考虑: namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //int[] val = { 0, 0}; int val; if (textBox1.Text == "") { MessageBox.Show("Input any no"); } else { val = Convert.ToInt32(textBox1.Text); Thread ot1 = new Thread(new …
274 c# 

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.