在JavaScript中,我如何获得:
Type? v = x?.y?.z;
if (v.HasValue) {
var value = v.GetValueOrDefault();
// code using value
}
Run Code Online (Sandbox Code Playgroud)
据我所知,Type?
表明Type
是空的,但假设x
,y
以及z
是当地居民,这是什么x?.y?.z
意思?
假设myObj为null.写这个是安全的吗?
if(myObj != null && myObj.SomeString != null)
Run Code Online (Sandbox Code Playgroud)
我知道有些语言不会执行第二个表达式,因为在执行第二个部分之前&&的计算结果为false.
假设我有一个名为Frog的类,它看起来像:
public class Frog
{
public int Location { get; set; }
public int JumpCount { get; set; }
public void OnJump()
{
JumpCount++;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要两件事的帮助:
从项目Roslyn
,文件src\Compilers\CSharp\Portable\Syntax\CSharpSyntaxTree.cs
在线路446
有:
using (var parser = new InternalSyntax.LanguageParser(lexer, oldTree?.GetRoot(), changes))
Run Code Online (Sandbox Code Playgroud)
是什么?.
呢?
它检查oldTree是什么null
,如果不是那么它正在运行GetRoot
方法,如果没有那么它返回什么?这是我的第一个假设(可能是错误的),但我无法继续前进.(确认,和/或回答新问题)
我用Google搜索What is ?. C#
,没有任何相关内容,就好像它忽略了我的?.
(?)
我最近在浏览别人的代码时遇到了这个
var name = Product.Buyer?.FirstName + " " + Product.Buyer?.LastName;
Run Code Online (Sandbox Code Playgroud)
?.
c#中的this( )是什么意思
我有以下问题.
在课堂上我宣布:
vulnerabilityDetailsTable.AddCell(new PdfPCell(new Phrase(currentVuln.Published.ToString(), _fontNormale)) { Border = PdfPCell.NO_BORDER, Padding = 5, MinimumHeight = 30, PaddingTop = 10 });
Run Code Online (Sandbox Code Playgroud)
而有趣的部分是:currentVuln.Published.ToString().这工作很好.
发布是一个声明为可为空的DateTime属性,这样:
public System.DateTime? Published { get; set; }
Run Code Online (Sandbox Code Playgroud)
问题是,在之前的方式中,currentVuln.Published.ToString()的打印值类似于18/07/2014 00:00:00(时间也包含在日期中).
我想只显示日期而不显示时间,所以我尝试使用类似的东西:
currentVuln.Published.ToShortDateString()
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我在Visual Studio中获取以下错误消息:
错误4'System.Nullable <System.DateTime>'不包含'ToShortDateString'的定义,并且没有可以找到接受类型'System.Nullable <System.DateTime>'的第一个参数的扩展方法'ToShortDateString'(是你吗?)缺少using指令或汇编引用?)C:\ Develop\EarlyWarning\public\Implementazione\Ver2\PdfReport\PdfVulnerability.cs 93 101 PdfReport
这似乎发生了,因为我的DateTime字段可以为空.
我错过了什么?我该如何解决这个问题?
Visual Studio中突出显示了以下代码片段以及简化它的建议.
if ( drawMethodsDelegate != null )
drawMethodsDelegate ( e.Graphics );
Run Code Online (Sandbox Code Playgroud)
当我点击灯泡建议时,Visual Studio将其重构为以下内容
drawMethodsDelegate?.Invoke ( e.Graphics );
Run Code Online (Sandbox Code Playgroud)
和不.问号不是拼写错误.我不明白问号用于什么,我在MSDN上找不到任何相关的东西.我还查看了Tutorial Point Delegates页面,但没有找到有用的信息.
我是我的新项目,他们在项目中使用Entity Framework和LINQ来操作数据库数据.在这里,我无法理解为什么在以下查询中的get()方法之后使用问号(?).是否可以使用(?)标记,如下所示?如果是,那么请你详细解释一下.
uOW.ApplicationDetailsRepository.Get()?
.Where (x=>x.Name=="SomeConditions").Tolist();
Run Code Online (Sandbox Code Playgroud) 我想写下面的陈述:
things.ToList().ForEach(x =>
{
x.thingname = x.thingname.Replace("oldvalue", "newvalue");
x.thingname2 = x.thingname2.Replace("oldvalue", "newvalue");
});
Run Code Online (Sandbox Code Playgroud)
此代码工作正常,并成功替换工作.但是如果x.thingname
为null则代码错误.如何在替换之前检查空值?
这些运算符有什么区别?
var c = foo?.Prop1;
Run Code Online (Sandbox Code Playgroud)
var c = foo!.Prop1;
Run Code Online (Sandbox Code Playgroud)
顺便说一句,Prop1
是一个int
.