Required像这样使用数据注释:
[Required]
public int somefield {get; set;}
Run Code Online (Sandbox Code Playgroud)
将somefield设置为Not Null数据库,如何设置某个字段
以允许NULL?,我尝试通过SQL Server Management Studio设置它,但实体框架将其设置回Not Null.
我想将Web表单转换为Java中的模型.
在C#中我可以这样写:
<input name="id" value="" type="text"/>
public class Test
{
public int? Id{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
在id可以为空.
但是在Java中使用struts2时会引发异常:
Method "setId" failed
Run Code Online (Sandbox Code Playgroud)
那么如何用Java编写这个案例呢?
如何检查布尔值是否为空?所以,如果我知道"hideInNav"为空.如何阻止它进一步执行?像下面的东西似乎不起作用,但为什么?
boolean hideInNav = parent.getProperties().get("hideInNav", false);
String hideNavigation = hideInNav != null ? hideInNav : "";
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的例子:
class Program
{
class A
{
public bool B;
}
static void Main()
{
System.Collections.ArrayList list = null;
if (list?.Count > 0)
{
System.Console.WriteLine("Contains elements");
}
A a = null;
if (a?.B)
{
System.Console.WriteLine("Is initialized");
}
}
}
Run Code Online (Sandbox Code Playgroud)
行if (list?.Count > 0)编译完美,这意味着如果list是null,表达式Count > 0变为false默认.
但是,该行if (a?.B)抛出编译器错误,表示我无法隐式转换bool?为bool.
为什么一个人与另一个人不同?
我认为这个问题会让我在Stack Overflow上立刻成名.
假设您有以下类型:
// represents a decimal number with at most two decimal places after the period
struct NumberFixedPoint2
{
decimal number;
// an integer has no fractional part; can convert to this type
public static implicit operator NumberFixedPoint2(int integer)
{
return new NumberFixedPoint2 { number = integer };
}
// this type is a decimal number; can convert to System.Decimal
public static implicit operator decimal(NumberFixedPoint2 nfp2)
{
return nfp2.number;
}
/* will add more nice members later */
} …Run Code Online (Sandbox Code Playgroud) EmployeeNumber =
string.IsNullOrEmpty(employeeNumberTextBox.Text)
? null
: Convert.ToInt32(employeeNumberTextBox.Text),
Run Code Online (Sandbox Code Playgroud)
我经常发现自己想要做这样的事情(EmployeeNumber是Nullable<int>因为它是在LINQ到SQL的DBML对象,其中列允许NULL值的属性).不幸的是,编译器认为"'null'和'int'之间没有隐式转换",即使这两种类型在对自己的可空int的赋值操作中都是有效的.
由于内联转换需要在.Text字符串上发生(如果它不为空),因此Null合并运算符不是我能看到的选项.
据我所知,唯一的方法是使用if语句和/或分两步进行分配.在这种特殊情况下,我发现非常令人沮丧,因为我想使用对象初始化器语法,这个赋值将在初始化块中...
谁知道更优雅的解决方案?
我有几个地方需要比较2(可空)值,看看它们是否相同.
我认为框架中应该有一些东西可以支持这个,但找不到任何东西,所以请注意以下几点:
public static bool IsDifferentTo(this bool? x, bool? y)
{
return (x.HasValue != y.HasValue) ? true : x.HasValue && x.Value != y.Value;
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的代码中 if (x.IsDifferentTo(y)) ...
然后我有类似的可以为空的int,可空的双打等方法.
是否有更简单的方法来查看两个可空类型是否相同?
更新:
原来这个方法存在的原因是因为代码已经从VB.Net转换而来,其中Nothing = Nothing返回false(与C#相比,null == null返回true).应该使用VB.Net代码.Equals....
我发现了一段用 C# 编写的代码,貌似是 8.0 版。在代码中,在调用方法之前有一个感叹号。这部分代码是什么意思,最重要的是,它的用途是什么?
var foo = Entity!.DoSomething();
Run Code Online (Sandbox Code Playgroud) 我正在看这篇文章,并且正在努力遵循解释提升运算符的VB.NET示例.似乎没有相应的C#示例或教程.我一般都没有太多关于运算符重载的经验,因此在阅读可空类型的同时尝试使用VB.NET等价物可能不是最好的开始...
是否有人能够解释提升的运算符以及它们如何被可空类型使用?它只是意味着可空类型本身不会重载运算符,并将使用它所代表的基础类型的运算符吗?
关于提升的运营商似乎没有太多关于SO的信息,所以希望这也可以帮助其他人.
查询以检查列是否可为空(列中是否允许空值).它应该优选返回yes/no或1/0或true/false.
nullable ×10
c# ×7
.net ×2
java ×2
boolean ×1
c#-6.0 ×1
c#-8.0 ×1
code-first ×1
compiler-bug ×1
null ×1
performance ×1
roslyn ×1
sql-server ×1