草庐IT

c# - 如何在 C# 正则表达式中使用内联修饰符?

如何使用内联修饰符代替RegexOptions.Option?例如:RegexMyRegex=newRegex(@"[a-z]+",RegexOptions.IgnoreCase);如何使用内联字符i重写它?http://msdn.microsoft.com/en-us/library/yd1hzczs.aspx 最佳答案 您可以按如下方式使用内联修饰符://caseinsensitivematchRegexMyRegex=newRegex(@"(?i)[a-z]+");//caseinsensitivematch或者,通过添加减号

c# - Visual Studio 2015,无法更改新资源文件的访问修饰符

我正在尝试在VS2015中创建新的资源文件。我创建它们很好,但是当我尝试更改“访问修饰符”时,下拉列表被禁用...有什么想法吗?我在ASP.NETMVC6(ASP.NET5)中工作。该项目是一个类库,但我在Web项目中进行了测试,结果相同。谢谢!!编辑:添加属性窗口 最佳答案 您能否检查文件的属性并验证自定义工具是否为ResXFileCodeGenerator?如果是GlobalResourceProxyGenerator,下拉菜单将被禁用。 关于c#-VisualStudio2015,

c# - 使用反射检测属性上的访问修饰符类型

我已经编写了一些代码来使用反射查看属性。我已经使用反射从类中检索了一个属性列表。但是我需要查明该属性是公共(public)的还是protected。例如:publicstringName{get;set;}protectedintAge{get;set;}PropertyInfo类似乎没有公开有关该属性的信息。还有其他方法吗? 最佳答案 由于属性只是一对get/set方法的语法糖,因此不存在属性反射方面的“可访问性”这样的东西。相反,您必须分别找出get和set方法的可访问性级别。为此,使用GetGetMethod检索适当的Meth

c# - C#中的这个参数修饰符?

我对这段代码很好奇:publicstaticclassXNAExtensions{//////WriteaPoint///publicstaticvoidWrite(thisNetOutgoingMessagemessage,Pointvalue){message.Write(value.X);message.Write(value.Y);}//...};参数类型旁边的this关键字是什么意思?我似乎无法在任何地方找到有关它的任何信息,即使在C#规范中也是如此。 最佳答案 那是一个extensionmethod.语法意味着您可以调用

c# - C# 中的异步修饰符

我有一个问题,这两种方法有什么区别?asyncprivatevoidButton_Click_1(objectsender,RoutedEventArgse){Thread.Sleep(2000);}privatevoidButton_Click_2(objectsender,RoutedEventArgse){Thread.Sleep(2000);}它们都阻止了我的用户界面。我知道我必须启动另一个线程以避免阻塞,但我发现:“异步方法提供了一种方便的方法来执行可能长时间运行的工作,而不会阻塞调用者的线程”。我有点困惑。 最佳答案 添

c# - 修改公共(public)属性的访问修饰符是否是重大更改?

如果我将公共(public)属性的setter的访问修饰符从私有(private)更改为公共(public),是否会导致引用它的其他程序集发生重大变化? 最佳答案 更新:ThisquestionwasthetopicofmybloginJanuary2012.感谢您提出很好的问题!我假设“中断更改”是指“当我重新编译依赖于此程序集的代码时,用于编译的代码是否仍然可以编译?”根据该定义,严格来说,是的,将过去私有(private)的属性setter公开是一项重大更改。假设你有这样的代码://AssemblyAlphapubliccla

c# - 如何从用属性修饰的 C# 类生成 .proto 文件?

试图让我的想法围绕googleprotobuf。我在C#中找到了一些protobuf的实现,但它们似乎缺少一项功能:从现有的C#类自动生成.proto文件的能力,这些类用属性装饰。我想这样做而不是从.proto文件自动生成C#类的原因是因为我已经在我的项目中定义了C#类,我不想为了满足ProtoBuf而复制它们.有没有人遇到过这种情况?更新是否可以只装饰一个C#类而不使用.proto文件来使用protobuf? 最佳答案 好消息;您所描述的(具有现有的C#类)是protobuf-net的预期用例。所有.proto内容(“protog

c# - 如何在 C# 中使用多个修饰键

我正在使用keydown事件来检测按下的键,并且有多个组合键用于各种操作。if(e.KeyCode==Keys.C&&e.Modifiers==Keys.Control&&e.Modifiers==Keys.Shift){//Dowork}elseif(e.KeyCode==Keys.V&&e.Modifiers==Keys.Control){//Paste}出于某种原因,我按Ctrl+Shift+C的组合键不起作用。我已经重新订购了它们,并将其放在顶部,认为它可能是Ctrl+C的干扰,甚至删除了Ctrl+C看看它是否引起了问题。它仍然不起作用。我知道这可能很简单,但不能完全理解它是什

c# - "private"修饰符有什么作用?

考虑到“private”是类成员的默认访问修饰符,为什么还需要关键字? 最佳答案 这里有一定数量的错误信息:"Thedefaultaccessmodifierisnotprivatebutinternal"嗯,这取决于你在说什么。对于类型的成员,它是私有(private)的。对于顶级类型本身,它是内部的。"Privateisonlythedefaultformethodsonatype"不,它是一个类型的所有成员的默认值-属性、事件、字段、运算符、构造函数、方法、嵌套类型以及我忘记的任何其他内容。"Actually,ifthecla

c# - 函数的 "static new"修饰符有什么意义?

今天,我在遗留代码中发现了一些东西。它具有一项功能的“静态新”。看起来像这样。classFoo{publicstaticvoidDo(){Console.WriteLine("Foo.Do");}}classBar:Foo{publicstaticnewvoidDo(){Console.WriteLine("Bar.Do");}}我不明白类Bar中Do方法的staticnew修饰符。在C#中,静态方法只能用类名调用,不能用对象名调用。所以,我认为拥有"new"与没有"new"之间没有任何区别。一般情况下,如果某些语法是不必要的,C#只是将其视为错误。有人知道为什么C#允许这种语法吗?