标签: nullable

C#将int类型的对象转换为可以为空的枚举

我只需要能够将一个对象转换为可以为空的枚举.对象可以是enum,null或int.谢谢!

public enum MyEnum { A, B }
void Put(object value)
{
    System.Nullable<Myenum> val = (System.Nullable<MyEnum>)value;
}

Put(null);     // works
Put(Myenum.B); // works
Put(1);        // Invalid cast exception!!
Run Code Online (Sandbox Code Playgroud)

c# enums nullable

17
推荐指数
2
解决办法
2万
查看次数

为什么我允许将非可空类型与null进行比较?

可能重复:
C#可以将值类型与null进行比较

如果我尝试null在C#中分配一个不可为空的类型:

System.DateTime time = null;
Run Code Online (Sandbox Code Playgroud)

我会得到一个编译时错误:

错误CS0037:无法将null转换为'System.DateTime',因为它是一个不可为空的值类型

这是有道理的.但如果比较相同的类型null:

System.DateTime time = obtainFromSomewhere();
if( time == null ) {
    //whatever;
}
Run Code Online (Sandbox Code Playgroud)

没有编译时错误.这对我来说没有意义 - 如果我不能分配null那么为什么会这样null呢?

为什么我可以将非可空类型与null?进行比较?

.net c# nullable non-nullable

17
推荐指数
2
解决办法
3544
查看次数

如何从数据库中获取可为空的DateTime

我的SQL Server数据库包含可为空的DateTime值.如何在C#中的应用程序中将它们转换为可以为空的DateTime对象?

这是我认为它会是什么样子,但它没有:

DateTime? dt = (DateTime?) sqldatareader[0];
Run Code Online (Sandbox Code Playgroud)

c# sql-server datetime nullable sqldatareader

17
推荐指数
2
解决办法
2万
查看次数

无法使@ManyToOne关系成为可空

我有一个多对一的关系,我想要可以为空:

@ManyToOne(optional = true)
@JoinColumn(name = "customer_id", nullable = true)
private Customer customer;
Run Code Online (Sandbox Code Playgroud)

不幸的是,JPA将我的数据库中的列设置为NOT NULL.有谁能解释一下?有没有办法让它发挥作用?请注意,我使用JBoss 7,JPA 2.0和Hibernate作为持久性提供程序和PostgreSQL 9.1数据库.

编辑:

我找到了问题的原因.显然,这是由于我在引用实体中定义主键的方式Customer:

@Entity
@Table
public class Customer { 
    @Id
    @GeneratedValue
    @Column(columnDefinition="serial")
    private int id;
}
Run Code Online (Sandbox Code Playgroud)

看来,使用@Column(columnDefinition="serial")主键会自动将引用它的外键设置到NOT NULL数据库中.将列类型指定为时,这确实是预期的行为serial吗?在这种情况下,是否有解决方案来启用可为空的外键?

先感谢您.

nullable many-to-one jpa-2.0 postgresql-9.1 jboss7.x

17
推荐指数
2
解决办法
3万
查看次数

如何将null设置为GUID属性

我有一个Employee类型的对象,它有一个Guid属性.我知道如果我想设置为null我必须将我的type属性定义为可空的Nullable<Guid>prop或Guid?支柱.

但在我的情况下,我无法改变道具的类型,所以它将保持为Guid类型和我的同事,我们不想使用Guid.Empty.

有没有办法将我的属性设置为null或string.empty,以便将数据库中的字段重新设置为null.

我有一个从string.empty转换为null的机制,但如果将更改为接受空guid为null,我将更改许多内容.

请帮忙!

c# guid nullable

17
推荐指数
5
解决办法
8万
查看次数

为什么django管理员不接受Nullable外键?

这是我的一个模型的简化版本:

class ImportRule(models.Model):
  feed = models.ForeignKey(Feed)
  name = models.CharField(max_length=255)
  feed_provider_category = models.ForeignKey(FeedProviderCategory, null=True)
  target_subcategories = models.ManyToManyField(Subcategory)
Run Code Online (Sandbox Code Playgroud)

此类管理用于将项目列表从订阅源导入数据库的规则.

尽管管理系统在模型中声明为可空,但管理员系统不会在不选择feed_provider_category的情况下添加ImportRule.数据库(SQLite目前)甚至检查出ok:

>>> .schema
...
CREATE TABLE "someapp_importrule" (
  "id" integer NOT NULL PRIMARY KEY,
  "feed_id" integer NOT NULL REFERENCES "someapp_feed" ("id"),
  "name" varchar(255) NOT NULL,
  "feed_provider_category_id" integer REFERENCES "someapp_feedprovidercategory" ("id"),
);
...
Run Code Online (Sandbox Code Playgroud)

我可以很容易地在python shell中创建对象:

f = Feed.objects.get(pk=1)
i = ImportRule(name='test', feed=f)
i.save()
Run Code Online (Sandbox Code Playgroud)

...当然,管理系统不会让我编辑它.如何让管理员让我编辑/创建对象而不指定该外键?

nullable foreign-keys django-admin

16
推荐指数
2
解决办法
1万
查看次数

C# - 基本问题:什么是'?'?

我想知道?C#中的含义是什么?
我看到的东西是:DateTime?或者int?.我想这是特定于C#4.0的?
我不能在谷歌找它,因为我不知道这个东西的名字.
问题是我使用的日期时间和我有很多投的错误(从DateTimeDateTime?).

谢谢

.net c# nullable

16
推荐指数
4
解决办法
1665
查看次数

如何将字符串转换为在运行时确定的可为空类型?

我有下面的代码,我需要将一个字符串转换为一个也从String指定的类型:

 Type t = Type.GetType("System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");

            object d = Convert.ChangeType("2012-02-23 10:00:00", t);
Run Code Online (Sandbox Code Playgroud)

我得到以下错误消息:

Invalid cast from 'System.String' to 'System.Nullable`1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.
Run Code Online (Sandbox Code Playgroud)

怎么会很好的可能?

我知道一种丑陋的方法是使用if来检查类型是否可以为空:

    Type possiblyNullableType = Type.GetType("System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");

    var underlyingType = Nullable.GetUnderlyingType(possiblyNullableType);

    Object result;

    // if it's null, it means it wasn't nullable
    if (underlyingType != null)
    {
        result = Convert.ChangeType("2012-02-23 10:00:00", underlyingType);
    }
Run Code Online (Sandbox Code Playgroud)

会有更好的方法吗?

谢谢,

c# asp.net generics datetime nullable

16
推荐指数
2
解决办法
2万
查看次数

Xcode 6.3上的可空性问题

我昨天升级到了Xcode 6.3.从那以后,我一直无法构建任何具有Parse.framework的东西.对于PFConstants.h,我得到错误

nullability specifier '_nullable' cannot be applied to non-pointer

我之前从未见过这个错误,除了更新到6.3之外什么都没有改变.有任何想法吗?

xcode nullable ios parse-platform

16
推荐指数
1
解决办法
4316
查看次数

是否可以在init中编写nonnull-annotation?

现在在objective-c中有两个新的注释:nonnullnullable.
我应该将哪一个用于init方法的返回类型规范?

- (instancetype)init {
    if (self = [super init]) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

可空的声音:
有一个"if"来检查[super init]返回什么,并且不能保证它永远不会返回nil.

nonnull的声音:
当init返回nil并且我从不检查它时,我不知道真实的情况.

nullable objective-c init

16
推荐指数
1
解决办法
2314
查看次数