我明白,誠信是一個非空值,但存在這樣的情況MVC在這裏我們使用C#中的Int與Null相同嗎?
public ActionResult Myfunction(int modelattr)
{
if (modelattr != 0) // how is null handled as 0?
{
// do some code
}
}
怎麼是空的0處理?
我明白,誠信是一個非空值,但存在這樣的情況MVC在這裏我們使用C#中的Int與Null相同嗎?
public ActionResult Myfunction(int modelattr)
{
if (modelattr != 0) // how is null handled as 0?
{
// do some code
}
}
怎麼是空的0處理?
上面的答案已經給出了關於int不能爲空以及如何創建可爲空的int的原因的充足信息。但是,要解決你正在尋找到(不具有傳遞到動作的ID)的問題,您需要具備以下條件:
在你的路由配置(注意選配ID參數):
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
然後調整自己的控制器動作的簽名相匹配的一個空值測試沿着以下:
public ActionResult Myfunction(int? modelattr)
{
if (modelattr.HasValue()) //this will test if the nullable int has a value or is null
{
// do some code
}
}
最後,您可能想反轉的if語句,這取決於你想要做什麼減少執行代碼塊的嵌套如果參數爲空。例如:
public ActionResult Myfunction(int? modelattr)
{
if (!modelattr.HasValue()) //this will test if the nullable int has a value or is null
{
//throw an exception or return a route to another page
}
//now do your processing, no need to have to stay inside of the if statement.
}
和int
不能是null
。期。許多系統使用0
作爲「默認」值,並在這種情況下應用特殊邏輯,但不能爲空。
一個int?
(快捷方式Nullable<int>
)CAN BU null
但你的例子不使用它。
可能值得補充的是'int?'可以爲空。 'int?'語法是'Nullable
並在您的示例中,modelattr是一個int。所以你永遠不能通過int?到你的功能。 –
現在來了一個重複的答案急 - - –
int永遠不會爲null,因爲它是不可爲空的值類型。如果您想要再嘗試分配一個空值到int如下
int i = null;
它會給你錯誤的
無法將null轉換到「詮釋」,因爲它是一個非空的值類型
結構不能爲空,並且int
is a struct(int
是System.Int32
的別名)。
如果您想知道如果您沒有爲該值分配任何內容(例如您有一個int
作爲您從未設置的類的屬性),那麼「默認」值將是什麼,您可以獲得該值的default(int)
。
如果你確實需要一個空值的結構,你可以使用Nullable包裝。通常這可以縮短到int?
。
那麼你實際上問的是,由於這條路線:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
那麼,如何是,如果沒有指定控制器通過爲0的id
值。
有(至少)兩種可能性:
無論如何,沒有什麼是將空值轉換爲0.有些代碼在沒有指定id時提供默認值。
空值不能用int類型表示。 0是int類型的默認值。有int嗎?或者可以爲空的可以處理null –
user2509738
null!= 0,0!= null。 null == null。 0 == 0 –
你在這裏問什麼? 'modelattr'是一個int。你爲什麼認爲它是空的? –