Questions tagged «c#»

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




3
使用关联的应用程序打开文件
我想从与关联应用程序的C#应用​​程序打开文件时寻求帮助。我尝试了这个: ProcessStartInfo pi = new ProcessStartInfo(file); pi.Arguments = Path.GetFileName(file); pi.UseShellExecute = true; pi.WorkingDirectory = Path.GetDirectoryName(file); pi.FileName = file; pi.Verb = "OPEN"; Process.Start(pi); 或这个: Process.Start(file); 其中file两个示例中的字符串代表尝试打开的文件的完整路径。现在,一切正常,除了使用ACDSee app的(jpg)图像。Irfanview协会运作良好,MS Office文件也是如此。尝试打开与acdsee关联的jpg图像后,它仅在通知区域中运行acdsee而不打开文件。 我发现,在* .jpg图像的注册表CLASSES_ROOT中,有一个ACDSee.JPG值作为关联的应用程序,在此键下的shell- > Open-> Command中有一个路径: "C:\Program Files\ACD Systems\ACDSee\ACDSee.exe" /dde 而且我觉得这很奇怪/dde是原因,为什么我无法打开文件。我意识到在同一个reg key shell-> Open中,有一些DDEExec键值[open("%1")] 对于Irfan View或其他已检查的应用程序,没有ddeexec,只有普通命令,例如 "C:\Program Files (x86)\IrfanView\i_view32.exe" "%1" 可以在将%1交换为文件名之后从命令行运行,但是我无法从命令行中的acdsee条目运行命令:( 所以我的问题是,我该如何设置ProcessStartInfo对象以确保它可以像双击资源管理器中的标准文件一样运行所有文件DDEExec?还有其他DDEExec我应该知道的东西吗?谢谢你,对不起我

5
为什么C#多维数组不实现IEnumerable <T>?
我刚刚注意到C#中的多维数组没有实现IEnumerable&lt;T&gt;,但是实现了IEnumerable。对于一维数组,这两个IEnumerable&lt;T&gt;和IEnumerable来实现。 为什么会有这种差异?如果是多维数组IEnumerable,那么肯定也应该实现通用版本吗?我注意到这一点是因为我尝试对多维数组使用扩展方法,除非您使用Cast&lt;T&gt;或类似方法,否则扩展方法将失败。所以我绝对可以看到使多维数组实现的参数IEnumerable&lt;T&gt;。 为了澄清我的问题在代码中,我希望下面的代码打印true的四倍,而它实际打印true,false,true,true: int[] singleDimensionArray = new int[10]; int[,] multiDimensional = new int[10, 10]; Debug.WriteLine(singleDimensionArray is IEnumerable&lt;int&gt;); Debug.WriteLine(multiDimensional is IEnumerable&lt;int&gt;); Debug.WriteLine(singleDimensionArray is IEnumerable); Debug.WriteLine(multiDimensional is IEnumerable);

6
如何检查对象是否为某种类型的数组?
这工作正常: var expectedType = typeof(string); object value = "..."; if (value.GetType().IsAssignableFrom(expectedType)) { ... } 但是我如何检查value是否是一个没有设置的字符串数组 expectedType来typeof(string[])?我想做类似的事情: var expectedType = typeof(string); object value = new[] {"...", "---"}; if (value.GetType().IsArrayOf(expectedType)) // &lt;--- { ... } 这可能吗?
70 c#  .net  arrays  reflection  types 

6
没有Mac的Xamarin Visual Studio IOS开发?
我是.NET开发人员,想用C#编写IOS和Android应用程序。我已经阅读了有关Visual Studio的Xamarin的内容,即使不是有点贵也看起来很有趣! 您需要Mac来调试代码吗?您只需要联网的Mac即可将应用程序实际部署到商店? 最好的选择是购买Mac并在VM中运行带VS的Windows,还是我可以使用Windows计算机,在Windows中编写和调试代码,然后仅连接到联网的Mac进行最终部署?
70 c#  android  ios  macos  xamarin 

4
如何将刻度线转换为日期格式?
我将刻度值转换为这样的日期: Convert(datetime, (MachineGroups.TimeAdded - 599266080000000000)/864000000000); 使用这个我得到: 9/27/2009 10:50:27 PM 但是我只想要这种格式的日期: October 1, 2009 我的样本报价值是 633896886277130000 做这个的最好方式是什么?


13
我可以在C#中读取Outlook(2003/2007)PST文件吗?
是否可以使用C#读取.PST文件?我想作为一个独立的应用程序,而不是作为Outlook插件(如果可能的话)来执行此操作。 如果看到其他 类似于此的SO 问题 ,请提及MailNavigator,但我希望以C#方式进行编程。 我查看了Microsoft.Office.Interop.Outlook命名空间,但这似乎仅用于Outlook加载项。LibPST似乎能够读取PST文件,但这是用C语言编写的(对不起,乔尔,我毕业之前没有学习C语言)。 任何帮助将不胜感激,谢谢! 编辑: 谢谢大家的答复!我接受了Matthew Ruston的回答作为答案,因为它最终使我明白了我要寻找的代码。这是我工作的一个简单示例(您将需要添加对Microsoft.Office.Interop.Outlook的引用): using System; using System.Collections.Generic; using Microsoft.Office.Interop.Outlook; namespace PSTReader { class Program { static void Main () { try { IEnumerable&lt;MailItem&gt; mailItems = readPst(@"C:\temp\PST\Test.pst", "Test PST"); foreach (MailItem mailItem in mailItems) { Console.WriteLine(mailItem.SenderName + " - " + mailItem.Subject); } } …

10
快速简单的哈希码组合
人们能否推荐快速简单的方法来组合两个对象的哈希码。我没有太担心冲突,因为我有一个哈希表,该哈希表可以有效地处理该问题,我只希望有一些东西可以尽快生成代码。 围绕SO和Web进行阅读似乎有一些主要的候选人: 异或 使用素数乘法进行异或 简单的数字运算,例如乘法/除法(带有溢出检查或环绕) 生成一个String,然后使用String类的Hash Code方法 人们会推荐什么,为什么?
70 c#  algorithm  hash  hashcode 

3
(C#7.2)“私有保护”修饰符的用例是什么?
C#7.2引入了private protected修饰符。 我一直使用属性来保护对字段的访问,允许通过Get / Set方法进行访问,因为我通常不希望通过自己的类以外的任何东西来修改对象的内部状态。 我试图理解为什么C#语言团队添加了此功能。在Google上进行了广泛的搜索之后,阅读并观看了“新消息”媒体(我已经看过Mads Torgerson的新闻稿,详细信息和视频),但我仍然不是一个明智的选择。 在我看来,这似乎使开发人员可以打破Liskov替代原则,但这可能是因为我不理解为什么现在存在此功能。 我知道如何使用它,而不是为什么-请有人可以提供真实的用法示例,而不是MSDN文档中人为的示例吗?

8
在C#中切换大小写-期望一个恒定值
我的代码如下: public static void Output&lt;T&gt;(IEnumerable&lt;T&gt; dataSource) where T : class { dataSourceName = (typeof(T).Name); switch (dataSourceName) { case (string)typeof(CustomerDetails).Name.ToString(); : var t = 123; break; default: Console.WriteLine("Test"); } } 但这是行不通的。该case语句给我一个错误,表明需要一个常量变量。请大家帮忙谢谢!

9
反序列化接口实例的集合?
我想通过json.net将此代码序列化: public interface ITestInterface { string Guid {get;set;} } public class TestClassThatImplementsTestInterface1 { public string Guid { get;set; } } public class TestClassThatImplementsTestInterface2 { public string Guid { get;set; } } public class ClassToSerializeViaJson { public ClassToSerializeViaJson() { this.CollectionToSerialize = new List&lt;ITestInterface&gt;(); this.CollectionToSerialize.add( new TestClassThatImplementsTestInterface2() ); this.CollectionToSerialize.add( new TestClassThatImplementsTestInterface2() ); …
70 c#  json.net 

5
未处理CryptographicException:系统找不到指定的文件
我试图掩盖SSL通信的奥秘,并在此站点上找到了不错的教程。我正在尝试测试自己的证书。使用Visual Studio 2012,我只是添加了一个现有文件(我的证书为.pfx格式),然后在app.config中更改了“证书”和“密码”设置。但是,当尝试运行它时,出现错误: 未处理CryptographicException:系统找不到指定的文件 然后,我在Web服务中尝试了同样的方法。在那里,我得到了有关该错误的更多详细信息: System.Security.Cryptography.CryptographicException: System cannot find specified file. at System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr) at System.Security.Cryptography.X509Certificates.X509Utils._QueryCertFileType(String fileName) at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(String fileName, Object password, X509KeyStorageFlags keyStorageFlags) v System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password) v TestServer.DataService.LoadSoap() v c:\Users\Administrator\Documents\Visual Studio 2012\Projects\TestServer\TestServer\DataService.asmx.cs:line 48 我已经将这个问题写给文章的作者,但是由于他的上次答复是在2012年3月,所以我不确定他是否会答复。如果有人可以帮助我解决这个问题,我将不胜感激。 PS:将证书从.cer导出到.pfx时,我已更改了导出文件的标题。尽管我怀疑它对问题的影响,但我还是想提一下。

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.