首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么不能选择基础网络啊?只有私有网络一个选项?

为什么不能选择基础网络啊?只有私有网络一个选项?

提问于 2018-03-28 02:20:11
回答 1关注 0查看 124

回答 2

Tabor

发布于 2017-12-18 06:12:41

从性能和代码生成的角度来看,确实没有什么区别。在性能测试中,他们之间来回跳动,其中一个比另一个快,而且只有毫秒。

在看后面的代码,你真的没有看到任何区别。唯一的区别是在IL中,它string.Empty使用操作码ldsfld 并""使用操作码ldstr,但这只是因为string.Empty是静态的,并且两个指令都做同样的事情。如果您查看生产的组件,则完全相同。

C#代码

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
private void Test1()
代码语言:txt
AI代码解释
复制
{
代码语言:txt
AI代码解释
复制
    string test1 = string.Empty;    
代码语言:txt
AI代码解释
复制
    string test11 = test1;
代码语言:txt
AI代码解释
复制
}
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
private void Test2()
代码语言:txt
AI代码解释
复制
{
代码语言:txt
AI代码解释
复制
    string test2 = "";    
代码语言:txt
AI代码解释
复制
    string test22 = test2;
代码语言:txt
AI代码解释
复制
}

IL代码

代码语言:txt
AI代码解释
复制
.method private hidebysig instance void 
代码语言:txt
AI代码解释
复制
          Test1() cil managed
代码语言:txt
AI代码解释
复制
{
代码语言:txt
AI代码解释
复制
  // Code size       10 (0xa)
代码语言:txt
AI代码解释
复制
  .maxstack  1
代码语言:txt
AI代码解释
复制
  .locals init ([0] string test1,
代码语言:txt
AI代码解释
复制
                [1] string test11)
代码语言:txt
AI代码解释
复制
  IL_0000:  nop
代码语言:txt
AI代码解释
复制
  IL_0001:  ldsfld     string [mscorlib]System.String::Empty
代码语言:txt
AI代码解释
复制
  IL_0006:  stloc.0
代码语言:txt
AI代码解释
复制
  IL_0007:  ldloc.0
代码语言:txt
AI代码解释
复制
  IL_0008:  stloc.1
代码语言:txt
AI代码解释
复制
  IL_0009:  ret
代码语言:txt
AI代码解释
复制
} // end of method Form1::Test1
代码语言:txt
AI代码解释
复制
.method private hidebysig instance void 
代码语言:txt
AI代码解释
复制
        Test2() cil managed
代码语言:txt
AI代码解释
复制
{
代码语言:txt
AI代码解释
复制
  // Code size       10 (0xa)
代码语言:txt
AI代码解释
复制
  .maxstack  1
代码语言:txt
AI代码解释
复制
  .locals init ([0] string test2,
代码语言:txt
AI代码解释
复制
                [1] string test22)
代码语言:txt
AI代码解释
复制
  IL_0000:  nop
代码语言:txt
AI代码解释
复制
  IL_0001:  ldstr      ""
代码语言:txt
AI代码解释
复制
  IL_0006:  stloc.0
代码语言:txt
AI代码解释
复制
  IL_0007:  ldloc.0
代码语言:txt
AI代码解释
复制
  IL_0008:  stloc.1
代码语言:txt
AI代码解释
复制
  IL_0009:  ret
代码语言:txt
AI代码解释
复制
} // end of method Form1::Test2

汇编代码

代码语言:txt
AI代码解释
复制
        string test1 = string.Empty;
代码语言:txt
AI代码解释
复制
0000003a  mov         eax,dword ptr ds:[022A102Ch] 
代码语言:txt
AI代码解释
复制
0000003f  mov         dword ptr [ebp-40h],eax 
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        string test11 = test1;
代码语言:txt
AI代码解释
复制
00000042  mov         eax,dword ptr [ebp-40h] 
代码语言:txt
AI代码解释
复制
00000045  mov         dword ptr [ebp-44h],eax 
代码语言:txt
AI代码解释
复制
        string test2 = "";
代码语言:txt
AI代码解释
复制
0000003a  mov         eax,dword ptr ds:[022A202Ch] 
代码语言:txt
AI代码解释
复制
00000040  mov         dword ptr [ebp-40h],eax 
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        string test22 = test2;
代码语言:txt
AI代码解释
复制
00000043  mov         eax,dword ptr [ebp-40h] 
代码语言:txt
AI代码解释
复制
00000046  mov         dword ptr [ebp-44h],eax 

嗝屁

发布于 2017-12-18 06:12:02

其他人建议每次使用时都会创建一个新的字符串""。这是不正确的 - 由于字符串interning,它会创建一个程序集或每个AppDomain一次(或可能一次为整个过程 - 不知道在这方面)。这种差异可以忽略不计-大规模,大量微不足道。

然而,你发现更可读的是另一回事。这是主观的,会因人而异 - 所以我建议你找出你的团队中大多数人都喜欢的东西,并且为了保持一致,我个人觉得""更容易阅读。

该参数""和" "很容易误认为对方并没有真正和我一起洗。除非你使用比例字体(而且我还没有和任何开发人员一起工作),否则很容易区分。

和开发者交流更多问题细节吧,去 写回答
相关文章
为什么 C# 的 string.Empty 是一个静态只读字段,而不是一个常量呢?
使用 C# 语言编写字符串常量的时候,你可能会发现可以使用 "" 而不能使用 string.Empty。进一步可以发现 string.Empty 实际上是一个静态只读字段,而不是一个常量。
walterlv
2020/02/10
1.1K0
C#字符串为空的几种情况
我们知道,在C#中,string是引用类型的。为空情况有以下三种: 1、  string str1="":会定义指针(栈),并在内存里划一块值为空的存储空间(堆),指针指向这个空间。 2、String str2=String.Empty:同上。但是这是个静态方法,不会反复的重复申请内存,要优于1中的方式。 3、String str3=null:只定义了一个引用(栈),没有指向任何地方,也未在堆上分配存储空间。在使用前如果不实例化的话,将报错。 知道了string的几种空类型的区别,那么我们怎么来判断一个字符
小端
2018/04/16
2K0
C#快速剔除字符串中不合法的文件名或者文件路径字符
C#快速剔除字符串中不合法的文件名 string strFileName= "文件名称";  StringBuilder rBuilder = new StringBuilder(strFileName);  foreach(char rInvalidChar in Path.GetInvalidFileNameChars())         rBuilder.Replace(rInvalidChar.ToString(), string.Empty); C#快速剔除字符串中不合法的文件路径字符 str
跟着阿笨一起玩NET
2018/09/19
1.8K0
C# 基础知识系列- 2 字符串
String(字符串)在大多数开发语言中属于不可变量,任何针对String的修改都会生成一个新的字符串。为什么会如此呢,究其原因是String在内存中以类似数组的形式存储字符数据。同时, String 还有一个非常有意思的特点:字符串在一次声明后,程序会记忆当前已声明的字符串,以备下次使用时不用重新划分内存。关于这一点有个很有意思(智障)的面试题:
程序员小高
2020/04/28
4560
在C或C++中如何使用PI(π)值
参考链接: C++ acos() #include <math.h> #define PI acos(-1) 主要是利用利用数学函数中的反三角函数,但是要注意一定引入math包           arccos          ⁡          (          −          1          )          =          π         \arccos(-1)=\pi      arccos(−1)=π  完整示例:  //#define LOCAL #includ
用户7886150
2021/02/09
6.1K0
win10 uwp 颜色转换 字符串转颜色颜色转字符串
如果有小伙伴传入一个不带透明的,那么上面的代码就会出现异常,因为不带透明的颜色只有 6 个字符,所以就无法使用上面的代码,我修改了下面代码可以转换颜色
林德熙
2018/09/18
1.3K0
win10 uwp 颜色转换
            字符串转颜色颜色转字符串
如何让 .NET Core 命令行程序接受密码的输入而不显示密码明文
发布于 2018-05-26 08:51 更新于 2018-09-01 00:04
walterlv
2018/09/18
1.7K0
如何让 .NET Core 命令行程序接受密码的输入而不显示密码明文
黄聪:在C#中如何使用资源中的图片
6.设置Image属性,选择资源中的_1文件即可,这样我们就能使用资源里面的图片啦 ^^
全栈程序员站长
2021/12/23
4.2K0
黄聪:在C#中如何使用资源中的图片
VanillaRat功能代码分析
VanillaRat是一款由C#编写的remote administration tool,其github地址如下:https://github.com/dmhai/VanillaRAT
鸿鹄实验室
2021/04/29
4690
VanillaRat功能代码分析
.NET 基础面试题(二)
装箱:把值类型转换为引用类型,首先分配托管堆内存,大小为值类型实例大小加方法指针大小,接着将值类型实例字段拷贝到新分配的内存中,最后返回托管堆中对象的内存地址。 拆箱:把引用类型转换为值类型,首先检查对象实例,确保它是给定值类型的装箱值,然后将这个值从实例中复制到值类型变量中。
喵叔
2021/06/25
4390
.NET 基础面试题(二)
装箱:把值类型转换为引用类型,首先分配托管堆内存,大小为值类型实例大小加方法指针大小,接着将值类型实例字段拷贝到新分配的内存中,最后返回托管堆中对象的内存地址。
喵叔
2021/06/14
4790
CefSharp中c#和JavaScript交互读取电脑信息
CEF是由Marshall Greenblatt于2008年创建的基于Google Chromium的BSD许可开源项目。与主要关注谷歌Chrome应用程序开发的Chromium项目本身不同,CEF专注于在第三方应用程序中促进嵌入式浏览器用例。CEF通过提供生产质量稳定的API,发布跟踪特定Chromium版本和二进制发行版的分支机构,使用户免受基础Chromium和Blink代码复杂性的影响。CEF中的大多数功能都具有默认实现,这些实现提供丰富的功能,同时几乎不需要用户进行集成工作。目前,全球已有超过1亿个CEF安装实例嵌入到来自各种公司和行业的产品中。CEF维基百科页面上提供了使用CEF的公司和产品的部分列表。CEF的一些用例包括:
心莱科技雪雁
2019/04/22
5.3K0
C# 空合并操作符(??)不可重载?其实有黑科技可以间接重载!
发布于 2018-09-15 14:59 更新于 2018-12-14 01:54
walterlv
2020/02/10
6100
C#10的5个新特性
本文详细讲解了C#10的5个特性,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
郑子铭
2023/08/29
1910
C#10的5个新特性
visual studio创建数据库_读取硬件安装信息
在.NET的项目中,有时候需要获取计算机的硬件的相关信息,在C#语言中需要利用ManagementClass这个类来进行相关操作。
全栈程序员站长
2022/11/10
5350
visual studio创建数据库_读取硬件安装信息
小谈C#异常
开篇我先问一下各位,C#异常的主要类型是什么?如何使用它们?我相信有一部分人答不上来,那么这篇文章将回答这两个问题以及与之相关的问题。让我们开始吧!!!
喵叔
2021/11/25
9590
小谈C#异常
.NET/C# 获取一个正在运行的进程的命令行参数
在自己的进程内部,我们可以通过 Main 函数传入的参数,也可以通过 Environment.GetCommandLineArgs 来获取命令行参数。
walterlv
2020/02/10
2.4K0
C#反射与特性(九):全网最全-解析反射
C# 中的访问修饰符:public、private、protected、internal、protected internal。
痴者工良
2021/04/26
2.1K0
CefSharp自定义滚动条样式
在WinForm/WPF中使用CefSharp混合开发时,通常需要自定义滚动条样式,以保证应用的整体风格统一。本文将给出一个简单的示例介绍如何自定义CefSharp中滚动条的样式。
czwy
2023/10/22
5860
CefSharp自定义滚动条样式
C#学习---基础入门(四)C#中的字符与字符串
字符 char(单个字符) 用单引号 ,例如char a=‘a’;可以通过调用char类下的方法进行一些操作,具体通过help查看其相关方法
互联网CEO
2018/12/03
8150

相似问题

如何使用c#在IE中打开网页?

2635

如何获取url参数jquery或如何获取查询字符串值在js中?

2536

C#中字符串前的@是什么?

2378

在.NET 4中将C#对象转换为JSON字符串?

2678

在C#中我如何获得当前时间?

2310
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
平安资管 | 架构师擅长4个领域
擅长3个领域
擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档