草庐IT

可选性

全部标签

c# - 如何处理 null 或可选的 DLL 结构参数

如何处理使用pinvoke从C#调用的dll方法中的可选struct参数?例如,lpSecurityAttributesparameterhere不存在时应传递null。传递struct的正确方法似乎是使用ref,但它不能有可选参数,或者通常采用null.有什么方法可以实现? 最佳答案 你有几个选择1)使用class而不是struct我觉得这个方法最简单。只需声明struct作为class:[StructLayout(LayoutKind.Sequential)]publicclassCStruct{//member-list}然后

c# - Action 作为函数中的可选参数

这个问题在这里已经有了答案:OptionaldelegatesinC#[duplicate](4个答案)关闭9年前。是否可以将Action作为函数中的可选参数?button2Action应该是可选的。publicvoidDrawWindow(Rectp_PositionAndSize,stringp_Button2Text="NotInUse",Actionp_Button2Action){//Stuffhappenshere}我用例如p_Button2Action=delegate{Debug.Log("NotInUse");试过了}但它不会编译,因为p_Button2Action的

c# - 通用方法和可选参数

是否可以写出类似的结构?我想以某种方式为类型T的参数设置默认值。privateTGetNumericVal(stringsColName,TdefVal=0){stringsVal=GetStrVal(sColName);TnRes;if(!T.TryParse(sVal,outnRes))returndefVal;returnnRes;}此外,我还找到了以下链接:GenerictypeconversionFROMstring我想,这段代码一定可以工作privateTGetNumericVal(stringsColName,TdefVal=default(T))whereT:IConv

c# - 我可以将 DataContractSerializer 配置为不在输出 XML 中创建可选(即 Nullable<> 和 List<>)元素吗?

我正在使用新的.NET3.0DataContractSerializer。我有要序列化的Nullable>和List>对象。示例:[DataContract(Namespace="")]classTest{publicstaticvoidGo(){Testtest=newTest();vardcs=newDataContractSerializer(typeof(Test));dcs.WriteObject(newStreamWriter("test.xml").BaseStream,test);}[DataMember]publicNullableNullableNumber=nul

c# - 是否可以使 Razor 部分成为可选的?

如果我有一个页面:@sectionSomeStuff{ThisisasectionIjustaddered}布局是否有可能不呈现此部分,或者这是否与概念上的工作方式相反。似乎能够不在页面上呈现某些部分会很有用(除非我不正确地考虑这一点)。编辑:包含错误消息可能会有所帮助,当我将一个部分放入main页面时,layout页面失败并显示:已定义以下部分但还没有为布局页面“/Views/Layouts/_Layout1.cshtml”:“SomeStuff”呈现。好像它迫使我呈现页面上的每个部分或其他东西。换句话说,在Layout.cshtml中,我不调用@RenderSection,但在In

c# - 可选的通用类型

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。有没有更好的写法?也许作为一个类(class),而不是两个类(class)。usingSystem;namespaceSnippetTool.Repositories{publicabstractclassARepositorywhereTProvider:class{protectedTProviderProvider{get;set;}protect

c# - 带有可选小时数的 TimeSpan FormatString

我有一个时间跨度,ts,它主要是分和秒,但有时是几小时。我希望ts返回一个格式化的字符串,它将给出以下结果:3:30(hoursnotdisplayed,showingonlyfullminutes)13:301:13:30(showsonlyfullhoursinsteadof01:13:30)到目前为止我有:stringTimeSpanText=string.Format("{0:h\\:mm\\:ss}",MyTimeSpan);但它没有给出上述结果。我怎样才能达到我想要的结果? 最佳答案 也许你想要这样的东西stringTi

c# - LINQ to XML 可选元素查询

我正在处理一个现有的XML文档,它的结构(部分)如下:Bob1Larry我正在使用LINQtoXML查询XDocument以检索所有这些条目,如下所示:varitems=fromginxDocument.Root.Descendants("Group").Elements("Entry")selectnew{name=(string)g.element("Name").Value,id=g.Elements("ID").Count()>0?(string)g.Element("ID").Value:"none"};“ID”元素并不总是存在,所以我的解决方案是上面的Count()爵士乐。

c# - ServiceStack.Net 的多个可选参数

我正在尝试使用ServiceStack.Net实现具有多个可选参数的服务目前我的路线是这样的Routes.Add("/save/{Year}/{Week}");我想像这样支持uris:/save/2010/12/Monday/4/Tuesday/6/Wednesday/7即星期一=4,星期二=6,星期三=7但是我希望能够忽略天数,即调用该服务的人可以决定他们是否要保存每一天的每个值...即像这样缺少参数值?Monday=4&Wednesday=7&Friday=6当然,一种解决方案是使用以下路由,当我不想保存值时只传递0。Routes.Add("/save/{Year}/{Week}/

c# - 当不能简单地重载时混合可选参数和参数

类似于thisquestion,我想将可选参数与params关键字混合使用,这当然会产生歧义。不幸的是,创建重载的答案不起作用,因为我想利用调用者信息属性,如下所示:publicvoidInfo(stringmessage,[CallerMemberName]stringmemberName="",[CallerLineNumber]intlineNumber=0,paramsobject[]args){_log.Info(BuildMessage(message,memberName,lineNumber),args);}在没有可选参数的情况下创建重载会更改调用站点,从而阻止这些特定