在什么情况下您会使用 new 关键字初始化值类型?

2024-02-01

我的问题是关于使用new对于值类型 (int, bool,...)

int i = new int();

在这种情况下i被初始化为零值。

我读到这不是一个好东西new与值类型,但是,不动态分配内存(仅在堆栈上)。 那么问题是为什么 C# 编译器制造商允许我们这样做,在什么情况下这种方法会派上用场?


我读过,将 new 与值类型一起使用并不是一件好事,但是,它不会动态分配内存(仅在堆栈上)。那么问题是为什么 C# 编译器制造商允许我们这样做,在什么情况下这种方法会派上用场?

至少有一个原因:

void MyFunc<T>() where T : new()
{
    T someValue = new T();
    // probably other code here :-)
}

调用它

MyFunc<int>();

对于泛型,您必须能够使用new()。如果某些值类型没有new()那么就不可能编写这样的代码。

请注意,对于int, long,...以及几乎所有其他原始值类型(除了bool,并且对于boolnew bool() == false)您可以使用数字文字来初始化它们(0, 1, ...),但对于其他值类型则不能。您必须使用静态值(然后以其他方式构建)或 new 运算符。例如DateTime :-)

你不能写:

DateTime dt = 0;

你必须写:

DateTime dt = DateTime.MinValue; // Where DateTime.MinValue is probably defined as new DateTime()

or

DateTime dt = new DateTime();

or

DateTime dt = new DateTime(2015, 02, 28);

或(由亨克·霍尔特曼撰写)

DateTime dt = default(DateTime);

(请注意,您甚至可以写int x = default(int) :-) )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在什么情况下您会使用 new 关键字初始化值类型? 的相关文章

  • Qt 图表和数据可视化小部件

    我已经安装了 Qt 5 7 来尝试 Qt 图表和 Qt 数据可视化 但我在 Qt Designer 和 Qt Creator 中都找不到新的小部件 有什么建议我应该做什么才能让新的小部件出现在设计器中 我今天遇到了完全相同的问题 默认情况下
  • .NET 单点登录

    我一直在尝试使用 C 为 NET Web 应用程序实现 WEB SSO 服务提供程序插件 我将使用 shibboleth 身份提供商 我已经使用 OpenSAML 库为 java 应用程序实现了相同的功能 我想知道在 NET 应用程序中使用
  • 自动映射器多对多 stackoverflowException

    我遇到以下映射的堆栈溢出 Mapper CreateMap
  • STL之类的容器typedef快捷方式?

    STL 容器的常见模式是这样的 map
  • ASP.NET - 在 RenderContent 调用中将事件处理程序添加到 Repeater 内的 LinkBut​​ton

    我有一个加载自定义用户控件的 Sharepoint WebPart 用户控件包含一个 Repeater 而 Repeater 又包含多个 LinkBut ton 在 Web 部件的 RenderContent 调用中 我有一些用于添加事件处
  • Monotouch全局异常处理

    我在野外发现了一只令人讨厌的虫子 但我无法确定它的具体情况 有没有办法拥有全局 Try Catch 块 或者有办法处理 Monotouch 中未处理的任何异常 我可以包起来吗UIApplication Main args 在 try cat
  • 组合框下拉位置

    我有一个最大化的表单 其中包含 500px 的组合框控件 停靠在右上角 Width 尝试打开组合框后 列表的一半超出了屏幕 如何强制列表显示在表单中 棘手的问题 我找不到解决这个问题的好办法 只是一个解决方法 添加一个新类并粘贴如下所示的代
  • Visual Studio 中列表框的上移、下移按钮[重复]

    这个问题在这里已经有答案了 我正在尝试制作一个上移按钮和一个下移按钮 以移动 Microsoft Visual Studio 2012 中列表框中的选定项目 我已经在 WDF jquery winforms 和其他一些表单中看到了其他示例
  • .NET 5 EF Core SaveChangesAsync 因错误而挂起

    尽管这个问题有很多结果 但没有一个真正给我明确的答案 每次我尝试通过 AddAsync 和 SaveChangesAsync 方法插入错误数据 例如重复的主键 时 我都会看到以下日志 执行 DbCommand 失败 15 毫秒 我还在 SQ
  • 在c#中获取没有时间的日期

    我的表上有一列 缺勤日期时间 日期 当我想要获取包含日期的行时 它返回 0 行 这是我的 C 代码 DateTime ClassDate DateTime Parse lblDate Content ToString var Abs dbs
  • 处理“未找到细胞”。 Excel 中的错误

    我正在使用 Excel VSTO 应用程序并使用以下代码在工作表中查找错误单元格 Excel Range rngTemp Excel Range rngErrorRange Excel Worksheet Sheet1 Excel Work
  • 如何构建一棵与或树?

    我需要一个支持 与 和 或 的树结构 例如 给定一个正则表达式 如ab c d e 我想把它变成一棵树 所以 一开始我们有两个 或 分支 它可以向下ab or c d e 如果你低头ab分支 你得到两个节点 a and b or a其次是b
  • 从 DataRow 单元格解析 int [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如何从 DataRow 单元格解析 int 值 Int32 Parse item QuestionId ToString 这段代码可以工作 但看
  • 选择合适的IDE

    您会推荐使用以下哪种 IDE 语言来在 Windows 下开发涉及识别手势并与操作系统交互的项目 我将使用 OpenCV 库来执行图像处理任务 之后 我将使用 win32 API 或 NET 框架与操作系统交互 具体取决于您建议的工具 性能
  • 如何检测应用程序正在运行的 .NET 版本?

    我尝试使用Environment Version ToString 确定目标计算机上正在使用什么 NET 框架 但安装了 4 0 版本时 它说我正在使用 NET 2 0 如何检测目标计算机上正在运行的 NET Framework 版本 En
  • 如何将System.Windows dll添加到Visual Studio 2010 Express?

    我正在开发一个小型应用程序C and VS2010 as IDE with NET框架4 我想用CaptureSource类以便从笔记本电脑的网络摄像头捕获视频 为此我需要添加一个命名空间System Windows DependencyO
  • 如何从 Access 数据库中读取“是/否”值作为布尔值?

    帮我找回YES NO来自 MS Access 的布尔格式数据类型 我尝试解析它 但它总是返回 false 更新 实际上不是问题抱歉 它确实接受 YES NO 作为布尔值 OleDbconnection dbConnect new OleDb
  • Xcode 7 调试器不会中断内联标头函数

    过去五年我一直在各种 C 项目中使用 Xcode 没有出现这个问题 今天 我打开了一个较旧的项目 大约 2 年前 并尝试通过在该函数中放置一个活动断点来调试头文件中的内联函数 由于某种原因 调试器不会中断此代码 但是 如果我在调用该函数的
  • 从脚本启用/禁用 GameObject 组件 [Unity3D]

    我需要获取一个脚本中设置的布尔值 放入名为 bouclier 的变量 以启用或禁用游戏对象 该变量位于游戏对象 Player 中 此处右下角 我需要启用或禁用这个游戏对象 Bouclier01 为此 我将脚本附加到游戏对象 Bouclier
  • 如何在 C 中创建最低有效位设置为 1 的掩码

    这个功能如何运作 最低有效 n 位设置为 1 的掩码 Example n 6 gt 0x2F n 17 gt 0x1FFFF 我根本不明白这些 尤其是 n 6 gt 0x2F 另外 什么是面膜 通常的方法是采取1 并将其左移n位 这会给你类

随机推荐

  • Rails、Slicehost、Capistrano - 部署端口问题

    当我尝试通过以下方式部署我的应用程序时 出现端口错误 cap deploy cold 错误 ssh connect to host domain com port 22 Connection refused 我的deploy rb 在适当的
  • ASP.NET Core 2.2 Razor 页面中的自定义路由

    我在 ASP NET Core 2 2 应用程序中为 Razor Pages 设置路由约定时遇到问题 我正在从传统 MVC 迁移到 Razor Pages 我正在使用文档中建议的标准页面文件夹结构 但我想稍微自定义生成的路由 例如 在 Pr
  • 为什么我的 Eclipse 一直没有响应? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用 Eclipse 有时它会冻结并停止响应 其他人也有遇到同样的状况吗 当我点击一行代码时通常会发生这种情况 无论是 Java
  • ./studio.sh 之后 Android Studio 错误

    After studio sh在终端中我收到此错误 tools jar 不在 android studio 类路径中请确保JAVA HOME指向 JDK 而不是 JRE 我谷歌了一下 每个人都这么说 您需要将环境变量设置为 JDK 路径而不
  • MouseEnter WPF 上的发光效果

    我是 WPF c 新手 我需要使用图像控制周围的发光效果triggers 我怎样才能做到发光效果mouse enter事件 我想按照我的风格使用你的答案 我的效果是
  • Facebook 登录 onClick - Javascript

    我的网站上有这段代码 Facebook 登录对话框是在我的页面加载时显示的 而不是在用户单击锚标记时显示的
  • 如何在 Ruby 中逐行读取大型文本文件并将该流逐行追加到文件中?

    假设我想将几个大文件合并为一个 然后uniq 那个 光是这个就可能需要一秒钟的时间 我的理解是File readlines 将所有行加载到内存中 有没有办法逐行读取它 有点像node jspipe 系统有效吗 Ruby 的一大优点是您可以在
  • JavaScript 杂货清单

    我正在尝试创建一个杂货清单程序 现在我只是在做一些基本的功能 将商品添加到我的购物清单中 从购物清单中删除商品 查看购物清单以及标记我是否已拿起该商品 我困惑于如何让 标记 功能正常工作 这是我的代码 var groceryList fun
  • 如何在reactjs中设置背景图片?

    我有一个 ReactJS WebPack 应用程序并尝试为其设置背景图像body tag body background url images some background jpg background size contain back
  • 如何在没有构造函数的情况下将 React 组件的函数绑定到“this”?

    正如许多人所知 this someFunction this someFunction bind this 可以在 React 类组件中使用 然而 有时为非常简单的组件创建类是很麻烦的 那么 如何将函数绑定到this没有创建一个类 使用箭头
  • 如何在导航栏中正确位置的菜单内添加子菜单

    您好 我正在尝试在 HTML 中的正确位置的菜单内添加子菜单 但我在定位方面面临一个问题 我尝试使用 full 来解决这个问题ul and li标签 而不是 但我在尺寸方面仍然面临许多问题 所以我决定回到旧的方式 该示例位于链接中 我确信我
  • 如何将 HTML 内容放置在 Flash 影片上方?

    我正在开发的一个网站有 Flash 标题 使用swf对象 http code google com p swfobject 嵌入它们 现在我需要编写一些与 Flash 影片重叠的 HTML 代码 我尝试在 Flash 元素的容器和 绝对定位
  • 分配给ostream后如何关闭ofstream?

    I can do std ostream out condition std cout std ofstream filename 但如果出现以下情况我该如何关闭out std ofstream filename 忘记关闭一会儿 你的代码
  • TLS 连接握手失败

    我们很难与从我们的 Net 应用程序中禁用了 SSL3 协议的远程计算机 例如 PayPal vb 建立 https 连接 我们在 HttpWebRequest 实例的 GetResponse 方法上遇到以下异常 请求被中止 无法创建 SS
  • “您的 PATH 中没有 [PATH ],gem 可执行文件将无法运行。”使用“gem install --user-install bundler”时

    我试图在我的 Mac 上安装 jekyll 并收到如下警告 警告 您没有 Users Carrot gem ruby 2 3 0 bin 您的 PATH gem 可执行文件将不会运行 我检查了 gem list 它显示它已安装 我可以通过路
  • 多部分标识符无法绑定sql

    我在以下查询中收到多部分无法绑定错误 update nfltx set b boxno a boxno b message a message b nameboxno a nameboxno b namemsg a namemsg b ph
  • 使用 Promise.all 进行错误处理

    我遇到了有关 Promise all 错误处理的问题 我希望以下代码在其中之一时调用链的 catch 部分getNetworkstuff 承诺失败 但它只是调用下一个 then 部分 并且浏览器控制台显示未捕获的错误 Promise all
  • NLTK 的 Vader 评分文本示例

    我希望有人纠正我对 VADER 如何对文本进行评分的理解 我读过这个过程的解释here http datameetsmedia com vader sentiment analysis explained 但是 在重新创建它描述的过程时 我
  • jQuery:用 A 锚标记包装图像标记的最简单方法

    这是我的问题的简化版本 我有两个按钮和一张图像 图像代码是这样的 img class onoff src image jpg 当我按下按钮一时 我希望将图像包裹在 A 标签中 例如 a href link html img class on
  • 在什么情况下您会使用 new 关键字初始化值类型?

    我的问题是关于使用new对于值类型 int bool int i new int 在这种情况下i被初始化为零值 我读到这不是一个好东西new与值类型 但是 不动态分配内存 仅在堆栈上 那么问题是为什么 C 编译器制造商允许我们这样做 在什么