C# MVC 3-什么是,为什么使用?在方法中-与前一个线程相关的问题,无法上载多个db图像

C# MVC 3-什么是,为什么使用?在方法中-与前一个线程相关的问题,无法上载多个db图像,c#,asp.net,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc 3,尼克拉森·金德利几个月前为我解决了一个问题。我当时应该问他,所以这确实是我的错误。如果NickLarsen能够回复,感谢您再次联系我,如果没有,那么其他人是否可以告诉我最恰当的答案。提前谢谢 前一个线程是 NickLarsen使用了下面的代码,我想知道什么是,为什么使用?在代码中。这是代码 public ActionResult GetImage(int id, int? imageNum) { imageNum = imageNum ?? 0; // here

尼克拉森·金德利几个月前为我解决了一个问题。我当时应该问他,所以这确实是我的错误。如果NickLarsen能够回复,感谢您再次联系我,如果没有,那么其他人是否可以告诉我最恰当的答案。提前谢谢

前一个线程是

NickLarsen使用了下面的代码,我想知道什么是,为什么使用?在代码中。这是代码

    public ActionResult GetImage(int id, int? imageNum)
    {
        imageNum = imageNum ?? 0; // here

        const string alternativePicturePath = @"/Content/question_mark.jpg";
        MemoryStream stream;

        SubProductCategory4 z = db.SubProductCategory4.Where(k => k.SubProductCategoryFourID == id).FirstOrDefault();

        byte[] imageData = null;

        if (z != null)
        {
            imageData = imageNum == 1 ? z.Image1 : imageNum == 2 ? z.Image2 : imageNum == 3 ? z.Image3  : null; // here
        }

        if (imageData != null)
        {
            stream = new MemoryStream(imageData);
        }
        else
        {
            var path = Server.MapPath(alternativePicturePath);

            stream = new MemoryStream();
            var imagex = new System.Drawing.Bitmap(path);
            imagex.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
            stream.Seek(0, SeekOrigin.Begin);
        }

        return new FileStreamResult(stream, "image/jpg");
    }

这个??如果视图没有为参数imageNum提供值;ImageNum为空时将分配0。如果您有一个1,那么当它为空时将分配1。

??如果视图没有为参数imageNum提供值;ImageNum为空时将分配0。如果您有一个1,那么当它为空时将分配1。

这是运算符。语法是:

condition ? <value if true> : <value if false>
编辑 这个在这个方法中,实际上有三种不同的用法。 第一种方法如上所述。第二个
int?
表示此值是可为null的int。它可以为null或int

第三种称为coalescing,它看起来像
imageNum=imageNum??0;
这意味着您正试图将imageNum的值分配给imageNum,如果imageNum为null,您将给它一个默认值0

这是一种更紧凑的方式:

if(imageNum == null)
   imageNum = 0;
是接线员。语法是:

condition ? <value if true> : <value if false>
编辑 这个在这个方法中,实际上有三种不同的用法。 第一种方法如上所述。第二个
int?
表示此值是可为null的int。它可以为null或int

第三种称为coalescing,它看起来像
imageNum=imageNum??0;
这意味着您正试图将imageNum的值分配给imageNum,如果imageNum为null,您将给它一个默认值0

这是一种更紧凑的方式:

if(imageNum == null)
   imageNum = 0;

??那么??你的逻辑是什么?是指在1和2 1:2之间进行选择??本质上是短路吗?。有意义吗?那么??你的逻辑是什么?是指在1和2 1:2之间进行选择??本质上是短路吗?。有道理吗

int x = y != null : 0
分解成

if (y != null)
x = y;
else
x = 0;
翻译成英语是“

除非y为空,否则X等于y。如果y为空,则X等于0

您可以通过以下说明进一步简化此过程:

整数x?=y×0

分解成

if (y != null)
x = y;
else
x = 0;
翻译成英语是“

除非y为空,否则X等于y。如果y为空,则x等于0

您可以通过以下说明进一步简化此过程:


int x?=Y0

可能的重复,很难说,在这个例子中是三元运算符、合并运算符和可空类型。很抱歉,我不知道有人问过类似的问题可能的重复,很难说,在这个例子中是三元运算符、合并运算符和可空类型。很抱歉,我不知道有人问过类似的问题谢谢你的查看快速回复。谢谢你的查看快速回复。谢谢你的查看快速回复。当你想对值类型使用null coalesce语法时,它会变得更有趣,你会得到类似于“??”的代码:int value=会话[“anitvalue”]作为int??0;感谢您查看快速响应。当您希望对值类型使用null coalesce语法时,它会变得更有趣,您会得到类似于“??”的代码:int value=会话[“anitvalue”]作为int??0;