首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将Nullable<T>[]转换为T[]

如何将Nullable<T>[]转换为T[]
EN

Stack Overflow用户
提问于 2022-01-26 00:33:29
回答 3查看 109关注 0票数 0

我有这样的代码将可空数组转换为普通数组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        object myCoolConvertion(object value)
        { 
          if (value is int?[])
              return Array.ConvertAll((int? [])value, x => x ?? default(int));
          if (value is double?[])
              return Array.ConvertAll((double?[])value, x => x ?? default(double));
          if (value is float?[])
              return Array.ConvertAll((float?[])value, x => x ?? default(float));
          return value;
        }

是否可以为以下任何类型编写通用代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 if (value is T?[])
     return Array.ConvertAll((T? [])value, x => x ?? default(int));
EN

回答 3

Stack Overflow用户

发布于 2022-01-26 00:37:02

您可以使用泛型方法来完成这一任务,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
T[] Convert<T>(T?[] array) where T : struct
{
    return Array.ConvertAll(array, t => t ?? default(T));
}
票数 4
EN

Stack Overflow用户

发布于 2022-01-26 00:44:07

Iridium的回答是:Nullable<T>有一个名为GetValueOrDefault的方法,它可以使您的代码更加简洁:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
T[] Convert<T>(T?[] array) where T : struct
   => Array.ConvertAll(array, t => t.GetValueOrDefault());
票数 2
EN

Stack Overflow用户

发布于 2022-01-26 03:30:59

我宁愿过滤掉null对象。因为默认结构是无用的,不能区分真实的对象。

我用IEnumerable.OfType()来做这个。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Linq;
                    
public class Program
{
    public static T[] ConvertWithout<T>(T?[] array) where T : struct =>
         array.OfType<T>().ToArray();
    
    public struct TestStruct
    {
        public string Name {get;set;}
    }
    
    public static void Main()
    {
        var testArray = new TestStruct?[] 
        {
            new TestStruct { Name = "Peter"}, 
            null, 
            new TestStruct{Name="John"}
        };
        
        var result = ConvertWithout(testArray);
        
        foreach(var person in result)
            Console.WriteLine(person.Name);
    }
}

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Peter
John
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70860519

复制
相关文章
public <T> T method(T t)方法详解
相反的,在使用自定义的范型T之前,如果不首先使用来声明范型变量的存在的话,编译器会有错误提示:
JavaEdge
2021/02/22
1.8K0
size_t与ssize_t
为了增强程序的可移植性,便有了size_t,它是为了方便系统之间的移植而定义的,不同的系统上,定义size_t可能不一样。
Java架构师必看
2021/03/22
1.4K0
<? extends T>与<? super T>的区别
来自《Effective Java》的一句话,producer-extends,consumer-super,两者通过规定上下界的形式来做数据限制。
关忆北.
2022/05/05
1.1K0
<? extends T>与<? super T>的区别
T检验
T检验是假设检验的一种,又叫student t检验(Student’s t test),主要用于样本含量较小(例如n<30),总体标准差σ未知的正态分布资料。
小小杨
2021/10/13
1.9K0
int8_t、int16_t、int32_t转换[通俗易懂]
每8位分隔(最前面补了个0):01100100、01100011、01100010、01100001
全栈程序员站长
2022/09/21
2.6K0
关于intptr_t,uintptr_t类型
最近在看代码时,发现了两个之前没见过的数据类型:intptr_t,uintptr_t。这两个数据类型是ISO C99定义的,具体代码在linux平台的/usr/include/stdint.h头文件中。
嵌入式与Linux那些事
2022/06/29
1.9K0
R语言入门之t检验(t test)
R语言提供t.test()函数可以进行各种各样的t检验。与其他统计包不同的是,t.test()函数默认数据是异方差的,并采用Welch方法矫正自由度,关于异方差和Welch方法我会在后续的内容中详细介绍,大家先有一个印象即可。
生信与临床
2020/08/06
7.6K0
R语言入门之t检验(t test)
Java 泛型〈? extends T 〉和 〈? super T 〉
我们可以对这个东西做最简单的“放”和“取”的动作:set( )和get( )方法。
JavaFish
2019/11/19
1.1K0
[]*T *[]T *[]*T 傻傻分不清楚
作为一个 Go 语言新手,看到一切”诡异“的代码都会感到好奇;比如我最近看到的几个方法;伪代码如下:
crossoverJie
2022/10/27
4660
[]*T *[]T *[]*T 傻傻分不清楚
T1加权像(T1 weighted image,T1WI)
T1加权成像(T1-weighted imaging,T1WI)是指这种成像方法重点突出组织纵向弛豫差别,而尽量减少组织其他特性如横向弛豫等对图像的影响。
jianghaibobo
2019/09/11
5.5K0
浅析C语言之uint8_t / uint16_t / uint32_t /uint64_t[通俗易懂]
在C语言中有6种基本数据类型:short、int、long、float、double、char
全栈程序员站长
2022/10/04
4.6K0
利用 IComparable<T> 以及 IComparer<T> 定义顺序关系
我们都知道,在开发中如果想把某个类型的对象放入集合中执行排序和搜索功能,就需要定义出来对象与对象之间的关系。那么你知道怎么样定义对象关系才是正确的吗?下面就听我一一道来。
喵叔
2020/11/11
5750
泛型 T
本质就是万能类型。我们定义引用类型的变量需要指定其是什么Class的,使用泛型就可以代替其Class的作用!泛型不支持基本类型。使用时可能会自动装箱!
收心
2022/06/27
2300
091019 T AddIn
Add-In,也叫Plug-In,可以在程序编译完成后,嵌入到程序当中的一些模块。 在.net环境下实现这个功能,命名空间为:System.AddIn。 主要是分为七个部分:Host of application, Host views of Add-In,Host-side adapters,Contract,Add-In-side adapters, Add-In views,Add-In。其中Contract是两边都拥有的核心抽象部分。Add-In一边:Adapters实现Contract并调用同样实
用户1172223
2018/01/26
6660
汇编at&t
文中提到, 大部分寄存器都没有特殊用途, 除了rbp和rsp是用作栈的(64位系统). rip指向当前执行的指令.
平凡的学生族
2021/03/03
6460
A2W W2A A2T T2A _T() 含义以及用法
在《Window核心编程》,多字节和宽字节之间转换比较麻烦的,MultiByteToWideChar函数和WideCharToMultiByte函数有足够多的参数的意义让我们去理解。那么使用ATL的一个很好的字符串的转换宏:A2W和W2A。
全栈程序员站长
2022/09/23
6770
【leetcode刷题】T62-罗马数字转整数
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。
木又AI帮
2019/07/17
4610
【leetcode刷题】T61-整数转罗马数字
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。
木又AI帮
2019/07/17
3170
t-io?
与其坐学厚厚的《xxx权威指南》,不如站着自主研发,创造更多人一眼就懂的编程API
疯狂的KK
2023/01/12
6560
「R」t 检验
你想要检验来自两个总体的样本是否有不同的均值(显著性差异),或者检验从一个总体抽取的样本均值和理论均值有显著性差异。
王诗翔呀
2020/07/02
1.5K0
「R」t 检验

相似问题

如何将T转换为Nullable<T>

20

Nullable<T>结构

21

从Nullable<T>中展开T

20

Nullable<T>实现

34

Nullable<T>混淆

50
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文