草庐IT

optional-parameters

全部标签

c# - 覆盖方法中的默认参数值

在下面的代码中,对Method2的调用接收值为False的Value参数,即使基类根本没有为该参数声明默认值,而派生类将True声明为默认值。可以说(正如此处类似示例所做的那样:C#optionalparametersonoverriddenmethods)编译器首先使用基类的方法声明(这是真的,因为可以通过在调用Method1前加上前缀来更改此行为this.),但在这种情况下,基根本不声明默认值。对此有合理的解释吗?usingSystem;classBase{publicvirtualboolMethod1(boolValue){returntrue;}publicvirtualbo

c# - 如何修复 'T' 是 'type parameter' 但被用作 'variable' 编译错误

我需要检查泛型类型参数T是MyEntity还是它的子类。下面的代码会导致这个编译器错误:'T'isa'typeparameter'butisusedlikea'variable'如何修复?publicclassMyEntity{}staticvoidTest(){//Error34'T'isa'typeparameter'butisusedlikea'variable'if(TisMyEntity){}} 最佳答案 您可以使用IsAssignableFromType上的方法检查是否有一个Type可以分配给另一个。if(typeof(

c# - C# 中的可选委托(delegate)

这个问题在这里已经有了答案:Defaultvalueongenericpredicateasargument(3个答案)关闭9年前。这是两个扩展方法重载的简单示例publicstaticclassExtended{publicstaticIEnumerableEven(thisListnumbers){returnnumbers.Where(num=>num%2==0);}publicstaticIEnumerableEven(thisListnumbers,Predicatepredicate){returnnumbers.Where(num=>num%2==0&&predicate

c# - "Possible multiple enumeration of IEnumerable"与 "Parameter can be declared with base type"

在Resharper5中,以下代码导致list出现警告“Parametercanbedeclaredwithbasetype”:publicvoidDoSomething(Listlist){if(list.Any()){//...}foreach(variteminlist){//...}}在Resharper6中,情况并非如此。但是,如果我将方法更改为以下内容,我仍然会收到该警告:publicvoidDoSomething(Listlist){foreach(variteminlist){//...}}原因是,在这个版本中,list只枚举一次,所以改成IEnumerable不会自动

c# - 删除仅在登录页面中自动添加的 X-Frame-Options

我正在开发一个ASP.NETMVC应用程序,它需要加载到另一个网站的iframe中。但是登录页面不会出现在iframe中,因为在响应X-Frame-Options中发送了一个header,它被设置为SAMEORIGIN。因此,浏览器未在iframe中显示页面。我已经用谷歌搜索并尝试了多种方法,但没有任何效果。我正在使用ASP.NET表单例份验证。在这种情况下,IIS可能会在登录页面中添加此header以增加安全性。但我需要在我的用例中摆脱它。我尝试添加自定义header但SAMEORGIN仍以逗号添加在header中。我还尝试使用Response.Headers["X-Frame-Op

c# - MSDeploy - 允许参数在 parameters.xml 中是可选的/为空的

我正在使用msdeploy部署asp.net-mvcWeb应用程序通过teamcity.我正在使用paramaters.xml文件来操纵我的应用程序的web.config,具体应用settings部分。我有一些设置,其中只有对特定环境具有值才有效,其余时间该值应为空白(即,Property应仅在Production上具有值)。但是,当我不指定一个值时,MSDeploy给了我这个异常:Microsoft.Web.Deployment.DeploymentException:The'facebookUserToken'argumentcannotbenullorempty.atMicros

C# 4.0 - 如何处理可选的字符串参数

此代码无效:privatevoidFoo(stringoptionalString=string.Empty){//dofoo.}但是这段代码是:privatevoidFoo(stringoptionalString=""){//dofoo.}为什么?因为string.Empty是只读字段,不是常量,可选参数的默认值必须是编译时常量。所以,关于我的问题......(好吧,关注)这是我必须做的:privateconststringemptyString="";privatevoidFoo(stringoptionalString=emptyString){//dofoo.if(!stri

c# - 使用 System.Drawing.Color 类型的可选参数

我开始利用.Net4.0中的可选参数我遇到的问题是当我尝试声明System.Drawing.Color的可选参数时:publicmyObject(intfoo,stringbar,Colorrgb=Color.Transparent){//....}我希望Color.Transparent成为rgb参数的默认值。问题是,我一直收到这个编译错误:Defaultparametervaluefor'rgb'mustbeacompile-timeconstant如果我只能将原始类型用于可选参数,那真的会扼杀我的计划。 最佳答案 在这种情况下

c# - SQLCommand.Parameters.Add - 如何给出十进制值大小?

您将如何指定:Decimal(18,2)在此:SqlComm.Parameters.Add("@myValue",SqlDbType.Decimal,0,"myValue");目前我已经从设计端属性定义了precision=2。我只是好奇如何从代码中实现这一点。谢谢 最佳答案 没有Add的重载可让您直接设置小数精度,因此您需要创建一个SQlParameter对象并将其添加到集合中:SqlParameterparam=newSqlParameter("@myValue",SqlDbType.Decimal);param.SourceC

C# : how to - single instance application that accepts new parameters?

我正在创建一个使用NZB文件下载二进制文件的(C#)程序,我的应用程序在任何时候可能只有一个实例在运行。因此,当用户双击.nzb文件并且我的程序未运行时,它应该启动并处理它(简单,文件注册)。现在,如果我的程序已经在运行,我不想启动第二个实例-我希望已经运行的实例获取指定的文件。可以使用带有.IsSingleInstance技巧的VisualBasicDLL使我的应用程序成为单一实例,但我不想去那里。正确的方法似乎是使用互斥锁来确保我的应用程序是单实例的,但现在我陷入了如何将指定参数(.nzb文件)传递给已经运行的实例的问题。帮助将不胜感激!:-) 最佳答案