3

可能重复:
C# - 基本问题:什么是'?'?

我在函数参数中找到了这个语句。

public static SyndicationFeed GetDataFeed(...... int? maxResults)

那是什么意思?

4

7 回答 7

11

诠释?意味着它是一个可为空的 int,因此不仅允许整数值,还允许空值。

于 2012-10-23T13:05:40.467 回答
7

它是一个可空类型Nullable<T>。根据MSDN

DataTypeint基本上是一种值类型,不能保存 null 值,但是通过使用 Nullable Type,您实际上可以在其中存储 null。

maxResults = null; // no syntax error

您可以Nullable Types使用两种语法声明:

int? maxResults;

或者

Nullable<int> maxResults;
于 2012-10-23T13:06:49.343 回答
2

?表示可以为空。这意味着该类型可以包含一个值或为空。

int? num = null; // assign null to the variable num

http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.100).aspx

于 2012-10-23T13:05:59.890 回答
2

这是一个快捷方式Nullable<int>- 这意味着maxResults可以将其分配为空。

于 2012-10-23T13:06:06.097 回答
2

代表一个int type that can be assigned null.

于 2012-10-23T13:07:30.827 回答
1

通常一个 int 不能有一个值,但是使用 '?' 前缀允许它为Nullable

int? myNullableInt = null; //Compiles OK
int myNonNullableInt = null; //Compiler output - Cannot convert null to 'int' because it is a non-nullable value type
int myNonNullableInt = 0; //Compiles OK

在您的问题/代码的上下文中,我只能假设它负责根据?maxResults的值返回SyndicationFeed结果,但是由于它可以为空,因此该值可能为空。

于 2012-10-23T13:10:22.387 回答
1

你不能分配null给任何值类型,包括integer。你会得到一个例外

int someValue;
someValue=null;//wrong and will not work

但是当你使它可以为空时,你可以分配空。要使 ValueType 为 Nullable,您必须在 valuetype 关键字后面加上符号 ?

<type>? someVariable;

int? someValue;
someValue=null;//assigns null and no issues.

现在你不会得到异常,你可以分配 null。

于 2012-10-23T13:11:15.397 回答