开发者

Meaning of the ? operator in C# for Properties [duplicate]

开发者 https://www.devze.com 2023-03-23 22:24 出处:网络
This question already has answers here: Closed 11 years ago. Possible Duplicate: ? (nullable) operator in C#
This question already has answers here: Closed 11 years ago.

Possible Duplicate:

? (nullable) operator in C#

In System.Windows.Media.Animation I see the code as follows:

    public double? By { get; set; }

What does the ? operator do here? Does anyone know?

I'v开发者_C百科e tried to google this but it's hard to search for the operator if you don't know what its called by name. I've checked the page on Operators (http://msdn.microsoft.com/en-us/library/6a71f45d(v=vs.80).aspx) but the ? operator is not listed there.

Thanks!


The ? is a type decorator. T? is the same as Nullable<T>, i.e. a nullable value type.

The documentation of the By property explains why it’s used here:

The property controls how A DoubleAnimation progresses; but instead of setting the By property, you can also set the From and To properties (or either) to control animation progress. Every combination of properties (except To and By) is allowed, so there needs to be a way to signal that a property is not set – hence it’s nullable.

Use the By property when you want to animate a value "by" a certain amount, rather than specifying a starting or ending value. You may also use the By property with the From property.


The ? means it's nullable (the value can be set to null.

Nullable Types (C# Programming Guide)


This is not an operator. Rather, this is a special shorthand syntax for declaring nullable values.


It is nullable propertie, that means that you can set By = null, without ? you'll get error that double cant be null


? stands for Nullable types, this qualifies By in your case to hold a null value which is not possible for a value type


It means the type is nullable.

See this page for details.


this is syntactic sugar handled by the C# compiler.

It basically treat "double?" as Nullable which allows the value to be null. It basically wraps the double value inside another object.

0

精彩评论

暂无评论...
验证码 换一张
取 消