1樓:
datetime? taskstartdate 這裡的 ? ,你的理解是對的。
這個?的作用,是讓原本不支援null值的型別,可以取值為null,例如: datetime 和 int 型別,本身是不能=null的,加了?
,就可以=null了。
milestone.istask ?? false,這裡的 ?? 叫做 「null 合併運算子」,它的用法是:
如果此運算子的左邊的值不為 null,就返回左邊的值;否則返回右邊的值。
2樓:小尾巴崽崽
c# 雙問號運算表示式
1、單問號(?)
作用:用於給變數設初化的時候,給變數(int型別)賦為null值,而不是0。
例子:public int a; //預設值為0
public int ?b; //預設值為null
2、雙問號(??)
作用:用於判斷並賦值,先判斷當前變數是否為null,如果是就可以賦一個新值,否則跳過。
例子:public int? b; //預設值為null public int isnullorskip()
錯誤例子:
public int b; //預設值為0 public int isnullorskip()
3樓:今天去幹嘛
我們的數學老師貌似很是憐香惜玉。有次上課,一男生遲到了,老師就讓他做一百個俯臥撐,過了一會,一女生也遲到了,但是老師卻說:「剛罰他做一百個俯臥撐,你去數著去」。全班頓時凌亂。
c#問號的作用 10
4樓:冰麟輕武
三元表示式 和 if類似
只不過 if可以判斷後執行語句
三元表示式只能判斷後賦值
三元表示式的符號是 ?(問號)和:(冒號)比如if的式子
string s = null;
if(1>1)
else
可以寫成這樣的三元表示式
string s = (1 > 1)? "對":"錯";
如果表示式 1>1 成立 則s = 對 否則 s = 錯在上面的式子中 ()括號是可有可無的,帶上看的清楚一些
5樓:jim小子
你找下 三元運算子 就會明白的。
表示式a ?b : c
意思是:如果表示式a為真,則整個表示式的值為b,否則值為c。
6樓:狐狸——精靈
只是一個判斷的表示式,三元運算子,左是右非
c#中兩個問號是什麼意思 "??"
7樓:乜書彤
c#中兩個問號(「?」)的作用是判斷「?」左邊的物件是否為null,如果不為null則使用「?」左邊的物件,如果為null則使用「?」右邊的物件。
c#變數定義中含問號代表什麼
8樓:匿名使用者
int本來是一個值型別,不可以賦予空值
但這樣一個問號,就是使得num成為一個可空型別,你後面這樣寫也是可以的了:
num = null
這樣的作用就是有些時候當某些int值無意義,你又不想用0等特殊值來表示。
9樓:一個人『等待
c#變數定義中含問號代表該變數允許為空(null)。
可以為 null 的型別可以表示基礎型別的所有值,另外還可以表示 null 值。 可以為 null 的型別可通過下面兩種方式中的一種宣告:
system.nullablevariable
- 或 -
t? variable
t 是可以為 null 的型別的基礎型別。 t 可以是包括 struct 在內的任何值型別;但不能是引用型別。
-------------------------------------------
可以檢視msdn幫助:「可以為 null 的型別(c# 程式設計指南)」和「使用可以為 null 的型別(c# 程式設計指南)」。
10樓:匿名使用者
1. 可空型別修飾符
例如 int?, datetime?之類的 申明時加?表示值型別也可為空
2. 三元表示式:
例如:x?y:z 表示如果表示式x為true,則返回y;如果x為false,則返回z,有時用來替代簡化if{}else{} 的
11樓:
可空型別修飾符「t?」:可空型別的基礎型別可以是任何非可空值型別或任何具有struct約束的型別引數,但不能是可空型別或引用型別。
例如:int?代表是可空的整形,而int??
則是無效型別。即可空型別可以表示其基礎型別的所有值和一個額外的空值。語法 t?
是system.nullable的縮寫形式。可空型別具有一個hasvalue的bool型別只讀屬性,當可空型別例項的該屬性為true時,則表示該例項是非空例項,包含一個已知值value;hasvalue為false時,訪問value屬性將導致 system.
invalidoperationexception。可空型別t?具有一個型別為t的單個引數的公共建構函式,如new int?
(123)將獲得一個值為123的int?型別例項。從t?
到由t實現的任何介面都存在裝箱轉換,並且從由t實現的任何介面都存在到t?的拆箱轉換。但是任何情況下可空型別都不滿足介面約束,即使基礎型別實現了該特定介面。
12樓:匿名使用者
是可空型別的變數。不過引用型別的變數是無法以這種形式命名變數的。如string?
str = new string();語法是錯誤的。一般情況可空型別在想資料庫中傳參很有用的。因為資料庫中的欄位可能使設定為空型別的。
那麼這時c#中的可空型別(?)有大顯其用了!
13樓:匿名使用者
可為空值,即null
c#中,為什麼在值型別後面加問號
14樓:驚慌夜
int本來是一個值型別,不可以賦予空值 但這樣一個問號,就是使得num成為一個可空型別,你後面這樣寫也是可以的了: num = null 這樣的作用就是有些時候當某些int值無意義,你又不想用0等特殊值來表示。
15樓:
為什麼不用class而要用struct呢?你以前是搞c的吧? c#的結構體
是值型別的,是直接儲存在棧上面的,而不是像class一樣是用引用型別。 值型別變數包含其例項資料,每個變數儲存了其本身的資料拷貝,所以如果值型別允許你**那樣的話,就會出現死迴圈了。 最後,你的**直接用class代替struct,然後去掉那幾個問號,就可以了。
16樓:匿名使用者
int i=null;報錯
int? i=null;通過
我感覺就這一個區別
c#**中的問號是什麼意思
17樓:匿名使用者
引用型別可以使用空引用表示一個不存在的值,而值型別通常不能表示為空。
例如:string str=null;//是正確的。
int i=null;//編譯器將報錯。
為了使值型別也可為空,可空型別出現了,可空型別使用可空型別修飾符?來表示,表現形式為t?。
例:int?表示是可空的整形,datetime?表示為可空的時間。
int? i=null;//表示可空
t?其實是system.nullable(泛型結構)的縮寫形式,也就意味著當你用到t?時編譯器在編譯時會把t?編譯成system.nullable的形式,
例如:int?,編譯後便是system.nullable的形式。
語法為:條件表示式?表示式1:表示式2;
該操作首先求出條件表示式的值(bool型別),為true時呼叫表示式1,為flase時呼叫表示式2。
其邏輯為:"如果為真執行第一個,否則執行第二個。"
例:test ? expression1 : expression2
test 任何 boolean 表示式。
expression1 test 為 true 時返回的表示式。可能是逗點表示式。
expression2 test 為 false 時返回的表示式。可能是逗點表示式。
例如:string prm1="4";
string prm2="5";
string prm3 = prm1==prm2?"yes":"no" // 此時prm3值為"no".
空合併運算子 (null coalescing operator) ??
用於定義可空型別和引用型別的預設值。如果此運算子的左運算元不為 null,則此運算子將返回左運算元;否則返回右運算元。
例:a??b 如果 a 為非空,則 a ?? b 的結果為 a;否則結果為 b 。
listlist=null;
listlist1=list??new list();//如果list為null,list1就會為一個新
//的例項
空合併運算子為右結合運算子,即操作時從右向左進行組合的。
例:「a??b??c」的形式按「a??(b??c)」計算。
string s = "123456789";
var r1 = s?.last();
s = null;
var r2 = s?.last();
當變數不為null時,正常執行;當變數為null時,返回null。
18樓:丹誠禹賦
c#中兩個問號(「?」)的作用是判斷「?」左邊的物件是否為null,如果不為null則使用「?」左邊的物件,如果為null則使用「?」右邊的物件。
asp.***中的問號什麼作用
19樓:匿名使用者
asp.***中有問號?你使用的可以c#語言?莫非你指的是?:運算?
?:是條件選擇運算,是一個二元運算子.使用如下:
string s = a>b?"yes":"no";
如果變數a大於變數b,則s會賦值為"yes"字串,否則賦值為"no"字串.也就是說?前邊是條件,後邊的兩個值是同型別的,表示式的結果是條件為真時取前邊的值,為否則取後邊的值!
20樓:匿名使用者
普通的變數不可為null型別,但是加上?就可以為空了
int?是一種型別,普通的int不能為null,而用int?,其值可以為null
int?或者nullable 表示基礎型別為值型別的物件,值型別與引用型別一樣也可以分配 nullnothingnullptrnull 引用
對於一個型別,如果既可以給它分配一個值,也可以給它分配 nullnothingnullptrnull 引用(在 visual basic 中為 nothing)(表示沒有任何值),我們就說這個型別是可空的。因此,可空型別可表示一個值,或表示不存在任何值。例如,類似 string 的引用型別就是可空型別,而類似 int32 的值型別不是可空型別。
由於值型別的容量只夠表示適合於該型別的值,因此它不可為空;值型別沒有表示空值所需的額外容量。
在三木運算中,也出現了? 例如string s = a>b?"yes":"no";
如果a>b,s=yes
不大於的話,s=no
相當於if..else.
vfp中問號和兩個問號的區別vfp中一個問號和兩個問號的區別
1 一個問號?表示 換行輸出 到螢幕2 兩個問號?表示 不換行輸出到螢幕 vfp中,其它常用符號表示內容如下 1 表示 不等於 2 表示 指定位置輸出,x,y 3 表示 代指所有,不論長短,在程式中,置於行首則表示後面是註釋文字。4 表示 兩個以上出現才表示符號後面是註釋文字,程式並不執行 僅在程式...
關於行列式的證明題,如圖。請問圖2中打問號和波浪號的地方是怎麼得出來的
這個是假設法,先假設一個命題在n 題目已假設 dn n 1 所以d k 1 k 1 1 d k 2 k 2 1 題目中行列式的符號是如何判斷的?30 我怎麼感覺這個寫的不標準呢。因為行列式求值可以列舉1 n的所有排列,以排列的逆序對個數作為 1的次數,設排列為p 1 n 則當前貢獻的值為 1 逆序對...
JNIEnv的使用在C和C 中的區別
c 中delete和delete的區別如下 在 用 new 分配的單個物件的記憶體空間的時候用 delete,用 new 分配的一組物件的記憶體空間的時候用 delete。程式舉例說明 include using namespace std class t t int main 基本型別的物件沒有解...